CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
HcalDDDSimConstants Class Reference

#include <HcalDDDSimConstants.h>

Public Member Functions

HcalCellType::HcalCell cell (const int det, const int zside, const int depth, const int etaR, const int iphi) const
 
int findDepth (const int det, const int eta, const int phi, const int zside, const int lay) const
 
unsigned int findLayer (int layer, const std::vector< HcalParameters::LayerItem > &layerGroup) const
 
std::vector< std::pair< double, double > > getConstHBHE (const int type) const
 
int getDepthEta16 (const int det, const int phi, const int zside) const
 
int getDepthEta16M (const int det) const
 
int getDepthEta29 (const int phi, int zside, int i) const
 
int getDepthEta29M (const int i, const bool planOne) const
 
std::pair< int, double > getDetEta (const double eta, const int depth)
 
int getEta (const int det, const int lay, const double hetaR)
 
std::pair< int, int > getEtaDepth (const int det, int etaR, int phi, int zside, int depth, int lay)
 
double getEtaHO (double &etaR, double &x, double &y, double &z) const
 
const std::vector< double > & getEtaTableHF () const
 
int getFrontLayer (const int det, const int eta) const
 
const std::vector< double > & getGparHF () const
 
const std::vector< HcalDetId > & getIdHF2QIE () const
 
std::pair< int, int > getiEtaRange (const int i) const
 
double getLayer0Wt (const int det, const int phi, const int zside) const
 
int getLayerBack (const int det, const int eta, const int phi, const int zside, const int depth) const
 
int getLayerFront (const int det, const int eta, const int phi, const int zside, const int depth) const
 
int getLayerMax (const int eta, const int depth) const
 
int getMaxDepth (const int type) const
 
int getMaxDepth (const int det, const int eta, const int phi, const int zside, bool partialOnly) const
 
std::pair< int, int > getMaxDepthDet (const int i) const
 
int getMinDepth (const int det, const int eta, const int phi, const int zside, bool partialOnly) const
 
std::pair< int, int > getModHalfHBHE (const int type) const
 
std::pair< double, double > getPhiCons (const int det, const int ieta) const
 
std::vector< std::pair< int, double > > getPhis (const int subdet, const int ieta) const
 
const std::vector< double > & getPhiTableHF () const
 
const std::vector< double > & getRTableHF () const
 
std::vector< HcalCellTypeHcalCellTypes () const
 
std::vector< HcalCellTypeHcalCellTypes (HcalSubdetector, int ieta=-1, int depth=-1) const
 
 HcalDDDSimConstants (const HcalParameters *hp)
 
bool isBH () const
 
const HcalLayerDepthMapldMap () const
 
int maxHFDepth (const int ieta, const int iphi) const
 
unsigned int numberOfCells (HcalSubdetector) const
 
int phiNumber (const int phi, const int unit) const
 
void printTiles () const
 
int unitPhi (const int det, const int etaR) const
 
int unitPhi (const double dphi) const
 
 ~HcalDDDSimConstants ()
 

Private Member Functions

double deltaEta (const int det, const int eta, const int depth) const
 
double getEta (const int det, const int etaR, const int zside, const int depth=1) const
 
double getEta (const double r, const double z) const
 
double getGain (const HcalSubdetector subdet, const int depth) const
 
int getShift (const HcalSubdetector subdet, const int depth) const
 
void initialize ()
 
unsigned int layerGroup (const int eta, const int i) const
 
unsigned int layerGroup (const int det, const int eta, const int phi, const int zside, const int i) const
 
unsigned int layerGroupSize (const int eta) const
 
void printTileHB (const int eta, const int phi, const int zside, const int depth) const
 
void printTileHE (const int eta, const int phi, const int zside, const int depth) const
 

Private Attributes

int depthEta16 [2]
 
int depthEta29 [2]
 
std::pair< int, int > depthMaxDf_
 
std::pair< int, int > depthMaxSp_
 
std::vector< int > depths [nDepthMax]
 
double dlShort
 
double dzVcal
 
double etaHO [4]
 
const HcalParametershpar
 
std::vector< HcalDetIdidHF2QIE
 
bool isBH_
 
int layFHB [2]
 
int layFHE [3]
 
HcalLayerDepthMap ldmap_
 
std::vector< int > maxDepth
 
int nDepth
 
int nEta
 
int nmodHB
 
int nmodHE
 
int nPhiF
 
int nR
 
int nzHB
 
int nzHE
 
double rminHO
 
double zVcal
 

Static Private Attributes

static const int maxLayer_ =18
 
static const int maxLayerHB_ =16
 
static const int nDepthMax =9
 

Detailed Description

this class reads the constant section of the hcal-sim-numbering xml-file

Author
Sunanda Banerjee, SINP sunan.nosp@m.da.b.nosp@m.anerj.nosp@m.ee@c.nosp@m.ern.c.nosp@m.h

Definition at line 24 of file HcalDDDSimConstants.h.

Constructor & Destructor Documentation

HcalDDDSimConstants::HcalDDDSimConstants ( const HcalParameters hp)

Definition at line 11 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, HcalCellTypes(), and initialize().

11  : hpar(hp) {
12 
13 #ifdef EDM_ML_DEBUG
14  edm::LogInfo("HCalGeom") << "HcalDDDSimConstants::HcalDDDSimConstants (const HcalParameter* hp) constructor\n";
15 #endif
16 
17  initialize();
18 #ifdef EDM_ML_DEBUG
19  std::vector<HcalCellType> cellTypes = HcalCellTypes();
20  std::cout << "HcalDDDSimConstants: " << cellTypes.size()
21  << " cells of type HCal (All)\n";
22 #endif
23 }
std::vector< HcalCellType > HcalCellTypes() const
const HcalParameters * hpar
HcalDDDSimConstants::~HcalDDDSimConstants ( )

Definition at line 25 of file HcalDDDSimConstants.cc.

25  {
26 #ifdef EDM_ML_DEBUG
27  edm::LogInfo ("HCalGeom") << "HcalDDDSimConstants::destructed!!!\n";
28 #endif
29 }

Member Function Documentation

HcalCellType::HcalCell HcalDDDSimConstants::cell ( const int  det,
const int  zside,
const int  depth,
const int  etaR,
const int  iphi 
) const

