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_TRYTOSHOWER_H
00018 #include "AtlfastAlgs/TryToShower.h"
00019 #endif
00020
00021 class MsgStream;
00022
00023 namespace FastShower{
00024 class GridletElement;
00025 class GridletForger;
00026 class Gridlet;
00027 }
00028
00029 namespace Atlfast {
00030 class CalSection;
00031 class ICellSelector;
00032 class EPileupDeposit;
00033 class ISmearer;
00034
00035 using FastShower::GridletElement;
00036 using FastShower::GridletForger;
00037 using FastShower::Gridlet;
00038
00039 typedef std::vector<GridletElement*> ElementCollection;
00040 typedef ElementCollection::const_iterator ElementCollectionCIter;
00041 typedef ElementCollection::iterator ElementCollectionIter;
00042
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(ITransportedParticleCollectionIter& first,
00082 ITransportedParticleCollectionIter& 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 addGridlet(Gridlet* g);
00103 void reset();
00104
00108 void giveHitCells(const ICellSelector*, ITwoCptCellCollection*);
00112 void smearCells(ISmearer*);
00113 private:
00118 CalSection* m_section[3];
00119
00123 MsgStream& m_log;
00124 GridletForger* m_gridletForger;
00125 std::vector<const Gridlet* > m_gridlets;
00126 };
00127 }
00128 #endif
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146