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

Go to the documentation of this file.
00001 #ifndef DCHAIN_LABELEDCANDIDATELIST_H
00002 #define DCHAIN_LABELEDCANDIDATELIST_H
00003 // -*- C++ -*-
00004 //
00005 // Package:     DChain
00006 // Module:      LabeledCandidateList
00007 // 
00008 // Description: Container of `primary'/`conjugate' subclasses of Candidate
00009 //
00010 // Usage:
00011 //    <usage>
00012 //
00013 // Author:      Simon Patton
00014 // Created:     Fri Sep 13 17:58:11 EDT 1996
00015 // $Id: LabeledCandidateList.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $
00016 //
00017 // Revision history
00018 //
00019 // $Log: LabeledCandidateList.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:28  cdj
00024 // massive class renaming, addition of [] for selection and unit tests
00025 //
00026 // Revision 1.1.1.1  2000/12/18 22:16:53  cdj
00027 // imported DChain
00028 //
00029 // Revision 1.14  1998/08/28 05:19:15  sjp
00030 // Updated to subclass from IndexedLabeled class
00031 //
00032 // Revision 1.13  1998/08/21 00:52:42  sjp
00033 // Modifier to no longer use typedefs
00034 //
00035 // Revision 1.12  1998/08/20 19:59:05  sjp
00036 // Modified to use DChainBoolean
00037 //
00038 // Revision 1.11  1998/08/19 20:39:50  sjp
00039 // Fixed include path for defintions
00040 //
00041 // Revision 1.10  1998/04/17 19:11:04  sjp
00042 // Modified to use latest types
00043 //
00044 // Revision 1.9  1997/08/28 06:59:53  sjp
00045 // Modified files to handle complete templating
00046 //
00047 // Revision 1.8  1997/08/26 04:14:15  sjp
00048 // Made Candidate handling objects into `CandidateClass' Templates
00049 //
00050 // Revision 1.7  1997/08/19 23:02:20  sjp
00051 // Restructured package to be independent of Rock
00052 //
00053 // Revision 1.6  1997/08/15 21:32:24  sjp
00054 // Updated to use <package>/<file>.h include structure.
00055 // Updated to use bug flags specified in Experiement.h
00056 //
00057 // Revision 1.5  1997/01/22 16:27:21  sjp
00058 // Fixed error in pre-processor labels
00059 //
00060 // Revision 1.4  1997/01/21 20:33:52  sjp
00061 // Changed CPP flags and include because of library reorganization
00062 //
00063 // Revision 1.3  1997/01/19 20:28:37  sjp
00064 // Changed LargeCount to Count
00065 //
00066 // Revision 1.2  1996/12/20 21:19:13  sjp
00067 // Extended pathnames for Include files
00068 //
00069 // Revision 1.1  1996/11/04 19:36:00  sjp
00070 // New file for new `List' module
00071 //
00072 
00073 // system include files
00074 
00075 // user include files
00076 #include "DecayChain/Element/conjugation.h" // enumarator
00077 #include "DecayChain/List/IndexedLabeledCandidates.h" // superclass
00078 
00079 #include <vector>
00080 
00081 namespace dchain {
00082    template < class CandidateClass > class MuteWholeCandidateItr ;
00083    template < class CandidateClass > class WholeCandidateItr ;
00084    template < class CandidateClass > class DPartialCandidateItr ;
00085 }
00086 
00087 namespace dchain {
00088 
00089 template < class CandidateClass > class LabeledCandidate ;
00090 
00091 template < class CandidateClass >
00092 class LabeledCandidateList
00093    : public IndexedLabeledCandidates< CandidateClass >
00094 {
00095       // friend classses and functions
00096 
00097    public:
00098       // constants, enums and typedefs
00099       typedef MuteWholeCandidateItr< CandidateClass > iterator ;
00100       typedef WholeCandidateItr< CandidateClass > const_iterator ;
00101       typedef PartialCandidateItr< CandidateClass > const_partial_iterator ;
00102 
00103       typedef LabeledCandidate<CandidateClass> value_type;
00104 
00105       // Constructors and destructor
00106       LabeledCandidateList() ;
00107       virtual ~LabeledCandidateList() ;
00108 
00109       // member functions
00110       LabeledCandidate< CandidateClass >& operator[]( const int aIndex ) ;
00111       iterator begin() ;
00112       iterator end() ;
00113       void erase( iterator aStart, iterator aFinish ) ;
00114 
00115       // const member functions
00116       const LabeledCandidate< CandidateClass >& operator[]( const int aIndex ) const ;
00117       virtual bool empty() const = 0 ;
00118       virtual bool empty( const conjugation::Label aLabel ) const = 0 ;
00119       virtual int size() const = 0 ;
00120       virtual int size( const conjugation::Label aLabel ) const = 0 ;
00121 
00122       const_iterator begin() const ;
00123       const_partial_iterator begin( const conjugation::Label aLabel ) const ;
00124       const_iterator end() const ;
00125       const_partial_iterator end( const conjugation::Label aLabel ) const ;
00126 
00127       // static member functions
00128 
00129    protected:
00130       // protected member functions
00131       virtual LabeledCandidate< CandidateClass >& labeledCandidateClass( const int aIndex ) = 0 ;
00132       virtual void erase_elements( int aStart ,
00133                                    int aFinish ) = 0 ;
00134 
00135       // protected const member functions
00136       virtual const LabeledCandidate< CandidateClass >& labeledCandidateClass( const int aIndex ) const = 0 ;
00137 
00138    private:
00139       // Constructors and destructor
00140       LabeledCandidateList( const LabeledCandidateList< CandidateClass >& ) ; // stop default
00141 
00142       // assignment operator(s)
00143       const LabeledCandidateList& operator=( const LabeledCandidateList< CandidateClass >& ) ; // stop default
00144 
00145       // private member functions
00146 
00147       // private const member functions
00148 
00149       // data members
00150 
00151       // static data members
00152 
00153 } ;
00154 }
00155 // inline function definitions
00156 
00157 // function definitions
00158 #include "DecayChain/List/Template/LabeledCandidateList.cc"
00159 
00160 #endif /* DCHAIN_LABELEDCANDIDATELIST_H */

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