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) |
Classes | |
class | ChildList |
Definition at line 135 of file CombinatoricList.cc.
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 | |||
) | [inline, static] |
Definition at line 215 of file CombinatoricList.cc.
References dchain::FillDecayList< DecayClass, CandidateClass >::ChildList::makeDecay(), dchain::FillDecayList< DecayClass, CandidateClass >::ChildList::overlap(), dchain::FillDecayList< DecayClass, CandidateClass >::ChildList::pop_back(), dchain::FillDecayList< DecayClass, CandidateClass >::ChildList::push_back(), and dchain::LabeledParticleList< ParticleClass, CandidateClass >::push_back().
Referenced by dchain::FillDecayList< DecayClass, CandidateClass >::fill().
00220 { 00221 if ( aBegin == aEnd ) { 00222 // 00223 // if all ConjuagetLists have been used add Decay to the final list 00224 // 00225 DecayClass* ptr = iList.makeDecay(); 00226 ReferenceHolder<DecayClass> pHolder(ptr); 00227 aDecayList.push_back(dchain::LabeledParticle< DecayClass >( 00228 ptr, 00229 aLabel ) ) ; 00230 } 00231 else { 00232 // 00233 // make iterator for next ConjugateList loop 00234 // 00235 const typename _combinatoricloop_vector_::iterator newBegin( aBegin + 1 ) ; 00236 // 00237 // loop over each entry in the current ConjugateList 00238 // 00239 typename dchain::CandidateList< CandidateClass >::const_partial_iterator finished( (*(*aBegin)).partial_end() ) ; 00240 for ( typename dchain::CandidateList< CandidateClass >::const_partial_iterator entry( (*(*aBegin)).partial_begin() ) ; 00241 entry != finished ; 00242 ++entry ) { 00243 if ( !( iList.overlap( (*entry)() ) ) ) { 00244 // 00245 // If baseDecay does not overlap current element in the this ConjugateList, 00246 // record the current element of this Loop 00247 // 00248 (*(*aBegin)).setCurrentIterator( entry ) ; 00249 // 00250 // build new baseDecay with old baseDecay plus the current element 00251 // 00252 iList.push_back( & (*entry).labeledClass() ); 00253 // 00254 // do all successive ConjugateList loops 00255 // 00256 doIt( newBegin , 00257 aEnd , 00258 iList , 00259 aLabel , 00260 aDecayList ) ; 00261 00262 iList.pop_back(); 00263 00264 } 00265 } 00266 } 00267 }
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 | |||
) | [inline, static] |
Definition at line 185 of file CombinatoricList.cc.
References dchain::FillDecayList< DecayClass, CandidateClass >::doIt(), dchain::FillDecayList< DecayClass, CandidateClass >::ChildList::eraseAll(), dchain::CombinatoricLoop< CandidateClass >::partial_begin(), dchain::CombinatoricLoop< CandidateClass >::partial_end(), dchain::FillDecayList< DecayClass, CandidateClass >::ChildList::push_back(), and dchain::CombinatoricLoop< CandidateClass >::setCurrentIterator().
00190 { 00191 ChildList childList; 00192 00193 typename dchain::CandidateList<CandidateClass >::const_partial_iterator itEnd = iLoop.partial_end(); 00194 for( typename dchain::CandidateList<CandidateClass >::const_partial_iterator entry = iLoop.partial_begin(); 00195 entry != itEnd; 00196 ++entry ) { 00197 00198 iLoop.setCurrentIterator( entry ) ; 00199 00200 childList.push_back( & (*entry).labeledClass() ); 00201 00202 // 00203 // Note: need to cast way `const' to make sure a non-const LabeledParticleList 00204 // is returned 00205 // 00206 doIt( aBegin, 00207 aEnd, 00208 childList , 00209 aLabel, 00210 aDecayList ); 00211 childList.eraseAll(); 00212 } 00213 }