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 #ifndef STD_VECTOR_H
00036 #include <vector>
00037 #define STD_VECTOR_H
00038 #endif
00039
00040
00041 static const CLID CLID_ATLFAST_CELL=2301 ;
00042
00043 namespace HepMC{
00044 class GenParticle;
00045 }
00046 namespace Atlfast {
00047 using HepMC::GenParticle;
00048
00055 class Cell :
00056 public ContainedObject,
00057 public IKinematic,
00058 public AssociationManager {
00059 public:
00061 Cell();
00063 Cell(const CellDescriptor& cellID);
00065 Cell(const Cell&) ;
00067 Cell& operator=(const Cell&);
00069 virtual ~Cell() { }
00071 static const CLID& classID() { return CLID_ATLFAST_CELL; }
00073 virtual const CLID& clID() const { return CLID_ATLFAST_CELL; }
00077 void newHit(const GenParticle* part);
00081 void reset();
00085 virtual HepLorentzVector momentum() const;
00089 virtual double eta() const {return m_id.eta();}
00093 virtual double phi() const {return m_id.phi();}
00097 virtual double pT() const {return m_ptSum;}
00101 virtual double eT() const {return m_ptSum;}
00105 virtual double mT() const {return 0;}
00106
00110 int numberOfHits() const {return m_particles.size();}
00111
00116 std::vector<const GenParticle*> particles() const {return m_particles;}
00117
00118 private:
00119
00123 CellDescriptor m_id;
00127 double m_ptSum;
00128 HepLorentzVector m_momentum;
00132 std::vector<const GenParticle*> m_particles;
00133
00134 };
00135 }
00136 #endif
00137
00138
00139
00140
00141
00142
00143
00144
00145