/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/DecayChain/DecayChain-00-00-03-slc6tag/DecayChain/List/ChosenConjugateList.h

Go to the documentation of this file.
00001 #ifndef DCHAIN_CHOSENCONJUGATELIST_H
00002 #define DCHAIN_CHOSENCONJUGATELIST_H
00003 // -*- C++ -*-
00004 //
00005 // Package:     DChain
00006 // Module:      ChosenConjugateList
00007 // 
00008 // Description: List to hold a particular conjugation of a list
00009 //
00010 // Usage:
00011 //    <usage>
00012 //
00013 // Author:      Simon Patton
00014 // Created:     Fri Oct  4 11:04:47 EDT 1996
00015 // $Id: ChosenConjugateList.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $
00016 //
00017 // Revision history
00018 //
00019 // $Log: ChosenConjugateList.h,v $
00020 // Revision 1.1.1.1  2009/03/03 06:06:56  maqm
00021 // first import of DecayChain
00022 //
00023 // Revision 1.1  2006/01/11 20:28:21  cdj
00024 // massive class renaming, addition of [] for selection and unit tests
00025 //
00026 //
00027 
00028 // system include files
00029 
00030 // user include files
00031 #include "DecayChain/List/ConjugateList.h" // superclass declaration
00032 #include "DecayChain/Element/MutableReferenceHolder.h"
00033 
00034 // forward declarations
00035 template <class Conjugate, class CandidateClass> class DCNeutralNCVisibleList;
00036 
00037 namespace dchain {
00038 template < class DecayClass > class MuteWholeItr ;
00039 template < class DecayClass > class WholeItr ;
00040 template < class DecayClass > class PartialItr ;
00041 template < class DecayClass , class CandidateClass > class LabeledParticleList ;
00042 }
00043 
00044 template < class Arg > class DCAnalysisFunction ;
00045 
00046 namespace dchain {
00047 template <class Conjugate, class CandidateClass> class NeutralNCVisibleList;
00048 
00049 template < class Conjugate , class CandidateClass >
00050 class ChosenConjugateList : public ConjugateList< CandidateClass >
00051 {
00052    // friend classses and functions
00053    friend class DCNeutralNCVisibleList< Conjugate , CandidateClass > ;
00054    friend class NeutralNCVisibleList< Conjugate , CandidateClass > ;
00055 
00056    public:
00057    // constants, enums and typedefs
00058    typedef MuteWholeItr< Conjugate > iterator ;
00059    typedef WholeItr< Conjugate > const_iterator ;
00060    typedef PartialItr< Conjugate > const_partial_iterator ;
00061 
00062    // Constructors and destructor
00063    virtual ~ChosenConjugateList() ;
00064 
00065    // member functions
00066    iterator particle_begin() ;
00067    iterator particle_end() ;
00068 
00069    // const member functions
00070    const_iterator particle_begin() const ;
00071    const_iterator particle_end() const ;
00072    const_partial_iterator partial_particle_begin() const ;
00073    const_partial_iterator partial_particle_end() const ;
00074    // The for following redeclarations are required because of function hidding
00075    //   ( See ARM p310 )
00076 
00077    template < class TAnalyzer >
00078       void iterate( const TAnalyzer& analyzer) const
00079       {
00080          const_iterator finished ( particle_end() ) ;
00081          for ( const_iterator entry ( particle_begin() ) ;
00082                entry != finished ;
00083                ++entry ) {
00084             analyze( (*entry)() ) ;
00085          }
00086       }
00087    template < class TAnalyzer>
00088       void conjugation_iterate( const TAnalyzer& analyzer) const 
00089       {
00090          const_iterator finished ( particle_end() ) ;
00091          for ( const_iterator entry ( particle_begin() ) ;
00092                entry != finished ;
00093                ++entry ) {
00094             analyze( (*entry)() , (*entry).label() == this->label() ) ;
00095          }
00096       }
00097 
00098    template < class TAnalyzer>
00099       void partial_iterate( const TAnalyzer& analyzer ) const {
00100          const_partial_iterator finished ( partial_particle_end() ) ;
00101          for ( const_partial_iterator entry ( partial_particle_begin() ) ;
00102                entry != finished ;
00103                ++entry ) {
00104             analyze( (*entry)() ) ;
00105          }
00106       }
00107    // static member functions
00108 
00109    protected:
00110    // Constructors and destructor
00111    ChosenConjugateList( LabeledParticleList< Conjugate , CandidateClass >&
00112          aLabeledParticleList ,
00113          const conjugation::Label aLabel ) ;
00114 
00115    // protected member functions
00116    virtual LabeledCandidateList<CandidateClass>& labeledCandidateList();
00117 
00118    // protected const member functions
00119    virtual const LabeledCandidateList< CandidateClass >& labeledCandidateList() const ;
00120 
00121    private:
00122    // Constructors and destructor
00123    ChosenConjugateList() ; // stop default
00124    ChosenConjugateList( const ChosenConjugateList< Conjugate , CandidateClass >& aOtherList ) ; // stop default
00125 
00126    // assignment operator(s)
00127    const ChosenConjugateList< Conjugate , CandidateClass >& operator=( const ChosenConjugateList< Conjugate , CandidateClass >& aOtherList ) ; // stop default
00128 
00129    // private member functions
00130 
00131    // private const member functions
00132 
00133    // data members
00134    MutableReferenceHolder<LabeledParticleList< Conjugate , CandidateClass > > m_list ;
00135 
00136    // static data members
00137 
00138 };
00139 
00140 // inline function definitions
00141 
00142 }
00143 
00144 // function definitions
00145 #include "DecayChain/List/Template/ChosenConjugateList.cc"
00146 
00147 #endif /* DCHAIN_CHOSENCONJUGATELIST_H */

Generated on Tue Nov 29 22:58:22 2016 for BOSS_7.0.2 by  doxygen 1.4.7