dchain::FillDecayList< DecayClass, CandidateClass > Class Template Reference

List of all members.

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

Detailed Description

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

Definition at line 135 of file CombinatoricList.cc.


Member Function Documentation

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 
) [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    }

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 
) [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    }


Generated on Tue Nov 29 23:36:27 2016 for BOSS_7.0.2 by  doxygen 1.4.7