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 "AtlfastAlgs/CalSectionReject.h"
00019 #endif
00020
00021 #ifndef ATLFAST_COLLECTIONDEFS_H
00022 #include "AtlfastEvent/CollectionDefs.h"
00023 #endif
00024
00025 #ifndef ATLFAST_TRANSPORTEDPARTICLECOLLECTION_H
00026 #include "AtlfastAlgs/TransportedParticleCollection.h"
00027 #endif
00028
00029 class MsgStream;
00030
00031 namespace Atlfast{
00032 class ICellSelector;
00033 class EPileupDeposit;
00034 class ISmearer;
00041 class CalSection {
00042 public:
00044 CalSection(
00045 MsgStream& log,
00046 const double minEta,
00047 const double maxEta,
00048 const double granEta,
00049 const double granPhi,
00050 const double minPhi=-M_PI,
00051 const double maxPhi=M_PI);
00052 CalSection(const CalSection& c);
00053 ~CalSection();
00057 void reset();
00062 void deposit(TransportedParticleCollectionIter&,
00063 TransportedParticleCollectionIter&);
00068 void deposit(std::vector<Atlfast::EPileupDeposit*>::iterator& ,
00069 std::vector<Atlfast::EPileupDeposit*>::iterator& );
00073 void giveHits(const ICellSelector*, CellCollection*) const;
00074
00078 void smearCells(ISmearer*);
00079 private:
00080
00084 void newHit( const TransportedParticleCollectionCIter & );
00088 void newHit( const std::vector<Atlfast::EPileupDeposit*>::iterator & );
00089
00091 const double m_minEta;
00093 const double m_maxEta;
00095 const double m_minPhi;
00097 const double m_maxPhi;
00099 double m_granEta;
00101 double m_granPhi;
00103 int m_nPhi;
00107 CalSectionReject m_calSectionReject;
00111 std::vector<Cell*> m_cells;
00112 std::map<int, Cell*, std::less<int> > m_hitCells;
00113
00115
00116
00120 Cell * lnkCell;
00121 };
00122 }
00123 #endif
00124
00125
00126
00127
00128
00129
00130
00131
00132