CDChargedVisible< H > Class Template Reference

#include <CDChargedVisible.h>

Inheritance diagram for CDChargedVisible< H >:

CDCandidate dchain::ReferenceCount List of all members.

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 EvtRecTracktrack () const
virtual DBCandidate::Hypo hypo () const
void setUserTag (int tag)
CDCandidatesetP4 (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::KinematicDatakinematicData () const
TracksAndShowers finalChildren () const
virtual bool builtFromCDPhoton () const
virtual const EvtRecTrackphoton () const
virtual bool builtFromCDPi0 () const
virtual const EvtRecPi0navPi0 () const
virtual bool builtFromCDEta () const
virtual const EvtRecEtaToGGnavEta () const
virtual bool builtFromCDKs () const
virtual const EvtRecVeeVertexnavKshort () const
virtual bool builtFromCDLambda () const
virtual const EvtRecVeeVertexnavLambda () const
virtual bool builtFromCDDecay () const
virtual const DecayEvidencedecay () const
bool overlap (const CDCandidate &aOtherCDCandidate) const
const CDFootPrintfootPrint () const
void addLink () const
void dropLink () const

Protected Member Functions

virtual DecayChain::KinematicDatadefaultKinematicData () 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 CDChargedVisibleoperator= (const CDChargedVisible< H > &aOtherCDChargedVisible)

Private Attributes

const VisibleEvidencem_visibleEvidence

Detailed Description

template<DBCandidate::Hypo H>
class CDChargedVisible< H >

Definition at line 84 of file CDChargedVisible.h.


Member Typedef Documentation

template<DBCandidate::Hypo 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.

template<DBCandidate::Hypo H>
typedef EvtRecTrack CDChargedVisible< H >::VisibleEvidence

Definition at line 91 of file CDChargedVisible.h.


Constructor & Destructor Documentation

template<DBCandidate::Hypo 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 }

template<DBCandidate::Hypo H>
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 }

template<DBCandidate::Hypo H>
CDChargedVisible< H >::~CDChargedVisible (  )  [virtual]

Definition at line 144 of file CDChargedVisible.cc.

00145 {
00146 }

template<DBCandidate::Hypo H>
CDChargedVisible< H >::CDChargedVisible (  )  [private]


Member Function Documentation

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]

Reimplemented in CDDecay.

Definition at line 347 of file CDCandidate.cxx.

00348 {
00349    return ( false ) ;
00350 }

bool CDCandidate::builtFromCDEta (  )  const [virtual, inherited]

Reimplemented in CDEta.

Definition at line 287 of file CDCandidate.cxx.

00288 {
00289    return ( false ) ;
00290 }

bool CDCandidate::builtFromCDKs (  )  const [virtual, inherited]

Reimplemented in CDKs.

Definition at line 307 of file CDCandidate.cxx.

00308 {
00309    return ( false ) ;
00310 }

bool CDCandidate::builtFromCDLambda (  )  const [virtual, inherited]

Reimplemented in CDLambda.

Definition at line 327 of file CDCandidate.cxx.

00328 {
00329    return ( false ) ;
00330 }

bool CDCandidate::builtFromCDPhoton (  )  const [virtual, inherited]

Reimplemented in CDPhoton.

Definition at line 247 of file CDCandidate.cxx.

Referenced by CDCandidate::recurseNode().

00248 {
00249    return ( false ) ;
00250 }

bool CDCandidate::builtFromCDPi0 (  )  const [virtual, inherited]

Reimplemented in CDPi0.

Definition at line 267 of file CDCandidate.cxx.

00268 {
00269    return ( false ) ;
00270 }

template<DBCandidate::Hypo H>
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 }

template<DBCandidate::Hypo H>
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 }

template<DBCandidate::Hypo H>
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 }

template<DBCandidate::Hypo H>
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 }

template<DBCandidate::Hypo H>
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 }


Member Data Documentation

template<DBCandidate::Hypo H>
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().


Generated on Tue Nov 29 23:18:02 2016 for BOSS_7.0.2 by  doxygen 1.4.7