CMS 3D CMS Logo

HcalDDDRecConstants.h
Go to the documentation of this file.
1 #ifndef Geometry_HcalTowerAlgo_HcalDDDRecConstants_h
2 #define Geometry_HcalTowerAlgo_HcalDDDRecConstants_h
3 
13 #include<map>
14 #include<string>
15 #include<vector>
16 #include<iostream>
17 
22 
24 
25 public:
26 
29 
30  struct HcalID {
31  int subdet, eta, phi, depth;
32  HcalID(int sub=0, int et=0, int fi=0, int d=0) : subdet(sub), eta(et),
33  phi(fi), depth(d) {}
34  };
35  struct HcalEtaBin {
36  int ieta, zside, depthStart;
37  double dphi, etaMin, etaMax;
38  std::vector<std::pair<int, int> > layer;
39  std::vector<std::pair<int,double> > phis;
40  HcalEtaBin(int eta=0, int zs=1, double dfi=0, double et1=0,
41  double et2=0) : ieta(eta), zside(zs), depthStart(0), dphi(dfi),
42  etaMin(et1), etaMax(et2) {}
43  };
45  int ieta, depth;
46  double eta, thick;
47  HcalActiveLength(int ie=0, int d=0, double et=0,
48  double t=0) : ieta(ie), depth(d), eta(et), thick(t) {}
49  };
51  int ieta, depth, firstPhi, stepPhi, nPhi;
52  double rMin, rMax;
53  HFCellParameters(int ie=0, int d=1, int ffi=1, int sfi=2, int nfi=36,
54  double r1=0, double r2=0) : ieta(ie), depth(d),
55  firstPhi(ffi), stepPhi(sfi),
56  nPhi(nfi), rMin(r1), rMax(r2) {}
57  };
58 
59  std::vector<std::pair<double,double> > getConstHBHE(const int type) const {
60  if (type == 0) return gconsHB;
61  else if (type == 1) return gconsHE;
62  else {std::vector<std::pair<double,double> > gcons; return gcons;}
63  }
64  std::vector<int> getDepth(const int det, const int phi,
65  const int zside, const unsigned int eta) const;
66  std::vector<int> getDepth(const unsigned int eta, const bool extra) const;
67  int getDepthEta16(const int det, const int iphi,
68  const int zside) const {return hcons.getDepthEta16(det,iphi,zside);}
69  std::vector<HcalEtaBin> getEtaBins(const int itype) const;
70  std::pair<double,double> getEtaPhi(int subdet, int ieta, int iphi) const;
71  std::pair<int,int> getEtaRange(const int i) const
72  {return std::pair<int,int>(iEtaMin[i],iEtaMax[i]);}
73  const std::vector<double> & getEtaTable() const {return etaTable;}
74  const std::vector<double> & getEtaTableHF() const {return hpar->etaTableHF;}
75  std::pair<double,double> getEtaLimit(const int i) const
76  {return std::pair<double,double>(etaTable[i],etaTable[i+1]);}
77  HcalID getHCID(int subdet, int ieta, int iphi, int lay,
78  int idepth) const;
79  std::vector<HFCellParameters> getHFCellParameters() const;
80  void getLayerDepth(int ieta, std::map<int,int>& layers) const;
81  double getLayer0Wt(int det, int phi, int zside) const {return hcons.getLayer0Wt(det,phi,zside);}
82  int getMaxDepth(const int type) const {return maxDepth[type];}
83  int getMaxDepth(const int itype, const int ieta,
84  const int iphi, const int zside) const;
85  int getMinDepth(const int itype, const int ieta,
86  const int iphi, const int zside) const;
87  int getNEta() const {return hpar->etagroup.size();}
88  int getNoff(const int i) const {return hpar->noff[i];}
89  int getNPhi(const int type) const {return nPhiBins[type];}
90  double getPhiBin(const int i) const {return phibin[i];}
91  double getPhiOff(const int i) const {return hpar->phioff[i];}
92  const std::vector<double> & getPhiOffs() const {return hpar->phioff;}
93  std::vector<std::pair<int,double> > getPhis(int subdet, int ieta) const;
94  const std::vector<double> & getPhiTable() const {return phibin;}
95  const std::vector<double> & getPhiTableHF() const {return hpar->phitable;}
96  int getPhiZOne(std::vector<std::pair<int,int> >& phiz) const;
97  double getRZ(int subdet, int ieta, int depth) const;
98  std::vector<HcalActiveLength> getThickActive(const int type) const;
99  int getTopoMode() const {return ((hpar->topologyMode)&0xFF);}
100  int getTriggerMode() const {return (((hpar->topologyMode)>>8)&0xFF);}
101  std::vector<HcalCellType> HcalCellTypes(HcalSubdetector) const;
102  bool isBH() const {return hcons.isBH();}
103  bool isPlan1(const HcalDetId& id) const { return detIdSp_.find(id) != detIdSp_.end(); };
104  int maxHFDepth(int ieta, int iphi) const {return hcons.maxHFDepth(ieta,iphi);}
105  unsigned int numberOfCells(HcalSubdetector) const;
106  unsigned int nCells(HcalSubdetector) const;
107  unsigned int nCells() const;
108  HcalDetId mergedDepthDetId(const HcalDetId& id) const;
109  HcalDetId idFront(const HcalDetId& id) const;
110  HcalDetId idBack (const HcalDetId& id) const;
111  void unmergeDepthDetId(const HcalDetId& id,
112  std::vector<HcalDetId>& ids) const;
113  void specialRBXHBHE(const std::vector<HcalDetId>&,
114  std::vector<HcalDetId> &) const;
115  bool specialRBXHBHE(const bool flag,
116  std::vector<HcalDetId> &) const;
117  bool withSpecialRBXHBHE() const {return (hcons.ldMap()->getSubdet() != 0);}
118  bool isPlan1ToBeMergedId(const HcalDetId& id) const { return detIdSp_.find(id) != detIdSp_.end(); };
119  bool isPlan1MergedId(const HcalDetId& id) const { return detIdSpR_.find(id) != detIdSpR_.end(); };
120  const HcalDDDSimConstants* dddConstants() const {return &hcons;}
121 
122 private:
123 
124  void getOneEtaBin(HcalSubdetector subdet, int ieta, int zside,
125  std::vector<std::pair<int,double>>& phis,
126  std::map<int,int>& layers, bool planOne,
127  std::vector<HcalDDDRecConstants::HcalEtaBin>& bins) const;
128  void initialize(void);
129  unsigned int layerGroupSize(int eta) const;
130  unsigned int layerGroup(int eta, int i) const;
131 
132  static const int maxLayer_=18;
133  static const int maxLayerHB_=16;
136  std::vector<std::pair<int,int> > etaSimValu; // eta ranges at Sim stage
137  std::vector<double> etaTable; // Eta table (HB+HE)
138  std::vector<int> ietaMap; // Map Sim level ieta to Rec level ieta
139  std::vector<int> iEtaMin, iEtaMax; // Minimum and maximum eta
140  std::vector<int> maxDepth; // Maximum depth in HB/HE/HF/HO
141  std::vector<int> nPhiBins; // Number of phi bis for HB/HE/HF/HO
142  std::vector<double> phibin; // Phi step for all eta bins (HB, HE, HO)
143  std::vector<int> phiUnitS; // Phi unit at SIM stage
144  std::vector<std::pair<double,double> > gconsHB; // Geometry constatnts HB
145  std::vector<std::pair<double,double> > gconsHE; // Geometry constatnts HE
146  int nModule[2], nHalves[2]; // Modules, Halves for HB/HE
147  std::pair<int,int> depthMaxDf_, depthMaxSp_; // (subdet,maximum depth) default,special
148  std::map<HcalDetId,HcalDetId> detIdSp_; // Map of Id's for special RBX
149  std::map<HcalDetId,std::vector<HcalDetId>> detIdSpR_; // Reverse map for RBX
150 };
151 
152 #endif
int getNPhi(const int type) const
type
Definition: HCALResponse.h:21
std::vector< int > iEtaMin
std::vector< int > etagroup
std::pair< int, int > depthMaxSp_
int maxHFDepth(const int ieta, const int iphi) const
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
Definition: LayerTriplets.cc:4
std::map< HcalDetId, std::vector< HcalDetId > > detIdSpR_
std::vector< int > getDepth(const int det, const int phi, const int zside, const unsigned int eta) const
double getRZ(int subdet, int ieta, int depth) const
std::vector< std::pair< int, int > > etaSimValu
HcalDetId mergedDepthDetId(const HcalDetId &id) const
const std::vector< double > & getEtaTableHF() const
unsigned int layerGroup(int eta, int i) const
void getOneEtaBin(HcalSubdetector subdet, int ieta, int zside, std::vector< std::pair< int, double >> &phis, std::map< int, int > &layers, bool planOne, std::vector< HcalDDDRecConstants::HcalEtaBin > &bins) const
static const int maxLayer_
int getSubdet() const
double getPhiOff(const int i) const
std::vector< int > maxDepth
std::vector< double > etaTableHF
HcalEtaBin(int eta=0, int zs=1, double dfi=0, double et1=0, double et2=0)
const std::vector< double > & getPhiOffs() const
void getLayerDepth(int ieta, std::map< int, int > &layers) const
int getNoff(const int i) const
std::vector< int > phiUnitS
const HcalParameters * hpar
int getMaxDepth(const int type) const
std::vector< std::pair< double, double > > gconsHE
std::vector< std::pair< double, double > > getConstHBHE(const int type) const
std::vector< double > phibin
bool isPlan1MergedId(const HcalDetId &id) const
std::vector< std::pair< int, double > > getPhis(int subdet, int ieta) const
HFCellParameters(int ie=0, int d=1, int ffi=1, int sfi=2, int nfi=36, double r1=0, double r2=0)
int getDepthEta16(const int det, const int iphi, const int zside) const
void specialRBXHBHE(const std::vector< HcalDetId > &, std::vector< HcalDetId > &) const
int getMinDepth(const int itype, const int ieta, const int iphi, const int zside) const
unsigned int numberOfCells(HcalSubdetector) const
HcalDetId idFront(const HcalDetId &id) const
susybsm::HSCParticleRefProd hp
Definition: classes.h:27
HcalID getHCID(int subdet, int ieta, int iphi, int lay, int idepth) const
std::vector< HFCellParameters > getHFCellParameters() const
std::vector< int > iEtaMax
HcalSubdetector
Definition: HcalAssistant.h:31
std::map< HcalDetId, HcalDetId > detIdSp_
std::vector< int > ietaMap
std::vector< int > nPhiBins
double getPhiBin(const int i) const
std::vector< std::pair< int, int > > layer
int getDepthEta16(const int det, const int phi, const int zside) const
std::vector< HcalCellType > HcalCellTypes(HcalSubdetector) const
HcalDetId idBack(const HcalDetId &id) const
std::vector< HcalActiveLength > getThickActive(const int type) const
HcalActiveLength(int ie=0, int d=0, double et=0, double t=0)
double getLayer0Wt(const int det, const int phi, const int zside) const
std::vector< double > phioff
unsigned int layerGroupSize(int eta) const
const std::vector< double > & getPhiTable() const
std::vector< double > etaTable
HcalDDDRecConstants(const HcalParameters *hp, const HcalDDDSimConstants &hc)
HcalID(int sub=0, int et=0, int fi=0, int d=0)
void unmergeDepthDetId(const HcalDetId &id, std::vector< HcalDetId > &ids) const
const std::vector< double > & getEtaTable() const
std::pair< int, int > getEtaRange(const int i) const
et
define resolution functions of each parameter
std::vector< double > phitable
const std::vector< double > & getPhiTableHF() const
std::pair< double, double > getEtaLimit(const int i) const
const HcalDDDSimConstants & hcons
susybsm::HSCParticleCollection hc
Definition: classes.h:25
std::pair< int, int > depthMaxDf_
std::vector< int > noff
bool isPlan1ToBeMergedId(const HcalDetId &id) const
const HcalDDDSimConstants * dddConstants() const
bool isPlan1(const HcalDetId &id) const
std::vector< std::pair< double, double > > gconsHB
int maxHFDepth(int ieta, int iphi) const
bool withSpecialRBXHBHE() const
std::pair< double, double > getEtaPhi(int subdet, int ieta, int iphi) const
static const int maxLayerHB_
std::vector< std::pair< int, double > > phis
double getLayer0Wt(int det, int phi, int zside) const
unsigned int nCells() const
int getPhiZOne(std::vector< std::pair< int, int > > &phiz) const
std::vector< HcalEtaBin > getEtaBins(const int itype) const
const HcalLayerDepthMap * ldMap() const