00001
00002
00003
00004
00005 #ifndef ATLFAST_CALORIMETER_H
00006 #define ATLFAST_CALORIMETER_H
00007
00008 #include <vector>
00009 #include <string>
00010
00011
00012
00013 #ifndef ATLFAST_COLLECTIONDEFS_H
00014 #include "AtlfastEvent/CollectionDefs.h"
00015 #endif
00016
00017 #ifndef ATLFAST_TRANSPORTEDPARTICLECOLLECTION_H
00018 #include "AtlfastAlgs/TransportedParticleCollection.h"
00019 #endif
00020
00021 #ifndef ATLFAST_TRYTOSHOWER_H
00022 #include "AtlfastAlgs/TryToShower.h"
00023 #endif
00024
00025 class MsgStream;
00026
00027 namespace FastShower{
00028 class GridletElement;
00029 class GridletForger;
00030 }
00031
00032 namespace Atlfast {
00033 class CalSection;
00034 class ICellSelector;
00035 class EPileupDeposit;
00036 class ISmearer;
00037
00038 using FastShower::GridletElement;
00039 using FastShower::GridletForger;
00051 typedef std::vector<GridletElement*> ElementCollection;
00052 typedef ElementCollection::const_iterator ElementCollectionCIter;
00053 typedef ElementCollection::iterator ElementCollectionIter;
00054 class Calorimeter {
00055
00056 public:
00061 Calorimeter(
00062 MsgStream& log,
00063 bool fastShower,
00064 const double etaCoverage,
00065 const double barrelForwardEta,
00066 const double granBarrelEta,
00067 const double granBarrelPhi,
00068 const double granForwardEta,
00069 const double granForwardPhi
00070 );
00072 ~Calorimeter();
00074 Calorimeter(const Calorimeter&);
00075
00081 void deposit(TransportedParticleCollectionIter& first,
00082 TransportedParticleCollectionIter& last);
00086 void deposit(std::vector<Atlfast::EPileupDeposit*>::iterator& first,
00087 std::vector<Atlfast::EPileupDeposit*>::iterator& last) const;
00091 const GridletForger* gridletForger() const;
00095 MsgStream& msgStream() const;
00099 void addEelements(ElementCollectionIter, ElementCollectionIter);
00103 void addHelements(ElementCollectionIter, ElementCollectionIter);
00107 void reset();
00108
00112 void giveHitCells(const ICellSelector*, ITwoCptCellCollection*);
00116 void smearCells(ISmearer*);
00117 private:
00122 CalSection* m_section[3];
00123
00127 MsgStream& m_log;
00128 GridletForger* m_gridletForger;
00129 ElementCollection m_eElements;
00130 ElementCollection m_hElements;
00131 };
00132 }
00133 #endif
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151