BOSS 7.1.3
BESIII Offline Software System
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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();
231 ptr,
232 aLabel ) ) ;
233 }
234 else {
235 //
236 // make iterator for next ConjugateList loop
237 //
239 //
240 // loop over each entry in the current ConjugateList
241 //
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)

Referenced by doIt(), and 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 {
195
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: