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