00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ATLFAST_CALSECTION_H
00011 #define ATLFAST_CALSECTION_H
00012 #include <cmath>
00013 #include <vector>
00014 #include <map>
00015
00016
00017 #ifndef ATLFAST_CALSECTIONREJECT_H
00018 #include "AtlfastCode/CalSectionReject.h"
00019 #endif
00020
00021 #ifndef ATLFAST_CELLCOLLECTION_H
00022 #include "AtlfastCode/CellCollection.h"
00023 #endif
00024
00025 #ifndef ATLFAST_TRANSPORTEDPARTICLECOLLECTION_H
00026 #include "AtlfastCode/TransportedParticleCollection.h"
00027 #endif
00028
00029 class MsgStream;
00030
00031 namespace Atlfast{
00032 class ICellSelector;
00039 class CalSection {
00040 public:
00042 CalSection(
00043 MsgStream& log,
00044 const double minEta,
00045 const double maxEta,
00046 const double granEta,
00047 const double granPhi,
00048 const double minPhi=-M_PI,
00049 const double maxPhi=M_PI);
00050 CalSection(const CalSection& c);
00051 ~CalSection();
00055 void reset();
00060 void deposit(TransportedParticleCollectionIter&,
00061 TransportedParticleCollectionIter&);
00065 void giveHits(const ICellSelector*, CellCollection*) const;
00066
00067 private:
00068
00072 void newHit( const TransportedParticleCollectionCIter & );
00073
00075 const double m_minEta;
00077 const double m_maxEta;
00079 const double m_minPhi;
00081 const double m_maxPhi;
00083 double m_granEta;
00085 double m_granPhi;
00087 int m_nPhi;
00091 CalSectionReject m_calSectionReject;
00095 std::vector<Cell*> m_cells;
00096 std::map<int, Cell*, less<int> > m_hitCells;
00097
00099
00100
00104 Cell * lnkCell;
00105 };
00106 }
00107 #endif
00108
00109
00110
00111
00112
00113
00114
00115
00116