1#ifndef DCHAIN_DECAYLIST_H
2#define DCHAIN_DECAYLIST_H
50 template <
class DecayClass ,
class Cand
idateClass >
class LabeledParticleList ;
template <
class DecayClass >
class MuteWholeItr ;
51 template <
class DecayClass >
class WholeItr ;
52 template <
class DecayClass >
class PartialItr ;
56 template <
class Cand
idateClass >
class CombinatoricList ;
57 template <
class DecayClass ,
class Cand
idateClass >
class DecayList;
59template <
class DecayClass ,
class Cand
idateClass >
60DecayList< DecayClass, CandidateClass >
operator+(
61 const DecayList< DecayClass, CandidateClass >& iList1,
62 const DecayList< DecayClass, CandidateClass >& iList2 );
63template <
class DecayClass ,
class Cand
idateClass,
class NeutralClass >
64DecayList< DecayClass, CandidateClass >
operator+(
65 const DecayList< DecayClass, CandidateClass >& iList1,
66 const NeutralVisibleList< NeutralClass >& iList2 );
67template <
class DecayClass ,
class Cand
idateClass,
class NeutralClass >
68DecayList< DecayClass, CandidateClass >
operator+(
69 const NeutralVisibleList< NeutralClass >& iList1 ,
70 const DecayList< DecayClass, CandidateClass >& iList2);
78template <
class DecayClass ,
class Cand
idateClass =
typename DecayClass::Cand
idateClass >
104 template<
class TDecay>
106 m_list->erase( m_list->begin() ,
116 template<
class TList>
119 if(this->
size() != 0 ) {
122 bool can_only_add_lists_with_same_conjugation =
124 assert(can_only_add_lists_with_same_conjugation);
129 template<
class TSelector>
148 template<
class TAnalyze>
149 void iterate(
const TAnalyze& analyze)
const {
154 analyze( (*entry).particle() ) ;
158 template <
class TAnalyzer>
165 analyze( (*entry)() , (*entry).label() == this->label() ) ;
169 template<
class TAnalyze>
175 analyze( (*entry).particle() ) ;
180 template<
class TAnalyze>
187 analyze( (*entry).particle() ) ;
210 template <
class TSelect>
213 const TSelect& aSelect ) {
215 bool returnValue = aSelect(*pPossible);
217 this->
insert(pPossible,aLabel);
222 template <
class THolder>
231 template<
class TDecayList,
class TSelector>
235 typename TDecayList::const_iterator finished( aList.particle_end() ) ;
236 for (
typename TDecayList::const_iterator entry( aList.particle_begin() ) ;
240 DecayClass* localCopy =
new DecayClass( (*entry).particle() ) ;
261template <
class DecayClass ,
class Cand
idateClass >
267 bool can_only_add_lists_with_same_conjugation =
269 assert(can_only_add_lists_with_same_conjugation);
272 if( &iList1 != &iList2 ) {
278template <
class DecayClass ,
class Cand
idateClass,
class NeutralClass >
284 bool can_only_add_lists_with_same_conjugation =
286 assert(can_only_add_lists_with_same_conjugation);
294 NeutralClass* localCopy =
new NeutralClass( (*entry).particle() ) ;
301template <
class DecayClass ,
class Cand
idateClass,
class NeutralClass >
308 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)