1#ifndef DCHAIN_DECAYLIST_H
2#define DCHAIN_DECAYLIST_H
45 template <
class DecayClass ,
class Cand
idateClass >
class LabeledParticleList ;
template <
class DecayClass >
class MuteWholeItr ;
46 template <
class DecayClass >
class WholeItr ;
47 template <
class DecayClass >
class PartialItr ;
51 template <
class Cand
idateClass >
class CombinatoricList ;
52 template <
class DecayClass ,
class Cand
idateClass >
class DecayList;
54template <
class DecayClass ,
class Cand
idateClass >
55DecayList< DecayClass, CandidateClass >
operator+(
56 const DecayList< DecayClass, CandidateClass >& iList1,
57 const DecayList< DecayClass, CandidateClass >& iList2 );
58template <
class DecayClass ,
class Cand
idateClass,
class NeutralClass >
59DecayList< DecayClass, CandidateClass >
operator+(
60 const DecayList< DecayClass, CandidateClass >& iList1,
61 const NeutralVisibleList< NeutralClass >& iList2 );
62template <
class DecayClass ,
class Cand
idateClass,
class NeutralClass >
63DecayList< DecayClass, CandidateClass >
operator+(
64 const NeutralVisibleList< NeutralClass >& iList1 ,
65 const DecayList< DecayClass, CandidateClass >& iList2);
73template <
class DecayClass ,
class Cand
idateClass =
typename DecayClass::Cand
idateClass >
99 template<
class TDecay>
101 m_list->erase( m_list->begin() ,
111 template<
class TList>
114 if(this->
size() != 0 ) {
117 bool can_only_add_lists_with_same_conjugation =
119 assert(can_only_add_lists_with_same_conjugation);
124 template<
class TSelector>
143 template<
class TAnalyze>
144 void iterate(
const TAnalyze& analyze)
const {
149 analyze( (*entry).particle() ) ;
153 template <
class TAnalyzer>
160 analyze( (*entry)() , (*entry).label() == this->label() ) ;
164 template<
class TAnalyze>
170 analyze( (*entry).particle() ) ;
175 template<
class TAnalyze>
182 analyze( (*entry).particle() ) ;
205 template <
class TSelect>
208 const TSelect& aSelect ) {
210 bool returnValue = aSelect(*pPossible);
212 this->
insert(pPossible,aLabel);
217 template <
class THolder>
226 template<
class TDecayList,
class TSelector>
230 typename TDecayList::const_iterator finished( aList.particle_end() ) ;
231 for (
typename TDecayList::const_iterator entry( aList.particle_begin() ) ;
235 DecayClass* localCopy =
new DecayClass( (*entry).particle() ) ;
256template <
class DecayClass ,
class Cand
idateClass >
262 bool can_only_add_lists_with_same_conjugation =
264 assert(can_only_add_lists_with_same_conjugation);
267 if( &iList1 != &iList2 ) {
273template <
class DecayClass ,
class Cand
idateClass,
class NeutralClass >
279 bool can_only_add_lists_with_same_conjugation =
281 assert(can_only_add_lists_with_same_conjugation);
289 NeutralClass* localCopy =
new NeutralClass( (*entry).particle() ) ;
296template <
class DecayClass ,
class Cand
idateClass,
class NeutralClass >
303 returnValue = iList2 + iList1;
void setLabel(const conjugation::Label aLabel)
virtual bool isSelfConjugate() const
bool attempt_insert(DecayClass *pPossible, const conjugation::Label aLabel, const TSelect &aSelect)
virtual const_partial_iterator partial_particle_begin() const
void iterate(TAnalyze &analyze) const
virtual LabeledParticleList< DecayClass, CandidateClass > & labeledParticleList()
void operator+=(const TList &aOtherList)
void iterate(const TAnalyze &analyze) const
PartialItr< DecayClass > const_partial_iterator
virtual const_partial_iterator partial_particle_end() const
void partial_iterate(TAnalyze &analyze) const
const DecayList< DecayClass, CandidateClass > bar() const
FillListWithSelection< self_type, TSelector > operator[](const TSelector &iSel)
void insert(THolder &pPossible, const conjugation::Label aLabel)
WholeItr< DecayClass > const_iterator
virtual iterator particle_begin()
virtual LabeledCandidateList< CandidateClass > & labeledCandidateList()
void conjugation_iterate(const TAnalyzer &analyzer) const
DecayList< DecayClass, CandidateClass > self_type
const DecayList< DecayClass, CandidateClass > & operator()() const
virtual iterator particle_end()
void fill(const TDecayList &aList, const TSelector &aSel=SelectAll< DecayClass >())
const self_type & operator=(const DecayList< TDecay, CandidateClass > &aOtherList)
MuteWholeItr< DecayClass > iterator
iterator particle_begin()
DecayList< DecayClass, CandidateClass > operator+(const DecayList< DecayClass, CandidateClass > &iList1, const DecayList< DecayClass, CandidateClass > &iList2)