00001
00002
00003
00004 #include "AtlfastEvent/ReconstructedParticle.h"
00005 #include "AtlfastEvent/IAOOvisitor.h"
00006
00007 namespace Atlfast {
00008 ReconstructedParticle::ReconstructedParticle(const int pdg_id,
00009 const HepLorentzVector& vec,
00010 const HepMC::GenParticle*
00011 progenitor ):
00012 IKinematic(),
00013 AODNavigationImp(),m_pdg_id(pdg_id),
00014 m_momentum(vec), m_truth(progenitor),
00015 m_halo(0.),
00016 m_halovector(HepLorentzVector(0.,0.,0.,0.)) {
00017 }
00019 ReconstructedParticle::ReconstructedParticle(const ReconstructedParticle&
00020 src
00021 ):
00022 Atlfast::IAOO(src),
00023 INavigable(src),
00024 I4Momentum(src),
00025 INavigable4Momentum(src),
00026 Atlfast::IKinematic(src),
00027 Atlfast::IAODNavigation(src),
00028 AODNavigationImp( src ){
00029 m_pdg_id = src.m_pdg_id;
00030 m_momentum = src.m_momentum;
00031 m_truth = src.m_truth;
00032 m_halo = src.m_halo;
00033 m_halovector = src.m_halovector;
00034 }
00036 ReconstructedParticle::ReconstructedParticle(
00037 const ReconstructedParticle*
00038 src
00039 ):AODNavigationImp( *src ){
00040 m_pdg_id = src->m_pdg_id;
00041 m_momentum = src->m_momentum;
00042 m_truth = src->m_truth;
00043 m_halo = src->m_halo;
00044 m_halovector = src->m_halovector;
00045 }
00047 ReconstructedParticle&
00048 ReconstructedParticle::operator=(const ReconstructedParticle& src ){
00049
00050 if(this == &src) return *this;
00051
00052 AODNavigationImp::operator=( src );
00053 m_pdg_id = src.m_pdg_id;
00054 m_momentum = src.m_momentum;
00055 m_truth = src.m_truth;
00056 m_halo = src.m_halo;
00057 m_halovector = src.m_halovector;
00058 return *this;
00059 }
00061
00062
00063 ReconstructedParticle::ReconstructedParticle():
00064 AODNavigationImp(),
00065 m_pdg_id(0),
00066 m_momentum(HepLorentzVector(0.0,0.0,0.0,0.0)),
00067 m_truth(0),
00068 m_halo(0.),
00069 m_halovector(HepLorentzVector(0.,0.,0.,0.)){
00070 }
00071 HepLorentzVector ReconstructedParticle::momentum() const {
00072 return m_momentum;
00073 }
00074 double ReconstructedParticle::eta() const {
00075 return m_momentum.pseudoRapidity() ;
00076 }
00077 double ReconstructedParticle::phi() const {
00078 return m_momentum.phi() ;
00079 }
00080 double ReconstructedParticle::pT() const {
00081 return m_momentum.perp() ;
00082 }
00083 double ReconstructedParticle::pt() const {
00084 return m_momentum.perp() ;
00085 }
00086 double ReconstructedParticle::eT() const {
00087 return m_momentum.e()*m_momentum.perp()/m_momentum.rho() ;
00088 }
00089 double ReconstructedParticle::mT() const {
00090 return m_momentum.mt() ;
00091 }
00092 IKinematic* ReconstructedParticle::clone() const {
00093 IKinematic* ik = new ReconstructedParticle(*this) ;
00094 return ik;
00095 }
00097 void ReconstructedParticle::accept(IAOOvisitor* iaPtr) const{
00098 iaPtr->process(this);
00099 }
00101 int ReconstructedParticle::pdg_id() const {
00102 return m_pdg_id ;
00103 }
00105 const HepMC::GenParticle* ReconstructedParticle::truth() const {
00106 return m_truth ;
00107 }
00109 void ReconstructedParticle::print(const std::string& coor,
00110 std::string t) const{
00111 AODNavigationImp::print(coor, t);
00112 std::cout<<t<<std::string(73,' ')<<"ReconstructedParticle"<<std::endl;
00113 }
00114
00115 }
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131