15#include "DecayChain/Element/ReferenceHolder.h"
16#include "EvtRecEvent/EvtRecEtaToGG.h"
17#include "EvtRecEvent/EvtRecPi0.h"
18#include "EvtRecEvent/EvtRecTrack.h"
19#include "EvtRecEvent/EvtRecVeeVertex.h"
21#include "BesDChain/CDCandidate.h"
22#include "BesDChain/CDDecay.h"
23#include "BesDChain/util/KinematicData.h"
31void CDCandidate::recover()
const {
kinematicData()->recover(); }
38 if ( 0 != aOtherCDCandidate.m_kinematicDataPtr )
39 { setKinematicData( *( aOtherCDCandidate.kinematicData() ) ); }
46 : m_kinematicDataPtr( 0 ), m_footPrint( aCDFootPrint ) {}
56 if ( 0 == aOtherCDCandidate.m_kinematicDataPtr )
58 delete m_kinematicDataPtr;
59 m_kinematicDataPtr = 0;
62 m_footPrint = aOtherCDCandidate.
footPrint();
71 this->modifiableKinematicData()->
setP4( aMomentum );
80 if ( 0 == m_kinematicDataPtr )
83 if ( 0 == m_kinematicDataPtr )
85 std::cerr <<
"No memory to allocate another kinematicData" << std::endl;
90 ( *( this->modifiableKinematicData() ) ) = aKinematicData;
98 m_footPrint = aCDFootPrint;
105 if ( 0 == m_kinematicDataPtr )
108 if ( 0 == m_kinematicDataPtr )
110 std::cerr <<
"No memory to allocate another kinematicData" << std::endl;
114 return m_kinematicDataPtr;
147 return ( ( *(
CDCandidate*)
this ).modifiableKinematicData() );
160 final.first.push_back( cand.
track() );
165 final.second.push_back( cand.
photon() );
169 const vector<ReferenceHolder<CDCandidate>>&
children =
decay.children();
172 child != lastChild; ++child )
185 std::cerr <<
"No navtrack for this CDCandidate" << std::endl;
199 std::cerr <<
"No NavShower for this CDCandidate" << std::endl;
213 std::cerr <<
"No NavCDPi0 for this CDCandidate" << std::endl;
227 std::cerr <<
"No NavCDEta for this CDCandidate" << std::endl;
241 std::cerr <<
"No NavKs for this CDCandidate" << std::endl;
255 std::cerr <<
"No NavLambda for this CDCandidate" << std::endl;
269 std::cerr <<
"No CDDecay for this CDCandidate" << std::endl;
279 return ( m_footPrint.overlap( aOtherCDCandidate.
footPrint() ) );
const CDFootPrint & footPrint() const
void setKinematicData(const DecayChain::KinematicData &aKinematicData)
virtual bool builtFromCDPi0() const
virtual const DecayEvidence & decay() const
virtual bool builtFromCDEta() const
virtual const EvtRecTrack * photon() const
virtual DecayChain::KinematicData * defaultKinematicData() const =0
CDCandidate & setP4(const HepLorentzVector &aMomentum)
virtual bool builtFromCDLambda() const
virtual const EvtRecVeeVertex * navLambda() const
CDCandidate(const CDCandidate &aOtherCDCandidate)
virtual const EvtRecTrack * track() const
const Hep3Vector & momentum() const
const CDCandidate & operator=(const CDCandidate &aOtherCDCandidate)
virtual bool builtFromCDPhoton() const
virtual bool builtFromTrack() const
const HepLorentzVector & p4() const
virtual const EvtRecVeeVertex * navKshort() const
TracksAndShowers finalChildren() const
const DecayChain::KinematicData * kinematicData() const
virtual bool builtFromCDDecay() const
virtual bool builtFromCDKs() const
virtual const EvtRecPi0 * navPi0() const
void recurseNode(TracksAndShowers &final, const CDCandidate &cand) const
bool overlap(const CDCandidate &aOtherCDCandidate) const
virtual const EvtRecEtaToGG * navEta() const
std::pair< vector< const EvtRecTrack * >, vector< const EvtRecTrack * > > TracksAndShowers
void setCDFootPrint(const CDFootPrint &aCDFootPrint)
const HepLorentzVector & p4() const