00001 // $Id: LeafCandidate.cc,v 1.14 2009/06/30 11:07:10 elmer Exp $ 00002 #include "DataFormats/Candidate/interface/LeafCandidate.h" 00003 #include "FWCore/Utilities/interface/EDMException.h" 00004 using namespace reco; 00005 00006 LeafCandidate::~LeafCandidate() { } 00007 00008 Candidate::const_iterator LeafCandidate::begin() const { 00009 return const_iterator( new const_iterator_imp_specific ); 00010 } 00011 00012 Candidate::const_iterator LeafCandidate::end() const { 00013 return const_iterator( new const_iterator_imp_specific ); 00014 } 00015 00016 Candidate::iterator LeafCandidate::begin() { 00017 return iterator( new iterator_imp_specific ); 00018 } 00019 00020 Candidate::iterator LeafCandidate::end() { 00021 return iterator( new iterator_imp_specific ); 00022 } 00023 00024 const CandidateBaseRef & LeafCandidate::masterClone() const { 00025 throw cms::Exception("Invalid Reference") 00026 << "this Candidate has no master clone reference." 00027 << "Can't call masterClone() method.\n"; 00028 } 00029 00030 bool LeafCandidate::hasMasterClone() const { 00031 return false; 00032 } 00033 00034 bool LeafCandidate::hasMasterClonePtr() const { 00035 return false; 00036 } 00037 00038 00039 const CandidatePtr & LeafCandidate::masterClonePtr() const { 00040 throw cms::Exception("Invalid Reference") 00041 << "this Candidate has no master clone ptr." 00042 << "Can't call masterClonePtr() method.\n"; 00043 } 00044 00045 size_t LeafCandidate::numberOfDaughters() const { 00046 return 0; 00047 } 00048 00049 size_t LeafCandidate::numberOfMothers() const { 00050 return 0; 00051 } 00052 00053 bool LeafCandidate::overlap( const Candidate & o ) const { 00054 return p4() == o.p4() && vertex() == o.vertex() && charge() == o.charge(); 00055 } 00056 00057 const Candidate * LeafCandidate::daughter( size_type ) const { 00058 return 0; 00059 } 00060 00061 const Candidate * LeafCandidate::mother( size_type ) const { 00062 return 0; 00063 } 00064 00065 const Candidate * LeafCandidate::daughter(const std::string&) const { 00066 throw edm::Exception(edm::errors::UnimplementedFeature) 00067 << "This Candidate type does not implement daughter(std::string). " 00068 << "Please use CompositeCandidate or NamedCompositeCandidate.\n"; 00069 } 00070 00071 Candidate * LeafCandidate::daughter(const std::string&) { 00072 throw edm::Exception(edm::errors::UnimplementedFeature) 00073 << "This Candidate type does not implement daughter(std::string). " 00074 << "Please use CompositeCandidate or NamedCompositeCandidate.\n"; 00075 } 00076 00077 00078 00079 Candidate * LeafCandidate::daughter( size_type ) { 00080 return 0; 00081 } 00082 00083 double LeafCandidate::vertexChi2() const { 00084 return 0; 00085 } 00086 00087 double LeafCandidate::vertexNdof() const { 00088 return 0; 00089 } 00090 00091 double LeafCandidate::vertexNormalizedChi2() const { 00092 return 0; 00093 } 00094 00095 double LeafCandidate::vertexCovariance(int i, int j) const { 00096 throw edm::Exception(edm::errors::UnimplementedFeature) 00097 << "reco::ConcreteCandidate does not implement vertex covariant matrix.\n"; 00098 } 00099 00100 void LeafCandidate::fillVertexCovariance(CovarianceMatrix & err) const { 00101 throw edm::Exception(edm::errors::UnimplementedFeature) 00102 << "reco::ConcreteCandidate does not implement vertex covariant matrix.\n"; 00103 } 00104 00105 bool LeafCandidate::isElectron() const { return false; } 00106 00107 bool LeafCandidate::isMuon() const { return false; } 00108 00109 bool LeafCandidate::isGlobalMuon() const { return false; } 00110 00111 bool LeafCandidate::isStandAloneMuon() const { return false; } 00112 00113 bool LeafCandidate::isTrackerMuon() const { return false; } 00114 00115 bool LeafCandidate::isCaloMuon() const { return false; } 00116 00117 bool LeafCandidate::isPhoton() const { return false; } 00118 00119 bool LeafCandidate::isConvertedPhoton() const { return false; } 00120 00121 bool LeafCandidate::isJet() const { return false; } 00122 00123 const unsigned int reco::LeafCandidate::longLivedTag = 65536; 00124 00125 const unsigned int reco::LeafCandidate::massConstraintTag = 131072; 00126 00127 double LeafCandidate::pt() const { return pt_; } 00128