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 class MsgStream;
00026
00027 namespace FastShower{
00028 class GridletElement;
00029 }
00030
00031 namespace Atlfast{
00032 class ICellSelector;
00033 class EPileupDeposit;
00034 class ISmearer;
00035
00036 using FastShower::GridletElement;
00037
00043 class CalSection {
00044 public:
00046 CalSection(
00047 MsgStream& log,
00048 const double minEta,
00049 const double maxEta,
00050 const double granEta,
00051 const double granPhi,
00052 const double minPhi=-M_PI,
00053 const double maxPhi=M_PI);
00054 CalSection(const CalSection& c);
00055 ~CalSection();
00059 void reset();
00064 void deposit(ITransportedParticleCollectionIter&,
00065 ITransportedParticleCollectionIter&);
00070 void deposit(std::vector<Atlfast::EPileupDeposit*>::iterator& ,
00071 std::vector<Atlfast::EPileupDeposit*>::iterator& );
00073 void depositEcal(std::vector<const GridletElement*>::iterator&,
00074 std::vector<const GridletElement*>::iterator&
00075 );
00077 void depositHcal(std::vector<const GridletElement*>::iterator& ,
00078 std::vector<const GridletElement*>::iterator&
00079 );
00081 void depositEgen(std::vector<const Gridlet*>::iterator& ,
00082 std::vector<const Gridlet*>::iterator&);
00086 void giveHits(const ICellSelector*, ITwoCptCellCollection*) const;
00087
00091 void smearCells(ISmearer*);
00092 private:
00093
00094 MsgStream& m_log;
00096 void newHit( const ITransportedParticle* );
00098 void newHit( const EPileupDeposit*);
00100 void newEHit( const GridletElement*);
00102 void newHHit( const GridletElement*);
00104 void setEgen( const Gridlet*);
00106 int index(const Gridlet*) const;
00107 int index(const GridletElement*) const;
00108 int index(const ITransportedParticle*) const;
00109 int index(const Atlfast::EPileupDeposit*) const;
00110 int iindex(double phi, double eta) const;
00112 const double m_minEta;
00114 const double m_maxEta;
00116 const double m_minPhi;
00118 const double m_maxPhi;
00120 double m_granEta;
00122 double m_granPhi;
00124 int m_nPhi;
00128 CalSectionReject m_calSectionReject;
00132 std::vector<ITwoCptCell*> m_cells;
00133 std::map<int, ITwoCptCell*, std::less<int> > m_hitCells;
00134
00135 };
00136 }
00137 #endif
00138
00139
00140
00141
00142
00143
00144
00145
00146