00001
00002
00003 #ifndef ATLFAST_CELL_H
00004 #define ATLFAST_CELL_H
00005
00006
00007 #ifndef GAUDIKERNEL_CONTAINEDOBJECT_H
00008 #include "GaudiKernel/ContainedObject.h"
00009 #define GAUDIKERNEL_CONTAINEDOBJECT_H
00010 #endif
00011
00012 #ifndef GAUDIKERNEL_OBJECTFACTORY_H
00013 #include "GaudiKernel/ObjectFactory.h"
00014 #define GAUDIKERNEL_OBJECTFACTORY_H
00015 #endif
00016
00017 #ifndef CLHEP_LORENTZVECTOR_H
00018 #include "CLHEP/Vector/LorentzVector.h"
00019 #define CLHEP_LORENTZVECTOR_H
00020 #endif
00021
00022
00023 #ifndef ATLFAST_IKINEMATIC_H
00024 #include "AtlfastEvent/IKinematic.h"
00025 #endif
00026
00027 #ifndef ATLFAST_CELLDESCRIPTOR_H
00028 #include "AtlfastEvent/CellDescriptor.h"
00029 #endif
00030
00031 #ifndef ATLFAST_ASSOCIATIONMANAGER_H
00032 #include "AtlfastEvent/AssociationManager.h"
00033 #endif
00034
00035
00036
00037
00038
00039 static const CLID CLID_ATLFAST_CELL=2301 ;
00040
00041 namespace HepMC{
00042 class GenParticle;
00043 }
00044 namespace Atlfast {
00045 using HepMC::GenParticle;
00046 class EPileupDeposit;
00053 class Cell :
00054 public ContainedObject,
00055 public IKinematic,
00056 public AssociationManager {
00057 public:
00059 Cell();
00061 Cell(const CellDescriptor& cellID);
00063 Cell(const Cell&) ;
00065 Cell& operator=(const Cell&);
00067 virtual ~Cell() { }
00069 static const CLID& classID() { return CLID_ATLFAST_CELL; }
00071 virtual const CLID& clID() const { return CLID_ATLFAST_CELL; }
00075 void newHit(const GenParticle* part);
00079 void newHit(const EPileupDeposit*);
00083 void setPt(HepLorentzVector&);
00084
00088 void reset();
00092 virtual HepLorentzVector momentum() const;
00096 virtual double eta() const {return m_id.eta();}
00100 virtual double phi() const {return m_id.phi();}
00104 virtual double pT() const {return m_ptSum;}
00108 virtual double eT() const {return m_ptSum;}
00112 virtual double mT() const {return 0;}
00113
00117 int numberOfHits() const {return m_particles.size();}
00118
00123 std::vector<const GenParticle*> particles() const;
00124
00125 private:
00126
00130 CellDescriptor m_id;
00134 double m_ptSum;
00135 HepLorentzVector m_momentum;
00140 std::vector<const GenParticle*> m_particles;
00141
00142 };
00143 }
00144 #endif
00145
00146
00147
00148
00149
00150
00151
00152
00153