#include <CDChargedVisible.h>
Inheritance diagram for CDChargedVisible< H >:
Public Types | |
typedef CDCandidate | CandidateClass |
typedef CDCandidate | CandidateClass |
typedef CDDecay | DecayEvidence |
typedef CDDecay | DecayEvidence |
typedef std::pair< vector< const EvtRecTrack * >, vector< const EvtRecTrack * > > | TracksAndShowers |
typedef std::pair< vector< const EvtRecTrack * >, vector< const EvtRecTrack * > > | TracksAndShowers |
typedef EvtRecTrack | VisibleEvidence |
typedef EvtRecTrack | VisibleEvidence |
Public Member Functions | |
void | addLink () const |
void | addLink () const |
virtual bool | builtFromCDDecay () const |
virtual bool | builtFromCDDecay () const |
virtual bool | builtFromCDEta () const |
virtual bool | builtFromCDEta () const |
virtual bool | builtFromCDKs () const |
virtual bool | builtFromCDKs () const |
virtual bool | builtFromCDLambda () const |
virtual bool | builtFromCDLambda () const |
virtual bool | builtFromCDPhoton () const |
virtual bool | builtFromCDPhoton () const |
virtual bool | builtFromCDPi0 () const |
virtual bool | builtFromCDPi0 () const |
virtual bool | builtFromTrack () const |
virtual bool | builtFromTrack () const |
CDChargedVisible (const CDChargedVisible< H > &aOtherCDChargedVisible) | |
CDChargedVisible (const EvtRecTrack *aVisible) | |
CDChargedVisible (const CDChargedVisible< H > &aOtherCDChargedVisible) | |
CDChargedVisible (const EvtRecTrack *aVisible) | |
int | charge () const |
int | charge () const |
virtual const DecayEvidence & | decay () const |
virtual const DecayEvidence & | decay () const |
void | dropLink () const |
void | dropLink () const |
double | energy () const |
double | energy () const |
TracksAndShowers | finalChildren () const |
TracksAndShowers | finalChildren () const |
const CDFootPrint & | footPrint () const |
const CDFootPrint & | footPrint () const |
virtual DBCandidate::Hypo | hypo () const |
virtual DBCandidate::Hypo | hypo () const |
const DecayChain::KinematicData * | kinematicData () const |
const DecayChain::KinematicData * | kinematicData () const |
double | mass () const |
double | mass () const |
const Hep3Vector & | momentum () const |
const Hep3Vector & | momentum () const |
virtual const EvtRecEtaToGG * | navEta () const |
virtual const EvtRecEtaToGG * | navEta () const |
virtual const EvtRecVeeVertex * | navKshort () const |
virtual const EvtRecVeeVertex * | navKshort () const |
virtual const EvtRecVeeVertex * | navLambda () const |
virtual const EvtRecVeeVertex * | navLambda () const |
virtual const EvtRecPi0 * | navPi0 () const |
virtual const EvtRecPi0 * | navPi0 () const |
bool | overlap (const CDCandidate &aOtherCDCandidate) const |
bool | overlap (const CDCandidate &aOtherCDCandidate) const |
const HepLorentzVector & | p4 () const |
const HepLorentzVector & | p4 () const |
virtual const EvtRecTrack * | photon () const |
virtual const EvtRecTrack * | photon () const |
CDCandidate & | setP4 (const HepLorentzVector &aMomentum) |
CDCandidate & | setP4 (const HepLorentzVector &aMomentum) |
virtual const EvtRecTrack * | track () const |
virtual const EvtRecTrack * | track () const |
virtual | ~CDChargedVisible () |
virtual | ~CDChargedVisible () |
Protected Member Functions | |
virtual DecayChain::KinematicData * | defaultKinematicData () const |
virtual DecayChain::KinematicData * | defaultKinematicData () const |
void | recurseNode (TracksAndShowers &final, const CDCandidate &cand) const |
void | recurseNode (TracksAndShowers &final, const CDCandidate &cand) const |
void | setCDFootPrint (const CDFootPrint &aCDFootPrint) |
void | setCDFootPrint (const CDFootPrint &aCDFootPrint) |
void | setKinematicData (const DecayChain::KinematicData &aKinematicData) |
void | setKinematicData (const DecayChain::KinematicData &aKinematicData) |
Private Member Functions | |
CDChargedVisible () | |
CDChargedVisible () | |
const CDChargedVisible & | operator= (const CDChargedVisible< H > &aOtherCDChargedVisible) |
const CDChargedVisible & | operator= (const CDChargedVisible< H > &aOtherCDChargedVisible) |
Private Attributes | |
const VisibleEvidence * | m_visibleEvidence |
const VisibleEvidence * | m_visibleEvidence |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
00107 : 00108 CDCandidate( CDMud< EvtRecTrack >::get( aVisible ) ) , 00109 m_visibleEvidence( aVisible ) 00110 { 00111 }
|
|
00134 : 00135 CDCandidate( aOtherCDChargedHypo ) , 00136 m_visibleEvidence( aOtherCDChargedHypo.m_visibleEvidence ) 00137 { 00138 }
|
|
00145 { 00146 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
00108 { 00109 //if (m_linkCount==0xFFFFFFFF) { 00110 // throw TooManyReferencesException(); 00111 //} 00112 ++m_linkCount ; 00113 }
|
|
|
|
Reimplemented in CDDecay, and CDDecay. 00338 {
00339 return ( false ) ;
00340 }
|
|
|
|
Reimplemented in CDEta, CDEta, CDEta, and CDEta. 00278 {
00279 return ( false ) ;
00280 }
|
|
|
|
Reimplemented in CDKs, and CDKs. 00298 {
00299 return ( false ) ;
00300 }
|
|
Reimplemented in CDLambda, CDLambda, CDLambda, and CDLambda. |
|
Reimplemented in CDLambda, CDLambda, CDLambda, and CDLambda. 00318 {
00319 return ( false ) ;
00320 }
|
|
|
|
Reimplemented in CDPhoton, and CDPhoton. 00238 {
00239 return ( false ) ;
00240 }
|
|
|
|
Reimplemented in CDPi0, and CDPi0. 00258 {
00259 return ( false ) ;
00260 }
|
|
Reimplemented from CDCandidate. |
|
Reimplemented from CDCandidate. 00162 {
00163 return ( 0 != m_visibleEvidence ) ;
00164 }
|
|
|
|
00145 { 00146 return kinematicData()->charge(); 00147 }
|
|
|
|
Reimplemented in CDDecay, and CDDecay. 00347 { 00348 std::cerr << "No CDDecay for this CDCandidate" << std::endl ; 00349 exit( 1 ) ; 00350 return ( *(CDDecay*)0 ) ; 00351 }
|
|
Implements CDCandidate. |
|
Implements CDCandidate. 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 }
|
|
|
|
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 }
|
|
|
|
00154 { 00155 return kinematicData()->energy(); 00156 }
|
|
|
|
00184 { 00185 TracksAndShowers blocks; 00186 recurseNode(blocks, *this); 00187 return blocks; 00188 }
|
|
|
|
00366 {
00367 return ( m_footPrint ) ;
00368 }
|
|
Reimplemented from CDCandidate. |
|
Reimplemented from CDCandidate. 00139 {
00140 return H;
00141 }
|
|
|
|
00176 { 00177 // Cast away `const' to pick up the function. 00178 // This is safe as the result is being returned as a `const' 00179 return ( (*(CDCandidate*)this).modifiableKinematicData() ); 00180 }
|
|
|
|
00136 { 00137 return kinematicData()->mass(); 00138 }
|
|
|
|
00163 { 00164 return kinematicData()->p4(); 00165 }
|
|
|
|
Reimplemented in CDEta, CDEta, CDEta, and CDEta. 00287 { 00288 std::cerr << "No NavCDEta for this CDCandidate" << std::endl ; 00289 exit( 1 ) ; 00290 return ( (EvtRecEtaToGG*)0 ) ; 00291 }
|
|
|
|
Reimplemented in CDKs, and CDKs. 00307 { 00308 std::cerr << "No NavKs for this CDCandidate" << std::endl ; 00309 exit( 1 ) ; 00310 return ( (EvtRecVeeVertex*)0 ) ; 00311 }
|
|
Reimplemented in CDLambda, CDLambda, CDLambda, and CDLambda. |
|
Reimplemented in CDLambda, CDLambda, CDLambda, and CDLambda. 00327 { 00328 std::cerr << "No NavLambda for this CDCandidate" << std::endl ; 00329 exit( 1 ) ; 00330 return ( (EvtRecVeeVertex*)0 ) ; 00331 }
|
|
|
|
Reimplemented in CDPi0, and CDPi0. 00267 { 00268 std::cerr << "No NavCDPi0 for this CDCandidate" << std::endl ; 00269 exit( 1 ) ; 00270 return ( (EvtRecPi0*)0 ) ; 00271 }
|
|
|
|
|
|
|
|
00358 { 00359 return ( m_footPrint.overlap( aOtherCDCandidate.footPrint() ) ) ; 00360 }
|
|
|
|
00168 { 00169 return kinematicData()->p4(); 00170 }
|
|
|
|
Reimplemented in CDPhoton, and CDPhoton. 00247 { 00248 std::cerr << "No NavShower for this CDCandidate" << std::endl ; 00249 exit( 1 ) ; 00250 return ( (EvtRecTrack*)0 ) ; 00251 }
|
|
|
|
00193 { 00194 if(cand.builtFromTrack()) 00195 { 00196 final.first.push_back( cand.track() ); 00197 return; 00198 } 00199 if(cand.builtFromCDPhoton()) 00200 { 00201 final.second.push_back( cand.photon() ); 00202 return; 00203 } 00204 const DecayEvidence& decay = cand.decay(); 00205 const vector< ReferenceHolder<CDCandidate> >& children = decay.children(); 00206 vector< ReferenceHolder<CDCandidate> >::const_iterator lastChild = children.end(); 00207 for(vector<ReferenceHolder<CDCandidate> >::const_iterator child = children.begin(); 00208 child != lastChild; ++child) 00209 { 00210 recurseNode(final, **child); 00211 } 00212 }
|
|
|
|
00113 { 00114 m_footPrint = aCDFootPrint ; 00115 }
|
|
|
|
Reimplemented in CDDecay, and CDDecay. 00095 { 00096 if ( 0 == m_kinematicDataPtr ) { 00097 m_kinematicDataPtr = new KinematicData( aKinematicData ) ; 00098 if ( 0 == m_kinematicDataPtr ) { 00099 std::cerr << "No memory to allocate another kinematicData" << std::endl ; 00100 exit( 1 ) ; 00101 } 00102 return ; 00103 } 00104 (*(this->modifiableKinematicData())) = aKinematicData ; 00105 return ; 00106 }
|
|
|
|
00084 { 00085 this->modifiableKinematicData()->setP4( aMomentum ) ; 00086 return( *this ) ; 00087 }
|
|
Reimplemented from CDCandidate. |
|
Reimplemented from CDCandidate. 00168 {
00169 return m_visibleEvidence;
00170 }
|
|
|
|
|