EcalTBHodoscopeGeometry

fibre_pos

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#ifndef Geometry_EcalTestBeam_EcalTBHodoscopeGeometry_HH
#define Geometry_EcalTestBeam_EcalTBHodoscopeGeometry_HH

#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
#include "Geometry/CaloGeometry/interface/PreshowerStrip.h"

#include <vector>

class EcalTBHodoscopeGeometry : public CaloSubdetectorGeometry {
public:
  typedef std::vector<PreshowerStrip> CellVec;

  typedef CaloCellGeometry::CCGFloat CCGFloat;
  typedef CaloCellGeometry::Pt3D Pt3D;
  typedef CaloCellGeometry::Pt3DVec Pt3DVec;

  EcalTBHodoscopeGeometry();
  ~EcalTBHodoscopeGeometry() override;

  void newCell(const GlobalPoint& f1,
               const GlobalPoint& f2,
               const GlobalPoint& f3,
               const CCGFloat* parm,
               const DetId& detId) override;

  static float getFibreLp(int plane, int fibre);

  static float getFibreRp(int plane, int fibre);

  static std::vector<int> getFiredFibresInPlane(float xtr, int plane);

  static int getNPlanes();

  static int getNFibres();

protected:
  // Modify the RawPtr class
  CaloCellGeometryPtr getGeometryRawPtr(uint32_t index) const override;

private:
  struct fibre_pos {
    float lp, rp;
  };

  static const int nPlanes_ = 4;
  static const int nFibres_ = 64;
  static const fibre_pos fibrePos_[nPlanes_][nFibres_];

  CellVec m_cellVec;
};

#endif