CMS 3D CMS Logo

DDEcalPreshowerAlgoTB.cc
Go to the documentation of this file.
2 
3 #include <cmath>
4 #include <algorithm>
5 #include <ostream>
6 
16 #include "CLHEP/Units/GlobalPhysicalConstants.h"
17 #include "CLHEP/Units/GlobalSystemOfUnits.h"
18 
19 using namespace CLHEP;
20 
22  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB info: Creating an instance";
23 }
24 
26  const DDVectorArguments& vArgs,
27  const DDMapArguments& mArgs,
28  const DDStringArguments& sArgs,
29  const DDStringVectorArguments& vsArgs) {
30  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB info: Initialize";
31  quadMin_ = vArgs["IQUAD_MIN"];
32  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB IQUAD_MIN";
33  quadMax_ = vArgs["IQUAD_MAX"];
34  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB IQUAD_MAX";
35  thickLayers_ = vArgs["Layers"];
36  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB Layers";
37  thickness_ = double(nArgs["PRESH_Z_TOTAL"]);
38  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB PRESH_Z_TOTAL";
39  materials_ = vsArgs["LayMat"];
40  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB material";
41  rmaxVec = vArgs["R_MAX"]; // inner radii
42  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB R_MAX";
43  rminVec = vArgs["R_MIN"]; // outer radii
44  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB R_MIN";
45  waf_intra_col_sep = double(nArgs["waf_intra_col_sep"]);
46  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB waf_intra_col_sep";
47  waf_inter_col_sep = double(nArgs["waf_inter_col_sep"]);
48  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB waf_intra_col_sep = " << waf_inter_col_sep;
49  waf_active = double(nArgs["waf_active"]);
50  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB waf_active = " << waf_active;
51  wedge_length = double(nArgs["wedge_length"]);
52  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB wedge_length = " << wedge_length;
53  wedge_offset = double(nArgs["wedge_offset"]);
54  zwedge_ceramic_diff = double(nArgs["zwedge_ceramic_diff"]);
55  ywedge_ceramic_diff = double(nArgs["ywedge_ceramic_diff"]);
56  micromodulesx = vArgs["MicromodulesX"]; // micromodules in X plane
57  micromodulesy = vArgs["MicromodulesY"]; // micromodules in Y plane
58  absorbx = double(nArgs["absorbx"]);
59  absorby = double(nArgs["absorby"]);
60  trabsorbx = double(nArgs["trabsorbx"]);
61  trabsorby = double(nArgs["trabsorby"]);
62  ScndplaneXshift = double(nArgs["2ndPlaneXshift"]);
63  ScndplaneYshift = double(nArgs["2ndPlaneYshift"]);
64  TotSFXshift = double(nArgs["SF07vsSF_Xshift"]);
65  TotSFYshift = double(nArgs["SF07vsSF_Yshift"]);
66  dummyMaterial = sArgs["DummyMaterial"];
67  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB Dummy Material = " << dummyMaterial;
68 
70 
71  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB info: end initialize";
72 }
73 
75  LogDebug("HCalGeom") << "******** DDEcalPreshowerAlgoTB execute!";
76 
77  // creates all the tube-like layers of the preshower
78  doLayers(cpv);
79  // places the wedges and silicon strip detectors in their x and y layer
80  doWedges(cpv);
81  // places the slicon strips in active silicon wafers
82  doSens(cpv);
83 }
84 
86  //double sum_z=0;
87  double zpos = -thickness_ / 2.;
88  for (size_t i = 0; i < rminVec.size(); ++i) {
89  int I = int(i) + 1; // FOTRAN I (offset +1)
90 
91  double zHalf(0);
92 
93  // create the name
94  std::ostringstream name;
95  name << "SF" << int((50 + I) / 10) << I - int(I / 10) * 10;
96  DDName ddname(name.str(), idNameSpace); // namespace:name
97 
98  // tube dimensions
99  // rIn = rmaxVec[i];
100  // rOut = rminVec[i];
101  zHalf = thickLayers_[i] / 2.;
102 
103  // position the logical part w.r.t. the parent volume
104  zpos += zHalf;
105  //sum_z += thickLayers_[i];
106  if (I == 7 || I == 15) { // skip layers with detectors
107  zpos += zHalf;
108  continue;
109  }
110  if (I == 2) {
111  zfoam1_ = zpos;
112  }
113  if (I == 6) {
114  zlead1_ = zpos + zHalf;
115  }
116  if (I == 14) {
117  zlead2_ = zpos + zHalf;
118  }
119 
120  if (getMaterial(i) != dummyMaterial) {
121  // create a logical part representing a single layer in the preshower
122  //DDSolid solid = DDSolidFactory::tubs(ddname,zHalf,rIn,rOut,0.,360.*deg);
123 
124  DDSolid solid = DDSolidFactory::box(ddname, absorbx, absorby, zHalf);
125 
126  DDName matname(getMaterial(i), "materials");
127  DDMaterial material(matname);
128  DDLogicalPart layer = DDLogicalPart(ddname, material, solid);
129 
131  cpv.position(layer, parent(), 1, tran, DDRotation());
132  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB debug : Child " << layer << " Copy 1 in " << parent().name()
133  << " with translation " << tran << " and rotation " << DDRotation();
134  }
135  zpos += zHalf;
136  }
137 }
138 
140  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : doWedges()";
141  int icopy(0), icopyt(0);
142  double xpos(0), ypos(0), zpos(0); // zposY(0);
143  int sz = int(quadMax_.size());
144 
145  DDTranslation tran;
146  DDName name1("SWED", idNameSpace);
147  DDName name2("SFBX", idNameSpace);
148  DDRotation rot1("rotations:RM1299");
149  DDRotation rot2("rotations:RM1298");
150  // Do Plane X
151  for (int I = 1; I <= sz; ++I) {
152  for (int J = int(quadMax_[I - 1]); J >= int(quadMin_[I - 1]); --J) {
153  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
154  icopy += 1;
155  go = 0;
156  for (double m : micromodulesx)
157  if (m == icopy) {
158  go = 1;
159  icopyt += 1;
160  }
161  xpos = -1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
162  ypos = (sz - int(I)) * waf_active + wedge_length / 2. + 0.05 * cm;
163  xpos = xpos + TotSFXshift;
164  ypos = ypos + TotSFYshift;
165  zpos = zlead1_ + wedge_offset;
166  // place the wedge
167  if (go == 1) {
168  tran = DDTranslation(xpos, ypos, zpos);
169  cpv.position(DDLogicalPart(name1), parent(), icopyt, tran, rot1);
170  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
171  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
172  << rot1;
173  }
174  zpos = zlead1_ + zwedge_ceramic_diff;
175  ypos = ypos + ywedge_ceramic_diff;
176  if (go == 1) {
177  tran = DDTranslation(xpos, ypos, zpos);
178  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
179  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
180  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
181  << rot2;
182  }
183  }
184 
185  for (int J = int(quadMin_[I - 1]); J <= int(quadMax_[I - 1]); ++J) {
186  icopy += 1;
187  go = 0;
188  for (double m : micromodulesx)
189  if (m == icopy) {
190  go = 1;
191  icopyt += 1;
192  }
193  xpos = 1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
194  ypos = (sz - int(I)) * waf_active + wedge_length / 2. + 0.05 * cm;
195  xpos = xpos + TotSFXshift;
196  ypos = ypos + TotSFYshift;
197  zpos = zlead1_ + wedge_offset;
198  if (go == 1) {
199  tran = DDTranslation(xpos, ypos, zpos);
200  cpv.position(DDLogicalPart(name1), parent(), icopyt, tran, rot1);
201  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
202  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
203  << rot1;
204  }
205  zpos = zlead1_ + zwedge_ceramic_diff;
206  ypos = ypos + ywedge_ceramic_diff;
207  if (go == 1) {
208  tran = DDTranslation(xpos, ypos, zpos);
209  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
210  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
211  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
212  << rot2;
213  }
214  }
215  }
216 
217  // mirror image system
218  rot1 = DDRotation("rotations:RM1303");
219  rot2 = DDRotation("rotations:RM1302");
220  for (int I = sz; I >= 1; --I) {
221  for (int J = int(quadMax_[I - 1]); J >= int(quadMin_[I - 1]); --J) {
222  icopy += 1;
223  go = 0;
224  for (double m : micromodulesx)
225  if (m == icopy) {
226  go = 1;
227  icopyt += 1;
228  }
229  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
230  xpos = -1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
231  ypos = -1. * (sz - int(I)) * waf_active - wedge_length / 2. - 0.05 * cm;
232  xpos = xpos + TotSFXshift;
233  ypos = ypos + TotSFYshift;
234  zpos = zlead1_ + wedge_offset;
235  if (go == 1) {
236  tran = DDTranslation(xpos, ypos, zpos);
237  cpv.position(DDLogicalPart(name1), parent(), icopyt, tran, rot1);
238  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
239  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
240  << rot1;
241  }
242  zpos = zlead1_ + zwedge_ceramic_diff;
243  ypos = ypos - ywedge_ceramic_diff;
244  if (go == 1) {
245  tran = DDTranslation(xpos, ypos, zpos);
246  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
247  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
248  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
249  << rot2;
250  }
251  }
252 
253  for (int J = int(quadMin_[I - 1]); J <= int(quadMax_[I - 1]); ++J) {
254  icopy += 1;
255  go = 0;
256  for (double m : micromodulesx)
257  if (m == icopy) {
258  go = 1;
259  icopyt += 1;
260  }
261  xpos = 1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
262  ypos = -1. * (sz - int(I)) * waf_active - wedge_length / 2. - 0.05 * cm;
263  xpos = xpos + TotSFXshift;
264  ypos = ypos + TotSFYshift;
265  zpos = zlead1_ + wedge_offset;
266  if (go == 1) {
267  tran = DDTranslation(xpos, ypos, zpos);
268  cpv.position(DDLogicalPart(name1), parent(), icopyt, tran, rot1);
269  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
270  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
271  << rot1;
272  }
273  zpos = zlead1_ + zwedge_ceramic_diff;
274  ypos = ypos - ywedge_ceramic_diff;
275  if (go == 1) {
276  tran = DDTranslation(xpos, ypos, zpos);
277  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
278  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
279  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
280  << rot2;
281  }
282  }
283  }
284 
285  // Do Plane Y
286  icopy = 0;
287  int nxt = micromodulesy.size();
288  name1 = DDName("SWED", idNameSpace);
289  name2 = DDName("SFBY", idNameSpace);
290  rot1 = DDRotation(DDName("RM1301B", idNameSpace));
291  rot2 = DDRotation(DDName("RM1300B", idNameSpace));
292  for (int I = 1; I <= sz; ++I) {
293  for (int J = int(quadMax_[I - 1]); J >= int(quadMin_[I - 1]); --J) {
294  icopy += 1;
295  go = 0;
296  for (double m : micromodulesy)
297  if (m == icopy) {
298  go = 1;
299  icopyt += 1;
300  }
301  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
302  ypos = -1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
303  xpos = (sz - int(I)) * waf_active + wedge_length / 2. + 0.05 * cm + ScndplaneXshift;
304  xpos = xpos + TotSFXshift;
305  ypos = ypos + TotSFYshift;
306  zpos = zlead2_ + wedge_offset;
307  if (go == 1) {
308  tran = DDTranslation(xpos, ypos, zpos);
309  cpv.position(DDLogicalPart(name1), parent(), icopy + nxt, tran, rot1);
310  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
311  << icopyt + nxt << ") in Mother " << parent().name() << " translation " << tran
312  << " rotation " << rot1;
313  }
314  zpos = zlead2_ + zwedge_ceramic_diff;
315  xpos = xpos - ywedge_ceramic_diff;
316  if (go == 1) {
317  tran = DDTranslation(xpos, ypos, zpos);
318  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
319  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
320  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
321  << rot2;
322  }
323  }
324 
325  for (int J = int(quadMin_[I - 1]); J <= int(quadMax_[I - 1]); ++J) {
326  icopy += 1;
327  go = 0;
328  for (double m : micromodulesy)
329  if (m == icopy) {
330  go = 1;
331  icopyt += 1;
332  }
333  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
334  ypos = 1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
335  xpos = (sz - int(I)) * waf_active + wedge_length / 2. + 0.05 * cm + ScndplaneXshift;
336  xpos = xpos + TotSFXshift;
337  ypos = ypos + TotSFYshift;
338  zpos = zlead2_ + wedge_offset;
339  if (go == 1) {
340  tran = DDTranslation(xpos, ypos, zpos);
341  cpv.position(DDLogicalPart(name1), parent(), icopyt + nxt, tran, rot1);
342  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
343  << icopyt + nxt << ") in Mother " << parent().name() << " translation " << tran
344  << " rotation " << rot1;
345  }
346  zpos = zlead2_ + zwedge_ceramic_diff;
347  xpos = xpos - ywedge_ceramic_diff;
348  if (go == 1) {
349  tran = DDTranslation(xpos, ypos, zpos);
350  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
351  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
352  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
353  << rot2;
354  }
355  }
356  }
357 
358  // mirror image system
359  rot1 = DDRotation(DDName("RM1305B", idNameSpace));
360  rot2 = DDRotation(DDName("RM1304B", idNameSpace));
361  for (int I = sz; I >= 1; --I) {
362  for (int J = int(quadMax_[I - 1]); J >= int(quadMin_[I - 1]); --J) {
363  icopy += 1;
364  go = 0;
365  for (double m : micromodulesy)
366  if (m == icopy) {
367  go = 1;
368  icopyt += 1;
369  }
370  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
371  ypos = -1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
372  xpos = -1. * (sz - int(I)) * waf_active - wedge_length / 2. - 0.05 * cm + ScndplaneXshift;
373  xpos = xpos + TotSFXshift;
374  ypos = ypos + TotSFYshift;
375  zpos = zlead2_ + wedge_offset;
376  if (go == 1) {
377  tran = DDTranslation(xpos, ypos, zpos);
378  cpv.position(DDLogicalPart(name1), parent(), icopyt + nxt, tran, rot1);
379  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
380  << icopyt + nxt << ") in Mother " << parent().name() << " translation " << tran
381  << " rotation " << rot1;
382  }
383  zpos = zlead2_ + zwedge_ceramic_diff;
384  xpos = xpos + ywedge_ceramic_diff;
385  if (go == 1) {
386  tran = DDTranslation(xpos, ypos, zpos);
387  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
388  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
389  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
390  << rot2;
391  }
392  }
393 
394  for (int J = int(quadMin_[I - 1]); J <= int(quadMax_[I - 1]); ++J) {
395  icopy += 1;
396  go = 0;
397  for (double m : micromodulesy)
398  if (m == icopy) {
399  go = 1;
400  icopyt += 1;
401  }
402  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
403  ypos = 1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
404  xpos = -1. * (sz - int(I)) * waf_active - wedge_length / 2. - 0.05 * cm + ScndplaneXshift;
405  xpos = xpos + TotSFXshift;
406  ypos = ypos + TotSFYshift;
407  zpos = zlead2_ + wedge_offset;
408  if (go == 1) {
409  tran = DDTranslation(xpos, ypos, zpos);
410  cpv.position(DDLogicalPart(name1), parent(), icopyt + nxt, tran, rot1);
411  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
412  << icopyt + nxt << ") in Mother " << parent().name() << " translation " << tran
413  << " rotation " << rot1;
414  }
415  zpos = zlead2_ + zwedge_ceramic_diff;
416  xpos = xpos + ywedge_ceramic_diff;
417  if (go == 1) {
418  tran = DDTranslation(xpos, ypos, zpos);
419  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
420  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
421  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
422  << rot2;
423  }
424  }
425  }
426 }
427 
429  double xpos(0), ypos(0);
430  DDTranslation tran;
431  DDName child1 = DDName("SFSX", idNameSpace);
432  DDName child2 = DDName("SFSY", idNameSpace);
433  DDName mother1 = DDName("SFAX", idNameSpace);
434  DDName mother2 = DDName("SFAY", idNameSpace);
435  DDRotation rot;
436  for (size_t i = 0; i < 32; ++i) {
437  xpos = -waf_active / 2. + i * waf_active / 32. + waf_active / 64.;
438  tran = DDTranslation(xpos, 0., 0.);
439  cpv.position(DDLogicalPart(child1), mother1, i + 1, tran, rot);
440  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << child1 << "\ncopy number " << i + 1 << " in "
441  << mother1 << " translation " << tran << " rotation " << rot;
442 
443  ypos = -waf_active / 2. + i * waf_active / 32. + waf_active / 64.;
444  tran = DDTranslation(0., ypos, 0.);
445  cpv.position(DDLogicalPart(child2), mother2, i + 1, tran, rot);
446  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << child2 << "\ncopy number " << i + 1 << " in "
447  << mother2 << " translation " << tran << " rotation " << rot;
448  }
449 }
void doSens(DDCompactView &pos)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
std::vector< double > quadMax_
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
std::vector< std::string > materials_
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
std::vector< double > micromodulesy
static std::string & ns()
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:81
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
std::vector< double > rminVec
std::string getMaterial(unsigned int i) const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
const std::complex< double > I
Definition: I.h:8
std::vector< double > rmaxVec
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:547
void doLayers(DDCompactView &pos)
std::vector< double > thickLayers_
std::vector< double > quadMin_
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
void doWedges(DDCompactView &pos)
std::vector< double > micromodulesx
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
void execute(DDCompactView &pos) override
#define LogDebug(id)