00001 #ifndef DCHAIN_CANDIDATELIST_CC 00002 #define DCHAIN_CANDIDATELIST_CC 00003 // -*- C++ -*- 00004 // 00005 // Package: DChain 00006 // Module: CandidateList 00007 // 00008 // Description: container of subclasses of Candidate, used for iteration 00009 // 00010 // Implimentation: 00011 // <Notes on implimentation> 00012 // 00013 // Author: Simon Patton 00014 // Created: Wed Sep 11 20:56:18 EDT 1996 00015 // $Id: CandidateList.cc,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $ 00016 // 00017 // Revision history 00018 // 00019 // $Log: CandidateList.cc,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:34 cdj 00024 // massive class renaming, addition of [] for selection and unit tests 00025 // 00026 // Revision 1.1.1.1 2000/12/18 22:16:54 cdj 00027 // imported DChain 00028 // 00029 // Revision 1.11 1998/08/21 00:51:56 sjp 00030 // Modifier to no longer use typedefs 00031 // 00032 // Revision 1.10 1998/08/20 20:00:15 sjp 00033 // Modified to use DChainBoolean 00034 // 00035 // Revision 1.9 1998/08/19 20:46:27 sjp 00036 // Fixed comments and removed report references 00037 // 00038 // Revision 1.8 1998/04/17 19:14:54 sjp 00039 // Modified to use latest type 00040 // 00041 // Revision 1.7 1997/08/28 07:00:24 sjp 00042 // Modified files to handle complete templating 00043 // 00044 // Revision 1.6 1997/08/26 04:14:34 sjp 00045 // Made Candidate handling objects into `CandidateClass' Templates 00046 // 00047 // Revision 1.5 1997/08/19 23:03:12 sjp 00048 // Restructured package to be independent of Rock 00049 // 00050 // Revision 1.4 1997/08/15 21:33:33 sjp 00051 // Updated to use <package>/<file>.h include structure. 00052 // Updated to use bug flags specified in Experiement.h 00053 // 00054 // Revision 1.3 1997/01/21 20:31:32 sjp 00055 // Changed CPP flags and include because of library reorganization 00056 // 00057 // Revision 1.2 1997/01/19 20:28:42 sjp 00058 // Changed LargeCount to Count 00059 // 00060 // Revision 1.1 1996/11/04 17:17:10 sjp 00061 // New file for new `List' module 00062 // 00063 00064 // system include files 00065 //#include <string> 00066 00067 // user include files 00068 #include "DecayChain/Element/LabeledCandidate.h" 00069 #include "DecayChain/Iterator/MuteWholeCandidateItr.h" 00070 #include "DecayChain/Iterator/WholeCandidateItr.h" 00071 #include "DecayChain/List/LabeledCandidateList.h" 00072 00073 #include "DecayChain/List/CandidateList.h" 00074 00075 // 00076 // constants, enums and typedefs 00077 // 00078 namespace dchain { 00079 // 00080 // static data member definitions 00081 // 00082 00083 // 00084 // constructors and destructor 00085 // 00086 00087 template < class CandidateClass > 00088 CandidateList< CandidateClass >::CandidateList() 00089 { 00090 } 00091 00092 // CandidateList< CandidateClass >::CandidateList( const CandidateList< CandidateClass >& ) 00093 // { 00094 // } 00095 00096 template < class CandidateClass > 00097 CandidateList< CandidateClass >::~CandidateList() 00098 { 00099 } 00100 00101 // 00102 // assignment operators 00103 // 00104 // const CandidateList< CandidateClass >& CandidateList< CandidateClass >::operator=( const CandidateList< CandidateClass >& ) 00105 // { 00106 // } 00107 00108 // 00109 // member functions 00110 // 00111 00112 //------ begin ------ 00113 // 00114 template < class CandidateClass > 00115 typename CandidateList< CandidateClass >::iterator CandidateList< CandidateClass >::begin() 00116 { 00117 return ( labeledCandidateList().begin() ) ; 00118 } 00119 00120 //------ end ------ 00121 // 00122 template < class CandidateClass > 00123 typename CandidateList< CandidateClass >::iterator CandidateList< CandidateClass >::end() 00124 { 00125 return ( labeledCandidateList().end() ) ; 00126 } 00127 00128 // 00129 // const member functions 00130 // 00131 00132 //------ empty ------ 00133 // 00134 template < class CandidateClass > 00135 bool CandidateList< CandidateClass >::empty() const 00136 { 00137 return ( labeledCandidateList().empty() ) ; 00138 } 00139 00140 //------ size ------ 00141 // 00142 template < class CandidateClass > 00143 int CandidateList< CandidateClass >::size() const 00144 { 00145 return ( labeledCandidateList().size() ) ; 00146 } 00147 00148 //------ begin ------ 00149 // 00150 template < class CandidateClass > 00151 typename CandidateList< CandidateClass >::const_iterator CandidateList< CandidateClass >::begin() const 00152 { 00153 // do this casting to make sure const 'begin' function is called 00154 return ( static_cast<const dchain::LabeledCandidateList< CandidateClass >*>(&labeledCandidateList())->begin() ); 00155 } 00156 00157 //------ end ------ 00158 // 00159 template < class CandidateClass > 00160 typename CandidateList< CandidateClass >::const_iterator CandidateList< CandidateClass >::end() const 00161 { 00162 // do this casting to make sure const 'end' function is called 00163 return ( static_cast<const dchain::LabeledCandidateList< CandidateClass >*>(&labeledCandidateList())->end() ); 00164 } 00165 00166 // 00167 // static member functions 00168 // 00169 } 00170 00171 #endif /* DCHAIN_DCCANDIDATELIST_CC */