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, zside, stype;
46  double eta, thick;
47  HcalActiveLength(int ie=0, int d=0, int z=0, int s=0, double et=0,
48  double t=0) : ieta(ie), depth(d), zside(z), stype(s),
49  eta(et), thick(t) {}
50  };
52  int ieta, depth, firstPhi, stepPhi, nPhi;
53  double rMin, rMax;
54  HFCellParameters(int ie=0, int d=1, int ffi=1, int sfi=2, int nfi=36,
55  double r1=0, double r2=0) : ieta(ie), depth(d),
56  firstPhi(ffi), stepPhi(sfi),
57  nPhi(nfi), rMin(r1), rMax(r2) {}
58  };
59 
60  std::vector<std::pair<double,double> > getConstHBHE(const int type) const {
61  if (type == 0) return gconsHB;
62  else if (type == 1) return gconsHE;
63  else {std::vector<std::pair<double,double> > gcons; return gcons;}
64  }
65  std::vector<int> getDepth(const int det, const int phi,
66  const int zside, const unsigned int eta) const;
67  std::vector<int> getDepth(const unsigned int eta, const bool extra) const;
68  int getDepthEta16(const int det, const int iphi,
69  const int zside) const {return hcons.getDepthEta16(det,iphi,zside);}
70  std::vector<HcalEtaBin> getEtaBins(const int itype) const;
71  std::pair<double,double> getEtaPhi(int subdet, int ieta, int iphi) const;
72  std::pair<int,int> getEtaRange(const int i) const
73  {return std::pair<int,int>(iEtaMin[i],iEtaMax[i]);}
74  const std::vector<double> & getEtaTable() const {return etaTable;}
75  const std::vector<double> & getEtaTableHF() const {return hpar->etaTableHF;}
76  std::pair<double,double> getEtaLimit(const int i) const
77  {return std::pair<double,double>(etaTable[i],etaTable[i+1]);}
78  HcalID getHCID(int subdet, int ieta, int iphi, int lay,
79  int idepth) const;
80  std::vector<HFCellParameters> getHFCellParameters() const;
81  void getLayerDepth(int ieta, std::map<int,int>& layers) const;
82  int getLayerFront(int det, int eta, int phi, int depth) const;
83  double getLayer0Wt(int det, int phi, int zside) const {return hcons.getLayer0Wt(det,phi,zside);}
84  int getMaxDepth(const int type) const {return maxDepth[type];}
85  int getMaxDepth(const int itype, const int ieta,
86  const int iphi, const int zside) const;
87  int getMinDepth(const int itype, const int ieta,
88  const int iphi, const int zside) const;
89  int getNEta() const {return hpar->etagroup.size();}
90  int getNoff(const int i) const {return hpar->noff[i];}
91  int getNPhi(const int type) const {return nPhiBins[type];}
92  double getPhiBin(const int i) const {return phibin[i];}
93  double getPhiOff(const int i) const {return hpar->phioff[i];}
94  const std::vector<double> & getPhiOffs() const {return hpar->phioff;}
95  std::vector<std::pair<int,double> > getPhis(int subdet, int ieta) const;
96  const std::vector<double> & getPhiTable() const {return phibin;}
97  const std::vector<double> & getPhiTableHF() const {return hpar->phitable;}
98  int getPhiZOne(std::vector<std::pair<int,int> >& phiz) const;
99  double getRZ(int subdet, int ieta, int depth) const;
100  double getRZ(int subdet, int ieta, int iphi, int depth) const;
101  double getRZ(int subdet, int layer) const;
102  std::vector<HcalActiveLength> getThickActive(const int type) const;
103  int getTopoMode() const {return ((hpar->topologyMode)&0xFF);}
104  int getTriggerMode() const {return (((hpar->topologyMode)>>8)&0xFF);}
105  std::vector<HcalCellType> HcalCellTypes(HcalSubdetector) const;
106  bool isBH() const {return hcons.isBH();}
107  bool isPlan1(const HcalDetId& id) const { return detIdSp_.find(id) != detIdSp_.end(); };
108  int maxHFDepth(int ieta, int iphi) const {return hcons.maxHFDepth(ieta,iphi);}
109  unsigned int numberOfCells(HcalSubdetector) const;
110  unsigned int nCells(HcalSubdetector) const;
111  unsigned int nCells() const;
112  HcalDetId mergedDepthDetId(const HcalDetId& id) const;
113  HcalDetId idFront(const HcalDetId& id) const;
114  HcalDetId idBack (const HcalDetId& id) const;
115  void unmergeDepthDetId(const HcalDetId& id,
116  std::vector<HcalDetId>& ids) const;
117  void specialRBXHBHE(const std::vector<HcalDetId>&,
118  std::vector<HcalDetId> &) const;
119  bool specialRBXHBHE(const bool flag,
120  std::vector<HcalDetId> &) const;
121  bool withSpecialRBXHBHE() const {return (hcons.ldMap()->getSubdet() != 0);}
122  bool isPlan1ToBeMergedId(const HcalDetId& id) const { return detIdSp_.find(id) != detIdSp_.end(); };
123  bool isPlan1MergedId(const HcalDetId& id) const { return detIdSpR_.find(id) != detIdSpR_.end(); };
124  const HcalDDDSimConstants* dddConstants() const {return &hcons;}
125 
126 private:
127 
128  void getOneEtaBin(HcalSubdetector subdet, int ieta, int zside,
129  std::vector<std::pair<int,double>>& phis,
130  std::map<int,int>& layers, bool planOne,
131  std::vector<HcalDDDRecConstants::HcalEtaBin>& bins) const;
132  void initialize(void);
133  unsigned int layerGroupSize(int eta) const;
134  unsigned int layerGroup(int eta, int i) const;
135 
136  static const int maxLayer_=18;
137  static const int maxLayerHB_=16;
140  std::vector<std::pair<int,int> > etaSimValu; // eta ranges at Sim stage
141  std::vector<double> etaTable; // Eta table (HB+HE)
142  std::vector<int> ietaMap; // Map Sim level ieta to Rec level ieta
143  std::vector<int> iEtaMin, iEtaMax; // Minimum and maximum eta
144  std::vector<int> maxDepth; // Maximum depth in HB/HE/HF/HO
145  std::vector<int> nPhiBins; // Number of phi bis for HB/HE/HF/HO
146  std::vector<double> phibin; // Phi step for all eta bins (HB, HE, HO)
147  std::vector<int> phiUnitS; // Phi unit at SIM stage
148  std::vector<std::pair<double,double> > gconsHB; // Geometry constatnts HB
149  std::vector<std::pair<double,double> > gconsHE; // Geometry constatnts HE
150  int nModule[2], nHalves[2]; // Modules, Halves for HB/HE
151  std::pair<int,int> depthMaxDf_, depthMaxSp_; // (subdet,maximum depth) default,special
152  std::map<HcalDetId,HcalDetId> detIdSp_; // Map of Id's for special RBX
153  std::map<HcalDetId,std::vector<HcalDetId>> detIdSpR_; // Reverse map for RBX
154 };
155 
156 #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
HcalActiveLength(int ie=0, int d=0, int z=0, int s=0, double et=0, double t=0)
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 getLayerFront(int det, int eta, int phi, int depth) const
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
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