#include <CDChargedVisible.h>
Inheritance diagram for CDChargedVisible< H >:
Public Types | |
typedef CDCandidate | CandidateClass |
typedef EvtRecTrack | VisibleEvidence |
typedef CDDecay | DecayEvidence |
typedef std::pair< vector< const EvtRecTrack * >, vector< const EvtRecTrack * > > | TracksAndShowers |
Public Member Functions | |
CDChargedVisible (const EvtRecTrack *aVisible) | |
CDChargedVisible (const CDChargedVisible< H > &aOtherCDChargedVisible) | |
virtual | ~CDChargedVisible () |
virtual bool | builtFromTrack () const |
virtual const EvtRecTrack * | track () const |
virtual DBCandidate::Hypo | hypo () const |
void | setUserTag (int tag) |
CDCandidate & | setP4 (const HepLorentzVector &aMomentum) |
int | userTag () const |
double | mass () const |
int | charge () const |
double | energy () const |
const Hep3Vector & | momentum () const |
const HepLorentzVector & | p4 () const |
const DecayChain::KinematicData * | kinematicData () const |
TracksAndShowers | finalChildren () const |
virtual bool | builtFromCDPhoton () const |
virtual const EvtRecTrack * | photon () const |
virtual bool | builtFromCDPi0 () const |
virtual const EvtRecPi0 * | navPi0 () const |
virtual bool | builtFromCDEta () const |
virtual const EvtRecEtaToGG * | navEta () const |
virtual bool | builtFromCDKs () const |
virtual const EvtRecVeeVertex * | navKshort () const |
virtual bool | builtFromCDLambda () const |
virtual const EvtRecVeeVertex * | navLambda () const |
virtual bool | builtFromCDDecay () const |
virtual const DecayEvidence & | decay () const |
bool | overlap (const CDCandidate &aOtherCDCandidate) const |
const CDFootPrint & | footPrint () const |
void | addLink () const |
void | dropLink () const |
Protected Member Functions | |
virtual DecayChain::KinematicData * | defaultKinematicData () const |
void | setKinematicData (const DecayChain::KinematicData &aKinematicData) |
void | setCDFootPrint (const CDFootPrint &aCDFootPrint) |
void | recurseNode (TracksAndShowers &final, const CDCandidate &cand) const |
Private Member Functions | |
CDChargedVisible () | |
const CDChargedVisible & | operator= (const CDChargedVisible< H > &aOtherCDChargedVisible) |
Private Attributes | |
const VisibleEvidence * | m_visibleEvidence |
Definition at line 84 of file CDChargedVisible.h.
typedef CDCandidate CDChargedVisible< H >::CandidateClass |
Definition at line 90 of file CDChargedVisible.h.
typedef CDDecay CDCandidate::DecayEvidence [inherited] |
Definition at line 129 of file CDCandidate.h.
typedef std::pair< vector<const EvtRecTrack*>, vector<const EvtRecTrack*> > CDCandidate::TracksAndShowers [inherited] |
Definition at line 131 of file CDCandidate.h.
typedef EvtRecTrack CDChargedVisible< H >::VisibleEvidence |
Definition at line 91 of file CDChargedVisible.h.
CDChargedVisible< H >::CDChargedVisible | ( | const EvtRecTrack * | aVisible | ) |
Definition at line 107 of file CDChargedVisible.cc.
00107 : 00108 CDCandidate( CDMud< EvtRecTrack >::get( aVisible ) ) , 00109 m_visibleEvidence( aVisible ) 00110 { 00111 }
CDChargedVisible< H >::CDChargedVisible | ( | const CDChargedVisible< H > & | aOtherCDChargedVisible | ) |
Definition at line 134 of file CDChargedVisible.cc.
00134 : 00135 CDCandidate( aOtherCDChargedHypo ) , 00136 m_visibleEvidence( aOtherCDChargedHypo.m_visibleEvidence ) 00137 { 00138 }
CDChargedVisible< H >::~CDChargedVisible | ( | ) | [virtual] |
CDChargedVisible< H >::CDChargedVisible | ( | ) | [private] |
void dchain::ReferenceCount::addLink | ( | ) | const [inline, inherited] |
Definition at line 107 of file ReferenceCount.h.
References dchain::ReferenceCount::m_linkCount.
00108 { 00109 //if (m_linkCount==0xFFFFFFFF) { 00110 // throw TooManyReferencesException(); 00111 //} 00112 ++m_linkCount ; 00113 }
bool CDCandidate::builtFromCDDecay | ( | ) | const [virtual, inherited] |
bool CDCandidate::builtFromCDEta | ( | ) | const [virtual, inherited] |
bool CDCandidate::builtFromCDKs | ( | ) | const [virtual, inherited] |
bool CDCandidate::builtFromCDLambda | ( | ) | const [virtual, inherited] |
bool CDCandidate::builtFromCDPhoton | ( | ) | const [virtual, inherited] |
Reimplemented in CDPhoton.
Definition at line 247 of file CDCandidate.cxx.
Referenced by CDCandidate::recurseNode().
bool CDCandidate::builtFromCDPi0 | ( | ) | const [virtual, inherited] |
bool CDChargedVisible< H >::builtFromTrack | ( | ) | const [virtual] |
Reimplemented from CDCandidate.
Definition at line 161 of file CDChargedVisible.cc.
References CDChargedVisible< H >::m_visibleEvidence.
00162 { 00163 return ( 0 != m_visibleEvidence ) ; 00164 }
int CDCandidate::charge | ( | ) | const [inherited] |
Definition at line 154 of file CDCandidate.cxx.
References DecayChain::KinematicData::charge(), and CDCandidate::kinematicData().
Referenced by CDDecay::defaultKinematicData(), and CDChargedVisible< H >::defaultKinematicData().
00155 { 00156 return kinematicData()->charge(); 00157 }
const CDDecay & CDCandidate::decay | ( | ) | const [virtual, inherited] |
Reimplemented in CDDecay.
Definition at line 356 of file CDCandidate.cxx.
Referenced by NeutralDReconstruction::execute(), DsReconstruction::execute(), and CDCandidate::recurseNode().
00357 { 00358 std::cerr << "No CDDecay for this CDCandidate" << std::endl ; 00359 exit( 1 ) ; 00360 return ( *(CDDecay*)0 ) ; 00361 }
KinematicData * CDChargedVisible< H >::defaultKinematicData | ( | ) | const [protected, virtual] |
Implements CDCandidate.
Definition at line 178 of file CDChargedVisible.cc.
References DstMdcTrack::charge(), CDCandidate::charge(), cos(), RecMdcKalTrack::getZHelix(), RecMdcKalTrack::getZHelixE(), RecMdcKalTrack::getZHelixK(), RecMdcKalTrack::getZHelixMu(), RecMdcKalTrack::getZHelixP(), H, CDChargedVisible< H >::m_visibleEvidence, DBCandidate::mass(), CDCandidate::mass(), DstMdcTrack::p3(), phi0, pid, DecayChain::KinematicData::setCharge(), DecayChain::KinematicData::setP4(), DstMdcKalTrack::setPidType(), and sin().
00179 { 00180 KinematicData* tmp = new KinematicData(); 00181 00182 double mass = DBCandidate::mass( static_cast<DBCandidate::Hypo>(H) ); 00183 00184 // original set, can be used again once kalTrack has charge and momentum available in memory 00185 /* 00186 if ( (const_cast<EvtRecTrack*>(m_visibleEvidence))->isMdcKalTrackValid() ) { 00187 RecMdcKalTrack* mdcKalTrack = (const_cast<EvtRecTrack*>(m_visibleEvidence))->mdcKalTrack(); 00188 00189 mdcKalTrack->setPidType( static_cast<RecMdcKalTrack::PidType> 00190 (static_cast<DBCandidate::Hypo>(H) - 1) ); 00191 00192 tmp->setCharge( mdcKalTrack->charge() ); 00193 //tmp->setMass( DBCandidate::mass( static_cast<DBCandidate::Hypo>(H) ) ); 00194 tmp->setMomentum( Hep3Vector(mdcKalTrack->px(), mdcKalTrack->py(), mdcKalTrack->pz()) ); 00195 } 00196 */ 00197 //get momentume and chage from helix information directly 00198 00199 if ( (const_cast<EvtRecTrack*>(m_visibleEvidence))->isMdcKalTrackValid() ) { 00200 RecMdcKalTrack* mdcKalTrack = (const_cast<EvtRecTrack*>(m_visibleEvidence))->mdcKalTrack(); 00201 00202 mdcKalTrack->setPidType( static_cast<RecMdcKalTrack::PidType> 00203 (static_cast<DBCandidate::Hypo>(H) - 1) ); 00204 00205 int pid=static_cast<DBCandidate::Hypo>(H) - 1; 00206 00207 HepVector zhelix; 00208 if(pid==0) 00209 zhelix=mdcKalTrack->getZHelixE(); 00210 else if(pid==1) 00211 zhelix=mdcKalTrack->getZHelixMu(); 00212 else if(pid==2) 00213 zhelix=mdcKalTrack->getZHelix(); 00214 else if(pid==3) 00215 zhelix=mdcKalTrack->getZHelixK(); 00216 else 00217 zhelix=mdcKalTrack->getZHelixP(); 00218 00219 00220 double dr(0),phi0(0),kappa(0),dz(0),tanl(0); 00221 dr=zhelix[0]; 00222 phi0=zhelix[1]; 00223 kappa=zhelix[2]; 00224 dz=zhelix[3]; 00225 tanl=zhelix[4]; 00226 00227 int charge=0; 00228 00229 if (kappa > 0.0000000001) 00230 charge = 1; 00231 else if (kappa < -0.0000000001) 00232 charge = -1; 00233 00234 double pxy=0; 00235 if(kappa!=0) pxy = 1.0/fabs(kappa); 00236 00237 double px = pxy * (-sin(phi0)); 00238 double py = pxy * cos(phi0); 00239 double pz = pxy * tanl; 00240 00241 double e = sqrt( pxy*pxy + pz*pz + mass*mass ); 00242 00243 tmp->setCharge( charge ); 00244 //tmp->setMass( DBCandidate::mass( static_cast<DBCandidate::Hypo>(H) ) ); 00245 tmp->setP4( HepLorentzVector(px, py, pz, e)); 00246 } 00247 00248 else { 00249 RecMdcTrack* mdcTrack = (const_cast<EvtRecTrack*>(m_visibleEvidence))->mdcTrack(); 00250 tmp->setCharge( mdcTrack->charge() ); 00251 double e = sqrt( mass*mass + mdcTrack->p3().mag2() ); 00252 tmp->setP4( HepLorentzVector(mdcTrack->p3(), e) ); 00253 } 00254 00255 return tmp; 00256 }
void dchain::ReferenceCount::dropLink | ( | ) | const [inline, inherited] |
Definition at line 115 of file ReferenceCount.h.
References dchain::ReferenceCount::m_linkCount.
00116 { 00117 --m_linkCount ; 00118 if ( 0 == m_linkCount ) { 00119 // It is necessary to throw away the 'const' so that the object 00120 // can be deleted 00121 delete const_cast<ReferenceCount*>(this) ; 00122 } 00123 }
double CDCandidate::energy | ( | ) | const [inherited] |
Definition at line 163 of file CDCandidate.cxx.
References DecayChain::KinematicData::energy(), and CDCandidate::kinematicData().
Referenced by NeutralDSelector::operator()(), DsSelector::operator()(), and ChargedDSelector::operator()().
00164 { 00165 return kinematicData()->energy(); 00166 }
CDCandidate::TracksAndShowers CDCandidate::finalChildren | ( | ) | const [inherited] |
Definition at line 193 of file CDCandidate.cxx.
References CDCandidate::recurseNode().
00194 { 00195 TracksAndShowers blocks; 00196 recurseNode(blocks, *this); 00197 return blocks; 00198 }
const CDFootPrint & CDCandidate::footPrint | ( | ) | const [inherited] |
Definition at line 375 of file CDCandidate.cxx.
References CDCandidate::m_footPrint.
Referenced by CDDecay::addChild(), CDCandidate::operator=(), and CDCandidate::overlap().
00376 { 00377 return ( m_footPrint ) ; 00378 }
DBCandidate::Hypo CDChargedVisible< H >::hypo | ( | ) | const [inline, virtual] |
Reimplemented from CDCandidate.
Definition at line 138 of file CDChargedVisible.h.
References H.
00139 { 00140 return H; 00141 }
const KinematicData * CDCandidate::kinematicData | ( | ) | const [inherited] |
Definition at line 185 of file CDCandidate.cxx.
References CDCandidate::modifiableKinematicData().
Referenced by CDCandidate::CDCandidate(), CDCandidate::charge(), CDCandidate::energy(), CDCandidate::mass(), CDCandidate::momentum(), CDCandidate::operator=(), CDCandidate::p4(), and CDCandidate::userTag().
00186 { 00187 // Cast away `const' to pick up the function. 00188 // This is safe as the result is being returned as a `const' 00189 return ( (*(CDCandidate*)this).modifiableKinematicData() ); 00190 }
double CDCandidate::mass | ( | ) | const [inherited] |
Definition at line 145 of file CDCandidate.cxx.
References CDCandidate::kinematicData(), and DecayChain::KinematicData::mass().
Referenced by CDKs::defaultKinematicData(), CDChargedVisible< H >::defaultKinematicData(), NeutralDSelector::operator()(), LocalRhotoPiPiSelector::operator()(), LocalEtatoPiPiPi0Selector::operator()(), LocalEptoRhoGamSelector::operator()(), LocalEptoPiPiEtaSelector::operator()(), LocalEptoPiPiEta3PiSelector::operator()(), DsSelector::operator()(), and ChargedDSelector::operator()().
00146 { 00147 return kinematicData()->mass(); 00148 }
const Hep3Vector & CDCandidate::momentum | ( | ) | const [inherited] |
Definition at line 172 of file CDCandidate.cxx.
References CDCandidate::kinematicData(), and DecayChain::KinematicData::p4().
Referenced by NeutralDSelector::operator()(), DsSelector::operator()(), and ChargedDSelector::operator()().
00173 { 00174 return kinematicData()->p4(); 00175 }
const EvtRecEtaToGG * CDCandidate::navEta | ( | ) | const [virtual, inherited] |
Reimplemented in CDEta.
Definition at line 296 of file CDCandidate.cxx.
Referenced by NeutralDReconstruction::execute(), and DsReconstruction::execute().
00297 { 00298 std::cerr << "No NavCDEta for this CDCandidate" << std::endl ; 00299 exit( 1 ) ; 00300 return ( (EvtRecEtaToGG*)0 ) ; 00301 }
const EvtRecVeeVertex * CDCandidate::navKshort | ( | ) | const [virtual, inherited] |
Reimplemented in CDKs.
Definition at line 316 of file CDCandidate.cxx.
00317 { 00318 std::cerr << "No NavKs for this CDCandidate" << std::endl ; 00319 exit( 1 ) ; 00320 return ( (EvtRecVeeVertex*)0 ) ; 00321 }
const EvtRecVeeVertex * CDCandidate::navLambda | ( | ) | const [virtual, inherited] |
Reimplemented in CDLambda.
Definition at line 336 of file CDCandidate.cxx.
00337 { 00338 std::cerr << "No NavLambda for this CDCandidate" << std::endl ; 00339 exit( 1 ) ; 00340 return ( (EvtRecVeeVertex*)0 ) ; 00341 }
const EvtRecPi0 * CDCandidate::navPi0 | ( | ) | const [virtual, inherited] |
Reimplemented in CDPi0.
Definition at line 276 of file CDCandidate.cxx.
Referenced by DsReconstruction::execute().
00277 { 00278 std::cerr << "No NavCDPi0 for this CDCandidate" << std::endl ; 00279 exit( 1 ) ; 00280 return ( (EvtRecPi0*)0 ) ; 00281 }
const CDChargedVisible& CDChargedVisible< H >::operator= | ( | const CDChargedVisible< H > & | aOtherCDChargedVisible | ) | [private] |
bool CDCandidate::overlap | ( | const CDCandidate & | aOtherCDCandidate | ) | const [inherited] |
Definition at line 367 of file CDCandidate.cxx.
References CDCandidate::footPrint(), CDCandidate::m_footPrint, and CDFootPrint::overlap().
00368 { 00369 return ( m_footPrint.overlap( aOtherCDCandidate.footPrint() ) ) ; 00370 }
const HepLorentzVector & CDCandidate::p4 | ( | ) | const [inherited] |
Definition at line 177 of file CDCandidate.cxx.
References CDCandidate::kinematicData(), and DecayChain::KinematicData::p4().
Referenced by CDDecay::defaultKinematicData().
00178 { 00179 return kinematicData()->p4(); 00180 }
const EvtRecTrack * CDCandidate::photon | ( | ) | const [virtual, inherited] |
Reimplemented in CDPhoton.
Definition at line 256 of file CDCandidate.cxx.
Referenced by NeutralDReconstruction::execute(), DsReconstruction::execute(), and CDCandidate::recurseNode().
00257 { 00258 std::cerr << "No NavShower for this CDCandidate" << std::endl ; 00259 exit( 1 ) ; 00260 return ( (EvtRecTrack*)0 ) ; 00261 }
void CDCandidate::recurseNode | ( | TracksAndShowers & | final, | |
const CDCandidate & | cand | |||
) | const [protected, inherited] |
Definition at line 201 of file CDCandidate.cxx.
References CDCandidate::builtFromCDPhoton(), CDCandidate::builtFromTrack(), CDDecay::children(), CDCandidate::decay(), first, CDCandidate::photon(), EvtCyclic3::second(), and CDCandidate::track().
Referenced by CDCandidate::finalChildren().
00203 { 00204 if(cand.builtFromTrack()) 00205 { 00206 final.first.push_back( cand.track() ); 00207 return; 00208 } 00209 if(cand.builtFromCDPhoton()) 00210 { 00211 final.second.push_back( cand.photon() ); 00212 return; 00213 } 00214 const DecayEvidence& decay = cand.decay(); 00215 const vector< ReferenceHolder<CDCandidate> >& children = decay.children(); 00216 vector< ReferenceHolder<CDCandidate> >::const_iterator lastChild = children.end(); 00217 for(vector<ReferenceHolder<CDCandidate> >::const_iterator child = children.begin(); 00218 child != lastChild; ++child) 00219 { 00220 recurseNode(final, **child); 00221 } 00222 }
void CDCandidate::setCDFootPrint | ( | const CDFootPrint & | aCDFootPrint | ) | [protected, inherited] |
Definition at line 117 of file CDCandidate.cxx.
References CDCandidate::m_footPrint.
Referenced by CDDecay::addChild().
00118 { 00119 m_footPrint = aCDFootPrint ; 00120 }
void CDCandidate::setKinematicData | ( | const DecayChain::KinematicData & | aKinematicData | ) | [protected, inherited] |
Reimplemented in CDDecay.
Definition at line 99 of file CDCandidate.cxx.
References CDCandidate::m_kinematicDataPtr, and CDCandidate::modifiableKinematicData().
Referenced by CDCandidate::CDCandidate(), CDCandidate::operator=(), and CDDecay::setKinematicData().
00100 { 00101 if ( 0 == m_kinematicDataPtr ) { 00102 m_kinematicDataPtr = new KinematicData( aKinematicData ) ; 00103 if ( 0 == m_kinematicDataPtr ) { 00104 std::cerr << "No memory to allocate another kinematicData" << std::endl ; 00105 exit( 1 ) ; 00106 } 00107 return ; 00108 } 00109 (*(this->modifiableKinematicData())) = aKinematicData ; 00110 return ; 00111 }
CDCandidate & CDCandidate::setP4 | ( | const HepLorentzVector & | aMomentum | ) | [inherited] |
Definition at line 88 of file CDCandidate.cxx.
References CDCandidate::modifiableKinematicData(), and DecayChain::KinematicData::setP4().
00089 { 00090 this->modifiableKinematicData()->setP4( aMomentum ) ; 00091 return( *this ) ; 00092 }
void CDCandidate::setUserTag | ( | int | tag | ) | [inherited] |
Definition at line 81 of file CDCandidate.cxx.
References CDCandidate::modifiableKinematicData(), and DecayChain::KinematicData::setUserTag().
Referenced by LocalRhotoPiPiSelector::operator()(), LocalPionSelector::operator()(), LocalPi0Selector::operator()(), LocalPhotonSelector::operator()(), LocalKsSelector::operator()(), LocalKaonSelector::operator()(), LocalEtatoPiPiPi0Selector::operator()(), LocalEtatoGGSelector::operator()(), LocalEptoRhoGamSelector::operator()(), LocalEptoPiPiEtaSelector::operator()(), and LocalEptoPiPiEta3PiSelector::operator()().
00082 { 00083 this->modifiableKinematicData()->setUserTag( tag ); 00084 }
const EvtRecTrack * CDChargedVisible< H >::track | ( | ) | const [virtual] |
Reimplemented from CDCandidate.
Definition at line 167 of file CDChargedVisible.cc.
References CDChargedVisible< H >::m_visibleEvidence.
Referenced by LocalPionSelector::operator()(), and LocalKaonSelector::operator()().
00168 { 00169 return m_visibleEvidence; 00170 }
int CDCandidate::userTag | ( | ) | const [inherited] |
Definition at line 137 of file CDCandidate.cxx.
References CDCandidate::kinematicData(), and DecayChain::KinematicData::userTag().
Referenced by CDDecay::defaultKinematicData(), LocalPionSelector::operator()(), and LocalKaonSelector::operator()().
00138 { 00139 return kinematicData()->userTag(); 00140 }
const VisibleEvidence* CDChargedVisible< H >::m_visibleEvidence [private] |
Definition at line 131 of file CDChargedVisible.h.
Referenced by CDChargedVisible< H >::builtFromTrack(), CDChargedVisible< H >::defaultKinematicData(), and CDChargedVisible< H >::track().