#include <CombinatoricList.h>
Inheritance diagram for dchain::CombinatoricList< CandidateClass >:
Public Types | |
typedef DCCandidateTraits< CandidateClass >::DecayClass | DecayClass |
typedef dchain::DecayList< DecayClass, CandidateClass >::iterator | iterator |
typedef dchain::DecayList< DecayClass, CandidateClass >::const_iterator | const_iterator |
typedef dchain::DecayList< DecayClass, CandidateClass >::const_partial_iterator | const_partial_iterator |
typedef DecayClass | value_type |
typedef DecayList< DecayClass, CandidateClass > | self_type |
Public Member Functions | |
virtual | ~CombinatoricList () |
CombinatoricList (const ConjugateList< CandidateClass > &aList) | |
virtual conjugation::Label | label () const |
virtual dchain::CandidateList< CandidateClass >::iterator | begin () |
virtual dchain::CandidateList< CandidateClass >::iterator | end () |
virtual dchain::DecayList< DecayClass, CandidateClass >::iterator | particle_begin () |
virtual dchain::DecayList< DecayClass, CandidateClass >::iterator | particle_end () |
virtual const dchain::DecayList< DecayClass, CandidateClass > | bar () const |
virtual const dchain::DecayList< DecayClass, CandidateClass > & | operator() () const |
virtual bool | isSelfConjugate () const |
virtual dchain::CandidateList< CandidateClass >::const_iterator | begin () const |
virtual dchain::CandidateList< CandidateClass >::const_iterator | end () const |
virtual dchain::CandidateList< CandidateClass >::const_partial_iterator | partial_begin () const |
virtual dchain::CandidateList< CandidateClass >::const_partial_iterator | partial_end () const |
virtual const_iterator | particle_begin () const |
virtual const_iterator | particle_end () const |
virtual const_partial_iterator | partial_particle_begin () const |
virtual const_partial_iterator | partial_particle_end () const |
template<class TAnalyze> | |
void | iterate (const TAnalyze &analyze) const |
template<class TAnalyzer> | |
void | conjugation_iterate (const TAnalyzer &analyze) const |
template<class TAnalyze> | |
void | partial_iterate (TAnalyze &analyze) const |
CombinatoricList (const CombinatoricList< CandidateClass > &aOtherList) | |
template<class TList> | |
void | operator+= (const TList &aOtherList) |
template<class TSelector> | |
FillListWithSelection< self_type, TSelector > | operator[] (const TSelector &iSel) |
template<class TAnalyze> | |
void | iterate (TAnalyze &analyze) const |
template<class TAnalyzer> | |
void | iterate (const TAnalyzer &analyze) const |
template<class TAnalyzer> | |
void | partial_iterate (const TAnalyzer &analyze) const |
void | eraseContents () |
void | erase () |
template<class TSelect> | |
bool | attempt_insert (DecayClass *pPossible, const conjugation::Label aLabel, const TSelect &aSelect) |
template<class THolder> | |
void | insert (THolder &pPossible, const conjugation::Label aLabel) |
template<class TDecayList, class TSelector> | |
void | fill (const TDecayList &aList, const TSelector &aSel=SelectAll< DecayClass >()) |
bool | isConjugateOf (const ConjugateList< CandidateClass > &aList) const |
int | partial_size () const |
const_partial_iterator | conjugate_partial_begin () const |
const_partial_iterator | conjugate_partial_end () const |
virtual bool | empty () const |
virtual int | size () const |
Protected Member Functions | |
CombinatoricList (const ConjugateList< CandidateClass > &lhs, const ConjugateList< CandidateClass > &rhs) | |
CombinatoricList (const CombinatoricList< CandidateClass > &lhs, const ConjugateList< CandidateClass > &rhs) | |
CombinatoricList (const ConjugateList< CandidateClass > &lhs, const CombinatoricList< CandidateClass > &rhs) | |
CombinatoricList (const CombinatoricList< CandidateClass > &lhs, const CombinatoricList< CandidateClass > &rhs) | |
virtual dchain::LabeledCandidateList< CandidateClass > & | labeledCandidateList () |
virtual const dchain::LabeledCandidateList< CandidateClass > & | labeledCandidateList () const |
virtual LabeledParticleList< DecayClass, CandidateClass > & | labeledParticleList () |
virtual const LabeledParticleList< DecayClass, CandidateClass > & | labeledParticleList () const |
void | setLabel (const conjugation::Label aLabel) |
Private Member Functions | |
CombinatoricList (void) | |
const CombinatoricList< CandidateClass > & | operator= (const CombinatoricList< CandidateClass > &aOtherList) |
void | determineConjugation () const |
void | fill () const |
Private Attributes | |
_combinatoriclist_vector_ & | m_listOfLists |
bool | m_listFilled |
bool | m_conjugationKnown |
Friends | |
class | dchain::DecayList< DecayClass, CandidateClass > |
CombinatoricList< CandidateClass > | operator * (const ConjugateList< CandidateClass > &lhs, const ConjugateList< CandidateClass > &rhs) |
CombinatoricList< CandidateClass > | operator * (const CombinatoricList< CandidateClass > &lhs, const ConjugateList< CandidateClass > &rhs) |
CombinatoricList< CandidateClass > | operator * (const ConjugateList< CandidateClass > &lhs, const CombinatoricList< CandidateClass > &rhs) |
CombinatoricList< CandidateClass > | operator * (const CombinatoricList< CandidateClass > &lhs, const CombinatoricList< CandidateClass > &rhs) |
Definition at line 96 of file CombinatoricList.h.
typedef dchain::DecayList< DecayClass , CandidateClass >::const_iterator dchain::CombinatoricList< CandidateClass >::const_iterator |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 125 of file CombinatoricList.h.
typedef dchain::DecayList< DecayClass , CandidateClass >::const_partial_iterator dchain::CombinatoricList< CandidateClass >::const_partial_iterator |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 126 of file CombinatoricList.h.
typedef DCCandidateTraits<CandidateClass>::DecayClass dchain::CombinatoricList< CandidateClass >::DecayClass |
Definition at line 99 of file CombinatoricList.h.
typedef dchain::DecayList< DecayClass , CandidateClass >::iterator dchain::CombinatoricList< CandidateClass >::iterator |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 124 of file CombinatoricList.h.
typedef DecayList< DecayClass , CandidateClass > dchain::DecayList< DecayClass, CandidateClass >::self_type [inherited] |
Definition at line 89 of file DecayList.h.
typedef DecayClass dchain::DecayList< DecayClass, CandidateClass >::value_type [inherited] |
Reimplemented from dchain::CandidateList< CandidateClass >.
Reimplemented in DCDecayList< DecayClass, CandidateClass >.
Definition at line 87 of file DecayList.h.
dchain::CombinatoricList< CandidateClass >::~CombinatoricList | ( | ) | [virtual] |
Definition at line 355 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::m_listOfLists.
00356 { 00357 delete &m_listOfLists ; 00358 }
dchain::CombinatoricList< CandidateClass >::CombinatoricList | ( | const ConjugateList< CandidateClass > & | aList | ) |
Definition at line 290 of file CombinatoricList.cc.
00290 : 00291 m_listOfLists( *(new _combinatoriclist_vector_( 1 , 00292 &aList ) ) ) , 00293 m_listFilled( false ) , 00294 m_conjugationKnown( false ) 00295 { 00296 }
dchain::CombinatoricList< CandidateClass >::CombinatoricList | ( | const ConjugateList< CandidateClass > & | lhs, | |
const ConjugateList< CandidateClass > & | rhs | |||
) | [protected] |
Definition at line 299 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::m_listOfLists.
00300 : 00301 m_listOfLists( *(new _combinatoriclist_vector_( 1 , 00302 &lhs ) ) ) , 00303 m_listFilled( false ) , 00304 m_conjugationKnown( false ) 00305 { 00306 //std::cout << "@CombinatoricList::CombinatoricList() 11" << std::endl; 00307 //typedef typename ConjugateList< CandidateClass >::const_partial_iterator test_it; 00308 //std::cout << "lhs ...................... : " << std::endl; 00309 //for ( test_it it = lhs.partial_begin(); it != lhs.partial_end(); it++ ) { 00310 // std::cout << (*it)().footPrint() << std::endl; 00311 //} 00312 //std::cout << "rhs ...................... : " << std::endl; 00313 //for ( test_it it = rhs.partial_begin(); it != rhs.partial_end(); it++ ) { 00314 // std::cout << (*it)().footPrint() << std::endl; 00315 //} 00316 m_listOfLists.push_back( &rhs ) ; 00317 }
dchain::CombinatoricList< CandidateClass >::CombinatoricList | ( | const CombinatoricList< CandidateClass > & | lhs, | |
const ConjugateList< CandidateClass > & | rhs | |||
) | [protected] |
Definition at line 320 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::m_listOfLists.
00321 : 00322 m_listOfLists( *(new _combinatoriclist_vector_( lhs.m_listOfLists ) ) ) , 00323 m_listFilled( false ) , 00324 m_conjugationKnown( false ) 00325 { 00326 m_listOfLists.push_back( &rhs ) ; 00327 }
dchain::CombinatoricList< CandidateClass >::CombinatoricList | ( | const ConjugateList< CandidateClass > & | lhs, | |
const CombinatoricList< CandidateClass > & | rhs | |||
) | [protected] |
Definition at line 330 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::begin(), dchain::CombinatoricList< CandidateClass >::end(), and dchain::CombinatoricList< CandidateClass >::m_listOfLists.
00331 : 00332 m_listOfLists( *(new _combinatoriclist_vector_( 1 , 00333 &lhs ) ) ) , 00334 m_listFilled( false ) , 00335 m_conjugationKnown( false ) 00336 { 00337 m_listOfLists.insert( m_listOfLists.end() , 00338 (rhs.m_listOfLists).begin() , 00339 (rhs.m_listOfLists).end() ) ; 00340 }
dchain::CombinatoricList< CandidateClass >::CombinatoricList | ( | const CombinatoricList< CandidateClass > & | lhs, | |
const CombinatoricList< CandidateClass > & | rhs | |||
) | [protected] |
Definition at line 343 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::begin(), dchain::CombinatoricList< CandidateClass >::end(), and dchain::CombinatoricList< CandidateClass >::m_listOfLists.
00344 : 00345 m_listOfLists( *(new _combinatoriclist_vector_( lhs.m_listOfLists ) ) ) , 00346 m_listFilled( false ) , 00347 m_conjugationKnown( false ) 00348 { 00349 m_listOfLists.insert( m_listOfLists.end() , 00350 (rhs.m_listOfLists).begin() , 00351 (rhs.m_listOfLists).end() ) ; 00352 }
dchain::CombinatoricList< CandidateClass >::CombinatoricList | ( | void | ) | [private] |
dchain::CombinatoricList< CandidateClass >::CombinatoricList | ( | const CombinatoricList< CandidateClass > & | aOtherList | ) |
Definition at line 281 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::m_listOfLists.
00281 : 00282 m_listOfLists( *(new _combinatoriclist_vector_() ) ), 00283 m_listFilled( iRHS.m_listFilled ) , 00284 m_conjugationKnown( iRHS.m_conjugationKnown ) 00285 { 00286 m_listOfLists.swap(const_cast<CombinatoricList<CandidateClass>&>(iRHS).m_listOfLists); 00287 }
bool dchain::DecayList< DecayClass, CandidateClass >::attempt_insert | ( | DecayClass * | pPossible, | |
const conjugation::Label | aLabel, | |||
const TSelect & | aSelect | |||
) | [inline, inherited] |
Definition at line 206 of file DecayList.h.
Referenced by dchain::DecayList< DCCandidateTraits< CandidateClass >::DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::fill(), and dchain::operator+().
00208 { 00209 ReferenceHolder<DecayClass> pHolder( pPossible ); 00210 bool returnValue = aSelect(*pPossible); 00211 if (returnValue) { 00212 this->insert(pPossible,aLabel); 00213 } 00214 return returnValue; 00215 }
const dchain::DecayList< typename CombinatoricList< CandidateClass >::DecayClass, CandidateClass > dchain::CombinatoricList< CandidateClass >::bar | ( | ) | const [virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 413 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill(), dchain::CombinatoricList< CandidateClass >::label(), dchain::DecayList< DecayClass, CandidateClass >::labeledParticleList(), and dchain::otherLabel().
00414 { 00415 fill() ; 00416 // Need to cast away 'const' to get the right type of LabelList returned 00417 return ( dchain::DecayList< DecayClass , CandidateClass >( 00418 (*(CombinatoricList< CandidateClass >*)this).labeledParticleList() , 00419 otherLabel( label() ) ) ) ; 00420 }
dchain::CandidateList< CandidateClass >::const_iterator dchain::CombinatoricList< CandidateClass >::begin | ( | ) | const [virtual] |
Reimplemented from dchain::CandidateList< CandidateClass >.
Definition at line 442 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00443 { 00444 fill() ; 00445 return ( dchain::DecayList< DecayClass , CandidateClass >::begin() ) ; 00446 }
dchain::CandidateList< CandidateClass >::iterator dchain::CombinatoricList< CandidateClass >::begin | ( | ) | [virtual] |
Reimplemented from dchain::CandidateList< CandidateClass >.
Definition at line 372 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
Referenced by dchain::CombinatoricList< CandidateClass >::CombinatoricList(), and dchain::CombinatoricList< CandidateClass >::fill().
00373 { 00374 fill() ; 00375 return ( dchain::DecayList< DecayClass , CandidateClass >::begin() ) ; 00376 }
ConjugateList< CandidateClass >::const_partial_iterator dchain::ConjugateList< CandidateClass >::conjugate_partial_begin | ( | ) | const [inherited] |
Definition at line 152 of file ConjugateList.cc.
References dchain::ConjugateList< CandidateClass >::m_label, and dchain::otherLabel().
Referenced by dchain::CombinatoricList< CandidateClass >::fill().
00153 { 00154 return ( this->labeledCandidateList().begin( otherLabel( m_label ) ) ) ; 00155 }
ConjugateList< CandidateClass >::const_partial_iterator dchain::ConjugateList< CandidateClass >::conjugate_partial_end | ( | ) | const [inherited] |
Definition at line 158 of file ConjugateList.cc.
References dchain::ConjugateList< CandidateClass >::m_label, and dchain::otherLabel().
Referenced by dchain::CombinatoricList< CandidateClass >::fill().
00159 { 00160 return ( this->labeledCandidateList().end( otherLabel( m_label ) ) ) ; 00161 }
void dchain::CombinatoricList< CandidateClass >::conjugation_iterate | ( | const TAnalyzer & | analyze | ) | const [inline] |
TAnalyzer takes two arguments 1) const CandidateClass& 2) a bool which is 'true' if the candiate matches the present conjugation
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 166 of file CombinatoricList.h.
References dchain::DecayList< DecayClass, CandidateClass >::conjugation_iterate(), and dchain::CombinatoricList< CandidateClass >::fill().
00167 { 00168 fill(); 00169 dchain::DecayList<DecayClass,CandidateClass>::conjugation_iterate(analyze); 00170 }
void dchain::CombinatoricList< CandidateClass >::determineConjugation | ( | ) | const [private] |
Definition at line 519 of file CombinatoricList.cc.
References _combinatoriclist_vector_, false, dchain::ConjugateList< CandidateClass >::isConjugateOf(), dchain::CombinatoricList< CandidateClass >::isSelfConjugate(), dchain::kBaseLabel, dchain::conjugation::kNone, dchain::CombinatoricList< CandidateClass >::m_conjugationKnown, and dchain::CombinatoricList< CandidateClass >::m_listOfLists.
Referenced by dchain::CombinatoricList< CandidateClass >::isSelfConjugate(), and dchain::CombinatoricList< CandidateClass >::label().
00520 { 00521 if ( m_conjugationKnown ) { 00522 return ; 00523 } 00524 _combinatoriclist_vector_ unConjugatedLists ; 00525 typename _combinatoriclist_vector_::const_iterator finishedTesting ( m_listOfLists.end() ) ; 00526 for ( typename _combinatoriclist_vector_::const_iterator list( m_listOfLists.begin() ) ; 00527 list != finishedTesting ; 00528 ++list ) { 00529 if ( ! (*(*list)).isSelfConjugate() ) { 00530 bool noMatchFound( !false ) ; 00531 typename _combinatoriclist_vector_::iterator matchToCheck( unConjugatedLists.begin() ) ; 00532 typename _combinatoriclist_vector_::iterator finishedMatching ( unConjugatedLists.end() ) ; 00533 while ( noMatchFound && 00534 ( matchToCheck != finishedMatching ) ) { 00535 if ( (*(*list)).isConjugateOf( (*(*matchToCheck)) ) ) { 00536 unConjugatedLists.erase( matchToCheck ) ; 00537 noMatchFound = false ; 00538 } 00539 ++matchToCheck ; 00540 } 00541 if ( noMatchFound ) { 00542 unConjugatedLists.push_back( *list ) ; 00543 } 00544 } 00545 } 00546 if ( 0 == unConjugatedLists.size() ) { 00547 // have to cast away 'const' to set the real value of the label 00548 (*(CombinatoricList< CandidateClass >*)this).setLabel( conjugation::kNone ) ; 00549 } 00550 else { 00551 // have to cast away 'const' to set the real value of the label 00552 (*(CombinatoricList< CandidateClass >*)this).setLabel( kBaseLabel ) ; 00553 } 00554 // have to cast away 'const' to set the real value of the flag 00555 (*(CombinatoricList< CandidateClass >*)this).m_conjugationKnown = !false ; 00556 }
bool dchain::CandidateList< CandidateClass >::empty | ( | ) | const [virtual, inherited] |
Definition at line 135 of file CandidateList.cc.
References dchain::CandidateList< CandidateClass >::labeledCandidateList().
00136 { 00137 return ( labeledCandidateList().empty() ) ; 00138 }
dchain::CandidateList< CandidateClass >::const_iterator dchain::CombinatoricList< CandidateClass >::end | ( | ) | const [virtual] |
Reimplemented from dchain::CandidateList< CandidateClass >.
Definition at line 449 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00450 { 00451 fill() ; 00452 return ( dchain::DecayList< DecayClass , CandidateClass >::end() ) ; 00453 }
dchain::CandidateList< CandidateClass >::iterator dchain::CombinatoricList< CandidateClass >::end | ( | ) | [virtual] |
Reimplemented from dchain::CandidateList< CandidateClass >.
Definition at line 379 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
Referenced by dchain::CombinatoricList< CandidateClass >::CombinatoricList(), and dchain::CombinatoricList< CandidateClass >::fill().
00380 { 00381 fill() ; 00382 return ( dchain::DecayList< DecayClass , CandidateClass >::end() ) ; 00383 }
void dchain::DecayList< DecayClass, CandidateClass >::erase | ( | ) | [inline, inherited] |
Definition at line 187 of file DecayList.h.
Referenced by DCDecayList< DecayClass, CandidateClass >::operator=().
00187 { 00188 eraseContents(); 00189 }
void dchain::DecayList< DecayClass, CandidateClass >::eraseContents | ( | ) | [inherited] |
Definition at line 243 of file DecayList.cc.
References dchain::DecayList< DecayClass, CandidateClass >::m_list.
Referenced by dchain::DecayList< DCCandidateTraits< CandidateClass >::DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::erase().
void dchain::DecayList< DecayClass, CandidateClass >::fill | ( | const TDecayList< DecayClass, CandidateClass > & | aList, | |
const TSelector & | aSel = SelectAll<DecayClass>() | |||
) | [inline, inherited] |
Definition at line 227 of file DecayList.h.
Referenced by dchain::DecayList< DecayClass, CandidateClass >::DecayList(), dchain::operator+(), dchain::DecayList< DCCandidateTraits< CandidateClass >::DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::operator+=(), dchain::DecayList< DecayClass, CandidateClass >::operator=(), and dchain::DecayList< DCCandidateTraits< CandidateClass >::DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::operator=().
00227 { 00228 //std::cout << "@DecayList::fill()" << std::endl; 00229 setLabel( aList.label() ) ; 00230 typename TDecayList::const_iterator finished( aList.particle_end() ) ; 00231 for ( typename TDecayList::const_iterator entry( aList.particle_begin() ) ; 00232 entry != finished ; 00233 ++entry ) { 00234 //std::cout << "@ DecayList::fill()" << std::endl; 00235 DecayClass* localCopy = new DecayClass( (*entry).particle() ) ; 00236 attempt_insert( localCopy , 00237 (*entry).label(), 00238 aSel ) ; 00239 } 00240 }
void dchain::CombinatoricList< CandidateClass >::fill | ( | ) | const [private] |
Definition at line 559 of file CombinatoricList.cc.
References _combinatoricloop_vector_, dchain::CombinatoricList< CandidateClass >::begin(), dchain::ConjugateList< CandidateClass >::conjugate_partial_begin(), dchain::ConjugateList< CandidateClass >::conjugate_partial_end(), dchain::CombinatoricList< CandidateClass >::end(), false, fill(), dchain::CombinatoricList< CandidateClass >::isSelfConjugate(), dchain::kBaseLabel, dchain::conjugation::kNone, dchain::DecayList< DecayClass, CandidateClass >::labeledParticleList(), dchain::CombinatoricList< CandidateClass >::m_listFilled, dchain::CombinatoricList< CandidateClass >::m_listOfLists, dchain::otherLabel(), dchain::CombinatoricList< CandidateClass >::partial_begin(), and dchain::CombinatoricList< CandidateClass >::partial_end().
Referenced by dchain::CombinatoricList< CandidateClass >::bar(), dchain::CombinatoricList< CandidateClass >::begin(), dchain::CombinatoricList< CandidateClass >::conjugation_iterate(), dchain::CombinatoricList< CandidateClass >::end(), dchain::CombinatoricList< CandidateClass >::iterate(), dchain::CombinatoricList< CandidateClass >::labeledCandidateList(), dchain::CombinatoricList< CandidateClass >::operator()(), dchain::CombinatoricList< CandidateClass >::partial_begin(), dchain::CombinatoricList< CandidateClass >::partial_end(), dchain::CombinatoricList< CandidateClass >::partial_iterate(), dchain::CombinatoricList< CandidateClass >::partial_particle_begin(), dchain::CombinatoricList< CandidateClass >::partial_particle_end(), dchain::CombinatoricList< CandidateClass >::particle_begin(), and dchain::CombinatoricList< CandidateClass >::particle_end().
00560 { 00561 //std::cout << "@CombinatoricList::fill(), filled = " << m_listFilled << std::endl; 00562 if ( m_listFilled ) { 00563 return ; 00564 } 00565 // 00566 // Create CombinatoricLoop lists for `primary' half of the list. 00567 // If list is not self-conjugate, fill CombinatoricLoop lists for `conjugate' 00568 // half of the list as well. 00569 // 00570 const short kPrimary = 0 ; 00571 const short kConjugate = 1 ; 00572 const short kEndLoopType = 2 ; 00573 _combinatoricloop_vector_ loopList[ 2 ] ; 00574 typename _combinatoricloop_vector_::iterator initialLoop[ 2 ] ; 00575 typename _combinatoricloop_vector_::iterator secondLoop[ 2 ] ; 00576 typename _combinatoricloop_vector_::iterator endLoop[ 2 ] ; 00577 for ( short loopType( kPrimary ) ; 00578 loopType != kEndLoopType ; 00579 ++loopType ) { 00580 if ( ( kConjugate != loopType ) || 00581 ( ! isSelfConjugate() ) ) { 00582 loopList[ loopType ].reserve( m_listOfLists.size() ) ; 00583 typename _combinatoriclist_vector_::const_iterator finishedBuilding( m_listOfLists.end() ) ; 00584 for ( typename _combinatoriclist_vector_::const_iterator listForLoop( m_listOfLists.begin() ) ; 00585 listForLoop != finishedBuilding ; 00586 ++listForLoop ) { 00587 CombinatoricLoop< CandidateClass >* newLoop ; 00588 if ( kPrimary == loopType ) { 00589 newLoop = new CombinatoricLoop< CandidateClass >( (*(*listForLoop)).partial_begin() , 00590 (*(*listForLoop)).partial_end() , 00591 loopList[ loopType ] ) ; 00592 } 00593 else { 00594 newLoop = new CombinatoricLoop< CandidateClass >( (*(*listForLoop)).conjugate_partial_begin() , 00595 (*(*listForLoop)).conjugate_partial_end() , 00596 loopList[ loopType ] ) ; 00597 } 00598 loopList[ loopType ].push_back( newLoop ) ; 00599 } 00600 initialLoop[ loopType ] = loopList[ loopType ].begin() ; 00601 secondLoop[ loopType ] = initialLoop[ loopType ] + 1 ; 00602 endLoop[ loopType ] = loopList[ loopType ].end() ; 00603 } 00604 } 00605 // 00606 // do loop through initial ConjugateList 00607 // 00608 conjugation::Label conjugationLabel = kBaseLabel; 00609 if( isSelfConjugate() ) { 00610 conjugationLabel = conjugation::kNone; 00611 } 00612 00613 FillDecayList< DecayClass , CandidateClass >::fill( 00614 *(*initialLoop[ kPrimary ]), 00615 secondLoop[ kPrimary ] , 00616 endLoop[ kPrimary ] , 00617 conjugationLabel, 00618 const_cast<CombinatoricList< CandidateClass >*>(this)->labeledParticleList() ); 00619 00620 if( !isSelfConjugate() ) { 00621 FillDecayList< DecayClass , CandidateClass >::fill( 00622 *(*initialLoop[ kConjugate ]), 00623 secondLoop[ kConjugate ] , 00624 endLoop[ kConjugate ] , 00625 otherLabel(conjugationLabel), 00626 const_cast<CombinatoricList< CandidateClass >*>(this)->labeledParticleList() ); 00627 } 00628 /* 00629 #if defined(THIS_IS_NEVER_TRUE) 00630 conjugation::Label entryLabel[ 2 ] ; 00631 if ( ! isSelfConjugate() ) { 00632 entryLabel[ 0 ] = kBaseLabel ; 00633 entryLabel[ 1 ] = otherLabel( kBaseLabel ) ; 00634 } 00635 else { 00636 entryLabel[ 0 ] = conjugation::kNone ; 00637 } 00638 const ConjugateList< CandidateClass >& initialList( (*(*(m_listOfLists.begin()))) ) ; 00639 typename dchain::CandidateList< CandidateClass >::const_partial_iterator initialListEntry[ 2 ] ; 00640 initialListEntry[ kPrimary ] = initialList.partial_begin() ; 00641 if ( ! isSelfConjugate() ) { 00642 initialListEntry[ kConjugate ] = initialList.conjugate_partial_begin() ; 00643 } 00644 typename dchain::CandidateList< CandidateClass >::const_iterator finished( initialList.end() ) ; 00645 for ( typename dchain::CandidateList< CandidateClass >::const_iterator entry( initialList.begin() ) ; 00646 entry != finished ; 00647 ++entry ) { 00648 // 00649 // if entry is in `primary' half of list build all decays for this 00650 // entry, otherwise, if list is not self-conjugate build all decays 00651 // for this `conjugate' entry 00652 // 00653 short entryType( kConjugate ) ; 00654 if ( &(*entry) == &(*initialListEntry[ kPrimary ]) ) { 00655 entryType = kPrimary ; 00656 } 00657 if ( ( kConjugate != entryType ) || 00658 ( ! isSelfConjugate() ) ) { 00659 (*(*initialLoop[ entryType ])).setCurrentIterator( initialListEntry[ entryType ] ) ; 00660 ReferenceHolder<DecayClass> initialDecay( new DecayClass( (*initialListEntry[ entryType ]).labeledClass() ) ); 00661 // 00662 // Note: need to cast way `const' to make sure a non-const LabeledParticleList 00663 // is returned 00664 // 00665 typename FillDecayList<DecayClass, CandidateClass>::ChildList childList(initialDecay.pointer()); 00666 00667 FillDecayList< DecayClass , CandidateClass >:: 00668 doIt( secondLoop[ entryType ] , 00669 endLoop[ entryType ] , 00670 childList, 00671 entryLabel[ entryType ] , 00672 (*(CombinatoricList< CandidateClass >*)this).labeledParticleList() 00673 //this->labeledParticleList() 00674 ) ; 00675 ++initialListEntry[ entryType ] ; 00676 } 00677 } 00678 #endif 00679 */ 00680 // 00681 // delete contents of CombinatoricLoop lists. 00682 // 00683 for ( short halfType( kPrimary ) ; 00684 halfType != kEndLoopType ; 00685 ++halfType ) { 00686 if ( ( kConjugate != halfType ) || 00687 ( ! isSelfConjugate() ) ) { 00688 typename _combinatoricloop_vector_::iterator finishedDeletion( loopList[ halfType ].end() ) ; 00689 for ( typename _combinatoricloop_vector_::iterator loopInList( loopList[ halfType ].begin() ) ; 00690 loopInList != finishedDeletion ; 00691 ++loopInList ) { 00692 delete *loopInList ; 00693 } 00694 } 00695 } 00696 m_listFilled = !false ; 00697 }
void dchain::DecayList< DecayClass, CandidateClass >::insert | ( | THolder & | pPossible, | |
const conjugation::Label | aLabel | |||
) | [inline, inherited] |
Definition at line 218 of file DecayList.h.
00219 { 00220 m_list->push_back( LabeledParticle< DecayClass >( pPossible , 00221 aLabel ) ) ; 00222 }
bool dchain::ConjugateList< CandidateClass >::isConjugateOf | ( | const ConjugateList< CandidateClass > & | aList | ) | const [inherited] |
Definition at line 127 of file ConjugateList.cc.
References dchain::ConjugateList< CandidateClass >::label(), dchain::CandidateList< CandidateClass >::labeledCandidateList(), and dchain::otherLabel().
Referenced by dchain::CombinatoricList< CandidateClass >::determineConjugation().
00128 { 00129 return ( ( &(this->labeledCandidateList()) == &(aList.labeledCandidateList()) ) && 00130 ( label() == otherLabel( aList.label() ) ) ) ; 00131 }
bool dchain::CombinatoricList< CandidateClass >::isSelfConjugate | ( | ) | const [virtual] |
Reimplemented from dchain::ConjugateList< CandidateClass >.
Definition at line 435 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::determineConjugation().
Referenced by dchain::CombinatoricList< CandidateClass >::determineConjugation(), and dchain::CombinatoricList< CandidateClass >::fill().
00436 { 00437 determineConjugation() ; 00438 return ( dchain::DecayList< DecayClass , CandidateClass >::isSelfConjugate() ) ; 00439 }
void dchain::CandidateList< CandidateClass >::iterate | ( | const TAnalyzer & | analyze | ) | const [inline, inherited] |
Reimplemented in dchain::ChosenChargeList< Charged, CandidateClass >, dchain::ChosenConjugateList< Conjugate, CandidateClass >, dchain::ChosenChargeList< Charged, Charged::CandidateClass >, dchain::ChosenConjugateList< NeutralNC, NeutralNC::CandidateClass >, and dchain::ChosenConjugateList< NeutralNC, CandidateClass >.
Definition at line 102 of file CandidateList.h.
00102 { 00103 const_iterator finished ( end() ); 00104 for ( const_iterator entry ( begin() ) ; 00105 entry != finished ; 00106 ++entry ) { 00107 analyze( (*entry)() ) ; 00108 } 00109 }
void dchain::DecayList< DecayClass, CandidateClass >::iterate | ( | TAnalyze & | analyze | ) | const [inline, inherited] |
Definition at line 165 of file DecayList.h.
00165 { 00166 const_iterator finished ( particle_end() ) ; 00167 for ( const_iterator entry ( particle_begin() ) ; 00168 entry != finished ; 00169 ++entry ) { 00170 analyze( (*entry).particle() ) ; 00171 } 00172 }
void dchain::CombinatoricList< CandidateClass >::iterate | ( | const TAnalyze & | analyze | ) | const [inline] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 160 of file CombinatoricList.h.
References dchain::CombinatoricList< CandidateClass >::fill(), and dchain::DecayList< DecayClass, CandidateClass >::iterate().
00160 { 00161 fill(); 00162 dchain::DecayList<DecayClass,CandidateClass>::iterate(analyze); 00163 }
conjugation::Label dchain::CombinatoricList< CandidateClass >::label | ( | ) | const [virtual] |
Reimplemented from dchain::ConjugateList< CandidateClass >.
Definition at line 505 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::determineConjugation().
Referenced by dchain::CombinatoricList< CandidateClass >::bar().
00506 { 00507 determineConjugation() ; 00508 return ( dchain::DecayList< DecayClass , CandidateClass >::label() ) ; 00509 }
const dchain::LabeledCandidateList< CandidateClass > & dchain::CombinatoricList< CandidateClass >::labeledCandidateList | ( | ) | const [protected, virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 512 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00513 { 00514 fill() ; 00515 return ( dchain::DecayList< DecayClass , CandidateClass >::labeledCandidateList() ) ; 00516 }
dchain::LabeledCandidateList< CandidateClass > & dchain::CombinatoricList< CandidateClass >::labeledCandidateList | ( | ) | [protected, virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 401 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00402 { 00403 fill() ; 00404 return ( dchain::DecayList< DecayClass , CandidateClass >::labeledCandidateList() ) ; 00405 }
const LabeledParticleList< DecayClass, CandidateClass > & dchain::DecayList< DecayClass, CandidateClass >::labeledParticleList | ( | ) | const [protected, virtual, inherited] |
Definition at line 258 of file DecayList.cc.
References dchain::DecayList< DecayClass, CandidateClass >::m_list.
00259 { 00260 return ( *m_list ) ; 00261 }
dchain::LabeledParticleList< DecayClass, CandidateClass > & dchain::DecayList< DecayClass, CandidateClass >::labeledParticleList | ( | ) | [protected, virtual, inherited] |
Definition at line 188 of file DecayList.cc.
References dchain::DecayList< DecayClass, CandidateClass >::m_list.
Referenced by dchain::CombinatoricList< CandidateClass >::bar(), and dchain::CombinatoricList< CandidateClass >::fill().
00189 { 00190 return ( *m_list ) ; 00191 }
const dchain::DecayList< typename CombinatoricList< CandidateClass >::DecayClass, CandidateClass > & dchain::CombinatoricList< CandidateClass >::operator() | ( | ) | const [virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 424 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00425 { 00426 fill() ; 00427 // // Need to cast away 'const' to get the right type of LabelList returned 00428 // return ( dchain::DecayList< DecayClass , CandidateClass >( (*(CombinatoricList< CandidateClass >*)this).labeledDecayList() , 00429 // label() ) ) ; 00430 return ( *this ) ; 00431 }
void dchain::DecayList< DecayClass, CandidateClass >::operator+= | ( | const TList & | aOtherList | ) | [inline, inherited] |
Reimplemented in DCDecayList< DecayClass, CandidateClass >.
Definition at line 112 of file DecayList.h.
00112 { 00113 00114 if(this->size() != 0 ) { 00115 //only check compatable conjugation if something already in 00116 // this list, otherwise could have problem with default value 00117 bool can_only_add_lists_with_same_conjugation = 00118 this->isSelfConjugate()== aOtherList.isSelfConjugate(); 00119 assert(can_only_add_lists_with_same_conjugation); 00120 } 00121 fill(aOtherList); 00122 }
const CombinatoricList< CandidateClass >& dchain::CombinatoricList< CandidateClass >::operator= | ( | const CombinatoricList< CandidateClass > & | aOtherList | ) | [private] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
FillListWithSelection<self_type, TSelector> dchain::DecayList< DecayClass, CandidateClass >::operator[] | ( | const TSelector & | iSel | ) | [inline, inherited] |
Definition at line 125 of file DecayList.h.
00125 { 00126 return FillListWithSelection<self_type,TSelector>(*this, iSel); 00127 }
dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricList< CandidateClass >::partial_begin | ( | ) | const [virtual] |
Reimplemented from dchain::ConjugateList< CandidateClass >.
Definition at line 456 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
Referenced by dchain::CombinatoricList< CandidateClass >::fill().
00457 { 00458 fill() ; 00459 return ( dchain::DecayList< DecayClass , CandidateClass >::partial_begin() ) ; 00460 }
dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricList< CandidateClass >::partial_end | ( | ) | const [virtual] |
Reimplemented from dchain::ConjugateList< CandidateClass >.
Definition at line 463 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
Referenced by dchain::CombinatoricList< CandidateClass >::fill().
00464 { 00465 fill() ; 00466 return ( dchain::DecayList< DecayClass , CandidateClass >::partial_end() ) ; 00467 }
void dchain::ConjugateList< CandidateClass >::partial_iterate | ( | const TAnalyzer & | analyze | ) | const [inline, inherited] |
Reimplemented in dchain::ChosenChargeList< Charged, CandidateClass >, dchain::ChosenConjugateList< Conjugate, CandidateClass >, dchain::ChosenChargeList< Charged, Charged::CandidateClass >, dchain::ChosenConjugateList< NeutralNC, NeutralNC::CandidateClass >, and dchain::ChosenConjugateList< NeutralNC, CandidateClass >.
Definition at line 128 of file ConjugateList.h.
00128 { 00129 const_partial_iterator finished ( partial_end() ) ; 00130 for ( const_partial_iterator entry ( partial_begin() ) ; 00131 entry != finished ; 00132 ++entry ) { 00133 analyze( (*entry)() ) ; 00134 } 00135 }
void dchain::CombinatoricList< CandidateClass >::partial_iterate | ( | TAnalyze & | analyze | ) | const [inline] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 173 of file CombinatoricList.h.
References dchain::CombinatoricList< CandidateClass >::fill(), and dchain::DecayList< DecayClass, CandidateClass >::partial_iterate().
00174 { 00175 fill(); 00176 dchain::DecayList<DecayClass,CandidateClass>::partial_iterate(analyze); 00177 }
dchain::DecayList< typename DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::const_partial_iterator dchain::CombinatoricList< CandidateClass >::partial_particle_begin | ( | ) | const [virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 489 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00490 { 00491 fill() ; 00492 return ( dchain::DecayList< DecayClass , CandidateClass >::partial_particle_begin() ) ; 00493 }
dchain::DecayList< typename DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::const_partial_iterator dchain::CombinatoricList< CandidateClass >::partial_particle_end | ( | ) | const [virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 497 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00498 { 00499 fill() ; 00500 return ( dchain::DecayList< DecayClass , CandidateClass >::partial_particle_end() ) ; 00501 }
int dchain::ConjugateList< CandidateClass >::partial_size | ( | ) | const [inherited] |
Definition at line 134 of file ConjugateList.cc.
References dchain::ConjugateList< CandidateClass >::m_label.
00135 { 00136 return ( this->labeledCandidateList().size( m_label ) ) ; 00137 }
dchain::DecayList< typename DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::const_iterator dchain::CombinatoricList< CandidateClass >::particle_begin | ( | ) | const [virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 471 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00472 { 00473 //std::cout << "@CombinatoricList::particle_begin() -- iterator" << std::endl; 00474 fill() ; 00475 return ( dchain::DecayList< DecayClass , CandidateClass >::particle_begin() ) ; 00476 }
dchain::DecayList< typename DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::iterator dchain::CombinatoricList< CandidateClass >::particle_begin | ( | ) | [virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 386 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00387 { 00388 //std::cout << "@CombinatoricList::particle_begin() -- iterator" << std::endl; 00389 fill() ; 00390 return ( dchain::DecayList< DecayClass , CandidateClass >::particle_begin() ) ; 00391 }
dchain::DecayList< typename DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::const_iterator dchain::CombinatoricList< CandidateClass >::particle_end | ( | ) | const [virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 480 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00481 { 00482 //std::cout << "@CombinatoricList::particle_end() -- const_iterator" << std::endl; 00483 fill() ; 00484 return ( dchain::DecayList< DecayClass , CandidateClass >::particle_end() ) ; 00485 }
dchain::DecayList< typename DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::iterator dchain::CombinatoricList< CandidateClass >::particle_end | ( | ) | [virtual] |
Reimplemented from dchain::DecayList< DecayClass, CandidateClass >.
Definition at line 394 of file CombinatoricList.cc.
References dchain::CombinatoricList< CandidateClass >::fill().
00394 { 00395 //std::cout << "@CombinatoricList::particle_end() -- iterator" << std::endl; 00396 fill() ; 00397 return ( dchain::DecayList< DecayClass , CandidateClass >::particle_end() ) ; 00398 }
void dchain::ConjugateList< CandidateClass >::setLabel | ( | const conjugation::Label | aLabel | ) | [protected, inherited] |
Definition at line 111 of file ConjugateList.cc.
References dchain::ConjugateList< CandidateClass >::m_label.
Referenced by dchain::DecayList< DCCandidateTraits< CandidateClass >::DCCandidateTraits< CandidateClass >::DecayClass, CandidateClass >::fill().
00112 { 00113 m_label = aLabel ; 00114 }
int dchain::CandidateList< CandidateClass >::size | ( | ) | const [virtual, inherited] |
Definition at line 143 of file CandidateList.cc.
References dchain::CandidateList< CandidateClass >::labeledCandidateList().
Referenced by NeutralDReconstruction::execute(), DsReconstruction::execute(), and ChargedDReconstruction::execute().
00144 { 00145 return ( labeledCandidateList().size() ) ; 00146 }
friend class dchain::DecayList< DecayClass, CandidateClass > [friend] |
Definition at line 104 of file CombinatoricList.h.
CombinatoricList< CandidateClass > operator * | ( | const CombinatoricList< CandidateClass > & | lhs, | |
const CombinatoricList< CandidateClass > & | rhs | |||
) | [friend] |
CombinatoricList< CandidateClass > operator * | ( | const ConjugateList< CandidateClass > & | lhs, | |
const CombinatoricList< CandidateClass > & | rhs | |||
) | [friend] |
CombinatoricList< CandidateClass > operator * | ( | const CombinatoricList< CandidateClass > & | lhs, | |
const ConjugateList< CandidateClass > & | rhs | |||
) | [friend] |
CombinatoricList< CandidateClass > operator * | ( | const ConjugateList< CandidateClass > & | lhs, | |
const ConjugateList< CandidateClass > & | rhs | |||
) | [friend] |
bool dchain::CombinatoricList< CandidateClass >::m_conjugationKnown [private] |
Definition at line 230 of file CombinatoricList.h.
Referenced by dchain::CombinatoricList< CandidateClass >::determineConjugation().
bool dchain::CombinatoricList< CandidateClass >::m_listFilled [mutable, private] |
Definition at line 229 of file CombinatoricList.h.
Referenced by dchain::CombinatoricList< CandidateClass >::fill().
_combinatoriclist_vector_& dchain::CombinatoricList< CandidateClass >::m_listOfLists [private] |
Definition at line 228 of file CombinatoricList.h.
Referenced by dchain::CombinatoricList< CandidateClass >::CombinatoricList(), dchain::CombinatoricList< CandidateClass >::determineConjugation(), dchain::CombinatoricList< CandidateClass >::fill(), and dchain::CombinatoricList< CandidateClass >::~CombinatoricList().