ReconstructedParticle.h

Go to the documentation of this file.
00001 // ================================================
00002 // This file contains:
00003 //
00004 //              ReconstructedParticle class
00005 //
00006 //           ReconstructedParticleCollection   
00007 // ================================================
00008 //
00009 // THIS TEXT TO BE REPLACED BY ATLAS STANDARD FORMAT
00010 //
00011 //
00012 // Namespace: ATLFast::
00013 //
00014 // class: ReconstructedParticle
00015 //
00016 // Description:
00017 //
00018 //   ReconstructedParticle is used to represent most simple particles such as 
00019 //   Electron, Muon, Photon, etc. The motivation being that all particles are
00020 //   the same type from the point of view of kinematic state variables, 
00021 //   and are only differentiated by having a different "label".
00022 //
00023 //   It implements an "IKinematic" interface which is
00024 //   designed to standardise kimematic attribute query method names.
00025 //
00026 //   Ongoing points during development:
00027 //
00028 //   1 This is of course not a proven concept at this stage.
00029 //     However we follow the principle of "try the simplest thing first"
00030 //     Thus we propose this as the highest level analysis entity class
00031 //     in order to see if it works.
00032 //
00033 //   2 This is all without prejudice to how we chose to
00034 //     represent jets, tracks, clusters...
00035 //
00036 //   3 It was developed during the first phase of ATLFAST++ re-engineering
00037 //     and inclusion in the ATLAS (Gaudi/Athena) analysis framework. 
00038 //     It is therefore one of the first implementations of such analysis classes,
00039 //     and as such should be seen as a prototype which may be superceeded
00040 //     in concept.
00041 // 
00042 //   4 At the present time we have not solved the association/relationship
00043 //     to other entities. This is a deep problem which is wider than
00044 //     Atlfast.
00045 //  
00046 //
00047 // Authors:
00048 //    P.Clarke, H.Phillips, E.Richter-Was, P.Sherwood, R.Steward
00049 //
00050 // Written:
00051 //    7-June-2000
00052 // Revised:
00053 //
00054 //
00055 // ................................................................
00056 //
00057 #ifndef ATLFAST_RECONSTRUCTEDPARTICLE_H
00058 #define ATLFAST_RECONSTRUCTEDPARTICLE_H
00059 
00060 
00061 // Other
00062 #include "CLHEP/Vector/LorentzVector.h"
00063 #include "HepMC/GenParticle.h"
00064 
00065 // Atlfast
00066 //#ifndef ATLFAST_IKINEMATIC_H
00067 //#include "AtlfastEvent/IKinematic.h"
00068 //#endif
00069 
00070 #ifndef ATLFAST_IAODNAVIGATION_H
00071 #include "AtlfastEvent/IAODNavigation.h"
00072 #endif
00073 
00074 //#ifndef ATLFAST_IKINEMATICBASE_H
00075 //#include "AtlfastEvent/IKinematicBase.h"
00076 //#endif
00077 
00078 #ifndef ATLFAST_AODNAVIGATIONIMP_H
00079 #include "AtlfastEvent/AODNavigationImp.h"
00080 #endif
00081 
00082 //******************************************
00083 //      ReconstructedParticle class
00084 //
00085 // See description at head of this file 
00086 //******************************************
00087 
00088 
00089 namespace Atlfast {
00101   class IAOOvisitor;
00102 
00103   class ReconstructedParticle: 
00104     virtual public IAODNavigation,
00105     private AODNavigationImp {
00106     
00107     public:
00108     
00109     //.............
00111     
00112     ReconstructedParticle();
00113     ReconstructedParticle(const int pdg_id, const HepLorentzVector& vec,
00114                           const HepMC::GenParticle* progenitor );
00115     ReconstructedParticle( const ReconstructedParticle& src );
00116     ReconstructedParticle( const ReconstructedParticle* src );
00117     ReconstructedParticle& operator=( const ReconstructedParticle& src );
00118     virtual ~ReconstructedParticle() {}
00119     
00120     
00124       
00125     virtual HepLorentzVector momentum() const;
00126     virtual double  eta() const;
00127     virtual double  phi() const;
00128     virtual double  pT()  const;
00129     virtual double  eT()  const;
00130     virtual double  mT()  const;
00131     virtual double  pt()  const;
00132     virtual IKinematic* clone() const;
00133 
00135     virtual void accept(IAOOvisitor* iaPtr) const;
00136     
00137     
00138     int pdg_id() const;                      
00139     const HepMC::GenParticle* truth() const; 
00140  
00141     double halo() const                              {return m_halo;}
00142     void set_halo(double halo)                       {m_halo = halo;}
00143     HepLorentzVector halovector() const              {return m_halovector;}
00144     void set_halovector(HepLorentzVector halovector) {m_halovector = halovector;}
00145     
00147     virtual void print(const std::string& coor, std::string t="" ) const;
00148  
00149     private:
00150     
00151     int m_pdg_id ;                            
00152     HepLorentzVector m_momentum ;             
00153 
00157     const HepMC::GenParticle* m_truth ;
00158 
00159     double m_halo ;                           
00160     HepLorentzVector m_halovector;            
00161     
00162   };
00164   //                inline methods                          //
00166 } // end of namespace bracket
00167 #endif
00168 
00169 
00170 
00171 
00172 
00173 
00174 
00175 
00176 
00177 
00178 

Generated on Fri Sep 21 13:00:09 2007 for AtlfastEvent by  doxygen 1.5.1