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_DBCONTAINERCONVERTER_H
00013 #include "GaudiDb/DbContainerConverter.h"
00014 #define GAUDIKERNEL_DBCONTAINERCONVERTER_H
00015 #endif
00016
00017 #ifndef GAUDIKERNEL_OBJECTFACTORY_H
00018 #include "GaudiKernel/ObjectFactory.h"
00019 #define GAUDIKERNEL_OBJECTFACTORY_H
00020 #endif
00021
00022 #ifndef CLHEP_LORENTZVECTOR_H
00023 #include "CLHEP/Vector/LorentzVector.h"
00024 #define CLHEP_LORENTZVECTOR_H
00025 #endif
00026
00027
00028 #ifndef ATLFAST_IKINEMATIC_H
00029 #include "AtlfastCode/IKinematic.h"
00030 #endif
00031
00032 #ifndef ATLFAST_CELLDESCRIPTOR_H
00033 #include "AtlfastCode/CellDescriptor.h"
00034 #endif
00035
00036 #ifndef ATLFAST_ASSOCIATIONMANAGER_H
00037 #include "AtlfastCode/AssociationManager.h"
00038 #endif
00039
00040 #ifndef STD_VECTOR_H
00041 #include <vector>
00042 #define STD_VECTOR_H
00043 #endif
00044
00045
00046 static const CLID CLID_ATLFAST_CELL=2301 ;
00047
00048 namespace HepMC{
00049 class GenParticle;
00050 }
00051 namespace Atlfast {
00052 using HepMC::GenParticle;
00053
00060 class Cell :
00061 public ContainedObject,
00062 public IKinematic,
00063 public AssociationManager {
00064 public:
00066 Cell() : ContainedObject(), AssociationManager(){}
00068 Cell(const CellDescriptor& cellID) ;
00070 Cell(const Cell&) ;
00072 Cell& operator=(const Cell&);
00074 virtual ~Cell() { }
00076 static const CLID& classID() { return CLID_ATLFAST_CELL; }
00078 virtual const CLID& clID() const { return CLID_ATLFAST_CELL; }
00082 void newHit(const GenParticle* part);
00086 void reset();
00090 virtual HepLorentzVector momentum() const;
00094 virtual double eta() const {return m_id.eta();}
00098 virtual double phi() const {return m_id.phi();}
00102 virtual double pT() const {return m_ptSum;}
00106 virtual double eT() const {return m_ptSum;}
00110 virtual double mT() const {return 0;}
00111
00115 int numberOfHits() const {return m_particles.size();}
00116
00121 std::vector<const GenParticle*> particles() const {return m_particles;}
00122
00126 virtual StreamBuffer& serialize(StreamBuffer& s);
00127
00131 virtual StreamBuffer& serialize(StreamBuffer& s) const;
00132
00133 private:
00134
00138 CellDescriptor m_id;
00142 double m_ptSum;
00143 HepLorentzVector m_momentum;
00147 std::vector<const GenParticle*> m_particles;
00148
00149 };
00150 }
00151 #endif
00152
00153
00154
00155
00156
00157
00158
00159
00160