File indexing completed on 2024-10-25 23:57:06
0001 #ifndef Geometry_EcalTestBeam_EcalTBHodoscopeGeometry_HH
0002 #define Geometry_EcalTestBeam_EcalTBHodoscopeGeometry_HH
0003
0004 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
0005 #include "Geometry/CaloGeometry/interface/PreshowerStrip.h"
0006
0007 #include <vector>
0008
0009 class EcalTBHodoscopeGeometry : public CaloSubdetectorGeometry {
0010 public:
0011 typedef std::vector<PreshowerStrip> CellVec;
0012
0013 typedef CaloCellGeometry::CCGFloat CCGFloat;
0014 typedef CaloCellGeometry::Pt3D Pt3D;
0015 typedef CaloCellGeometry::Pt3DVec Pt3DVec;
0016
0017 EcalTBHodoscopeGeometry();
0018 ~EcalTBHodoscopeGeometry() override;
0019
0020 void newCell(const GlobalPoint& f1,
0021 const GlobalPoint& f2,
0022 const GlobalPoint& f3,
0023 const CCGFloat* parm,
0024 const DetId& detId) override;
0025
0026 static float getFibreLp(int plane, int fibre);
0027
0028 static float getFibreRp(int plane, int fibre);
0029
0030 static std::vector<int> getFiredFibresInPlane(float xtr, int plane);
0031
0032 static int getNPlanes();
0033
0034 static int getNFibres();
0035
0036 protected:
0037
0038 CaloCellGeometryPtr getGeometryRawPtr(uint32_t index) const override;
0039
0040 private:
0041 struct fibre_pos {
0042 float lp, rp;
0043 };
0044
0045 static const int nPlanes_ = 4;
0046 static const int nFibres_ = 64;
0047 static const fibre_pos fibrePos_[nPlanes_][nFibres_];
0048
0049 CellVec m_cellVec;
0050 };
0051
0052 #endif