CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Geometry/EcalTestBeam/interface/EcalTBHodoscopeGeometry.h

Go to the documentation of this file.
00001 #ifndef Geometry_EcalTestBeam_EcalTBHodoscopeGeometry_HH
00002 #define Geometry_EcalTestBeam_EcalTBHodoscopeGeometry_HH
00003 
00004 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00005 #include "Geometry/CaloGeometry/interface/PreshowerStrip.h"
00006 
00007 #include <vector>
00008 
00009 class EcalTBHodoscopeGeometry : public CaloSubdetectorGeometry
00010 {
00011 
00012    public:
00013 
00014       typedef std::vector<PreshowerStrip> CellVec ;
00015 
00016       typedef CaloCellGeometry::CCGFloat CCGFloat ;
00017       typedef CaloCellGeometry::Pt3D     Pt3D     ;
00018       typedef CaloCellGeometry::Pt3DVec  Pt3DVec  ;
00019 
00020       EcalTBHodoscopeGeometry() ;
00021       ~EcalTBHodoscopeGeometry() ;
00022 
00023       virtual void newCell( const GlobalPoint& f1 ,
00024                             const GlobalPoint& f2 ,
00025                             const GlobalPoint& f3 ,
00026                             const CCGFloat*    parm ,
00027                             const DetId&       detId   ) ;
00028 
00029       static float getFibreLp( int plane, int fibre ) ;
00030       
00031       static float getFibreRp( int plane, int fibre ) ;
00032   
00033       static std::vector<int> getFiredFibresInPlane( float xtr, int plane ) ;
00034 
00035       static int getNPlanes() ;
00036       
00037       static int getNFibres() ;
00038 
00039    protected:
00040 
00041       virtual const CaloCellGeometry* cellGeomPtr( uint32_t index ) const ;
00042       
00043    private:
00044       
00045       struct fibre_pos 
00046       {
00047             float lp, rp ;
00048       };
00049 
00050       static const int nPlanes_=4;
00051       static const int nFibres_=64;
00052       static const fibre_pos fibrePos_[ nPlanes_ ][ nFibres_ ] ;
00053 
00054       CellVec m_cellVec ;
00055 };
00056 
00057 #endif