CMS 3D CMS Logo

DDHGCalEEAlgo.cc
Go to the documentation of this file.
1 /*
2  * DD4hep_HGCalEEAlgo.cc
3  *
4  * Created on: 27-Aug-2019
5  * Author: rsehgal
6  *
7  * DD4hep code for, HGCalEEAlgo developed by Sunanda Banerjee
8  */
9 
10 #include <cmath>
11 #include <memory>
12 #include <string>
13 #include <unordered_set>
14 #include <vector>
15 
18 #include "DD4hep/DetFactoryHelper.h"
23 
24 //#define EDM_ML_DEBUG
25 using namespace cms_units::operators;
26 
27 struct HGCalEEAlgo {
29  std::unique_ptr<HGCalWaferType> waferType_;
31 
32  std::vector<std::string> wafers_; // Wafers
33  std::vector<std::string> materials_; // Materials
34  std::vector<std::string> names_; // Names
35  std::vector<double> thick_; // Thickness of the material
36  std::vector<int> copyNumber_; // Initial copy numbers
37  std::vector<int> layers_; // Number of layers in a section
38  std::vector<double> layerThick_; // Thickness of each section
39  std::vector<int> layerType_; // Type of the layer
40  std::vector<int> layerSense_; // Content of a layer (sensitive?)
41  std::vector<int> layerCenter_; // Centering of the wafers
42  int firstLayer_; // Copy # of the first sensitive layer
43  int absorbMode_; // Absorber mode
44  double zMinBlock_; // Starting z-value of the block
45  std::vector<double> rad100to200_; // Parameters for 120-200mum trans.
46  std::vector<double> rad200to300_; // Parameters for 200-300mum trans.
47  double zMinRadPar_; // Minimum z for radius parametriz.
48  int choiceType_; // Type of parametrization to be used
49  int nCutRadPar_; // Cut off threshold for corners
50  double fracAreaMin_; // Minimum fractional conatined area
51  double waferSize_; // Width of the wafer
52  double waferSepar_; // Sensor separation
53  int sectors_; // Sectors
54  std::vector<double> slopeB_; // Slope at the lower R
55  std::vector<double> zFrontB_; // Starting Z values for the slopes
56  std::vector<double> rMinFront_; // Corresponding rMin's
57  std::vector<double> slopeT_; // Slopes at the larger R
58  std::vector<double> zFrontT_; // Starting Z values for the slopes
59  std::vector<double> rMaxFront_; // Corresponding rMax's
60  std::unordered_set<int> copies_; // List of copy #'s
61  double alpha_, cosAlpha_;
62 
63  HGCalEEAlgo() = delete;
64 
66  cms::DDNamespace ns(ctxt, e, true);
68 
69  mother_ = ns.volume(args.parentName());
70  wafers_ = args.value<std::vector<std::string>>("WaferNames");
71 #ifdef EDM_ML_DEBUG
72  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << wafers_.size() << " wafers";
73  for (unsigned int i = 0; i < wafers_.size(); ++i)
74  edm::LogVerbatim("HGCalGeom") << "Wafer[" << i << "] " << wafers_[i];
75 #endif
76 
77  materials_ = args.value<std::vector<std::string>>("MaterialNames");
78  names_ = args.value<std::vector<std::string>>("VolumeNames");
79  thick_ = args.value<std::vector<double>>("Thickness");
80  for (unsigned int i = 0; i < materials_.size(); ++i) {
81  copyNumber_.emplace_back(1);
82  }
83 #ifdef EDM_ML_DEBUG
84  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << materials_.size() << " types of volumes";
85  for (unsigned int i = 0; i < names_.size(); ++i)
86  edm::LogVerbatim("HGCalGeom") << "Volume [" << i << "] " << names_[i] << " of thickness " << thick_[i]
87  << " filled with " << materials_[i] << " first copy number " << copyNumber_[i];
88 #endif
89 
90  layers_ = args.value<std::vector<int>>("Layers");
91  layerThick_ = args.value<std::vector<double>>("LayerThick");
92 #ifdef EDM_ML_DEBUG
93  edm::LogVerbatim("HGCalGeom") << "There are " << layers_.size() << " blocks";
94  for (unsigned int i = 0; i < layers_.size(); ++i)
95  edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] of thickness " << layerThick_[i] << " with " << layers_[i]
96  << " layers";
97 #endif
98 
99  layerType_ = args.value<std::vector<int>>("LayerType");
100  layerSense_ = args.value<std::vector<int>>("LayerSense");
101  firstLayer_ = args.value<int>("FirstLayer");
102  absorbMode_ = args.value<int>("AbsorberMode");
103 
104 #ifdef EDM_ML_DEBUG
105  edm::LogVerbatim("HGCalGeom") << "First Layere " << firstLayer_ << " and "
106  << "Absober mode " << absorbMode_;
107 #endif
108  layerCenter_ = args.value<std::vector<int>>("LayerCenter");
109 #ifdef EDM_ML_DEBUG
110  for (unsigned int i = 0; i < layerCenter_.size(); ++i)
111  edm::LogVerbatim("HGCalGeom") << "LayerCenter [" << i << "] " << layerCenter_[i];
112 #endif
113  if (firstLayer_ > 0) {
114  for (unsigned int i = 0; i < layerType_.size(); ++i) {
115  if (layerSense_[i] > 0) {
116  int ii = layerType_[i];
117  copyNumber_[ii] = firstLayer_;
118 #ifdef EDM_ML_DEBUG
119  edm::LogVerbatim("HGCalGeom") << "First copy number for layer type " << i << ":" << ii << " with "
120  << materials_[ii] << " changed to " << copyNumber_[ii];
121 #endif
122  break;
123  }
124  }
125  }
126 #ifdef EDM_ML_DEBUG
127  edm::LogVerbatim("HGCalGeom") << "There are " << layerType_.size() << " layers";
128  for (unsigned int i = 0; i < layerType_.size(); ++i)
129  edm::LogVerbatim("HGCalGeom") << "Layer [" << i << "] with material type " << layerType_[i] << " sensitive class "
130  << layerSense_[i];
131 #endif
132  zMinBlock_ = args.value<double>("zMinBlock");
133 
134  rad100to200_ = args.value<std::vector<double>>("rad100to200");
135  rad200to300_ = args.value<std::vector<double>>("rad200to300");
136  zMinRadPar_ = args.value<double>("zMinForRadPar");
137  choiceType_ = args.value<int>("choiceType");
138  nCutRadPar_ = args.value<int>("nCornerCut");
139  fracAreaMin_ = args.value<double>("fracAreaMin");
140  waferSize_ = args.value<double>("waferSize");
141  waferSepar_ = args.value<double>("SensorSeparation");
142  sectors_ = args.value<int>("Sectors");
143  alpha_ = (1._pi) / sectors_;
144  cosAlpha_ = cos(alpha_);
145 #ifdef EDM_ML_DEBUG
146  edm::LogVerbatim("HGCalGeom") << "zStart " << zMinBlock_ << " radius for wafer type separation uses "
147  << rad100to200_.size() << " parameters; zmin " << zMinRadPar_ << " cutoff "
148  << choiceType_ << ":" << nCutRadPar_ << ":" << fracAreaMin_ << " wafer width "
149  << waferSize_ << " separations " << waferSepar_ << " sectors " << sectors_ << ":"
150  << convertRadToDeg(alpha_) << ":" << cosAlpha_;
151  for (unsigned int k = 0; k < rad100to200_.size(); ++k)
152  edm::LogVerbatim("HGCalGeom") << "[" << k << "] 100-200 " << rad100to200_[k] << " 200-300 " << rad200to300_[k];
153 #endif
154 
155  slopeB_ = args.value<std::vector<double>>("SlopeBottom");
156  zFrontB_ = args.value<std::vector<double>>("ZFrontBottom");
157  rMinFront_ = args.value<std::vector<double>>("RMinFront");
158  slopeT_ = args.value<std::vector<double>>("SlopeTop");
159  zFrontT_ = args.value<std::vector<double>>("ZFrontTop");
160  rMaxFront_ = args.value<std::vector<double>>("RMaxFront");
161 #ifdef EDM_ML_DEBUG
162  for (unsigned int i = 0; i < slopeB_.size(); ++i)
163  edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] Zmin " << zFrontB_[i] << " Rmin " << rMinFront_[i]
164  << " Slope " << slopeB_[i];
165  for (unsigned int i = 0; i < slopeT_.size(); ++i)
166  edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] Zmin " << zFrontT_[i] << " Rmax " << rMaxFront_[i]
167  << " Slope " << slopeT_[i];
168 #endif
169 
170 #ifdef EDM_ML_DEBUG
171  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: NameSpace " << ns.name();
172 #endif
173 
174  waferType_ = std::make_unique<HGCalWaferType>(
175  rad100to200_, rad200to300_, (waferSize_ + waferSepar_), zMinRadPar_, choiceType_, nCutRadPar_, fracAreaMin_);
176 
177  ConstructAlgo(ctxt, e);
178  }
179 
180  void ConstructAlgo(cms::DDParsingContext& ctxt, xml_h e) {
181 #ifdef EDM_ML_DEBUG
182  edm::LogVerbatim("HGCalGeom") << "==>> Constructing DDHGCalEEAlgo...";
183  copies_.clear();
184 #endif
185  dd4hep::Volume par;
186  ConstructLayers(par, ctxt, e);
187 #ifdef EDM_ML_DEBUG
188  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << copies_.size() << " different wafer copy numbers";
189  int k(0);
190  for (std::unordered_set<int>::const_iterator itr = copies_.begin(); itr != copies_.end(); ++itr, ++k) {
191  edm::LogVerbatim("HGCalGeom") << "Copy [" << k << "] : " << (*itr);
192  }
193  copies_.clear();
194  edm::LogVerbatim("HGCalGeom") << "<<== End of DDHGCalEEAlgo construction...";
195 #endif
196  }
197 
199  cms::DDNamespace ns(ctxt, e, true);
200 
201 #ifdef EDM_ML_DEBUG
202  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: \t\tInside Layers";
203 #endif
204 
205  double zi(zMinBlock_);
206  int laymin(0);
207  const double tol(0.01);
208  for (unsigned int i = 0; i < layers_.size(); i++) {
209  double zo = zi + layerThick_[i];
210  double routF = HGCalGeomTools::radius(zi, zFrontT_, rMaxFront_, slopeT_);
211  int laymax = laymin + layers_[i];
212  double zz = zi;
213  double thickTot(0);
214  for (int ly = laymin; ly < laymax; ++ly) {
215  int ii = layerType_[ly];
216  int copy = copyNumber_[ii];
217  double hthick = 0.5 * thick_[ii];
218  double rinB = HGCalGeomTools::radius(zo, zFrontB_, rMinFront_, slopeB_);
219  zz += hthick;
220  thickTot += thick_[ii];
221 
222  std::string name = ns.prepend(names_[ii]) + std::to_string(copy);
223 #ifdef EDM_ML_DEBUG
224  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: Layer " << ly << ":" << ii << " Front " << zi << ", " << routF
225  << " Back " << zo << ", " << rinB << " superlayer thickness " << layerThick_[i];
226 #endif
227 
228  std::string matName = materials_[ii];
229  dd4hep::Material matter = ns.material(matName);
230  dd4hep::Volume glog;
231  if (layerSense_[ly] < 1) {
232  std::vector<double> pgonZ, pgonRin, pgonRout;
233  if (layerSense_[ly] == 0 || absorbMode_ == 0) {
234  double rmax = routF * cosAlpha_ - tol;
235  pgonZ.emplace_back(-hthick);
236  pgonZ.emplace_back(hthick);
237  pgonRin.emplace_back(rinB);
238  pgonRin.emplace_back(rinB);
239  pgonRout.emplace_back(rmax);
240  pgonRout.emplace_back(rmax);
241  } else {
242  HGCalGeomTools::radius(zz - hthick,
243  zz + hthick,
244  zFrontB_,
245  rMinFront_,
246  slopeB_,
247  zFrontT_,
248  rMaxFront_,
249  slopeT_,
250  -layerSense_[ly],
251  pgonZ,
252  pgonRin,
253  pgonRout);
254 #ifdef EDM_ML_DEBUG
255  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: z " << (zz - hthick) << ":" << (zz + hthick) << " with "
256  << pgonZ.size() << " palnes";
257  for (unsigned int isec = 0; isec < pgonZ.size(); ++isec)
258  edm::LogVerbatim("HGCalGeom")
259  << "[" << isec << "] z " << pgonZ[isec] << " R " << pgonRin[isec] << ":" << pgonRout[isec];
260 #endif
261  for (unsigned int isec = 0; isec < pgonZ.size(); ++isec) {
262  pgonZ[isec] -= zz;
263  pgonRout[isec] = pgonRout[isec] * cosAlpha_ - tol;
264  }
265  }
266 
267  dd4hep::Solid solid =
268  dd4hep::Polyhedra(sectors_, -alpha_, 2. * cms_units::piRadians, pgonZ, pgonRin, pgonRout);
269  ns.addSolidNS(ns.prepend(name), solid);
270  glog = dd4hep::Volume(solid.name(), solid, matter);
271  ns.addVolumeNS(glog);
272 
273 #ifdef EDM_ML_DEBUG
274  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << solid.name() << " polyhedra of " << sectors_
275  << " sectors covering " << convertRadToDeg(-alpha_) << ":"
276  << convertRadToDeg(-alpha_ + 2._pi) << " with " << pgonZ.size()
277  << " sections and filled with " << matName;
278 
279  for (unsigned int k = 0; k < pgonZ.size(); ++k)
280  edm::LogVerbatim("HGCalGeom")
281  << "[" << k << "] z " << pgonZ[k] << " R " << pgonRin[k] << ":" << pgonRout[k];
282 #endif
283  } else {
284  dd4hep::Solid solid = dd4hep::Tube(rinB, routF, hthick, 0.0, 2. * cms_units::piRadians);
285  ns.addSolidNS(ns.prepend(name), solid);
286  glog = dd4hep::Volume(solid.name(), solid, matter);
287  ns.addVolumeNS(glog);
288 
289 #ifdef EDM_ML_DEBUG
290  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << solid.name() << " Tubs made of " << matName
291  << " of dimensions " << rinB << ", " << routF << ", " << hthick
292  << ", 0.0, 360.0 and position " << glog.name() << " number " << copy << ":"
293  << layerCenter_[copy - 1];
294 #endif
295  PositionSensitive(ctxt, e, glog, rinB, routF, zz, layerSense_[ly], layerCenter_[copy - 1]); //, cpv);
296  }
297 
298  dd4hep::Position r1(0, 0, zz);
299  mother_.placeVolume(glog, copy, r1);
300  ++copyNumber_[ii];
301 
302 #ifdef EDM_ML_DEBUG
303  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << glog.name() << " number " << copy << " positioned in "
304  << module.name() << " at " << r1 << " with no rotation";
305 #endif
306  zz += hthick;
307  } // End of loop over layers in a block
308  zi = zo;
309  laymin = laymax;
310  if (std::abs(thickTot - layerThick_[i]) < 0.00001) {
311  } else if (thickTot > layerThick_[i]) {
312  edm::LogError("HGCalGeom") << "Thickness of the partition " << layerThick_[i] << " is smaller than " << thickTot
313  << ": thickness of all its "
314  << "components **** ERROR ****";
315  } else if (thickTot < layerThick_[i]) {
316  edm::LogWarning("HGCalGeom") << "Thickness of the partition " << layerThick_[i] << " does not match with "
317  << thickTot << " of the components";
318  }
319 
320  } // End of loop over layers in a block
321  }
322 
324  xml_h e,
325  const dd4hep::Volume& glog,
326  double rin,
327  double rout,
328  double zpos,
329  int layertype,
330  int layercenter) {
331  cms::DDNamespace ns(ctxt, e, true);
332  static const double sqrt3 = std::sqrt(3.0);
333  double r = 0.5 * (waferSize_ + waferSepar_);
334  double R = 2.0 * r / sqrt3;
335  double dy = 0.75 * R;
336  int N = (int)(0.5 * rout / r) + 2;
337  std::pair<double, double> xyoff = geomTools_.shiftXY(layercenter, (waferSize_ + waferSepar_));
338 #ifdef EDM_ML_DEBUG
339  int ium(0), ivm(0), iumAll(0), ivmAll(0), kount(0), ntot(0), nin(0);
340  std::vector<int> ntype(6, 0);
341  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << glog.name() << " rout " << rout << " N " << N
342  << " for maximum u, v; r " << r << " R " << R << " dy " << dy << " Shift "
343  << xyoff.first << ":" << xyoff.second << " WaferSize " << (waferSize_ + waferSepar_);
344 #endif
345 
346  for (int u = -N; u <= N; ++u) {
347  int iu = std::abs(u);
348  for (int v = -N; v <= N; ++v) {
349  int iv = std::abs(v);
350  int nr = 2 * v;
351  int nc = -2 * u + v;
352  double xpos = xyoff.first + nc * r;
353  double ypos = xyoff.second + nr * dy;
354  std::pair<int, int> corner = HGCalGeomTools::waferCorner(xpos, ypos, r, R, rin, rout, false);
355 #ifdef EDM_ML_DEBUG
356  ++ntot;
357  if (((corner.first <= 0) && std::abs(u) < 5 && std::abs(v) < 5) || (std::abs(u) < 2 && std::abs(v) < 2)) {
358  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << glog.name() << " R " << rin << ":" << rout << "\n Z "
359  << zpos << " LayerType " << layertype << " u " << u << " v " << v << " with "
360  << corner.first << " corners";
361  }
362 #endif
363  if (corner.first > 0) {
364  int type = waferType_->getType(xpos, ypos, zpos);
365  int copy = type * 1000000 + iv * 100 + iu;
366  if (u < 0)
367  copy += 10000;
368  if (v < 0)
369  copy += 100000;
370 #ifdef EDM_ML_DEBUG
371  if (iu > ium)
372  ium = iu;
373  if (iv > ivm)
374  ivm = iv;
375  kount++;
376  if (copies_.count(copy) == 0)
377  copies_.insert(copy);
378 #endif
379  if (corner.first == (int)(HGCalParameters::k_CornerSize)) {
380 #ifdef EDM_ML_DEBUG
381  if (iu > iumAll)
382  iumAll = iu;
383  if (iv > ivmAll)
384  ivmAll = iv;
385  ++nin;
386 #endif
387 
388  dd4hep::Position tran(xpos, ypos, 0.0);
389  if (layertype > 1)
390  type += 3;
391  glog.placeVolume(ns.volume(wafers_[type]), copy, tran);
392 #ifdef EDM_ML_DEBUG
393  ++ntype[type];
394  edm::LogVerbatim("HGCalGeom") << " DDHGCalEEAlgo: " << wafers_[type] << " number " << copy
395  << " positioned in " << glog.name() << " at " << tran << " with no rotation";
396 #endif
397  }
398  }
399  }
400  }
401 
402 #ifdef EDM_ML_DEBUG
403  edm::LogVerbatim("HGCalGeom") << " DDHGCalEEAlgo: Maximum # of u " << ium << ":" << iumAll << " # of v " << ivm
404  << ":" << ivmAll << " and " << nin << ":" << kount << ":" << ntot << " wafers ("
405  << ntype[0] << ":" << ntype[1] << ":" << ntype[2] << ":" << ntype[3] << ":"
406  << ntype[4] << ":" << ntype[5] << ") for " << glog.name() << " R " << rin << ":"
407  << rout;
408 #endif
409  }
410 };
411 
412 static long algorithm(dd4hep::Detector& /* description */,
413  cms::DDParsingContext& ctxt,
414  xml_h e,
415  dd4hep::SensitiveDetector& /* sens */) {
416  HGCalEEAlgo eealgo(ctxt, e);
417  return cms::s_executed;
418 }
419 
420 DECLARE_DDCMS_DETELEMENT(DDCMS_hgcal_DDHGCalEEAlgo, algorithm)
HGCalEEAlgo::geomTools_
HGCalGeomTools geomTools_
Definition: DDHGCalEEAlgo.cc:28
HGCalEEAlgo::choiceType_
int choiceType_
Definition: DDHGCalEEAlgo.cc:48
HGCalEEAlgo::sectors_
int sectors_
Definition: DDHGCalEEAlgo.cc:53
writedatasetfile.args
args
Definition: writedatasetfile.py:18
HGCalGeomTools::waferCorner
static std::pair< int32_t, int32_t > waferCorner(double xpos, double ypos, double r, double R, double rMin, double rMax, bool oldBug=false)
Definition: HGCalGeomTools.cc:219
mps_fire.i
i
Definition: mps_fire.py:355
cms_units::operators
Definition: CMSUnits.h:13
geometryCSVtoXML.zz
zz
Definition: geometryCSVtoXML.py:19
HGCalEEAlgo::thick_
std::vector< double > thick_
Definition: DDHGCalEEAlgo.cc:35
g4SimHits_cfi.Material
Material
Definition: g4SimHits_cfi.py:547
MessageLogger.h
algorithm
static long algorithm(dd4hep::Detector &, cms::DDParsingContext &ctxt, xml_h e, dd4hep::SensitiveDetector &)
Definition: DDHGCalEEAlgo.cc:412
DECLARE_DDCMS_DETELEMENT
#define DECLARE_DDCMS_DETELEMENT(name, func)
Definition: DDPlugins.h:30
cms::DDNamespace::material
dd4hep::Material material(const std::string &name) const
Definition: DDNamespace.cc:121
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
HGCalEEAlgo::layerSense_
std::vector< int > layerSense_
Definition: DDHGCalEEAlgo.cc:40
HGCalEEAlgo::zFrontT_
std::vector< double > zFrontT_
Definition: DDHGCalEEAlgo.cc:58
cms::DDParsingContext
Definition: DDParsingContext.h:14
HGCalEEAlgo::rad200to300_
std::vector< double > rad200to300_
Definition: DDHGCalEEAlgo.cc:46
HGCalEEAlgo::waferSize_
double waferSize_
Definition: DDHGCalEEAlgo.cc:51
angle_units::operators::convertRadToDeg
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
cms::DDNamespace
Definition: DDNamespace.h:16
HGCalParameters::k_CornerSize
static constexpr uint32_t k_CornerSize
Definition: HGCalParameters.h:38
distTCMET_cfi.corner
corner
Definition: distTCMET_cfi.py:38
nin
int nin
Definition: CascadeWrapper.h:114
HGCalEEAlgo::layerThick_
std::vector< double > layerThick_
Definition: DDHGCalEEAlgo.cc:38
HGCalGeomTools::shiftXY
std::pair< double, double > shiftXY(int waferPosition, double waferSize) const
Definition: HGCalGeomTools.cc:166
findQualityFiles.v
v
Definition: findQualityFiles.py:179
HGCalEEAlgo::slopeT_
std::vector< double > slopeT_
Definition: DDHGCalEEAlgo.cc:57
HGCalEEAlgo::zMinBlock_
double zMinBlock_
Definition: DDHGCalEEAlgo.cc:44
HGCalEEAlgo
Definition: DDHGCalEEAlgo.cc:27
HGCalEEAlgo::rMinFront_
std::vector< double > rMinFront_
Definition: DDHGCalEEAlgo.cc:56
HGCalEEAlgo::cosAlpha_
double cosAlpha_
Definition: DDHGCalEEAlgo.cc:61
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
HGCalEEAlgo::HGCalEEAlgo
HGCalEEAlgo(cms::DDParsingContext &ctxt, xml_h e)
Definition: DDHGCalEEAlgo.cc:65
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
cms::DDNamespace::prepend
std::string prepend(const std::string &) const
Definition: DDNamespace.cc:66
HGCalWaferType.h
N
#define N
Definition: blowfish.cc:9
HGCalEEAlgo::wafers_
std::vector< std::string > wafers_
Definition: DDHGCalEEAlgo.cc:32
HGCalEEAlgo::rad100to200_
std::vector< double > rad100to200_
Definition: DDHGCalEEAlgo.cc:45
PixelTestBeamValidation_cfi.Position
Position
Definition: PixelTestBeamValidation_cfi.py:62
dqmdumpme.k
k
Definition: dqmdumpme.py:60
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HGCalEEAlgo::copies_
std::unordered_set< int > copies_
Definition: DDHGCalEEAlgo.cc:60
edm::LogWarning
Definition: MessageLogger.h:141
angle_units::piRadians
constexpr long double piRadians(M_PIl)
cms::Volume
dd4hep::Volume Volume
Definition: DDFilteredView.h:45
HGCalEEAlgo::waferSepar_
double waferSepar_
Definition: DDHGCalEEAlgo.cc:52
edm::LogError
Definition: MessageLogger.h:183
EgHLTOffHistBins_cfi.nr
nr
Definition: EgHLTOffHistBins_cfi.py:4
HGCalEEAlgo::zFrontB_
std::vector< double > zFrontB_
Definition: DDHGCalEEAlgo.cc:55
HGCalEEAlgo::layerType_
std::vector< int > layerType_
Definition: DDHGCalEEAlgo.cc:39
DDPlugins.h
createfilelist.int
int
Definition: createfilelist.py:10
HGCalEEAlgo::copyNumber_
std::vector< int > copyNumber_
Definition: DDHGCalEEAlgo.cc:36
edm::LogVerbatim
Definition: MessageLogger.h:297
HGCalGeomTools
Definition: HGCalGeomTools.h:8
cms::DDNamespace::addSolidNS
dd4hep::Solid addSolidNS(const std::string &name, dd4hep::Solid solid) const
Definition: DDNamespace.cc:206
cms::DDAlgoArguments
Definition: DDAlgoArguments.h:28
HGCalEEAlgo::materials_
std::vector< std::string > materials_
Definition: DDHGCalEEAlgo.cc:33
PVValHelper::dy
Definition: PVValidationHelpers.h:49
HGCalEEAlgo::firstLayer_
int firstLayer_
Definition: DDHGCalEEAlgo.cc:42
itr
std::vector< std::pair< float, float > >::iterator itr
Definition: HGCDigitizer.cc:28
module
Definition: vlib.h:198
HGCalEEAlgo::names_
std::vector< std::string > names_
Definition: DDHGCalEEAlgo.cc:34
cms::DDNamespace::addVolumeNS
dd4hep::Volume addVolumeNS(dd4hep::Volume vol) const
Definition: DDNamespace.cc:150
cms::s_executed
static constexpr long s_executed
Definition: DDAlgoArguments.h:16
HGCalEEAlgo::nCutRadPar_
int nCutRadPar_
Definition: DDHGCalEEAlgo.cc:49
alignCSCRings.r
r
Definition: alignCSCRings.py:93
align::Detector
Definition: StructureType.h:86
HGCalGeomTools.h
HGCalGeomTools::radius
static void radius(double zf, double zb, std::vector< double > const &zFront1, std::vector< double > const &rFront1, std::vector< double > const &slope1, std::vector< double > const &zFront2, std::vector< double > const &rFront2, std::vector< double > const &slope2, int flag, std::vector< double > &zz, std::vector< double > &rin, std::vector< double > &rout)
Definition: HGCalGeomTools.cc:11
HGCalEEAlgo::slopeB_
std::vector< double > slopeB_
Definition: DDHGCalEEAlgo.cc:54
type
type
Definition: HCALResponse.h:21
HGCalEEAlgo::ConstructAlgo
void ConstructAlgo(cms::DDParsingContext &ctxt, xml_h e)
Definition: DDHGCalEEAlgo.cc:180
HGCalEEAlgo::waferType_
std::unique_ptr< HGCalWaferType > waferType_
Definition: DDHGCalEEAlgo.cc:29
HGCalEEAlgo::absorbMode_
int absorbMode_
Definition: DDHGCalEEAlgo.cc:43
diffTwoXMLs.r1
r1
Definition: diffTwoXMLs.py:53
HGCalGeometryMode::Polyhedra
Definition: HGCalGeometryMode.h:26
HGCalEEAlgo::rMaxFront_
std::vector< double > rMaxFront_
Definition: DDHGCalEEAlgo.cc:59
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
CMSUnits.h
HGCalEEAlgo::layerCenter_
std::vector< int > layerCenter_
Definition: DDHGCalEEAlgo.cc:41
HGCalEEAlgo::ConstructLayers
void ConstructLayers(const dd4hep::Volume module, cms::DDParsingContext &ctxt, xml_h e)
Definition: DDHGCalEEAlgo.cc:198
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HGCalEEAlgo::zMinRadPar_
double zMinRadPar_
Definition: DDHGCalEEAlgo.cc:47
HGCalEEAlgo::mother_
dd4hep::Volume mother_
Definition: DDHGCalEEAlgo.cc:30
cms::DDNamespace::name
std::string_view name() const
Definition: DDNamespace.h:68
dttmaxenums::R
Definition: DTTMax.h:29
HGCalParameters.h
HGCalEEAlgo::fracAreaMin_
double fracAreaMin_
Definition: DDHGCalEEAlgo.cc:50
cuy.ii
ii
Definition: cuy.py:590
cms::DDNamespace::volume
dd4hep::Volume volume(const std::string &name, bool exc=true) const
Definition: DDNamespace.cc:190
HGCalEEAlgo::layers_
std::vector< int > layers_
Definition: DDHGCalEEAlgo.cc:37
HGCalEEAlgo::PositionSensitive
void PositionSensitive(cms::DDParsingContext &ctxt, xml_h e, const dd4hep::Volume &glog, double rin, double rout, double zpos, int layertype, int layercenter)
Definition: DDHGCalEEAlgo.cc:323
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37