Definition at line 31 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, deltaEta(), HcalCellType::HcalCell::deta, HcalCellType::HcalCell::dphi, HcalParameters::drHB, HcalCellType::HcalCell::drz, HcalParameters::dzHE, stringResolutionProvider_cfi::eta, HcalCellType::HcalCell::eta, HcalParameters::etaMax, HcalParameters::etaMin, HcalCellType::HcalCell::flagrz, getEta(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hpar, createfilelist::int, maxDepth, maxLayerHB_, nEta, HcalParameters::noff, nR, HcalCellType::HcalCell::ok, convertSQLiteXML::ok, phi, HcalCellType::HcalCell::phi, HcalParameters::phibin, HcalParameters::phioff, HcalParameters::phitable, HcalParameters::rHB, HcalParameters::rTable, HcalCellType::HcalCell::rz, tmp, unitPhi(), and HcalParameters::zHE.

Referenced by HGCGeometryValidation::analyze(), HGCalHitValidation::analyze(), HcalCellTypes(), and HcalTestAnalysis::update().

33  {
34 
35  double etaMn = hpar->etaMin[0];
36  double etaMx = hpar->etaMax[0];
37  if (idet==static_cast<int>(HcalEndcap)) {
38  etaMn = hpar->etaMin[1]; etaMx = hpar->etaMax[1];
39  } else if (idet==static_cast<int>(HcalForward)) {
40  etaMn = hpar->etaMin[2]; etaMx = hpar->etaMax[2];
41  }
42  double eta = 0, deta = 0, phi = 0, dphi = 0, rz = 0, drz = 0;
43  bool ok = false, flagrz = true;
44  if ((idet==static_cast<int>(HcalBarrel)||idet==static_cast<int>(HcalEndcap)||
45  idet==static_cast<int>(HcalOuter)||idet==static_cast<int>(HcalForward))
46  && etaR >=etaMn && etaR <= etaMx && depth > 0) ok = true;
47  if (idet == static_cast<int>(HcalEndcap) && depth>(int)(hpar->zHE.size()))ok=false;
48  else if (idet == static_cast<int>(HcalBarrel) && depth > maxLayerHB_+1) ok=false;
49  else if (idet == static_cast<int>(HcalOuter) && depth != 4) ok=false;
50  else if (idet == static_cast<int>(HcalForward) && depth > maxDepth[2]) ok=false;
51  if (ok) {
52  eta = getEta(idet, etaR, zside, depth);
53  deta = deltaEta(idet, etaR, depth);
54  double fibin, fioff;
55  if (idet == static_cast<int>(HcalBarrel)||
56  idet == static_cast<int>(HcalOuter)) {
57  fioff = hpar->phioff[0];
58  fibin = hpar->phibin[etaR-1];
59  } else if (idet == static_cast<int>(HcalEndcap)) {
60  fioff = hpar->phioff[1];
61  fibin = hpar->phibin[etaR-1];
62  } else {
63  fioff = hpar->phioff[2];
64  fibin = hpar->phitable[etaR-hpar->etaMin[2]];
65  if (unitPhi(fibin) > 2) fioff = hpar->phioff[4];
66  }
67  phi =-fioff + (iphi - 0.5)*fibin;
68  dphi = 0.5*fibin;
69  if (idet == static_cast<int>(HcalForward)) {
70  int ir = nR + hpar->etaMin[2] - etaR - 1;
71  if (ir > 0 && ir < nR) {
72  rz = 0.5*(hpar->rTable[ir]+hpar->rTable[ir-1]);
73  drz = 0.5*(hpar->rTable[ir]-hpar->rTable[ir-1]);
74  } else {
75  ok = false;
76 #ifdef EDM_ML_DEBUG
77  edm::LogInfo("HCalGeom") << "HcalDDDSimConstants: wrong eta " << etaR
78  << " (" << ir << "/" << nR << ") Detector "
79  << idet << std::endl;
80 #endif
81  }
82  } else if (etaR <= nEta) {
83  int laymin(depth), laymax(depth);
84  if (idet == static_cast<int>(HcalOuter)) {
85  laymin = (etaR > hpar->noff[2]) ? ((int)(hpar->zHE.size())) : ((int)(hpar->zHE.size()))-1;
86  laymax = ((int)(hpar->zHE.size()));
87  }
88  double d1=0, d2=0;
89  if (idet == static_cast<int>(HcalEndcap)) {
90  flagrz = false;
91  d1 = hpar->zHE[laymin-1] - hpar->dzHE[laymin-1];
92  d2 = hpar->zHE[laymax-1] + hpar->dzHE[laymax-1];
93  } else {
94  d1 = hpar->rHB[laymin-1] - hpar->drHB[laymin-1];
95  d2 = hpar->rHB[laymax-1] + hpar->drHB[laymax-1];
96  }
97  rz = 0.5*(d2+d1);
98  drz = 0.5*(d2-d1);
99  } else {
100  ok = false;
101  edm::LogWarning("HCalGeom") << "HcalDDDSimConstants: wrong depth "
102  << depth << " or etaR " << etaR
103  << " for detector " << idet;
104  }
105  } else {
106  ok = false;
107  edm::LogWarning("HCalGeom") << "HcalDDDSimConstants: wrong depth " << depth
108  << " det " << idet;
109  }
110  HcalCellType::HcalCell tmp(ok,eta,deta,phi,dphi,rz,drz,flagrz);
111 
112 #ifdef EDM_ML_DEBUG
113  std::cout << "HcalDDDSimConstants: det/side/depth/etaR/phi "
114  << idet << "/" << zside << "/" << depth << "/"
115  << etaR << "/" << iphi << " Cell Flag " << tmp.ok
116  << " " << tmp.eta << " " << tmp.deta << " phi "
117  << tmp.phi << " " << tmp.dphi << " r(z) " << tmp.rz
118  << " " << tmp.drz << " " << tmp.flagrz << std::endl;
119 #endif
120  return tmp;
121 }
std::vector< int > maxDepth
std::vector< double > rHB
std::vector< int > etaMax
double deltaEta(const int det, const int eta, const int depth) const
std::vector< double > zHE
std::vector< double > dzHE
std::vector< double > phioff
int getEta(const int det, const int lay, const double hetaR)
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
std::vector< double > rTable
std::vector< double > phitable
std::vector< double > phibin
int unitPhi(const int det, const int etaR) const
std::vector< double > drHB
std::vector< int > noff
const HcalParameters * hpar
static const int maxLayerHB_
std::vector< int > etaMin
double HcalDDDSimConstants::deltaEta ( const int  det,
const int  eta,
const int  depth 
) const
private

Definition at line 934 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, depthEta29, dlShort, etaHO, HcalParameters::etaMin, HcalParameters::etaTable, getEta(), HcalForward, HcalOuter, hpar, nEta, HcalParameters::noff, nR, HcalParameters::rTable, tmp, z, and zVcal.

Referenced by cell(), and ldMap().

935  {
936 
937  double tmp = 0;
938  if (det == static_cast<int>(HcalForward)) {
939  int ir = nR + hpar->etaMin[2] - etaR - 1;
940  if (ir > 0 && ir < nR) {
941  double z = zVcal;
942  if (depth%2 != 1) z += dlShort;
943  tmp = 0.5*(getEta(hpar->rTable[ir-1],z)-getEta(hpar->rTable[ir],z));
944  }
945  } else {
946  if (etaR > 0 && etaR < nEta) {
947  if (etaR == hpar->noff[1]-1 && depth > depthEta29[0]) {
948  tmp = 0.5*(hpar->etaTable[etaR+1]-hpar->etaTable[etaR-1]);
949  } else if (det == static_cast<int>(HcalOuter)) {
950  if (etaR == hpar->noff[2]) {
951  tmp = 0.5*(etaHO[0]-hpar->etaTable[etaR-1]);
952  } else if (etaR == hpar->noff[2]+1) {
953  tmp = 0.5*(hpar->etaTable[etaR]-etaHO[1]);
954  } else if (etaR == hpar->noff[3]) {
955  tmp = 0.5*(etaHO[2]-hpar->etaTable[etaR-1]);
956  } else if (etaR == hpar->noff[3]+1) {
957  tmp = 0.5*(hpar->etaTable[etaR]-etaHO[3]);
958  } else {
959  tmp = 0.5*(hpar->etaTable[etaR]-hpar->etaTable[etaR-1]);
960  }
961  } else {
962  tmp = 0.5*(hpar->etaTable[etaR]-hpar->etaTable[etaR-1]);
963  }
964  }
965  }
966 #ifdef EDM_ML_DEBUG
967  std::cout << "HcalDDDSimConstants::deltaEta " << etaR << " "
968  << depth << " ==> " << tmp << std::endl;
969 #endif
970  return tmp;
971 }
std::vector< double > etaTable
int getEta(const int det, const int lay, const double hetaR)
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
std::vector< double > rTable
std::vector< int > noff
const HcalParameters * hpar
std::vector< int > etaMin
int HcalDDDSimConstants::findDepth ( const int  det,
const int  eta,
const int  phi,
const int  zside,
const int  lay 
) const

Definition at line 123 of file HcalDDDSimConstants.cc.

References particleFlowClusterECALTimeSelected_cfi::depth, HcalLayerDepthMap::getDepth(), HcalLayerDepthMap::isValid(), and ldmap_.

Referenced by HcalDDDRecConstants::getHCID(), and layerGroup().

125  {
126 
127  int depth = (ldmap_.isValid(det,phi,zside)) ? ldmap_.getDepth(det,eta,phi,zside,lay) : -1;
128  return depth;
129 }
bool isValid(const int det, const int phi, const int zside) const
int getDepth(const int subdet, const int ieta, const int iphi, const int zside, const int layer) const
HcalLayerDepthMap ldmap_
unsigned int HcalDDDSimConstants::findLayer ( int  layer,
const std::vector< HcalParameters::LayerItem > &  layerGroup 
) const

Definition at line 131 of file HcalDDDSimConstants.cc.

References mps_fire::i, and hcalTTPDigis_cfi::id.

131  {
132 
133  unsigned int id = layerGroup.size();
134  for (unsigned int i = 0; i < layerGroup.size(); i++) {
135  if (layer == (int)(layerGroup[i].layer)) {
136  id = i;
137  break;
138  }
139  }
140  return id;
141 }
unsigned int layerGroup(const int eta, const int i) const
std::vector< std::pair< double, double > > HcalDDDSimConstants::getConstHBHE ( const int  type) const

Definition at line 143 of file HcalDDDSimConstants.cc.

References HcalParameters::drHB, HcalParameters::dzHE, hpar, mps_fire::i, HcalParameters::rHB, and HcalParameters::zHE.

143  {
144 
145  std::vector<std::pair<double,double> > gcons;
146  if (type == 0) {
147  for (unsigned int i=0; i<hpar->rHB.size(); ++i) {
148  gcons.push_back(std::pair<double,double>(hpar->rHB[i],hpar->drHB[i]));
149  }
150  } else {
151  for (unsigned int i=0; i<hpar->zHE.size(); ++i) {
152  gcons.push_back(std::pair<double,double>(hpar->zHE[i],hpar->dzHE[i]));
153  }
154  }
155  return gcons;
156 }
type
Definition: HCALResponse.h:21
std::vector< double > rHB
std::vector< double > zHE
std::vector< double > dzHE
std::vector< double > drHB
const HcalParameters * hpar
int HcalDDDSimConstants::getDepthEta16 ( const int  det,
const int  phi,
const int  zside 
) const

Definition at line 158 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, particleFlowClusterECALTimeSelected_cfi::depth, depthEta16, HcalLayerDepthMap::getDepth16(), and ldmap_.

Referenced by HcalDDDRecConstants::getDepthEta16(), getEtaDepth(), HcalDDDRecConstants::getHCID(), getMaxDepth(), getMinDepth(), HcalDDDRecConstants::getOneEtaBin(), HcalDDDRecConstants::initialize(), and printTiles().

159  {
160 
161  int depth = ldmap_.getDepth16(det,phi,zside);
162  if (depth < 0) depth = (det == 2) ? depthEta16[1] : depthEta16[0];
163 #ifdef EDM_ML_DEBUG
164  std::cout << "getDepthEta16: " << det << ":" << depth << std::endl;
165 #endif
166  return depth;
167 }
int getDepth16(const int subdet, const int iphi, const int zside) const
HcalLayerDepthMap ldmap_
int HcalDDDSimConstants::getDepthEta16M ( const int  det) const

Definition at line 169 of file HcalDDDSimConstants.cc.

References particleFlowClusterECALTimeSelected_cfi::depth, depthEta16, HcalLayerDepthMap::getDepth16(), ldmap_, HcalLayerDepthMap::validDet(), and HcalDigiParam_cfi::zside.

Referenced by HcalDDDRecConstants::getMaxDepth(), HcalDDDRecConstants::getMinDepth(), HcalDDDRecConstants::getOneEtaBin(), and HcalDDDRecConstants::initialize().

169  {
170  int depth = (det == 2) ? depthEta16[1] : depthEta16[0];
171  std::vector<int> phis;
172  int detsp = ldmap_.validDet(phis);
173  if (detsp == det) {
174  int zside = (phis[0] > 0) ? 1 : -1;
175  int iphi = (phis[0] > 0) ? phis[0] : -phis[0];
176  int depthsp = ldmap_.getDepth16(det,iphi,zside);
177  if (det == 1 && depthsp > depth) depth = depthsp;
178  if (det == 2 && depthsp < depth) depth = depthsp;
179  }
180  return depth;
181 }
int validDet(std::vector< int > &phis) const
int getDepth16(const int subdet, const int iphi, const int zside) const
HcalLayerDepthMap ldmap_
int HcalDDDSimConstants::getDepthEta29 ( const int  phi,
int  zside,
int  i 
) const

Definition at line 183 of file HcalDDDSimConstants.cc.

References particleFlowClusterECALTimeSelected_cfi::depth, depthEta29, HcalLayerDepthMap::getMaxDepthLastHE(), and ldmap_.

Referenced by getEtaDepth(), HcalDDDRecConstants::getHCID(), and HcalDDDRecConstants::getOneEtaBin().

184  {
185 
186  int depth = (i == 0) ? ldmap_.getMaxDepthLastHE(2,phi,zside) : -1;
187  if (depth < 0) depth = (i == 1) ? depthEta29[1] : depthEta29[0];
188  return depth;
189 }
int getMaxDepthLastHE(const int subdet, const int iphi, const int zside) const
HcalLayerDepthMap ldmap_
int HcalDDDSimConstants::getDepthEta29M ( const int  i,
const bool  planOne 
) const

Definition at line 191 of file HcalDDDSimConstants.cc.

References particleFlowClusterECALTimeSelected_cfi::depth, depthEta29, HcalLayerDepthMap::getMaxDepthLastHE(), ldmap_, HcalLayerDepthMap::validDet(), and HcalDigiParam_cfi::zside.

Referenced by HcalDDDRecConstants::getMaxDepth(), HcalDDDRecConstants::getOneEtaBin(), and HcalDDDRecConstants::initialize().

192  {
193  int depth = (i == 1) ? depthEta29[1] : depthEta29[0];
194  if (i == 0 && planOne) {
195  std::vector<int> phis;
196  int detsp = ldmap_.validDet(phis);
197  if (detsp == 2) {
198  int zside = (phis[0] > 0) ? 1 : -1;
199  int iphi = (phis[0] > 0) ? phis[0] : -phis[0];
200  int depthsp = ldmap_.getMaxDepthLastHE(2,iphi,zside);
201  if (depthsp > depth) depth = depthsp;
202  }
203  }
204  return depth;
205 }
int validDet(std::vector< int > &phis) const
int getMaxDepthLastHE(const int subdet, const int iphi, const int zside) const
HcalLayerDepthMap ldmap_
std::pair< int, double > HcalDDDSimConstants::getDetEta ( const double  eta,
const int  depth 
)

Definition at line 207 of file HcalDDDSimConstants.cc.

References depthEta16, stringResolutionProvider_cfi::eta, HcalParameters::etaMax, HcalParameters::etaMin, MuonErrorMatrixValues_cff::etaRange, HcalParameters::etaTable, JetChargeProducer_cfi::exp, HcalBarrel, HcalEndcap, HcalForward, hpar, mps_fire::i, nEta, funct::tan(), theta(), and zVcal.

Referenced by HcalNumberingFromDDD::unitID().

208  {
209 
210  int hsubdet(0), ieta(0);
211  double etaR(0);
212  double heta = fabs(eta);
213  for (int i = 0; i < nEta; i++)
214  if (heta > hpar->etaTable[i]) ieta = i + 1;
215  if (heta <= hpar->etaRange[1]) {
216  if ((ieta == hpar->etaMin[1] && depth==depthEta16[1]) ||
217  (ieta > hpar->etaMax[0])) {
218  hsubdet = static_cast<int>(HcalEndcap);
219  } else {
220  hsubdet = static_cast<int>(HcalBarrel);
221  }
222  etaR = eta;
223  } else {
224  hsubdet = static_cast<int>(HcalForward);
225  double theta = 2.*atan(exp(-heta));
226  double hR = zVcal*tan(theta);
227  etaR = (eta >= 0. ? hR : -hR);
228  }
229  return std::pair<int,double>(hsubdet,etaR);
230 }
std::vector< double > etaTable
Geom::Theta< T > theta() const
std::vector< int > etaMax
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
const HcalParameters * hpar
std::vector< int > etaMin
int HcalDDDSimConstants::getEta ( const int  det,
const int  lay,
const double  hetaR 
)

Definition at line 232 of file HcalDDDSimConstants.cc.

References etaHO, HcalParameters::etaMax, ALCARECOTkAlBeamHalo_cff::etaMin, HcalParameters::etaMin, HcalParameters::etaTable, HcalBarrel, HcalEndcap, HcalForward, hpar, mps_fire::i, maxLayer_, nEta, HcalParameters::noff, and nR.

Referenced by cell(), deltaEta(), getEta(), ldMap(), and HcalNumberingFromDDD::unitID().

233  {
234 
235  int ieta(0);
236  if (det == static_cast<int>(HcalForward)) { // Forward HCal
237  ieta = hpar->etaMax[2];
238  for (int i = nR-1; i > 0; i--)
239  if (hetaR < hpar->rTable[i]) ieta = hpar->etaMin[2] + nR - i - 1;
240  } else { // Barrel or Endcap
241  ieta = 1;
242  for (int i = 0; i < nEta-1; i++)
243  if (hetaR > hpar->etaTable[i]) ieta = i + 1;
244  if (det == static_cast<int>(HcalBarrel)) {
245  if (ieta > hpar->etaMax[0]) ieta = hpar->etaMax[0];
246  if (lay == maxLayer_) {
247  if (hetaR > etaHO[1] && ieta == hpar->noff[2]) ieta++;
248  }
249  } else if (det == static_cast<int>(HcalEndcap)) {
250  if (ieta <= hpar->etaMin[1]) ieta = hpar->etaMin[1];
251  }
252  }
253  return ieta;
254 }
std::vector< double > etaTable
static const int maxLayer_
std::vector< int > etaMax
std::vector< int > noff
const HcalParameters * hpar
std::vector< int > etaMin
double HcalDDDSimConstants::getEta ( const int  det,
const int  etaR,
const int  zside,
const int  depth = 1 
) const
private

Definition at line 973 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, depthEta29, dlShort, etaHO, HcalParameters::etaMin, HcalParameters::etaTable, getEta(), HcalForward, HcalOuter, hpar, nEta, HcalParameters::noff, nR, HcalParameters::rTable, tmp, z, and zVcal.

974  {
975 
976  double tmp = 0;
977  if (det == static_cast<int>(HcalForward)) {
978  int ir = nR + hpar->etaMin[2] - etaR - 1;
979  if (ir > 0 && ir < nR) {
980  double z = zVcal;
981  if (depth%2 != 1) z += dlShort;
982  tmp = 0.5*(getEta(hpar->rTable[ir-1],z)+getEta(hpar->rTable[ir],z));
983  }
984  } else {
985  if (etaR > 0 && etaR < nEta) {
986  if (etaR == hpar->noff[1]-1 && depth > depthEta29[0]) {
987  tmp = 0.5*(hpar->etaTable[etaR+1]+hpar->etaTable[etaR-1]);
988  } else if (det == static_cast<int>(HcalOuter)) {
989  if (etaR == hpar->noff[2]) {
990  tmp = 0.5*(etaHO[0]+hpar->etaTable[etaR-1]);
991  } else if (etaR == hpar->noff[2]+1) {
992  tmp = 0.5*(hpar->etaTable[etaR]+etaHO[1]);
993  } else if (etaR == hpar->noff[3]) {
994  tmp = 0.5*(etaHO[2]+hpar->etaTable[etaR-1]);
995  } else if (etaR == hpar->noff[3]+1) {
996  tmp = 0.5*(hpar->etaTable[etaR]+etaHO[3]);
997  } else {
998  tmp = 0.5*(hpar->etaTable[etaR]+hpar->etaTable[etaR-1]);
999  }
1000  } else {
1001  tmp = 0.5*(hpar->etaTable[etaR]+hpar->etaTable[etaR-1]);
1002  }
1003  }
1004  }
1005  if (zside == 0) tmp = -tmp;
1006 #ifdef EDM_ML_DEBUG
1007  std::cout << "HcalDDDSimConstants::getEta " << etaR << " "
1008  << zside << " " << depth << " ==> " << tmp << "\n";
1009 #endif
1010  return tmp;
1011 }
std::vector< double > etaTable
int getEta(const int det, const int lay, const double hetaR)
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
std::vector< double > rTable
std::vector< int > noff
const HcalParameters * hpar
std::vector< int > etaMin
double HcalDDDSimConstants::getEta ( const double  r,
const double  z 
) const
private

Definition at line 1013 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, cmsBatch::log, funct::tan(), and tmp.

1013  {
1014 
1015  double tmp = 0;
1016  if (z != 0) tmp = -log(tan(0.5*atan(r/z)));
1017 #ifdef EDM_ML_DEBUG
1018  std::cout << "HcalDDDSimConstants::getEta " << r << " " << z
1019  << " ==> " << tmp << std::endl;
1020 #endif
1021  return tmp;
1022 }
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
std::pair< int, int > HcalDDDSimConstants::getEtaDepth ( const int  det,
int  etaR,
int  phi,
int  zside,
int  depth,
int  lay 
)

Definition at line 256 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, particleFlowClusterECALTimeSelected_cfi::depth, HcalParameters::etaMin, getDepthEta16(), getDepthEta29(), getMaxDepth(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hpar, createfilelist::int, layerGroup(), HcalParameters::noff, HcalParameters::phibin, and HcalParameters::phioff.

Referenced by HcalNumberingFromDDD::unitID().

258  {
259 
260 #ifdef EDM_ML_DEBUG
261  std::cout << "HcalDDDEsimConstants:getEtaDepth: I/P " << det << ":" << etaR
262  << ":" << phi << ":" << zside << ":" << depth << ":" << lay << "\n";
263 #endif
264  //Modify the depth index
265  if ((det == static_cast<int>(HcalEndcap)) && (etaR == 17) && (lay == 1))
266  etaR = 18;
267  if (det == static_cast<int>(HcalForward)) { // Forward HCal
268  } else if (det == static_cast<int>(HcalOuter)) {
269  depth = 4;
270  } else {
271  if (lay >= 0) {
272  depth = layerGroup(det, etaR, phi, zside, lay-1);
273  if (etaR == hpar->noff[0] && lay > 1) {
274  int kphi = phi + int((hpar->phioff[3]+0.1)/hpar->phibin[etaR-1]);
275  kphi = (kphi-1)%4 + 1;
276  if (kphi == 2 || kphi == 3)
277  depth = layerGroup(det, etaR, phi, zside, lay-2);
278  }
279  } else if (det == static_cast<int>(HcalBarrel)) {
280  if (depth>getMaxDepth(det,etaR,phi,zside,false))
281  depth = getMaxDepth(det,etaR,phi,zside,false);
282  }
283  if (etaR >= hpar->noff[1] && depth > getDepthEta29(phi,zside,0)) {
284  etaR -= getDepthEta29(phi,zside,1);
285  } else if (etaR == hpar->etaMin[1]) {
286  if (det == static_cast<int>(HcalBarrel)) {
287  if (depth > getDepthEta16(det, phi, zside))
288  depth = getDepthEta16(det, phi, zside);
289  } else {
290  if (depth < getDepthEta16(det, phi, zside))
291  depth = getDepthEta16(det, phi, zside);
292  }
293  }
294  }
295 #ifdef EDM_ML_DEBUG
296  std::cout << "HcalDDDEsimConstants:getEtaDepth: O/P " << etaR << ":" << depth
297  << std::endl;
298 #endif
299  return std::pair<int,int>(etaR,depth);
300 }
int getMaxDepth(const int type) const
int getDepthEta29(const int phi, int zside, int i) const
int getDepthEta16(const int det, const int phi, const int zside) const
unsigned int layerGroup(const int eta, const int i) const
std::vector< double > phioff
std::vector< double > phibin
std::vector< int > noff
const HcalParameters * hpar
std::vector< int > etaMin
double HcalDDDSimConstants::getEtaHO ( double &  etaR,
double &  x,
double &  y,
double &  z 
) const

Definition at line 302 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, stringResolutionProvider_cfi::eta, HcalParameters::etaTable, hpar, alignCSCRings::r, rminHO, mathSSE::sqrt(), HcalParameters::zHO, and geometryCSVtoXML::zz.

Referenced by HcalNumberingFromDDD::unitID().

303  {
304 
305  if (hpar->zHO.size() > 4) {
306  double eta = fabs(etaR);
307  double r = std::sqrt(x*x+y*y);
308  if (r > rminHO) {
309  double zz = fabs(z);
310  if (zz > hpar->zHO[3]) {
311  if (eta <= hpar->etaTable[10]) eta = hpar->etaTable[10]+0.001;
312  } else if (zz > hpar->zHO[1]) {
313  if (eta <= hpar->etaTable[4]) eta = hpar->etaTable[4]+0.001;
314  }
315  }
316  eta = (z >= 0. ? eta : -eta);
317 #ifdef EDM_ML_DEBUG
318  std::cout << "R " << r << " Z " << z << " eta " << etaR
319  << ":" << eta << std::endl;
320  if (eta != etaR) edm::LogInfo ("HCalGeom") << "**** Check *****";
321 #endif
322  return eta;
323  } else {
324  return etaR;
325  }
326 }
std::vector< double > zHO
std::vector< double > etaTable
T sqrt(T t)
Definition: SSEVec.h:18
const HcalParameters * hpar
const std::vector<double>& HcalDDDSimConstants::getEtaTableHF ( ) const
inline

Definition at line 51 of file HcalDDDSimConstants.h.

References HcalParameters::etaTableHF, and hpar.

51 {return hpar->etaTableHF;}
std::vector< double > etaTableHF
const HcalParameters * hpar
int HcalDDDSimConstants::getFrontLayer ( const int  det,
const int  eta 
) const

Definition at line 328 of file HcalDDDSimConstants.cc.

References layFHB, and layFHE.

Referenced by getIdHF2QIE(), and HcalDDDRecConstants::getLayerFront().

328  {
329 
330  int lay=0;
331  if (det == 1) {
332  if (eta == 16 || eta == -16) lay = layFHB[1];
333  else lay = layFHB[0];
334  } else {
335  if (eta == 16 || eta == -16) lay = layFHE[1];
336  else if (eta == 18 || eta == -18) lay = layFHE[2];
337  else lay = layFHE[0];
338  }
339  return lay;
340 }
double HcalDDDSimConstants::getGain ( const HcalSubdetector  subdet,
const int  depth 
) const
private

Definition at line 1045 of file HcalDDDSimConstants.cc.

References muonCSCDigis_cfi::gain, HcalParameters::HBGains, HcalEndcap, HcalForward, HcalOuter, HcalParameters::HEGains, HcalParameters::HFGains, and hpar.

Referenced by HcalCellTypes(), and ldMap().

1046  {
1047 
1048  double gain;
1049  switch(subdet) {
1050  case HcalEndcap:
1051  gain = hpar->HEGains[0];
1052  break;
1053  case HcalForward:
1054  gain = hpar->HFGains[(depth-1)%2];
1055  break;
1056  case HcalOuter:
1057  gain = hpar->HBGains[3];
1058  break;
1059  default:
1060  gain = hpar->HBGains[0];
1061  break;
1062  }
1063  return gain;
1064 }
std::vector< double > HBGains
std::vector< double > HEGains
std::vector< double > HFGains
const HcalParameters * hpar
const std::vector<double>& HcalDDDSimConstants::getGparHF ( ) const
inline

Definition at line 52 of file HcalDDDSimConstants.h.

References HcalParameters::gparHF, and hpar.

Referenced by HFFibre::initRun(), HFShower::initRun(), HFShowerParam::initRun(), HFShowerLibrary::initRun(), and HCalSD::update().

52 {return hpar->gparHF;}
std::vector< double > gparHF
const HcalParameters * hpar
const std::vector<HcalDetId>& HcalDDDSimConstants::getIdHF2QIE ( ) const
inline
std::pair<int,int> HcalDDDSimConstants::getiEtaRange ( const int  i) const
inline

Definition at line 50 of file HcalDDDSimConstants.h.

References HcalParameters::etaMax, HcalParameters::etaMin, hpar, and mps_fire::i.

50 {return std::pair<int,int>(hpar->etaMin[i],hpar->etaMax[i]);}
std::vector< int > etaMax
const HcalParameters * hpar
std::vector< int > etaMin
double HcalDDDSimConstants::getLayer0Wt ( const int  det,
const int  phi,
const int  zside 
) const

Definition at line 342 of file HcalDDDSimConstants.cc.

References HcalLayerDepthMap::getLayer0Wt(), hpar, HcalParameters::Layer0Wt, and ldmap_.

Referenced by HCalSD::getEnergyDeposit(), getIdHF2QIE(), and HcalDDDRecConstants::getLayer0Wt().

343  {
344 
345  double wt = ldmap_.getLayer0Wt(det, phi, zside);
346  if (wt < 0) wt = (det == 2) ? hpar->Layer0Wt[1] : hpar->Layer0Wt[0];
347  return wt;
348 }
double getLayer0Wt(const int subdet, const int iphi, const int zside) const
std::vector< double > Layer0Wt
const HcalParameters * hpar
HcalLayerDepthMap ldmap_
int HcalDDDSimConstants::getLayerBack ( const int  det,
const int  eta,
const int  phi,
const int  zside,
const int  depth 
) const

Definition at line 370 of file HcalDDDSimConstants.cc.

References depths, HcalLayerDepthMap::getLayerBack(), ldmap_, and maxLayer_.

Referenced by getIdHF2QIE(), printTileHB(), and printTileHE().

372  {
373 
374  int layer = ldmap_.getLayerBack(det, eta, phi, zside, depth);
375  if (layer < 0) {
376  if (det == 1 || det ==2) {
377  layer = depths[depth-1][eta-1];
378  } else {
379  layer = maxLayer_;
380  }
381  }
382  return layer;
383 }
static const int maxLayer_
int getLayerBack(const int subdet, const int ieta, const int iphi, const int zside, const int depth) const
std::vector< int > depths[nDepthMax]
HcalLayerDepthMap ldmap_
int HcalDDDSimConstants::getLayerFront ( const int  det,
const int  eta,
const int  phi,
const int  zside,
const int  depth 
) const

Definition at line 350 of file HcalDDDSimConstants.cc.

References HcalLayerDepthMap::getLayerFront(), getLayerMax(), hpar, checklumidiff::l, layerGroup(), ldmap_, maxLayer_, maxLayerHB_, and HcalParameters::noff.

Referenced by getIdHF2QIE(), printTileHB(), and printTileHE().

352  {
353 
354  int layer = ldmap_.getLayerFront(det, eta, phi, zside, depth);
355  if (layer < 0) {
356  if (det == 1 || det == 2) {
357  layer = 1;
358  for (int l=0; l<getLayerMax(eta,depth); ++l) {
359  if ((int)(layerGroup(eta-1,l)) == depth+1) {
360  layer = l+1; break;
361  }
362  }
363  } else {
364  layer = (eta > hpar->noff[2]) ? maxLayerHB_+1 : maxLayer_;
365  }
366  }
367  return layer;
368 }
static const int maxLayer_
int getLayerFront(const int subdet, const int ieta, const int iphi, const int zside, const int depth) const
unsigned int layerGroup(const int eta, const int i) const
std::vector< int > noff
const HcalParameters * hpar
static const int maxLayerHB_
int getLayerMax(const int eta, const int depth) const
HcalLayerDepthMap ldmap_
int HcalDDDSimConstants::getLayerMax ( const int  eta,
const int  depth 
) const

Definition at line 385 of file HcalDDDSimConstants.cc.

References HcalParameters::etaMin, hpar, createfilelist::int, layerGroupSize(), maxDepth, and maxLayerHB_.

Referenced by getIdHF2QIE(), getLayerFront(), and initialize().

385  {
386 
387  int layermx = ((eta < hpar->etaMin[1]) && depth-1 < maxDepth[0]) ? maxLayerHB_+1 : (int)layerGroupSize(eta-1);
388  return layermx;
389 }
std::vector< int > maxDepth
unsigned int layerGroupSize(const int eta) const
const HcalParameters * hpar
static const int maxLayerHB_
std::vector< int > etaMin
int HcalDDDSimConstants::getMaxDepth ( const int  type) const
inline

Definition at line 64 of file HcalDDDSimConstants.h.

References maxDepth.

Referenced by getEtaDepth(), HcalDDDRecConstants::getMaxDepth(), printTiles(), and HCalSD::update().

64 {return maxDepth[type];}
type
Definition: HCALResponse.h:21
std::vector< int > maxDepth
int HcalDDDSimConstants::getMaxDepth ( const int  det,
const int  eta,
const int  phi,
const int  zside,
bool  partialOnly 
) const

Definition at line 391 of file HcalDDDSimConstants.cc.

References HcalParameters::etaMax, getDepthEta16(), HcalLayerDepthMap::getDepths(), hpar, HcalLayerDepthMap::isValid(), layerGroup(), ldmap_, maxDepth, maxHFDepth(), maxLayer_, and maxLayerHB_.

393  {
394 
395  int dmax(-1);
396  if (partialDetOnly) {
397  if (ldmap_.isValid(det,phi,zside)) {
398  dmax = ldmap_.getDepths(eta).second;
399  }
400  } else if (det == 1 || det == 2) {
401  if (ldmap_.isValid(det,phi,zside))
402  dmax = ldmap_.getDepths(eta).second;
403  else if (det == 2)
404  dmax = layerGroup(eta-1,maxLayer_);
405  else if (eta == hpar->etaMax[0])
406  dmax = getDepthEta16(det,phi,zside);
407  else
408  dmax = layerGroup(eta-1,maxLayerHB_);
409  } else if (det == 3) { // HF
410  dmax = maxHFDepth(zside*eta,phi);
411  } else if (det == 4) { // HO
412  dmax = maxDepth[3];
413  } else {
414  dmax = -1;
415  }
416  return dmax;
417 }
int maxHFDepth(const int ieta, const int iphi) const
std::vector< int > maxDepth
static const int maxLayer_
bool isValid(const int det, const int phi, const int zside) const
std::vector< int > etaMax
std::pair< int, int > getDepths(const int eta) const
int getDepthEta16(const int det, const int phi, const int zside) const
unsigned int layerGroup(const int eta, const int i) const
const HcalParameters * hpar
static const int maxLayerHB_
HcalLayerDepthMap ldmap_
std::pair<int,int> HcalDDDSimConstants::getMaxDepthDet ( const int  i) const
inline

Definition at line 68 of file HcalDDDSimConstants.h.

References depthMaxDf_, depthMaxSp_, getMinDepth(), getModHalfHBHE(), getPhiCons(), and getPhis().

Referenced by HcalDDDRecConstants::initialize().

68 {return ((i==1) ? depthMaxDf_ : depthMaxSp_);}
std::pair< int, int > depthMaxDf_
std::pair< int, int > depthMaxSp_
int HcalDDDSimConstants::getMinDepth ( const int  det,
const int  eta,
const int  phi,
const int  zside,
bool  partialOnly 
) const

Definition at line 419 of file HcalDDDSimConstants.cc.

References HcalParameters::etaMin, getDepthEta16(), HcalLayerDepthMap::getDepths(), hpar, createfilelist::int, HcalLayerDepthMap::isValid(), layerGroup(), layerGroupSize(), ldmap_, and maxDepth.

Referenced by getMaxDepthDet(), and HcalDDDRecConstants::getMinDepth().

421  {
422 
423  int lmin(-1);
424  if (partialDetOnly) {
425  if (ldmap_.isValid(det,phi,zside)) {
426  lmin = ldmap_.getDepths(eta).first;
427  }
428  } else if (det == 3) { // HF
429  lmin = 1;
430  } else if (det == 4) { // HO
431  lmin = maxDepth[3];
432  } else {
433  if (ldmap_.isValid(det,phi,zside)) {
434  lmin = ldmap_.getDepths(eta).first;
435  } else if (layerGroupSize(eta-1) > 0) {
436  lmin = (int)(layerGroup(eta-1, 0));
437  unsigned int type = (det == 1) ? 0 : 1;
438  if (type == 1 && eta == hpar->etaMin[1])
439  lmin = getDepthEta16(det, phi, zside);
440  } else {
441  lmin = 1;
442  }
443  }
444  return lmin;
445 }
type
Definition: HCALResponse.h:21
std::vector< int > maxDepth
bool isValid(const int det, const int phi, const int zside) const
std::pair< int, int > getDepths(const int eta) const
int getDepthEta16(const int det, const int phi, const int zside) const
unsigned int layerGroup(const int eta, const int i) const
unsigned int layerGroupSize(const int eta) const
const HcalParameters * hpar
std::vector< int > etaMin
HcalLayerDepthMap ldmap_
std::pair< int, int > HcalDDDSimConstants::getModHalfHBHE ( const int  type) const

Definition at line 447 of file HcalDDDSimConstants.cc.

References nmodHB, nmodHE, nzHB, and nzHE.

Referenced by getMaxDepthDet().

447  {
448 
449  if (type == 0) {
450  return std::pair<int,int>(nmodHB,nzHB);
451  } else {
452  return std::pair<int,int>(nmodHE,nzHE);
453  }
454 }
type
Definition: HCALResponse.h:21
std::pair< double, double > HcalDDDSimConstants::getPhiCons ( const int  det,
const int  ieta 
) const

Definition at line 456 of file HcalDDDSimConstants.cc.

References HcalParameters::etaMin, HcalEndcap, HcalForward, hpar, HcalParameters::phibin, HcalParameters::phioff, HcalParameters::phitable, and unitPhi().

Referenced by getMaxDepthDet(), getPhis(), HcalDDDRecConstants::getPhis(), and HcalNumberingFromDDD::unitID().

457  {
458 
459  double fioff(0), fibin(0);
460  if (det == static_cast<int>(HcalForward)) { // Forward HCal
461  fioff = hpar->phioff[2];
462  fibin = hpar->phitable[ieta-hpar->etaMin[2]];
463  if (unitPhi(fibin) > 2) { // HF double-phi
464  fioff = hpar->phioff[4];
465  }
466  } else { // Barrel or Endcap
467  if (det == static_cast<int>(HcalEndcap)) {
468  fioff = hpar->phioff[1];
469  } else {
470  fioff = hpar->phioff[0];
471  }
472  fibin = hpar->phibin[ieta-1];
473  }
474  return std::pair<double,double>(fioff,fibin);
475 }
std::vector< double > phioff
std::vector< double > phitable
std::vector< double > phibin
int unitPhi(const int det, const int etaR) const
const HcalParameters * hpar
std::vector< int > etaMin
std::vector< std::pair< int, double > > HcalDDDSimConstants::getPhis ( const int  subdet,
const int  ieta 
) const

Definition at line 478 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, plotBeamSpotDB::first, getPhiCons(), createfilelist::int, gen::k, phi, phiNumber(), edm::second(), unitPhi(), and units().

Referenced by getMaxDepthDet(), and HcalCellTypes().

478  {
479 
480  std::vector<std::pair<int,double> > phis;
481  int ietaAbs = (ieta > 0) ? ieta : -ieta;
482  std::pair<double,double> ficons = getPhiCons(subdet, ietaAbs);
483  int nphi = int((CLHEP::twopi+0.1*ficons.second)/ficons.second);
484  int units = unitPhi(subdet, ietaAbs);
485  for (int ifi = 0; ifi < nphi; ++ifi) {
486  double phi =-ficons.first + (ifi+0.5)*ficons.second;
487  int iphi = phiNumber(ifi+1,units);
488  phis.push_back(std::pair<int,double>(iphi,phi));
489  }
490 #ifdef EDM_ML_DEBUG
491  std::cout << "getPhis: subdet|ieta|iphi " << subdet << "|" << ieta
492  << " with " << phis.size() << " phi bins" << std::endl;
493  for (unsigned int k=0; k<phis.size(); ++k)
494  std::cout << "[" << k << "] iphi " << phis[k].first << " phi "
495  << phis[k].second/CLHEP::deg << std::endl;
496 #endif
497  return phis;
498 }
std::pair< double, double > getPhiCons(const int det, const int ieta) const
U second(std::pair< T, U > const &p)
int k[5][pyjets_maxn]
int phiNumber(const int phi, const int unit) const
TString units(TString variable, Char_t axis)
int unitPhi(const int det, const int etaR) const
const std::vector<double>& HcalDDDSimConstants::getPhiTableHF ( ) const
inline

Definition at line 75 of file HcalDDDSimConstants.h.

References hpar, and HcalParameters::phitable.

Referenced by HcalDDDRecConstants::getHFCellParameters(), and HFShowerLibrary::initRun().

75 {return hpar->phitable;}
std::vector< double > phitable
const HcalParameters * hpar
const std::vector<double>& HcalDDDSimConstants::getRTableHF ( ) const
inline
int HcalDDDSimConstants::getShift ( const HcalSubdetector  subdet,
const int  depth 
) const
private

Definition at line 1024 of file HcalDDDSimConstants.cc.

References HcalParameters::HBShift, HcalEndcap, HcalForward, HcalOuter, HcalParameters::HEShift, HcalParameters::HFShift, hpar, and edm::shift.

Referenced by HcalCellTypes(), and ldMap().

1025  {
1026 
1027  int shift;
1028  switch(subdet) {
1029  case HcalEndcap:
1030  shift = hpar->HEShift[0];
1031  break;
1032  case HcalForward:
1033  shift = hpar->HFShift[(depth-1)%2];
1034  break;
1035  case HcalOuter:
1036  shift = hpar->HBShift[3];
1037  break;
1038  default:
1039  shift = hpar->HBShift[0];
1040  break;
1041  }
1042  return shift;
1043 }
std::vector< int > HEShift
std::vector< int > HFShift
static unsigned int const shift
std::vector< int > HBShift
const HcalParameters * hpar
std::vector< HcalCellType > HcalDDDSimConstants::HcalCellTypes ( ) const

Definition at line 500 of file HcalDDDSimConstants.cc.

References HcalBarrel, HcalEndcap, HcalForward, HcalOuter, and mps_fire::i.

Referenced by getRTableHF(), HcalDDDRecConstants::HcalCellTypes(), HcalDDDSimConstants(), and numberOfCells().

500  {
501 
502  std::vector<HcalCellType> cellTypes = HcalCellTypes(HcalBarrel);
503 #ifdef EDM_ML_DEBUG
504  edm::LogInfo ("HCalGeom") << "HcalDDDSimConstants: " << cellTypes.size()
505  << " cells of type HCal Barrel\n";
506  for (unsigned int i=0; i<cellTypes.size(); i++)
507  edm::LogInfo ("HCalGeom") << "Cell " << i << " " << cellTypes[i] << "\n";
508 #endif
509 
510  std::vector<HcalCellType> hoCells = HcalCellTypes(HcalOuter);
511 #ifdef EDM_ML_DEBUG
512  edm::LogInfo ("HCalGeom") << "HcalDDDSimConstants: " << hoCells.size()
513  << " cells of type HCal Outer\n";
514  for (unsigned int i=0; i<hoCells.size(); i++)
515  edm::LogInfo ("HCalGeom") << "Cell " << i << " " << hoCells[i] << "\n";
516 #endif
517  cellTypes.insert(cellTypes.end(), hoCells.begin(), hoCells.end());
518 
519  std::vector<HcalCellType> heCells = HcalCellTypes(HcalEndcap);
520 #ifdef EDM_ML_DEBUG
521  edm::LogInfo ("HCalGeom") << "HcalDDDSimConstants: " << heCells.size()
522  << " cells of type HCal Endcap\n";
523  for (unsigned int i=0; i<heCells.size(); i++)
524  edm::LogInfo ("HCalGeom") << "Cell " << i << " " << heCells[i] << "\n";
525 #endif
526  cellTypes.insert(cellTypes.end(), heCells.begin(), heCells.end());
527 
528  std::vector<HcalCellType> hfCells = HcalCellTypes(HcalForward);
529 #ifdef EDM_ML_DEBUG
530  edm::LogInfo ("HCalGeom") << "HcalDDDSimConstants: " << hfCells.size()
531  << " cells of type HCal Forward\n";
532  for (unsigned int i=0; i<hfCells.size(); i++)
533  edm::LogInfo ("HCalGeom") << "Cell " << i << " " << hfCells[i] << "\n";
534 #endif
535  cellTypes.insert(cellTypes.end(), hfCells.begin(), hfCells.end());
536 
537  return cellTypes;
538 }
std::vector< HcalCellType > HcalCellTypes() const
std::vector< HcalCellType > HcalDDDSimConstants::HcalCellTypes ( HcalSubdetector  subdet,
int  ieta = -1,
int  depth = -1 
) const

Definition at line 540 of file HcalDDDSimConstants.cc.

References cell(), particleFlowClusterECALTimeSelected_cfi::depth, dlShort, dzVcal, stringResolutionProvider_cfi::eta, HcalParameters::etaMax, HcalParameters::etaMin, plotBeamSpotDB::first, muonCSCDigis_cfi::gain, getGain(), getPhis(), getShift(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hpar, idHF2QIE, gen::k, GetRecoTauVFromDQM_MC_cff::kk, checklumidiff::l, maxDepth, maxLayer_, maxLayerHB_, HcalParameters::noff, nzHB, nzHE, HcalCellType::HcalCell::ok, convertSQLiteXML::ok, phi, HcalParameters::phibin, HcalParameters::phioff, HcalParameters::phitable, HcalCellType::setPhi(), edm::shift, csvLumiCalc::unit, unitPhi(), and HcalDigiParam_cfi::zside.

540  {
541 
542  std::vector<HcalCellType> cellTypes;
543  if (subdet == HcalForward) {
544  if (dzVcal < 0) return cellTypes;
545  }
546 
547  int dmin, dmax, indx, nz;
548  double hsize = 0;
549  switch(subdet) {
550  case HcalEndcap:
551  dmin = 1; dmax = maxLayer_+1; indx = 1; nz = nzHE;
552  break;
553  case HcalForward:
554  dmin = 1; dmax = (idHF2QIE.size() > 0) ? 2 : maxDepth[2]; indx = 2; nz = 2;
555  break;
556  case HcalOuter:
557  dmin = 4; dmax = 4; indx = 0; nz = nzHB;
558  break;
559  default:
560  dmin = 1; dmax = maxLayerHB_+1; indx = 0; nz = nzHB;
561  break;
562  }
563  if (depthl > 0) dmin = dmax = depthl;
564  int ietamin = (ieta>0) ? ieta : hpar->etaMin[indx];
565  int ietamax = (ieta>0) ? ieta : hpar->etaMax[indx];
566  int phi = (indx == 2) ? 3 : 1;
567 
568  // Get the Cells
569  int subdet0 = static_cast<int>(subdet);
570  for (int depth=dmin; depth<=dmax; depth++) {
571  int shift = getShift(subdet, depth);
572  double gain = getGain (subdet, depth);
573  if (subdet == HcalForward) {
574  if (depth%2 == 1) hsize = dzVcal;
575  else hsize = dzVcal-0.5*dlShort;
576  }
577  for (int eta=ietamin; eta<=ietamax; eta++) {
578  for (int iz=0; iz<nz; ++iz) {
579  int zside = -2*iz + 1;
580  HcalCellType::HcalCell temp1 = cell(subdet0,zside,depth,eta,phi);
581  if (temp1.ok) {
582  std::vector<std::pair<int,double> > phis = getPhis(subdet0,eta);
583  HcalCellType temp2(subdet, eta, zside, depth, temp1,
584  shift, gain, hsize);
585  double dphi, fioff;
586  std::vector<int> phiMiss2;
587  if ((subdet == HcalBarrel) || (subdet == HcalOuter)) {
588  fioff = hpar->phioff[0];
589  dphi = hpar->phibin[eta-1];
590  if (subdet == HcalOuter) {
591  if (eta == hpar->noff[4]) {
592  int kk = (iz == 0) ? 7 : (7+hpar->noff[5]);
593  for (int miss=0; miss<hpar->noff[5+iz]; miss++) {
594  phiMiss2.push_back(hpar->noff[kk]);
595  kk++;
596  }
597  }
598  }
599  } else if (subdet == HcalEndcap) {
600  fioff = hpar->phioff[1];
601  dphi = hpar->phibin[eta-1];
602  } else {
603  fioff = hpar->phioff[2];
604  dphi = hpar->phitable[eta-hpar->etaMin[2]];
605  if (unitPhi(dphi) > 2) fioff = hpar->phioff[4];
606  }
607  int unit = unitPhi(dphi);
608  temp2.setPhi(phis,phiMiss2,fioff,dphi,unit);
609  cellTypes.push_back(temp2);
610  // For HF look at extra cells
611  if ((subdet == HcalForward) && (idHF2QIE.size() > 0)) {
612  HcalCellType temp3(subdet, eta, zside+2, depth, temp1,
613  shift, gain, hsize);
614  std::vector<int> phiMiss3;
615  for (unsigned int k=0; k<phis.size(); ++k) {
616  bool ok(false);
617  for (unsigned int l=0; l<idHF2QIE.size(); ++l) {
618  if ((eta*zside == idHF2QIE[l].ieta()) &&
619  (phis[k].first == idHF2QIE[l].iphi())) {
620  ok = true;
621  break;
622  }
623  }
624  if (!ok) phiMiss3.push_back(phis[k].first);
625  }
626  dphi = hpar->phitable[eta-hpar->etaMin[2]];
627  unit = unitPhi(dphi);
628  fioff = (unit > 2) ? hpar->phioff[4] : hpar->phioff[2];
629  temp3.setPhi(phis,phiMiss2,fioff,dphi,unit);
630  cellTypes.push_back(temp3);
631  }
632  }
633  }
634  }
635  }
636  return cellTypes;
637 }
std::vector< int > maxDepth
double getGain(const HcalSubdetector subdet, const int depth) const
static const int maxLayer_
int getShift(const HcalSubdetector subdet, const int depth) const
std::vector< int > etaMax
std::vector< std::pair< int, double > > getPhis(const int subdet, const int ieta) const
std::vector< HcalDetId > idHF2QIE
int k[5][pyjets_maxn]
std::vector< double > phioff
std::vector< double > phitable
std::vector< double > phibin
int unitPhi(const int det, const int etaR) const
HcalCellType::HcalCell cell(const int det, const int zside, const int depth, const int etaR, const int iphi) const
static unsigned int const shift
std::vector< int > noff
const HcalParameters * hpar
static const int maxLayerHB_
std::vector< int > etaMin
void HcalDDDSimConstants::initialize ( void  )
private

Definition at line 724 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, depthEta16, depthEta29, depthMaxDf_, depthMaxSp_, depths, dlShort, runTauDisplay::dtype, HcalParameters::dzVcal, dzVcal, etaHO, ALCARECOTkAlBeamHalo_cff::etaMax, HcalParameters::etaMax, HcalParameters::etaMin, HcalParameters::etaTable, HcalLayerDepthMap::getDepthMax(), getLayerMax(), HcalParameters::gparHF, HcalForward, hpar, mps_fire::i, idHF2QIE, HcalLayerDepthMap::initialize(), isBH_, gen::k, GetRecoTauVFromDQM_MC_cff::kk, checklumidiff::l, HcalParameters::Layer0Wt, layerGroup(), layerGroupSize(), layFHB, layFHE, ldmap_, HcalParameters::maxDepth, maxDepth, maxLayerHB_, HcalParameters::modHB, HcalParameters::modHE, nEta, nmodHB, nmodHE, HcalParameters::noff, nPhiF, nR, nzHB, nzHE, HcalParameters::rHB, HcalParameters::rHO, rminHO, HcalParameters::rTable, HcalParameters::zHO, HcalDigiParam_cfi::zside, and zVcal.

Referenced by HcalDDDSimConstants(), and ldMap().

724  {
725 
726  nEta = hpar->etaTable.size();
727  nR = hpar->rTable.size();
728  nPhiF = nR - 1;
729  isBH_ = false;
730 
731 #ifdef EDM_ML_DEBUG
732  for (int i=0; i<nEta-1; ++i) {
733  std::cout << "HcalDDDSimConstants:Read LayerGroup" << i << ":";
734  for (unsigned int k=0; k<layerGroupSize( i ); k++)
735  std::cout << " [" << k << "] = " << layerGroup( i, k );
736  std::cout << std::endl;
737  }
738 #endif
739 
740  // Geometry parameters for HF
741  dlShort = hpar->gparHF[0];
742  zVcal = hpar->gparHF[4];
743  dzVcal = hpar->dzVcal;
744 #ifdef EDM_ML_DEBUG
745  std::cout << "HcalDDDSimConstants: dlShort " << dlShort << " zVcal " << zVcal
746  << " and dzVcal " << dzVcal << std::endl;
747 #endif
748 
749  //Transform some of the parameters
751  maxDepth[0] = maxDepth[1] = 0;
752  for (int i=0; i<nEta-1; ++i) {
753  unsigned int imx = layerGroupSize( i );
754  int laymax = (imx > 0) ? layerGroup( i, imx-1 ) : 0;
755  if (i < hpar->etaMax[0]) {
756  int laymax0 = (imx > 16) ? layerGroup(i, 16) : laymax;
757  if (i+1 == hpar->etaMax[0] && laymax0 > 2) laymax0 = 2;
758  if (maxDepth[0] < laymax0) maxDepth[0] = laymax0;
759  }
760  if (i >= hpar->etaMin[1]-1 && i < hpar->etaMax[1]) {
761  if (maxDepth[1] < laymax) maxDepth[1] = laymax;
762  }
763  }
764 #ifdef EDM_ML_DEBUG
765  for (int i=0; i<4; ++i)
766  std::cout << "Detector Type [" << i << "] iEta " << hpar->etaMin[i] << ":"
767  << hpar->etaMax[i] << " MaxDepth " << maxDepth[i] << std::endl;
768 #endif
769 
770  int maxdepth = (maxDepth[1]>maxDepth[0]) ? maxDepth[1] : maxDepth[0];
771  for (int i=0; i<maxdepth; ++i) {
772  for (int k=0; k<nEta-1; ++k) {
773  int layermx = getLayerMax(k+1,i+1);
774  int ll = layermx;
775  for (int l=layermx-1; l >= 0; --l) {
776  if ((int)layerGroup( k, l ) == i+1) {
777  ll = l+1; break;
778  }
779  }
780  depths[i].push_back(ll);
781  }
782 
783 #ifdef EDM_ML_DEBUG
784  std::cout << "Depth " << i << " with " << depths[i].size() << " etas:";
785  for (int k=0; k<nEta-1; ++k) std::cout << " " << depths[i][k];
786  std::cout << std::endl;
787 #endif
788  }
789 
790  nzHB = hpar->modHB[1];
791  nmodHB = hpar->modHB[0];
792  nzHE = hpar->modHE[1];
793  nmodHE = hpar->modHE[0];
794 #ifdef EDM_ML_DEBUG
795  std::cout << "HcalDDDSimConstants:: " << nzHB << ":" << nmodHB
796  << " barrel and " << nzHE << ":" << nmodHE
797  << " endcap half-sectors" << std::endl;
798 #endif
799 
800  if (hpar->rHB.size() > maxLayerHB_+1 && hpar->zHO.size() > 4) {
801  rminHO = hpar->rHO[0];
802  for (int k=0; k<4; ++k) etaHO[k] = hpar->rHO[k+1];
803  } else {
804  rminHO =-1.0;
805  etaHO[0] = hpar->etaTable[4];
806  etaHO[1] = hpar->etaTable[4];
807  etaHO[2] = hpar->etaTable[10];
808  etaHO[3] = hpar->etaTable[10];
809  }
810 #ifdef EDM_ML_DEBUG
811  std::cout << "HO Eta boundaries " << etaHO[0] << " " << etaHO[1]
812  << " " << etaHO[2] << " " << etaHO[3] << std::endl;
813  std::cout << "HO Parameters " << rminHO << " " << hpar->zHO.size();
814  for (int i=0; i<4; ++i) std::cout << " eta[" << i << "] = " << etaHO[i];
815  for (unsigned int i=0; i<hpar->zHO.size(); ++i)
816  std::cout << " zHO[" << i << "] = " << hpar->zHO[i];
817  std::cout << std::endl;
818 #endif
819 
820  int noffsize = 7 + hpar->noff[5] + hpar->noff[6];
821  int noffl(noffsize+5);
822  if ((int)(hpar->noff.size()) > (noffsize+3)) {
823  depthEta16[0] = hpar->noff[noffsize];
824  depthEta16[1] = hpar->noff[noffsize+1];
825  depthEta29[0] = hpar->noff[noffsize+2];
826  depthEta29[1] = hpar->noff[noffsize+3];
827  if ((int)(hpar->noff.size()) > (noffsize+4)) {
828  noffl += (2*hpar->noff[noffsize+4]);
829  if ((int)(hpar->noff.size()) > noffl) isBH_ = (hpar->noff[noffl] > 0);
830  }
831  } else {
832  depthEta16[0] = 2;
833  depthEta16[1] = 3;
834  depthEta29[0] = 2;
835  depthEta29[1] = 1;
836  }
837 #ifdef EDM_ML_DEBUG
838  std::cout << "isBH_ " << hpar->noff.size() << ":" << noffsize << ":"
839  << noffl << ":" << isBH_ << std::endl;
840  std::cout << "Depth index at ieta = 16 for HB (max) " << depthEta16[0]
841  << " HE (min) " << depthEta16[1] << "; max depth for itea = 29 : ("
842  << depthEta29[0] << ":" << depthEta29[1] << ")" << std::endl;
843 #endif
844 
845  if ((int)(hpar->noff.size()) > (noffsize+4)) {
846  int npair = hpar->noff[noffsize+4];
847  int kk = noffsize+4;
848  for (int k=0; k<npair; ++k) {
849  idHF2QIE.push_back(HcalDetId(HcalForward,hpar->noff[kk+1],hpar->noff[kk+2],1));
850  kk += 2;
851  }
852  }
853 #ifdef EDM_ML_DEBUG
854  std::cout << idHF2QIE.size() << " detector channels having 2 QIE cards:"
855  << std::endl;
856  for (unsigned int k=0; k<idHF2QIE.size(); ++k)
857  std::cout << " [" << k << "] " << idHF2QIE[k] << std::endl;
858 #endif
859 
860  layFHB[0] = 0; layFHB[1] = 1;
861  layFHE[0] = 1; layFHE[1] = 9; layFHE[2] = 0;
862  depthMaxSp_ = std::pair<int,int>(0,0);
863  int noffk(noffsize+5);
864  if ((int)(hpar->noff.size()) > (noffsize+5)) {
865  noffk += (2*hpar->noff[noffsize+4]);
866  if ((int)(hpar->noff.size()) > noffk+5) {
867  int dtype = hpar->noff[noffk+1];
868  int nphi = hpar->noff[noffk+2];
869  int ndeps = hpar->noff[noffk+3];
870  int ndp16 = hpar->noff[noffk+4];
871  int ndp29 = hpar->noff[noffk+5];
872  double wt = 0.1*(hpar->noff[noffk+6]);
873  if ((int)(hpar->noff.size()) >= (noffk+7+nphi+3*ndeps)) {
874  if (dtype == 1 || dtype == 2) {
875  std::vector<int> ifi, iet, ily, idp;
876  for (int i=0; i<nphi; ++i) ifi.push_back(hpar->noff[noffk+7+i]);
877  for (int i=0; i<ndeps;++i) {
878  iet.push_back(hpar->noff[noffk+7+nphi+3*i]);
879  ily.push_back(hpar->noff[noffk+7+nphi+3*i+1]);
880  idp.push_back(hpar->noff[noffk+7+nphi+3*i+2]);
881  }
882 #ifdef EDM_ML_DEBUG
883  std::cout << "Initialize HcalLayerDepthMap for Detector " << dtype
884  << " etaMax " << hpar->etaMax[dtype] << " with " << nphi
885  << " sectors";
886  for (int i=0; i<nphi; ++i) std::cout << ":" << ifi[i];
887  std::cout << " and " << ndeps << " depth sections" << std::endl;
888  for (int i=0; i<ndeps;++i)
889  std::cout << " [" << i << "] " << iet[i] << " " << ily[i] << " "
890  << idp[i] << std::endl;
891  std::cout << "Maximum depth for last HE Eta tower " << depthEta29[0]
892  << ":" << ndp16 << ":" << ndp29 << " L0 Wt "
893  << hpar->Layer0Wt[dtype-1] << ":" << wt << std::endl;
894 #endif
895  ldmap_.initialize(dtype,hpar->etaMax[dtype-1],ndp16,ndp29,wt,ifi,iet,
896  ily,idp);
897  int zside = (ifi[0]>0) ? 1 : -1;
898  int iphi = (ifi[0]>0) ? ifi[0] : -ifi[0];
899  depthMaxSp_ = std::pair<int,int>(dtype,ldmap_.getDepthMax(dtype,iphi,zside));
900  }
901  }
902  int noffm = (noffk+7+nphi+3*ndeps);
903  if ((int)(hpar->noff.size()) > noffm) {
904  int ndnext = hpar->noff[noffm];
905  if (ndnext > 4 && (int)(hpar->noff.size()) >= noffm+ndnext) {
906  for (int i=0; i<2; ++i) layFHB[i] = hpar->noff[noffm+i+1];
907  for (int i=0; i<3; ++i) layFHE[i] = hpar->noff[noffm+i+3];
908  }
909  }
910  }
911  }
912 #ifdef EDM_ML_DEBUG
913  std::cout << "Front Layer Definition for HB: " << layFHB[0] << ":"
914  << layFHB[1] << " and for HE: " << layFHE[0] << ":" << layFHE[1]
915  << ":" << layFHE[2] << std::endl;
916 #endif
917  if (depthMaxSp_.first == 0) {
918  depthMaxSp_ = depthMaxDf_ = std::pair<int,int>(2,maxDepth[1]);
919  } else if (depthMaxSp_.first == 1) {
920  depthMaxDf_ = std::pair<int,int>(1,maxDepth[0]);
921  if (depthMaxSp_.second > maxDepth[0]) maxDepth[0] = depthMaxSp_.second;
922  } else {
923  depthMaxDf_ = std::pair<int,int>(2,maxDepth[1]);
924  if (depthMaxSp_.second > maxDepth[1]) maxDepth[1] = depthMaxSp_.second;
925  }
926 #ifdef EDM_ML_DEBUG
927  std::cout << "Detector type and maximum depth for all RBX "
928  << depthMaxDf_.first << ":" << depthMaxDf_.second
929  << " and for special RBX " << depthMaxSp_.first << ":"
930  << depthMaxSp_.second << std::endl;
931 #endif
932 }
std::vector< double > zHO
std::vector< double > etaTable
void initialize(const int subdet, const int ietaMax, const int dep16C, const int dep29C, const double wtl0C, std::vector< int > const &iphi, std::vector< int > const &ieta, std::vector< int > const &layer, std::vector< int > const &depth)
std::vector< int > maxDepth
std::vector< double > rHB
std::vector< int > etaMax
std::vector< int > depths[nDepthMax]
std::vector< int > modHB
std::vector< double > rHO
std::pair< int, int > depthMaxDf_
std::vector< int > modHE
std::vector< HcalDetId > idHF2QIE
unsigned int layerGroup(const int eta, const int i) const
int k[5][pyjets_maxn]
std::vector< double > gparHF
unsigned int layerGroupSize(const int eta) const
std::vector< double > Layer0Wt
std::vector< double > rTable
std::vector< int > noff
std::pair< int, int > depthMaxSp_
const HcalParameters * hpar
std::vector< int > maxDepth
static const int maxLayerHB_
int getDepthMax(const int subdet, const int iphi, const int zside) const
int getLayerMax(const int eta, const int depth) const
std::vector< int > etaMin
HcalLayerDepthMap ldmap_
bool HcalDDDSimConstants::isBH ( ) const
inline

Definition at line 80 of file HcalDDDSimConstants.h.

References isBH_.

Referenced by HcalDDDRecConstants::isBH().

80 {return isBH_;}
unsigned int HcalDDDSimConstants::layerGroup ( const int  eta,
const int  i 
) const
private

Definition at line 1161 of file HcalDDDSimConstants.cc.

References hpar, gen::k, and HcalParameters::layerGroupEtaSim.

Referenced by getEtaDepth(), getLayerFront(), getMaxDepth(), getMinDepth(), initialize(), layerGroup(), and ldMap().

1162  {
1163  unsigned int k = 0;
1164  for (auto const & it : hpar->layerGroupEtaSim) {
1165  if (it.layer == (unsigned int)(eta + 1)) {
1166  return it.layerGroup.at(i);
1167  }
1168  if (it.layer > (unsigned int)(eta + 1)) break;
1169  k = it.layerGroup.at(i);
1170  }
1171  return k;
1172 }
std::vector< LayerItem > layerGroupEtaSim
int k[5][pyjets_maxn]
const HcalParameters * hpar
unsigned int HcalDDDSimConstants::layerGroup ( const int  det,
const int  eta,
const int  phi,
const int  zside,
const int  i 
) const
private

Definition at line 1174 of file HcalDDDSimConstants.cc.

References particleFlowClusterECALTimeSelected_cfi::depth, findDepth(), and layerGroup().

1176  {
1177 
1178  int depth0 = findDepth(det,eta,phi,zside,lay);
1179  unsigned int depth = (depth0 > 0) ? (unsigned int)(depth0) : layerGroup(eta-1,lay);
1180  return depth;
1181 }
int findDepth(const int det, const int eta, const int phi, const int zside, const int lay) const
unsigned int layerGroup(const int eta, const int i) const
unsigned int HcalDDDSimConstants::layerGroupSize ( const int  eta) const
private

Definition at line 1149 of file HcalDDDSimConstants.cc.

References hpar, gen::k, and HcalParameters::layerGroupEtaSim.

Referenced by getLayerMax(), getMinDepth(), initialize(), and ldMap().

1149  {
1150  unsigned int k = 0;
1151  for (auto const & it : hpar->layerGroupEtaSim) {
1152  if (it.layer == (unsigned int)(eta + 1)) {
1153  return it.layerGroup.size();
1154  }
1155  if (it.layer > (unsigned int)(eta + 1)) break;
1156  k = it.layerGroup.size();
1157  }
1158  return k;
1159 }
std::vector< LayerItem > layerGroupEtaSim
int k[5][pyjets_maxn]
const HcalParameters * hpar
const HcalLayerDepthMap* HcalDDDSimConstants::ldMap ( ) const
inline
int HcalDDDSimConstants::maxHFDepth ( const int  ieta,
const int  iphi 
) const

Definition at line 639 of file HcalDDDSimConstants.cc.

References idHF2QIE, gen::k, maxDepth, and convertSQLiteXML::ok.

Referenced by getMaxDepth(), ldMap(), HcalDDDRecConstants::maxHFDepth(), FastHFShowerLibrary::modifyDepth(), and HCalSD::modifyDepth().

639  {
640  int mxdepth = maxDepth[2];
641  if (idHF2QIE.size() > 0) {
642  bool ok(false);
643  for (unsigned int k=0; k<idHF2QIE.size(); ++k) {
644  if ((eta == idHF2QIE[k].ieta()) && (iphi == idHF2QIE[k].iphi())) {
645  ok = true; break;
646  }
647  }
648  if (!ok) mxdepth = 2;
649  }
650  return mxdepth;
651 }
std::vector< int > maxDepth
std::vector< HcalDetId > idHF2QIE
int k[5][pyjets_maxn]
unsigned int HcalDDDSimConstants::numberOfCells ( HcalSubdetector  subdet) const

Definition at line 653 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, HcalCellTypes(), mps_fire::i, createfilelist::int, ecaldqm::binning::nPhiBins, and pileupDistInMC::num.

Referenced by ldMap(), HcalDDDRecConstants::nCells(), and HcalDDDRecConstants::numberOfCells().

653  {
654 
655  unsigned int num = 0;
656  std::vector<HcalCellType> cellTypes = HcalCellTypes(subdet);
657  for (unsigned int i=0; i<cellTypes.size(); i++) {
658  num += (unsigned int)(cellTypes[i].nPhiBins());
659  }
660 #ifdef EDM_ML_DEBUG
661  std::cout << "HcalDDDSimConstants:numberOfCells "
662  << cellTypes.size() << " " << num
663  << " for subdetector " << subdet << std::endl;
664 #endif
665  return num;
666 }
std::vector< HcalCellType > HcalCellTypes() const
int HcalDDDSimConstants::phiNumber ( const int  phi,
const int  unit 
) const

Definition at line 668 of file HcalDDDSimConstants.cc.

References phi.

Referenced by HcalDDDRecConstants::getHCID(), getPhis(), HcalDDDRecConstants::getPhis(), ldMap(), and HcalNumberingFromDDD::unitID().

668  {
669 
670  int iphi_skip = phi;
671  if (units==2) iphi_skip = (phi-1)*2+1;
672  else if (units==4) iphi_skip = (phi-1)*4-1;
673  if (iphi_skip < 0) iphi_skip += 72;
674  return iphi_skip;
675 }
TString units(TString variable, Char_t axis)
void HcalDDDSimConstants::printTileHB ( const int  eta,
const int  phi,
const int  zside,
const int  depth 
) const
private

Definition at line 1066 of file HcalDDDSimConstants.cc.

References funct::cos(), gather_cfg::cout, HcalParameters::dxHB, HcalParameters::dyHB, allConversions_cfi::dz, HcalParameters::etaTable, JetChargeProducer_cfi::exp, getLayerBack(), getLayerFront(), hpar, gen::k, GetRecoTauVFromDQM_MC_cff::kk, HcalParameters::layHB, min(), HcalParameters::rhoxHB, and funct::sin().

Referenced by ldMap(), and printTiles().

1067  {
1068  std::cout << "HcalDDDSimConstants::printTileHB for eta " << eta << " and depth " << depth << "\n";
1069 
1070  double etaL = hpar->etaTable.at(eta-1);
1071  double thetaL = 2.*atan(exp(-etaL));
1072  double etaH = hpar->etaTable.at(eta);
1073  double thetaH = 2.*atan(exp(-etaH));
1074  int layL = getLayerFront(1,eta,phi,zside,depth);
1075  int layH = getLayerBack(1,eta,phi,zside,depth);
1076  std::cout << "\ntileHB:: eta|depth " << zside*eta << "|" << depth << " theta " << thetaH/CLHEP::deg << ":" << thetaL/CLHEP::deg << " Layer " << layL << ":" << layH-1 << "\n";
1077  for (int lay=layL; lay<layH; ++lay) {
1078  std::vector<double> area(2,0);
1079  int kk=0;
1080  for (unsigned int k=0; k<hpar->layHB.size(); ++k) {
1081  if (lay == hpar->layHB[k]) {
1082  double zmin = hpar->rhoxHB[k]*std::cos(thetaL)/std::sin(thetaL);
1083  double zmax = hpar->rhoxHB[k]*std::cos(thetaH)/std::sin(thetaH);
1084  double dz = (std::min(zmax,hpar->dxHB[k]) - zmin);
1085  if (dz > 0) {
1086  area[kk] = dz*hpar->dyHB[k];
1087  kk++;
1088  }
1089  }
1090  }
1091  if (area[0] > 0) std::cout << std::setw(2) << lay << " Area " << std::setw(8) << area[0] << " " << std::setw(8) << area[1] << "\n";
1092  }
1093 }
std::vector< double > etaTable
int getLayerBack(const int det, const int eta, const int phi, const int zside, const int depth) const
std::vector< double > rhoxHB
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
T min(T a, T b)
Definition: MathUtil.h:58
int k[5][pyjets_maxn]
std::vector< double > dyHB
std::vector< double > dxHB
int getLayerFront(const int det, const int eta, const int phi, const int zside, const int depth) const
const HcalParameters * hpar
std::vector< int > layHB
void HcalDDDSimConstants::printTileHE ( const int  eta,
const int  phi,
const int  zside,
const int  depth 
) const
private

Definition at line 1095 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, HcalParameters::dx1HE, HcalParameters::dyHE, stringResolutionProvider_cfi::eta, HcalParameters::etaTable, JetChargeProducer_cfi::exp, getLayerBack(), getLayerFront(), hpar, gen::k, GetRecoTauVFromDQM_MC_cff::kk, HcalParameters::layHE, hpstanc_transforms::max, min(), HcalParameters::phibin, HcalParameters::rhoxHE, funct::tan(), and HcalParameters::zxHE.

Referenced by ldMap(), and printTiles().

1096  {
1097 
1098  double etaL = hpar->etaTable[eta-1];
1099  double thetaL = 2.*atan(exp(-etaL));
1100  double etaH = hpar->etaTable[eta];
1101  double thetaH = 2.*atan(exp(-etaH));
1102  int layL = getLayerFront(2,eta,phi,zside,depth);
1103  int layH = getLayerBack(2,eta,phi,zside,depth);
1104  double phib = hpar->phibin[eta-1];
1105  int nphi = 2;
1106  if (phib > 6*CLHEP::deg) nphi = 1;
1107  std::cout << "\ntileHE:: Eta/depth " << zside*eta << "|" << depth << " theta " << thetaH/CLHEP::deg << ":" << thetaL/CLHEP::deg << " Layer " << layL << ":" << layH-1 << " phi " << nphi << "\n";
1108  for (int lay=layL; lay<layH; ++lay) {
1109  std::vector<double> area(4,0);
1110  int kk=0;
1111  for (unsigned int k=0; k<hpar->layHE.size(); ++k) {
1112  if (lay == hpar->layHE[k]) {
1113  double rmin = hpar->zxHE[k]*std::tan(thetaH);
1114  double rmax = hpar->zxHE[k]*std::tan(thetaL);
1115  if ((lay != 0 || eta == 18) &&
1116  (lay != 1 || (eta == 18 && hpar->rhoxHE[k]-hpar->dyHE[k] > 1000) ||
1117  (eta != 18 && hpar->rhoxHE[k]-hpar->dyHE[k] < 1000)) &&
1118  rmin+30 < hpar->rhoxHE[k]+hpar->dyHE[k] &&
1119  rmax > hpar->rhoxHE[k]-hpar->dyHE[k]) {
1120  rmin = std::max(rmin,hpar->rhoxHE[k]-hpar->dyHE[k]);
1121  rmax = std::min(rmax,hpar->rhoxHE[k]+hpar->dyHE[k]);
1122  double dx1 = rmin*std::tan(phib);
1123  double dx2 = rmax*std::tan(phib);
1124  double ar1=0, ar2=0;
1125  if (nphi == 1) {
1126  ar1 = 0.5*(rmax-rmin)*(dx1+dx2-4.*hpar->dx1HE[k]);
1127  } else {
1128  ar1 = 0.5*(rmax-rmin)*(dx1+dx2-2.*hpar->dx1HE[k]);
1129  ar2 = 0.5*(rmax-rmin)*((rmax+rmin)*tan(10.*CLHEP::deg)-4*hpar->dx1HE[k])-ar1;
1130  }
1131  area[kk] = ar1;
1132  area[kk+2] = ar2;
1133  kk++;
1134  }
1135  }
1136  }
1137  if (area[0] > 0 && area[1] > 0) {
1138  int lay0 = lay-1;
1139  if (eta == 18) lay0++;
1140  if (nphi == 1) {
1141  std::cout << std::setw(2) << lay0 << " Area " << std::setw(8) << area[0] << " " << std::setw(8) << area[1] << "\n";
1142  } else {
1143  std::cout << std::setw(2) << lay0 << " Area " << std::setw(8) << area[0] << " " << std::setw(8) << area[1] << ":" << std::setw(8) << area[2] << " " << std::setw(8) << area[3] << "\n";
1144  }
1145  }
1146  }
1147 }
std::vector< double > etaTable
std::vector< int > layHE
int getLayerBack(const int det, const int eta, const int phi, const int zside, const int depth) const
std::vector< double > rhoxHE
std::vector< double > zxHE
std::vector< double > dyHE
std::vector< double > dx1HE
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
T min(T a, T b)
Definition: MathUtil.h:58
int k[5][pyjets_maxn]
int getLayerFront(const int det, const int eta, const int phi, const int zside, const int depth) const
std::vector< double > phibin
const HcalParameters * hpar
void HcalDDDSimConstants::printTiles ( ) const

Definition at line 677 of file HcalDDDSimConstants.cc.

References gather_cfg::cout, particleFlowClusterECALTimeSelected_cfi::depth, stringResolutionProvider_cfi::eta, ALCARECOTkAlBeamHalo_cff::etaMax, HcalParameters::etaMax, HcalParameters::etaMin, getDepthEta16(), getMaxDepth(), hpar, ldmap_, printTileHB(), printTileHE(), HcalLayerDepthMap::validDet(), and HcalDigiParam_cfi::zside.

Referenced by ldMap().

677  {
678 
679  std::vector<int> phis;
680  int detsp = ldmap_.validDet(phis);
681  int kphi = (detsp > 0) ? phis[0] : 1;
682  int zside = (kphi > 0) ? 1 : -1;
683  int iphi = (kphi > 0) ? kphi : -kphi;
684  std::cout << "Tile Information for HB from " << hpar->etaMin[0] << " to " << hpar->etaMax[0] << "\n\n";
685  for (int eta=hpar->etaMin[0]; eta<= hpar->etaMax[0]; eta++) {
686  int dmax = getMaxDepth(1,eta,iphi,-zside,false);
687  for (int depth=1; depth<=dmax; depth++)
688  printTileHB(eta, iphi, -zside, depth);
689  if (detsp == 1) {
690  int dmax = getMaxDepth(1,eta,iphi,zside,false);
691  for (int depth=1; depth<=dmax; depth++)
692  printTileHB(eta, iphi, zside, depth);
693  }
694  }
695 
696  std::cout << "\nTile Information for HE from " << hpar->etaMin[1] << " to " << hpar->etaMax[1] << "\n\n";
697  for (int eta=hpar->etaMin[1]; eta<= hpar->etaMax[1]; eta++) {
698  int dmin = (eta == hpar->etaMin[1]) ? getDepthEta16(2,iphi,-zside) : 1;
699  int dmax = getMaxDepth(2,eta,iphi,-zside,false);
700  for (int depth=dmin; depth<=dmax; depth++)
701  printTileHE(eta, iphi, -zside, depth);
702  if (detsp == 2) {
703  int dmax = getMaxDepth(2,eta,iphi,zside,false);
704  for (int depth=1; depth<=dmax; depth++)
705  printTileHE(eta, iphi, zside, depth);
706  }
707  }
708 }
int getMaxDepth(const int type) const
void printTileHE(const int eta, const int phi, const int zside, const int depth) const
std::vector< int > etaMax
int validDet(std::vector< int > &phis) const
void printTileHB(const int eta, const int phi, const int zside, const int depth) const
int getDepthEta16(const int det, const int phi, const int zside) const
const HcalParameters * hpar
std::vector< int > etaMin
HcalLayerDepthMap ldmap_
int HcalDDDSimConstants::unitPhi ( const int  det,
const int  etaR 
) const

Definition at line 710 of file HcalDDDSimConstants.cc.

References HcalParameters::etaMin, HcalForward, hpar, HcalParameters::phibin, and HcalParameters::phitable.

Referenced by cell(), HcalDDDRecConstants::getEtaPhi(), HcalDDDRecConstants::getHCID(), getPhiCons(), getPhis(), HcalDDDRecConstants::getPhis(), HcalCellTypes(), HcalDDDRecConstants::HcalCellTypes(), HcalDDDRecConstants::initialize(), ldMap(), and HcalNumberingFromDDD::unitID().

710  {
711 
712  double dphi = (det == static_cast<int>(HcalForward)) ? hpar->phitable[etaR-hpar->etaMin[2]] : hpar->phibin[etaR-1];
713  return unitPhi(dphi);
714 }
std::vector< double > phitable
std::vector< double > phibin
int unitPhi(const int det, const int etaR) const
const HcalParameters * hpar
std::vector< int > etaMin
int HcalDDDSimConstants::unitPhi ( const double  dphi) const

Definition at line 716 of file HcalDDDSimConstants.cc.

References createfilelist::int, M_PI, and units().

716  {
717 
718  const double fiveDegInRad = 2*M_PI/72;
719  int units = int(dphi/fiveDegInRad+0.5);
720  if (units < 1) units = 1;
721  return units;
722 }
#define M_PI
TString units(TString variable, Char_t axis)

Member Data Documentation

int HcalDDDSimConstants::depthEta16[2]
private

Definition at line 129 of file HcalDDDSimConstants.h.

Referenced by getDepthEta16(), getDepthEta16M(), getDetEta(), and initialize().

int HcalDDDSimConstants::depthEta29[2]
private

Definition at line 130 of file HcalDDDSimConstants.h.

Referenced by deltaEta(), getDepthEta29(), getDepthEta29M(), getEta(), and initialize().

std::pair<int,int> HcalDDDSimConstants::depthMaxDf_
private

Definition at line 135 of file HcalDDDSimConstants.h.

Referenced by getMaxDepthDet(), and initialize().

std::pair<int,int> HcalDDDSimConstants::depthMaxSp_
private

Definition at line 135 of file HcalDDDSimConstants.h.

Referenced by getMaxDepthDet(), and initialize().

std::vector<int> HcalDDDSimConstants::depths[nDepthMax]
private

Definition at line 121 of file HcalDDDSimConstants.h.

Referenced by getLayerBack(), and initialize().

double HcalDDDSimConstants::dlShort
private

Definition at line 128 of file HcalDDDSimConstants.h.

Referenced by deltaEta(), getEta(), HcalCellTypes(), and initialize().

double HcalDDDSimConstants::dzVcal
private

Definition at line 127 of file HcalDDDSimConstants.h.

Referenced by HcalCellTypes(), and initialize().

double HcalDDDSimConstants::etaHO[4]
private

Definition at line 125 of file HcalDDDSimConstants.h.

Referenced by deltaEta(), getEta(), and initialize().

const HcalParameters* HcalDDDSimConstants::hpar
private
std::vector<HcalDetId> HcalDDDSimConstants::idHF2QIE
private

Definition at line 134 of file HcalDDDSimConstants.h.

Referenced by getIdHF2QIE(), HcalCellTypes(), initialize(), and maxHFDepth().

bool HcalDDDSimConstants::isBH_
private

Definition at line 133 of file HcalDDDSimConstants.h.

Referenced by initialize(), and isBH().

int HcalDDDSimConstants::layFHB[2]
private

Definition at line 131 of file HcalDDDSimConstants.h.

Referenced by getFrontLayer(), and initialize().

int HcalDDDSimConstants::layFHE[3]
private

Definition at line 132 of file HcalDDDSimConstants.h.

Referenced by getFrontLayer(), and initialize().

HcalLayerDepthMap HcalDDDSimConstants::ldmap_
private
std::vector<int> HcalDDDSimConstants::maxDepth
private
const int HcalDDDSimConstants::maxLayer_ =18
staticprivate
const int HcalDDDSimConstants::maxLayerHB_ =16
staticprivate
int HcalDDDSimConstants::nDepth
private

Definition at line 122 of file HcalDDDSimConstants.h.

const int HcalDDDSimConstants::nDepthMax =9
staticprivate

Definition at line 113 of file HcalDDDSimConstants.h.

int HcalDDDSimConstants::nEta
private

Definition at line 118 of file HcalDDDSimConstants.h.

Referenced by cell(), deltaEta(), getDetEta(), getEta(), and initialize().

int HcalDDDSimConstants::nmodHB
private

Definition at line 123 of file HcalDDDSimConstants.h.

Referenced by getModHalfHBHE(), and initialize().

int HcalDDDSimConstants::nmodHE
private

Definition at line 124 of file HcalDDDSimConstants.h.

Referenced by getModHalfHBHE(), and initialize().

int HcalDDDSimConstants::nPhiF
private

Definition at line 120 of file HcalDDDSimConstants.h.

Referenced by initialize().

int HcalDDDSimConstants::nR
private

Definition at line 119 of file HcalDDDSimConstants.h.

Referenced by cell(), deltaEta(), getEta(), and initialize().

int HcalDDDSimConstants::nzHB
private

Definition at line 123 of file HcalDDDSimConstants.h.

Referenced by getModHalfHBHE(), HcalCellTypes(), and initialize().

int HcalDDDSimConstants::nzHE
private

Definition at line 124 of file HcalDDDSimConstants.h.

Referenced by getModHalfHBHE(), HcalCellTypes(), and initialize().

double HcalDDDSimConstants::rminHO
private

Definition at line 125 of file HcalDDDSimConstants.h.

Referenced by getEtaHO(), and initialize().

double HcalDDDSimConstants::zVcal
private

Definition at line 126 of file HcalDDDSimConstants.h.

Referenced by deltaEta(), getDetEta(), getEta(), and initialize().