CMS 3D CMS Logo

DDHGCalTBModuleX.cc
Go to the documentation of this file.
1 #include <algorithm>
2 #include <cmath>
3 #include <string>
4 #include <unordered_set>
5 #include <vector>
6 
19 
20 //#define EDM_ML_DEBUG
21 using namespace geant_units::operators;
22 
23 class DDHGCalTBModuleX : public DDAlgorithm {
24 public:
25  // Constructor and Destructor
26  DDHGCalTBModuleX(); //
27  ~DDHGCalTBModuleX() override;
28 
29  void initialize(const DDNumericArguments& nArgs,
30  const DDVectorArguments& vArgs,
31  const DDMapArguments& mArgs,
32  const DDStringArguments& sArgs,
33  const DDStringVectorArguments& vsArgs) override;
34  void execute(DDCompactView& cpv) override;
35 
36 protected:
37  void constructBlocks(const DDLogicalPart&, DDCompactView& cpv);
38  void constructLayers(int block,
39  int layerFront,
40  int layerBack,
41  double zFront,
42  double thick,
43  bool ignore,
44  const DDLogicalPart&,
45  DDCompactView&);
46  void positionSensitive(double zpos,
47  int copyIn,
48  int type,
49  double rmax,
50  int ncrMax,
51  bool ignoreCenter,
52  const std::string&,
53  const DDMaterial&,
54  const DDLogicalPart&,
55  DDCompactView& cpv);
56 
57 private:
58  static constexpr double tolerance_ = 0.00001;
59  const double factor_, tan30deg_;
60 
61  std::vector<std::string> wafer_; // Wafers
62  std::vector<std::string> covers_; // Insensitive layers of hexagonal size
63  std::string genMat_; // General material used for blocks
64  std::vector<std::string> materials_; // Material names in each layer
65  std::vector<std::string> names_; // Names of each layer
66  std::vector<double> layerThick_; // Thickness of the material
67  std::vector<int> copyNumber_; // Copy numbers (initiated to 1)
68  std::vector<double> blockThick_; // Thickness of each section
69  int inOut_; // Number of inner+outer parts
70  std::vector<int> layerFrontIn_; // First layer index (inner) in block
71  std::vector<int> layerBackIn_; // Last layer index (inner) in block
72  std::vector<int> layerFrontOut_; // First layer index (outner) in block
73  std::vector<int> layerBackOut_; // Last layer index (outner) in block
74  std::vector<int> layerType_; // Type of the layer
75  std::vector<int> layerSense_; // Content of a layer
76  std::vector<int> maxModule_; // Maximum # of row/column
77  double zMinBlock_; // Starting z-value of the block
78  double rMaxFine_; // Maximum r-value for fine wafer
79  double waferW_; // Width of the wafer
80  double waferGap_; // Gap between 2 wafers
81  double absorbW_; // Width of the absorber
82  double absorbH_; // Height of the absorber
83  double rMax_; // Maximum radial extent
84  double rMaxB_; // Maximum radial extent of a block
85  std::string idName_; // Name of the "parent" volume.
86  std::string idNameSpace_; // Namespace of this and ALL sub-parts
87  std::unordered_set<int> copies_; // List of copy #'s
88 };
89 
90 DDHGCalTBModuleX::DDHGCalTBModuleX() : factor_(0.5 * sqrt(2.0)), tan30deg_(tan(30._deg)) {
91 #ifdef EDM_ML_DEBUG
92  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX info: Creating instance";
93 #endif
94 }
95 
97 
99  const DDVectorArguments& vArgs,
100  const DDMapArguments&,
101  const DDStringArguments& sArgs,
102  const DDStringVectorArguments& vsArgs) {
103  wafer_ = vsArgs["WaferName"];
104  covers_ = vsArgs["CoverName"];
105  genMat_ = sArgs["GeneralMaterial"];
106 #ifdef EDM_ML_DEBUG
107  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: Material " << genMat_ << " with " << wafer_.size() << " wafers";
108  unsigned int i(0);
109  for (auto wafer : wafer_) {
110  edm::LogVerbatim("HGCalGeom") << "Wafer[" << i << "] " << wafer;
111  ++i;
112  }
113  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << covers_.size() << " covers";
114  i = 0;
115  for (auto cover : covers_) {
116  edm::LogVerbatim("HGCalGeom") << "Cover[" << i << "] " << cover;
117  ++i;
118  }
119 #endif
120  materials_ = vsArgs["MaterialNames"];
121  names_ = vsArgs["VolumeNames"];
122  layerThick_ = vArgs["Thickness"];
123  for (unsigned int k = 0; k < layerThick_.size(); ++k)
124  copyNumber_.emplace_back(1);
125 #ifdef EDM_ML_DEBUG
126  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << materials_.size() << " types of volumes";
127  for (unsigned int i = 0; i < names_.size(); ++i)
128  edm::LogVerbatim("HGCalGeom") << "Volume [" << i << "] " << names_[i] << " of thickness " << layerThick_[i]
129  << " filled with " << materials_[i] << " first copy number " << copyNumber_[i];
130 #endif
131  inOut_ = nArgs["InOut"];
132  blockThick_ = vArgs["BlockThick"];
133  layerFrontIn_ = dbl_to_int(vArgs["LayerFrontIn"]);
134  layerBackIn_ = dbl_to_int(vArgs["LayerBackIn"]);
135  if (inOut_ > 1) {
136  layerFrontOut_ = dbl_to_int(vArgs["LayerFrontOut"]);
137  layerBackOut_ = dbl_to_int(vArgs["LayerBackOut"]);
138  }
139 #ifdef EDM_ML_DEBUG
140  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << blockThick_.size() << " blocks with in/out " << inOut_;
141  for (unsigned int i = 0; i < blockThick_.size(); ++i) {
142  if (inOut_ > 1)
143  edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] of thickness " << blockThick_[i] << " with inner layers "
144  << layerFrontIn_[i] << ":" << layerBackIn_[i] << " and outer layers "
145  << layerFrontOut_[i] << ":" << layerBackOut_[i];
146  else
147  edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] of thickness " << blockThick_[i] << " with inner layers "
148  << layerFrontIn_[i] << ":" << layerBackIn_[i];
149  }
150 #endif
151  layerType_ = dbl_to_int(vArgs["LayerType"]);
152  layerSense_ = dbl_to_int(vArgs["LayerSense"]);
153  maxModule_ = dbl_to_int(vArgs["MaxModule"]);
154 #ifdef EDM_ML_DEBUG
155  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << layerType_.size() << " layers";
156  for (unsigned int i = 0; i < layerType_.size(); ++i)
157  edm::LogVerbatim("HGCalGeom") << "Layer [" << i << "] with material type " << layerType_[i] << " sensitive class "
158  << layerSense_[i] << " and " << maxModule_[i] << " maximum row/columns";
159 #endif
160  zMinBlock_ = nArgs["zMinBlock"];
161  rMaxFine_ = nArgs["rMaxFine"];
162  waferW_ = nArgs["waferW"];
163  waferGap_ = nArgs["waferGap"];
164  absorbW_ = nArgs["absorberW"];
165  absorbH_ = nArgs["absorberH"];
166  rMax_ = nArgs["rMax"];
167  rMaxB_ = nArgs["rMaxB"];
168 #ifdef EDM_ML_DEBUG
169  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: zStart " << zMinBlock_ << " rFineCoarse " << rMaxFine_
170  << " wafer width " << waferW_ << " gap among wafers " << waferGap_ << " absorber width "
171  << absorbW_ << " absorber height " << absorbH_ << " rMax " << rMax_ << ":" << rMaxB_;
172 #endif
174 #ifdef EDM_ML_DEBUG
175  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: NameSpace " << idNameSpace_ << " Parent Name "
176  << parent().name().name();
177 #endif
178 }
179 
181 // DDHGCalTBModuleX methods...
183 
185 #ifdef EDM_ML_DEBUG
186  edm::LogVerbatim("HGCalGeom") << "==>> Constructing DDHGCalTBModuleX...";
187 #endif
188  copies_.clear();
189  constructBlocks(parent(), cpv);
190 #ifdef EDM_ML_DEBUG
191  edm::LogVerbatim("HGCalGeom") << copies_.size() << " different wafer copy numbers";
192 #endif
193  copies_.clear();
194 #ifdef EDM_ML_DEBUG
195  edm::LogVerbatim("HGCalGeom") << "<<== End of DDHGCalTBModuleX construction";
196 #endif
197 }
198 
200 #ifdef EDM_ML_DEBUG
201  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: Inside constructBlock";
202 #endif
203  double zi(zMinBlock_);
204  for (unsigned int i = 0; i < blockThick_.size(); i++) {
205  double zo = zi + blockThick_[i];
206  std::string name = parent.ddname().name() + "Block" + std::to_string(i);
207 #ifdef EDM_ML_DEBUG
208  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: Block " << i << ":" << name << " z " << zi << ":" << zo << " R "
209  << rMaxB_ << " T " << blockThick_[i];
210 #endif
212  DDMaterial matter(matName);
213  DDSolid solid = DDSolidFactory::tubs(DDName(name, idNameSpace_), 0.5 * blockThick_[i], 0, rMaxB_, 0.0, 2._pi);
214  DDLogicalPart glog = DDLogicalPart(solid.ddname(), matter, solid);
215  double zz = zi + 0.5 * blockThick_[i];
216  DDTranslation r1(0, 0, zz);
217  DDRotation rot;
218  cpv.position(glog, parent, i, r1, rot);
219 #ifdef EDM_ML_DEBUG
220  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << glog.name() << " number " << i << " positioned in "
221  << parent.name() << " at " << r1 << " with " << rot;
222 #endif
223  constructLayers(i, layerFrontIn_[i], layerBackIn_[i], -0.5 * blockThick_[i], blockThick_[i], false, glog, cpv);
224  if (inOut_ > 1)
225  constructLayers(i, layerFrontOut_[i], layerBackOut_[i], -0.5 * blockThick_[i], blockThick_[i], true, glog, cpv);
226  zi = zo;
227  }
228 #ifdef EDM_ML_DEBUG
229  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: All blocks are "
230  << "placed in " << zMinBlock_ << ":" << zi;
231 #endif
232 }
233 
235  int firstLayer,
236  int lastLayer,
237  double zFront,
238  double totalWidth,
239  bool ignoreCenter,
240  const DDLogicalPart& module,
241  DDCompactView& cpv) {
242 #ifdef EDM_ML_DEBUG
243  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: \t\tInside Block " << block << " Layers " << firstLayer << ":"
244  << lastLayer << " zFront " << zFront << " thickness " << totalWidth << " ignore Center "
245  << ignoreCenter;
246 #endif
247  double zi(zFront), thickTot(0);
248  for (int ly = firstLayer; ly <= lastLayer; ++ly) {
249  int ii = layerType_[ly];
250  int copy = copyNumber_[ii];
251  double zz = zi + (0.5 * layerThick_[ii]);
252  double zo = zi + layerThick_[ii];
253  thickTot += layerThick_[ii];
254 
255  std::string name = "HGCal" + names_[ii] + std::to_string(copy);
256 #ifdef EDM_ML_DEBUG
257  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << name << " Layer " << ly << ":" << ii << " Z " << zi << ":"
258  << zo << " Thick " << layerThick_[ii] << " Sense " << layerSense_[ly];
259 #endif
261  DDMaterial matter(matName);
262  DDLogicalPart glog;
263  if (layerSense_[ly] == 0) {
265  glog = DDLogicalPart(solid.ddname(), matter, solid);
266 #ifdef EDM_ML_DEBUG
267  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << solid.name() << " box of dimension " << absorbW_ << ":"
268  << absorbH_ << ":" << 0.5 * layerThick_[ii];
269 #endif
270  DDTranslation r1(0, 0, zz);
271  DDRotation rot;
272  cpv.position(glog, module, copy, r1, rot);
273 #ifdef EDM_ML_DEBUG
274  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << glog.name() << " number " << copy << " positioned in "
275  << module.name() << " at " << r1 << " with " << rot;
276 #endif
277  } else if (layerSense_[ly] > 0) {
278  positionSensitive(zz, copy, layerSense_[ly], rMax_, maxModule_[ly], ignoreCenter, name, matter, module, cpv);
279  }
280  ++copyNumber_[ii];
281  zi = zo;
282  } // End of loop over layers in a block
283 
284  if (fabs(thickTot - totalWidth) < tolerance_) {
285  } else if (thickTot > totalWidth) {
286  edm::LogError("HGCalGeom") << "Thickness of the partition " << totalWidth << " is smaller than " << thickTot
287  << ": total thickness of all its components in " << module.name() << " Layers "
288  << firstLayer << ":" << lastLayer << ":" << ignoreCenter << "**** ERROR ****";
289  } else if (thickTot < totalWidth) {
290  edm::LogWarning("HGCalGeom") << "Thickness of the partition " << totalWidth << " does not match with " << thickTot
291  << " of the components in " << module.name() << " Layers " << firstLayer << ":"
292  << lastLayer << ":" << ignoreCenter;
293  }
294 }
295 
297  int copyIn,
298  int type,
299  double rout,
300  int ncrMax,
301  bool ignoreCenter,
302  const std::string& nameIn,
303  const DDMaterial& matter,
304  const DDLogicalPart& glog,
305  DDCompactView& cpv) {
306  double ww = (waferW_ + waferGap_);
307  double dx = 0.5 * ww;
308  double dy = 3.0 * dx * tan30deg_;
309  double rr = 2.0 * dx * tan30deg_;
310  int ncol = (int)(2.0 * rout / ww) + 1;
311  int nrow = (int)(rout / (ww * tan30deg_)) + 1;
312 #ifdef EDM_ML_DEBUG
313  int incm(0), inrm(0);
314  edm::LogVerbatim("HGCalGeom") << glog.ddname() << " Copy " << copyIn << " Type " << type << " rout " << rout
315  << " Row " << nrow << " column " << ncol << " ncrMax " << ncrMax << " Z " << zpos
316  << " Center " << ignoreCenter << " name " << nameIn << " matter " << matter.name();
317  int kount(0);
318 #endif
319  if (ncrMax >= 0) {
320  nrow = std::min(nrow, ncrMax);
321  ncol = std::min(ncol, ncrMax);
322  }
323  for (int nr = -nrow; nr <= nrow; ++nr) {
324  int inr = std::abs(nr);
325  for (int nc = -ncol; nc <= ncol; ++nc) {
326  int inc = std::abs(nc);
327  if ((inr % 2 == inc % 2) && (!ignoreCenter || nc != 0 || nr != 0)) {
328  double xpos = nc * dx;
329  double ypos = nr * dy;
330  double xc[6], yc[6];
331  xc[0] = xpos + dx;
332  yc[0] = ypos - 0.5 * rr;
333  xc[1] = xpos + dx;
334  yc[1] = ypos + 0.5 * rr;
335  xc[2] = xpos;
336  yc[2] = ypos + rr;
337  xc[3] = xpos - dx;
338  yc[3] = ypos + 0.5 * rr;
339  xc[4] = xpos + dx;
340  yc[4] = ypos - 0.5 * rr;
341  xc[5] = xpos;
342  yc[5] = ypos - rr;
343  bool cornerAll(true);
344  for (int k = 0; k < 6; ++k) {
345  double rpos = std::sqrt(xc[k] * xc[k] + yc[k] * yc[k]);
346  if (rpos > rout)
347  cornerAll = false;
348  }
349  if (cornerAll) {
350  double rpos = std::sqrt(xpos * xpos + ypos * ypos);
351  DDTranslation tran(xpos, ypos, zpos);
353  int copy = inr * 100 + inc;
354  if (nc < 0)
355  copy += 10000;
356  if (nr < 0)
357  copy += 100000;
358  DDName name, nameX;
359  if (type == 1) {
360  nameX = DDName(DDSplit(covers_[0]).first, DDSplit(covers_[0]).second);
361  std::string name0 = nameIn + "M" + std::to_string(copy);
362  DDLogicalPart glog1 = DDLogicalPart(DDName(name0, idNameSpace_), matter, nameX);
363  cpv.position(glog1.ddname(), glog.ddname(), copyIn, tran, rotation);
364 #ifdef EDM_ML_DEBUG
365  edm::LogVerbatim("HGCalGeom")
366  << "DDHGCalTBModuleX: " << glog1.ddname() << " number " << copyIn << " positioned in " << glog.ddname()
367  << " at " << tran << " with " << rotation;
368 #endif
369  name = (rpos < rMaxFine_) ? DDName(DDSplit(wafer_[0]).first, DDSplit(wafer_[0]).second)
370  : DDName(DDSplit(wafer_[1]).first, DDSplit(wafer_[1]).second);
371  DDTranslation tran1;
372  cpv.position(name, glog1.ddname(), copy, tran1, rotation);
373 #ifdef EDM_ML_DEBUG
374  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << name << " number " << copy << " positioned in "
375  << glog1.ddname() << " at " << tran1 << " with " << rotation;
376 #endif
377  if (copies_.count(copy) == 0 && type == 1)
378  copies_.insert(copy);
379  } else {
381  copy += copyIn * 1000000;
382  cpv.position(name, glog.ddname(), copy, tran, rotation);
383 #ifdef EDM_ML_DEBUG
384  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: " << name << " number " << copy << " positioned in "
385  << glog.ddname() << " at " << tran << " with " << rotation;
386 #endif
387  }
388 #ifdef EDM_ML_DEBUG
389  if (inc > incm)
390  incm = inc;
391  if (inr > inrm)
392  inrm = inr;
393  kount++;
394 #endif
395  }
396  }
397  }
398  }
399 #ifdef EDM_ML_DEBUG
400  edm::LogVerbatim("HGCalGeom") << "DDHGCalTBModuleX: # of columns " << incm << " # of rows " << inrm << " and "
401  << kount << " wafers for " << glog.ddname();
402 #endif
403 }
404 
405 DEFINE_EDM_PLUGIN(DDAlgorithmFactory, DDHGCalTBModuleX, "hgcal:DDHGCalTBModuleX");
DDHGCalTBModuleX::genMat_
std::string genMat_
Definition: DDHGCalTBModuleX.cc:63
DDHGCalTBModuleX::inOut_
int inOut_
Definition: DDHGCalTBModuleX.cc:69
PluginFactory.h
DDCurrentNamespace.h
mps_fire.i
i
Definition: mps_fire.py:355
geometryCSVtoXML.zz
zz
Definition: geometryCSVtoXML.py:19
DDHGCalTBModuleX
Definition: DDHGCalTBModuleX.cc:23
MessageLogger.h
DDHGCalTBModuleX::layerFrontOut_
std::vector< int > layerFrontOut_
Definition: DDHGCalTBModuleX.cc:72
DDHGCalTBModuleX::DDHGCalTBModuleX
DDHGCalTBModuleX()
Definition: DDHGCalTBModuleX.cc:90
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
DDName
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
min
T min(T a, T b)
Definition: MathUtil.h:58
findQualityFiles.rr
string rr
Definition: findQualityFiles.py:185
DDHGCalTBModuleX::layerFrontIn_
std::vector< int > layerFrontIn_
Definition: DDHGCalTBModuleX.cc:70
DDHGCalTBModuleX::rMax_
double rMax_
Definition: DDHGCalTBModuleX.cc:83
DDSplit.h
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:215
DDHGCalTBModuleX::wafer_
std::vector< std::string > wafer_
Definition: DDHGCalTBModuleX.cc:61
DDHGCalTBModuleX::tolerance_
static constexpr double tolerance_
Definition: DDHGCalTBModuleX.cc:58
DDHGCalTBModuleX::rMaxB_
double rMaxB_
Definition: DDHGCalTBModuleX.cc:84
geant_units::operators
Definition: GeantUnits.h:18
dbl_to_int
std::vector< int > dbl_to_int(const std::vector< double > &vecdbl)
Converts a std::vector of doubles to a std::vector of int.
Definition: DDutils.h:7
DDHGCalTBModuleX::absorbH_
double absorbH_
Definition: DDHGCalTBModuleX.cc:82
dqmdumpme.first
first
Definition: dqmdumpme.py:55
DDHGCalTBModuleX::execute
void execute(DDCompactView &cpv) override
Definition: DDHGCalTBModuleX.cc:184
DDMaterial
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
DDTranslation
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
DDHGCalTBModuleX::copies_
std::unordered_set< int > copies_
Definition: DDHGCalTBModuleX.cc:87
DDHGCalTBModuleX::constructBlocks
void constructBlocks(const DDLogicalPart &, DDCompactView &cpv)
Definition: DDHGCalTBModuleX.cc:199
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
DDCompactView
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:80
DDBase::name
const N & name() const
Definition: DDBase.h:59
DDHGCalTBModuleX::idName_
std::string idName_
Definition: DDHGCalTBModuleX.cc:85
DDHGCalTBModuleX::tan30deg_
const double tan30deg_
Definition: DDHGCalTBModuleX.cc:59
DDHGCalTBModuleX::waferGap_
double waferGap_
Definition: DDHGCalTBModuleX.cc:80
DDSolidFactory::tubs
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition: DDSolid.cc:653
DDHGCalTBModuleX::zMinBlock_
double zMinBlock_
Definition: DDHGCalTBModuleX.cc:77
DDSolid.h
DDHGCalTBModuleX::layerType_
std::vector< int > layerType_
Definition: DDHGCalTBModuleX.cc:74
dqmdumpme.k
k
Definition: dqmdumpme.py:60
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::LogWarning
Definition: MessageLogger.h:141
idealTransformation.rotation
dictionary rotation
Definition: idealTransformation.py:1
edm::LogError
Definition: MessageLogger.h:183
EgHLTOffHistBins_cfi.nr
nr
Definition: EgHLTOffHistBins_cfi.py:4
DDBase::ddname
const N & ddname() const
Definition: DDBase.h:61
DDHGCalTBModuleX::covers_
std::vector< std::string > covers_
Definition: DDHGCalTBModuleX.cc:62
DDHGCalTBModuleX::materials_
std::vector< std::string > materials_
Definition: DDHGCalTBModuleX.cc:64
GeantUnits.h
edmplugin::PluginFactory
Definition: PluginFactory.h:34
DDLogicalPart
A DDLogicalPart aggregates information concerning material, solid and sensitveness ....
Definition: DDLogicalPart.h:93
DDTypes.h
DDMaterial.h
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
createfilelist.int
int
Definition: createfilelist.py:10
DDutils.h
DDHGCalTBModuleX::layerSense_
std::vector< int > layerSense_
Definition: DDHGCalTBModuleX.cc:75
DDHGCalTBModuleX::constructLayers
void constructLayers(int block, int layerFront, int layerBack, double zFront, double thick, bool ignore, const DDLogicalPart &, DDCompactView &)
Definition: DDHGCalTBModuleX.cc:234
edm::LogVerbatim
Definition: MessageLogger.h:297
DDHGCalTBModuleX::layerBackIn_
std::vector< int > layerBackIn_
Definition: DDHGCalTBModuleX.cc:71
PVValHelper::dy
Definition: PVValidationHelpers.h:49
groupFilesInBlocks.block
block
Definition: groupFilesInBlocks.py:150
DDLogicalPart.h
module
Definition: vlib.h:198
SequenceTypes.ignore
def ignore(seq)
Definition: SequenceTypes.py:630
DDHGCalTBModuleX::blockThick_
std::vector< double > blockThick_
Definition: DDHGCalTBModuleX.cc:68
DDHGCalTBModuleX::rMaxFine_
double rMaxFine_
Definition: DDHGCalTBModuleX.cc:78
DDHGCalTBModuleX::positionSensitive
void positionSensitive(double zpos, int copyIn, int type, double rmax, int ncrMax, bool ignoreCenter, const std::string &, const DDMaterial &, const DDLogicalPart &, DDCompactView &cpv)
Definition: DDHGCalTBModuleX.cc:296
ReadMapType< double >
DDAlgorithm.h
type
type
Definition: HCALResponse.h:21
DDHGCalGeom::constructLayers
void constructLayers(const cms::DDNamespace &ns, const std::vector< std::string > &wafers, const std::vector< std::string > &covers, const std::vector< int > &layerType, const std::vector< int > &layerSense, const std::vector< int > &maxModule, const std::vector< std::string > &names, const std::vector< std::string > &materials, std::vector< int > &copyNumber, const std::vector< double > &layerThick, const double &absorbW, const double &absorbH, const double &waferTot, const double &rMax, const double &rMaxFine, std::unordered_set< int > &copies, int firstLayer, int lastLayer, double zFront, double totalWidth, bool ignoreCenter, dd4hep::Volume &module)
Definition: DDHGCalTBModuleX.cc:21
diffTwoXMLs.r1
r1
Definition: diffTwoXMLs.py:53
DDHGCalTBModuleX::layerBackOut_
std::vector< int > layerBackOut_
Definition: DDHGCalTBModuleX.cc:73
DDCurrentNamespace::ns
static std::string & ns()
Definition: DDCurrentNamespace.cc:3
DDHGCalTBModuleX::initialize
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
Definition: DDHGCalTBModuleX.cc:98
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
DDHGCalTBModuleX::idNameSpace_
std::string idNameSpace_
Definition: DDHGCalTBModuleX.cc:86
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
DDSolid
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
DDRotation
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
DDHGCalTBModuleX::names_
std::vector< std::string > names_
Definition: DDHGCalTBModuleX.cc:65
initialize
static AlgebraicMatrix initialize()
Definition: BeamSpotTransientTrackingRecHit.cc:24
DDHGCalTBModuleX::maxModule_
std::vector< int > maxModule_
Definition: DDHGCalTBModuleX.cc:76
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
DDHGCalTBModuleX::absorbW_
double absorbW_
Definition: DDHGCalTBModuleX.cc:81
DDSolidFactory::box
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
Definition: DDSolid.cc:533
DDAlgorithmFactory.h
DDHGCalTBModuleX::waferW_
double waferW_
Definition: DDHGCalTBModuleX.cc:79
DDHGCalTBModuleX::copyNumber_
std::vector< int > copyNumber_
Definition: DDHGCalTBModuleX.cc:67
class-composition.parent
parent
Definition: class-composition.py:88
cuy.ii
ii
Definition: cuy.py:590
PVValHelper::dx
Definition: PVValidationHelpers.h:48
DDHGCalTBModuleX::~DDHGCalTBModuleX
~DDHGCalTBModuleX() override
Definition: DDHGCalTBModuleX.cc:96
DDSplit
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
Definition: DDSplit.cc:3
DDHGCalTBModuleX::layerThick_
std::vector< double > layerThick_
Definition: DDHGCalTBModuleX.cc:66
DDCompactView::position
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
Definition: DDCompactView.cc:66