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

Go to the documentation of this file.
00001 #ifndef DCHAIN_DCNEUTRALNCVISIBLELIST_H
00002 #define DCHAIN_DCNEUTRALNCVISIBLELIST_H
00003 // -*- C++ -*-
00004 //
00005 // Package:     DChain
00006 // Module:      NeutralNCVisibleList
00007 // 
00008 // Description: List to hold Candidate subclasses generated from VisibleEvidence
00009 //
00010 // Usage:
00011 //    <usage>
00012 //
00013 // Author:      Simon Patton
00014 // Created:     Fri Oct  4 11:04:47 EDT 1996
00015 // $Id: DCNeutralNCVisibleList.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $
00016 //
00017 // Revision history
00018 //
00019 // $Log: DCNeutralNCVisibleList.h,v $
00020 // Revision 1.1.1.1  2009/03/03 06:06:56  maqm
00021 // first import of DecayChain
00022 //
00023 // Revision 1.3  2006/01/11 20:28:27  cdj
00024 // massive class renaming, addition of [] for selection and unit tests
00025 //
00026 // Revision 1.2  2003/05/15 19:56:08  cdj
00027 // revamped memory handling so always use a ReferenceHolder to deal with the reference counting
00028 //
00029 // Revision 1.1  2001/09/11 15:02:27  ajm36
00030 // add files to do neutral non-conjugating particles
00031 //
00032 // Revision 1.2  2000/12/30 19:43:29  cdj
00033 // no more missing symbols under OSF1
00034 //
00035 // Revision 1.1.1.1  2000/12/18 22:16:51  cdj
00036 // imported DChain
00037 //
00038 // Revision 1.11  1998/08/20 19:58:59  sjp
00039 // Modified to use DChainBoolean
00040 //
00041 // Revision 1.10  1998/04/17 19:10:59  sjp
00042 // Modified to use latest types
00043 //
00044 // Revision 1.9  1997/09/17 20:05:27  sjp
00045 // Removed filling to superclass
00046 //
00047 // Revision 1.8  1997/08/28 06:59:44  sjp
00048 // Modified files to handle complete templating
00049 //
00050 // Revision 1.7  1997/08/19 15:55:06  sjp
00051 // Modified list to have no dependence on any other
00052 //   structures except its contents, which must have
00053 //   certain `typedef' available to use.
00054 //
00055 // Revision 1.6  1997/08/15 21:32:09  sjp
00056 // Updated to use <package>/<file>.h include structure.
00057 // Updated to use bug flags specified in Experiement.h
00058 //
00059 // Revision 1.5  1997/01/31 20:17:00  sjp
00060 // Modified to use the new `bug' include files
00061 //
00062 // Revision 1.4  1997/01/22 16:27:09  sjp
00063 // Fixed error in pre-processor labels
00064 //
00065 // Revision 1.3  1997/01/21 20:33:37  sjp
00066 // Changed CPP flags and include because of library reorganization
00067 //
00068 // Revision 1.2  1996/12/20 21:19:00  sjp
00069 // Extended pathnames for Include files
00070 //
00071 // Revision 1.1  1996/11/04 19:35:48  sjp
00072 // New file for new `List' module
00073 //
00074 
00075 // system include files
00076 
00077 // user include files
00078 #include "DecayChain/List/NeutralNCVisibleList.h" // superclass declaration
00079 #include "DecayChain/List/ChosenConjugateList.h" // for return-by-value
00080 #include "DecayChain/Element/MutableReferenceHolder.h"
00081 #include "DecayChain/List/LabeledParticleList.h"
00082 #include "DecayChain/Function/DCUnaryAdapter.h"
00083 
00084 template < class Arg > class DCSelectionFunction ;
00085 template < class Arg > class DCAnalysisFunction ;
00086 namespace dchain {
00087 template < class DecayClass > class MuteWholeItr ;
00088 template < class DecayClass > class WholeItr ;
00089 template < class DecayClass > class PartialItr ;
00090 }
00091 //
00092 //  Note: To avoid a myriad of compiler flags it is easier to
00093 //        have a two parameter template class.  The instantiation
00094 //        of this class must look like
00095 //
00096 //        template class dchain::LabeledParticleList< A , A::CandidateClass > ;
00097 
00098 template < class NeutralNC , class CandidateClass >
00099 class DCNeutralNCVisibleList : public dchain::NeutralNCVisibleList<NeutralNC, CandidateClass >
00100 {
00101       // friend classses and functions
00102 
00103    public:
00104       // constants, enums and typedefs
00105       typedef dchain::MuteWholeItr< NeutralNC > iterator ;
00106       typedef dchain::WholeItr< NeutralNC > const_iterator ;
00107       typedef dchain::PartialItr< NeutralNC > const_partial_iterator ;
00108 
00109       typedef NeutralNC value_type ;
00110 
00111       // Constructors and destructor
00112       DCNeutralNCVisibleList( bool ( * pFunction )( NeutralNC& ) = 0 ) ;
00113       DCNeutralNCVisibleList( const DCNeutralNCVisibleList< NeutralNC , CandidateClass >& aOtherList ,
00114                           bool ( * pFunction )( NeutralNC& ) = 0 ) ;
00115       DCNeutralNCVisibleList( DCSelectionFunction< NeutralNC >& aFunctionalObject ) ;
00116       DCNeutralNCVisibleList( const DCNeutralNCVisibleList< NeutralNC , CandidateClass >& aOtherList ,
00117                           DCSelectionFunction< NeutralNC >& aFunctionalObject ) ;
00118       virtual ~DCNeutralNCVisibleList() ;
00119       
00120       // assignment operator(s)
00121       const DCNeutralNCVisibleList< NeutralNC , CandidateClass >& operator=( const DCNeutralNCVisibleList< NeutralNC , CandidateClass >& aOtherList ) ;
00122 
00123       // member functions
00124 
00125    protected:
00126       // protected member functions
00127       using dchain::NeutralNCVisibleList<NeutralNC,CandidateClass>::fill;
00128       void fill( const dchain::LabeledParticleList< NeutralNC , CandidateClass >& aList ) ;
00129 
00130       template<class Iterator>
00131       void fill(Iterator first, Iterator last) {
00132          if ( 0 != m_function ) {
00133             fill(first,last, dchain::NewMaker<NeutralNC>(), m_function);
00134          } else if (m_functionalObject) {
00135             fill(first,last,dchain::NewMaker<NeutralNC>(),m_functionalObject);
00136          } else {
00137             fill(first,last, dchain::NewMaker<NeutralNC>(), dchain::SelectAll<NeutralNC>());
00138          }
00139       }
00140 
00141       // protected const member functions
00142 
00143    private:
00144       // Constructors and destructor
00145 
00146       // private member functions
00147 
00148       // private const member functions
00149 
00150       // data members
00151       bool ( * m_function )( NeutralNC& ) ;
00152       dchain::DCUnaryAdapter<DCSelectionFunction< NeutralNC > > m_functionalObject ;
00153 
00154       // static data members
00155 
00156 } ;
00157 
00158 // inline function definitions
00159 
00160 // function definitions
00161 #include "DecayChain/List/Template/DCNeutralNCVisibleList.cc"
00162 
00163 #endif /* DCHAIN_DCNEUTRALNCVISIBLELIST_H */
00164 

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