CalSection.h

Go to the documentation of this file.
00001 //=================================================
00002 //
00003 // Calsection.h
00004 //
00005 // Author: Peter Sherwood
00006 // Rudimentary Geometry information for a calorimeter
00007 // section
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 

Generated on Mon Sep 24 14:19:10 2007 for AtlfastAlgs by  doxygen 1.5.1