CMS 3D CMS Logo

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