CMS 3D CMS Logo

HGCalDDDConstants.h
Go to the documentation of this file.
1 #ifndef HGCalCommonData_HGCalDDDConstants_h
2 #define HGCalCommonData_HGCalDDDConstants_h
3 
14 #include <string>
15 #include <vector>
16 #include <iostream>
20 
21 #include <unordered_map>
22 
24 
25 public:
26 
29 
30  std::pair<int,int> assignCell(float x, float y, int lay, int subSec,
31  bool reco) const;
32  std::pair<int,int> assignCellHexagon(float x, float y) const;
33  double cellSizeHex(int type) const;
35  bool isValid(int lay, int mod, int cell, bool reco) const;
36  bool isValidCell(int layindex, int wafer, int cell) const;
37  unsigned int layers(bool reco) const;
38  unsigned int layersInit(bool reco) const;
39  std::pair<float,float> locateCell(int cell, int lay, int type,
40  bool reco) const;
41  std::pair<float,float> locateCellHex(int cell, int wafer, bool reco) const;
42  int levelTop() const {return hgpar_->levelT_;}
43  int maxCells(bool reco) const;
44  int maxCells(int lay, bool reco) const;
45  int maxModules() const {return modHalf_;}
46  int maxRows(int lay, bool reco) const;
47  double minSlope() const {return hgpar_->slopeMin_;}
48  int modules(int lay, bool reco) const;
49  int modulesInit(int lay, bool reco) const;
50  std::vector<int> numberCells(int lay, bool reco) const;
51  int numberCellsHexagon(int wafer) const;
52  std::pair<int,int> rowColumnWafer(const int wafer) const;
53  int sectors() const {return hgpar_->nSectors_;}
54  std::pair<int,int> simToReco(int cell, int layer, int mod, bool half) const;
55  unsigned int volumes() const {return hgpar_->moduleLayR_.size();}
56  int waferFromCopy(int copy) const;
57  void waferFromPosition(const double x, const double y,
58  int& wafer, int& icell,
59  int& celltyp) const;
60  bool waferInLayer(int wafer, int lay, bool reco) const;
61  int waferCount(const int type) const {return ((type == 0) ? waferMax_[2] : waferMax_[3]);}
62  int waferMax() const {return waferMax_[1];}
63  int waferMin() const {return waferMax_[0];}
64  std::pair<double,double> waferPosition(int wafer, bool reco=true) const;
65  int wafers() const;
66  int wafers(int layer, int type) const;
67  int waferToCopy(int wafer) const {return ((wafer>=0)&&(wafer< (int)(hgpar_->waferCopy_.size()))) ? hgpar_->waferCopy_[wafer] : (int)(hgpar_->waferCopy_.size());}
68  // wafer transverse thickness classification (2 = coarse, 1 = fine)
69  int waferTypeT(int wafer) const {return ((wafer>=0)&&(wafer<(int)(hgpar_->waferTypeT_.size()))) ? hgpar_->waferTypeT_[wafer] : 0;}
70  // wafer longitudinal thickness classification (1 = 100um, 2 = 200um, 3=300um)
71  int waferTypeL(int wafer) const {return ((wafer>=0)&&(wafer<(int)(hgpar_->waferTypeL_.size()))) ? hgpar_->waferTypeL_[wafer] : 0;}
72  bool isHalfCell(int waferType, int cell) const;
73  double waferZ(int layer, bool reco) const;
74 
75  HGCalParameters::hgtrap getModule(unsigned int k, bool hexType, bool reco) const;
76  std::vector<HGCalParameters::hgtrap> getModules() const;
77 
78  unsigned int getTrFormN() const {return hgpar_->trformIndex_.size();}
79  HGCalParameters::hgtrform getTrForm(unsigned int k) const {return hgpar_->getTrForm(k);}
80  std::vector<HGCalParameters::hgtrform> getTrForms() const ;
81 
82  std::pair<int,float> getIndex(int lay, bool reco) const;
83 
84 private:
85  int cellHex(double xx, double yy, const double& cellR,
86  const std::vector<double>& posX,
87  const std::vector<double>& posY) const;
88  bool waferInLayer(int wafer, int lay) const;
89 
90  typedef std::array<std::vector<int32_t>, 2> Simrecovecs;
91  typedef std::array<int,3> HGCWaferParam;
93  constexpr static double tan30deg_ = 0.5773502693;
94  double rmax_, hexside_;
97  std::array<uint32_t,2> tot_layers_;
98  Simrecovecs max_modules_layer_;
99  std::map<int,HGCWaferParam> waferLayer_;
100  std::array<int,4> waferMax_;
101 };
102 
103 #endif
bool isHalfCell(int waferType, int cell) const
type
Definition: HCALResponse.h:21
bool isValid(int lay, int mod, int cell, bool reco) const
std::vector< HGCalParameters::hgtrap > getModules() const
std::array< uint32_t, 2 > tot_layers_
def copy(args, dbName)
std::map< int, HGCWaferParam > waferLayer_
void waferFromPosition(const double x, const double y, int &wafer, int &icell, int &celltyp) const
std::vector< int > moduleLayR_
double cellSizeHex(int type) const
HGCalParameters::hgtrform getTrForm(unsigned int k) const
Simrecovecs max_modules_layer_
unsigned int layersInit(bool reco) const
std::array< std::vector< int32_t >, 2 > Simrecovecs
std::array< int, 4 > waferMax_
int maxRows(int lay, bool reco) const
std::vector< int > numberCells(int lay, bool reco) const
int modulesInit(int lay, bool reco) const
std::pair< float, float > locateCell(int cell, int lay, int type, bool reco) const
std::vector< uint32_t > trformIndex_
HGCalGeometryMode::GeometryMode mode_
#define constexpr
int cellHex(double xx, double yy, const double &cellR, const std::vector< double > &posX, const std::vector< double > &posY) const
std::pair< float, float > locateCellHex(int cell, int wafer, bool reco) const
int modules(int lay, bool reco) const
std::pair< int, int > simToReco(int cell, int layer, int mod, bool half) const
unsigned int getTrFormN() const
unsigned int layers(bool reco) const
int numberCellsHexagon(int wafer) const
std::vector< HGCalParameters::hgtrform > getTrForms() const
std::pair< int, int > assignCellHexagon(float x, float y) const
std::pair< double, double > waferPosition(int wafer, bool reco=true) const
susybsm::HSCParticleRefProd hp
Definition: classes.h:27
hgtrform getTrForm(unsigned int k) const
std::pair< int, float > getIndex(int lay, bool reco) const
HGCalDDDConstants(const HGCalParameters *hp, const std::string &name)
double minSlope() const
HGCalGeometryMode::GeometryMode geomMode() const
bool isValidCell(int layindex, int wafer, int cell) const
int waferTypeL(int wafer) const
int sectors() const
std::pair< int, int > rowColumnWafer(const int wafer) const
double waferZ(int layer, bool reco) const
int k[5][pyjets_maxn]
int waferMin() const
int waferFromCopy(int copy) const
int waferMax() const
int waferToCopy(int wafer) const
int waferCount(const int type) const
int levelTop() const
fixed size matrix
std::vector< int > waferCopy_
std::pair< int, int > assignCell(float x, float y, int lay, int subSec, bool reco) const
std::vector< int > waferTypeT_
int maxModules() const
HGCalParameters::hgtrap getModule(unsigned int k, bool hexType, bool reco) const
const HGCalParameters * hgpar_
int maxCells(bool reco) const
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
int waferTypeT(int wafer) const
std::vector< int > waferTypeL_
static double tan30deg_
std::array< int, 3 > HGCWaferParam
bool waferInLayer(int wafer, int lay, bool reco) const
unsigned int volumes() const