BOSS 7.1.0
BESIII Offline Software System
Loading...
Searching...
No Matches
dchain::FillDecayList< DecayClass, CandidateClass > Class Template Reference

Classes

class  ChildList
 

Static Public Member Functions

static void fill (CombinatoricLoop< CandidateClass > &iLoop, const typename _combinatoricloop_vector_::iterator &aBegin, const typename _combinatoricloop_vector_::iterator &aEnd, const conjugation::Label aLabel, dchain::LabeledParticleList< DecayClass, CandidateClass > &aDecayList)
 
static void doIt (const typename _combinatoricloop_vector_::iterator &aBegin, const typename _combinatoricloop_vector_::iterator &aEnd, ChildList &iList, const conjugation::Label aLabel, dchain::LabeledParticleList< DecayClass, CandidateClass > &aDecayList)
 

Detailed Description

template<class DecayClass, class CandidateClass>
class dchain::FillDecayList< DecayClass, CandidateClass >

Definition at line 138 of file CombinatoricList.cc.

Member Function Documentation

◆ doIt()

template<class DecayClass , class CandidateClass >
static void dchain::FillDecayList< DecayClass, CandidateClass >::doIt ( const typename _combinatoricloop_vector_::iterator &  aBegin,
const typename _combinatoricloop_vector_::iterator &  aEnd,
ChildList iList,
const conjugation::Label  aLabel,
dchain::LabeledParticleList< DecayClass, CandidateClass > &  aDecayList 
)
inlinestatic

Definition at line 218 of file CombinatoricList.cc.

223 {
224 if ( aBegin == aEnd ) {
225 //
226 // if all ConjuagetLists have been used add Decay to the final list
227 //
228 DecayClass* ptr = iList.makeDecay();
229 ReferenceHolder<DecayClass> pHolder(ptr);
231 ptr,
232 aLabel ) ) ;
233 }
234 else {
235 //
236 // make iterator for next ConjugateList loop
237 //
238 const typename _combinatoricloop_vector_::iterator newBegin( aBegin + 1 ) ;
239 //
240 // loop over each entry in the current ConjugateList
241 //
242 typename dchain::CandidateList< CandidateClass >::const_partial_iterator finished( (*(*aBegin)).partial_end() ) ;
243 for ( typename dchain::CandidateList< CandidateClass >::const_partial_iterator entry( (*(*aBegin)).partial_begin() ) ;
244 entry != finished ;
245 ++entry ) {
246 if ( !( iList.overlap( (*entry)() ) ) ) {
247 //
248 // If baseDecay does not overlap current element in the this ConjugateList,
249 // record the current element of this Loop
250 //
251 (*(*aBegin)).setCurrentIterator( entry ) ;
252 //
253 // build new baseDecay with old baseDecay plus the current element
254 //
255 iList.push_back( & (*entry).labeledClass() );
256 //
257 // do all successive ConjugateList loops
258 //
259 doIt( newBegin ,
260 aEnd ,
261 iList ,
262 aLabel ,
263 aDecayList ) ;
264
265 iList.pop_back();
266
267 }
268 }
269 }
270 }
static void doIt(const typename _combinatoricloop_vector_::iterator &aBegin, const typename _combinatoricloop_vector_::iterator &aEnd, ChildList &iList, const conjugation::Label aLabel, dchain::LabeledParticleList< DecayClass, CandidateClass > &aDecayList)
void push_back(const LabeledParticle< ParticleClass > &aEntry)

Referenced by dchain::FillDecayList< DecayClass, CandidateClass >::doIt(), and dchain::FillDecayList< DecayClass, CandidateClass >::fill().

◆ fill()

template<class DecayClass , class CandidateClass >
static void dchain::FillDecayList< DecayClass, CandidateClass >::fill ( CombinatoricLoop< CandidateClass > &  iLoop,
const typename _combinatoricloop_vector_::iterator &  aBegin,
const typename _combinatoricloop_vector_::iterator &  aEnd,
const conjugation::Label  aLabel,
dchain::LabeledParticleList< DecayClass, CandidateClass > &  aDecayList 
)
inlinestatic

Definition at line 188 of file CombinatoricList.cc.

193 {
194 ChildList childList;
195
196 typename dchain::CandidateList<CandidateClass >::const_partial_iterator itEnd = iLoop.partial_end();
197 for( typename dchain::CandidateList<CandidateClass >::const_partial_iterator entry = iLoop.partial_begin();
198 entry != itEnd;
199 ++entry ) {
200
201 iLoop.setCurrentIterator( entry ) ;
202
203 childList.push_back( & (*entry).labeledClass() );
204
205 //
206 // Note: need to cast way `const' to make sure a non-const LabeledParticleList
207 // is returned
208 //
209 doIt( aBegin,
210 aEnd,
211 childList ,
212 aLabel,
213 aDecayList );
214 childList.eraseAll();
215 }
216 }

The documentation for this class was generated from the following file: