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 #include "GaudiKernel/MsgStream.h"
00017
00018 #include "AtlfastCode/Cell.h"
00019 #include "AtlfastCode/CellCollection.h"
00020 #include "AtlfastCode/ICellSelector.h"
00021 #include "AtlfastCode/CalSectionReject.h"
00022 #include "AtlfastCode/TransportedParticleCollection.h"
00023 #include "AtlfastCode/TransportedParticle.h"
00024
00025 namespace Atlfast{
00032 class CalSection {
00033 public:
00035 CalSection(
00036 MsgStream log,
00037 const double minEta,
00038 const double maxEta,
00039 const double granEta,
00040 const double granPhi,
00041 const double minPhi=-M_PI,
00042 const double maxPhi=M_PI);
00043 CalSection(const CalSection& c);
00044 ~CalSection();
00048 void reset();
00053 void deposit(const TPCollectionIter&, TPCollectionIter&);
00057 void giveHits(const ICellSelector*, CellCollection*) const;
00058
00059 private:
00060
00064 void newHit( const TPCollectionCIter & );
00065
00067 const double m_minEta;
00069 const double m_maxEta;
00071 const double m_minPhi;
00073 const double m_maxPhi;
00075 double m_granEta;
00077 double m_granPhi;
00079 int m_nPhi;
00083 CalSectionReject m_calSectionReject;
00087 vector<Cell*> m_cells;
00088 map<int, Cell*, less<int> > m_hitCells;
00089
00090
00092
00093
00097 Cell * lnkCell;
00098 };
00099 }
00100 #endif
00101
00102
00103
00104
00105
00106
00107
00108
00109