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