CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
DDEcalPreshowerAlgoTB Class Reference

#include <DDEcalPreshowerAlgoTB.h>

Inheritance diagram for DDEcalPreshowerAlgoTB:

Public Member Functions

 DDEcalPreshowerAlgoTB ()
 
void execute (DDCompactView &pos) override
 
void initialize (const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
 

Private Member Functions

void doLayers (DDCompactView &pos)
 
void doSens (DDCompactView &pos)
 
void doWedges (DDCompactView &pos)
 
std::string getMaterial (unsigned int i) const
 

Private Attributes

double absorbx
 
double absorby
 
std::string dummyMaterial
 
int go
 
std::string idNameSpace
 
std::vector< std::string > materials_
 
std::vector< double > micromodulesx
 
std::vector< double > micromodulesy
 
int nmat_
 
std::vector< double > quadMax_
 
std::vector< double > quadMin_
 
std::vector< double > rmaxVec
 
std::vector< double > rminVec
 
double ScndplaneXshift
 
double ScndplaneYshift
 
std::vector< double > thickLayers_
 
double thickness_
 
double TotSFXshift
 
double TotSFYshift
 
double trabsorbx
 
double trabsorby
 
double waf_active
 
double waf_inter_col_sep
 
double waf_intra_col_sep
 
double wedge_length
 
double wedge_offset
 
double ywedge_ceramic_diff
 
double zfoam1_
 
double zfoam2_
 
double zlead1_
 
double zlead2_
 
double zwedge_ceramic_diff
 

Detailed Description

Definition at line 9 of file DDEcalPreshowerAlgoTB.h.

Constructor & Destructor Documentation

◆ DDEcalPreshowerAlgoTB()

DDEcalPreshowerAlgoTB::DDEcalPreshowerAlgoTB ( )

Definition at line 21 of file DDEcalPreshowerAlgoTB.cc.

References LogDebug.

21  : DDAlgorithm() {
22  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB info: Creating an instance";
23 }
#define LogDebug(id)

Member Function Documentation

◆ doLayers()

void DDEcalPreshowerAlgoTB::doLayers ( DDCompactView pos)
private

Definition at line 85 of file DDEcalPreshowerAlgoTB.cc.

References absorbx, absorby, DDSolidFactory::box(), dummyMaterial, getMaterial(), Exhume::I, mps_fire::i, idNameSpace, createfilelist::int, pixelTopology::layer, LogDebug, Skims_PA_cff::name, class-composition::parent, DDCompactView::position(), rminVec, thickLayers_, thickness_, TotSFXshift, TotSFYshift, trabsorbx, trabsorby, zfoam1_, zlead1_, and zlead2_.

Referenced by execute().

85  {
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 }
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
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
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
std::vector< double > thickLayers_
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
#define LogDebug(id)

◆ doSens()

void DDEcalPreshowerAlgoTB::doSens ( DDCompactView pos)
private

Definition at line 428 of file DDEcalPreshowerAlgoTB.cc.

References submitPVValidationJobs::child1, mps_fire::i, idNameSpace, LogDebug, DDCompactView::position(), makeMuonMisalignmentScenario::rot, and waf_active.

Referenced by execute().

428  {
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 }
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
#define LogDebug(id)

◆ doWedges()

void DDEcalPreshowerAlgoTB::doWedges ( DDCompactView pos)
private

Definition at line 139 of file DDEcalPreshowerAlgoTB.cc.

References go, Exhume::I, idNameSpace, createfilelist::int, LogDebug, visualization-live-secondInstance_cfg::m, micromodulesx, micromodulesy, hfnoseParametersInitialization_cfi::name2, class-composition::parent, DDCompactView::position(), quadMax_, quadMin_, ScndplaneXshift, TotSFXshift, TotSFYshift, waf_active, waf_inter_col_sep, waf_intra_col_sep, wedge_length, wedge_offset, ywedge_ceramic_diff, zlead1_, zlead2_, and zwedge_ceramic_diff.

Referenced by execute().

139  {
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 }
std::vector< double > quadMax_
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
std::vector< double > micromodulesy
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
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 > quadMin_
std::vector< double > micromodulesx
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
#define LogDebug(id)

◆ execute()

void DDEcalPreshowerAlgoTB::execute ( DDCompactView pos)
override

Definition at line 74 of file DDEcalPreshowerAlgoTB.cc.

References doLayers(), doSens(), doWedges(), and LogDebug.

74  {
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 }
void doSens(DDCompactView &pos)
void doLayers(DDCompactView &pos)
void doWedges(DDCompactView &pos)
#define LogDebug(id)

◆ getMaterial()

std::string DDEcalPreshowerAlgoTB::getMaterial ( unsigned int  i) const
inlineprivate

Definition at line 20 of file DDEcalPreshowerAlgoTB.h.

References mps_fire::i, and materials_.

Referenced by doLayers().

20 { return materials_[i]; }
std::vector< std::string > materials_

◆ initialize()

void DDEcalPreshowerAlgoTB::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)
override

Definition at line 25 of file DDEcalPreshowerAlgoTB.cc.

References absorbx, absorby, dummyMaterial, idNameSpace, LogDebug, materials_, micromodulesx, micromodulesy, DDCurrentNamespace::ns(), quadMax_, quadMin_, rmaxVec, rminVec, ScndplaneXshift, ScndplaneYshift, thickLayers_, thickness_, TotSFXshift, TotSFYshift, trabsorbx, trabsorby, waf_active, waf_inter_col_sep, waf_intra_col_sep, wedge_length, wedge_offset, ywedge_ceramic_diff, and zwedge_ceramic_diff.

29  {
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 }
std::vector< double > quadMax_
std::vector< std::string > materials_
std::vector< double > micromodulesy
static std::string & ns()
std::vector< double > rminVec
std::vector< double > rmaxVec
std::vector< double > thickLayers_
std::vector< double > quadMin_
std::vector< double > micromodulesx
#define LogDebug(id)

Member Data Documentation

◆ absorbx

double DDEcalPreshowerAlgoTB::absorbx
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

◆ absorby

double DDEcalPreshowerAlgoTB::absorby
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

◆ dummyMaterial

std::string DDEcalPreshowerAlgoTB::dummyMaterial
private

Definition at line 35 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

◆ go

int DDEcalPreshowerAlgoTB::go
private

Definition at line 40 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges().

◆ idNameSpace

std::string DDEcalPreshowerAlgoTB::idNameSpace
private

Definition at line 36 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), doSens(), doWedges(), and initialize().

◆ materials_

std::vector<std::string> DDEcalPreshowerAlgoTB::materials_
private

Definition at line 29 of file DDEcalPreshowerAlgoTB.h.

Referenced by getMaterial(), and initialize().

◆ micromodulesx

std::vector<double> DDEcalPreshowerAlgoTB::micromodulesx
private

Definition at line 33 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ micromodulesy

std::vector<double> DDEcalPreshowerAlgoTB::micromodulesy
private

Definition at line 34 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ nmat_

int DDEcalPreshowerAlgoTB::nmat_
private

Definition at line 26 of file DDEcalPreshowerAlgoTB.h.

◆ quadMax_

std::vector<double> DDEcalPreshowerAlgoTB::quadMax_
private

Definition at line 25 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ quadMin_

std::vector<double> DDEcalPreshowerAlgoTB::quadMin_
private

Definition at line 25 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ rmaxVec

std::vector<double> DDEcalPreshowerAlgoTB::rmaxVec
private

Definition at line 32 of file DDEcalPreshowerAlgoTB.h.

Referenced by initialize().

◆ rminVec

std::vector<double> DDEcalPreshowerAlgoTB::rminVec
private

Definition at line 31 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

◆ ScndplaneXshift

double DDEcalPreshowerAlgoTB::ScndplaneXshift
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ ScndplaneYshift

double DDEcalPreshowerAlgoTB::ScndplaneYshift
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by initialize().

◆ thickLayers_

std::vector<double> DDEcalPreshowerAlgoTB::thickLayers_
private

Definition at line 30 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

◆ thickness_

double DDEcalPreshowerAlgoTB::thickness_
private

Definition at line 27 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

◆ TotSFXshift

double DDEcalPreshowerAlgoTB::TotSFXshift
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), doWedges(), and initialize().

◆ TotSFYshift

double DDEcalPreshowerAlgoTB::TotSFYshift
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), doWedges(), and initialize().

◆ trabsorbx

double DDEcalPreshowerAlgoTB::trabsorbx
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

◆ trabsorby

double DDEcalPreshowerAlgoTB::trabsorby
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

◆ waf_active

double DDEcalPreshowerAlgoTB::waf_active
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doSens(), doWedges(), and initialize().

◆ waf_inter_col_sep

double DDEcalPreshowerAlgoTB::waf_inter_col_sep
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ waf_intra_col_sep

double DDEcalPreshowerAlgoTB::waf_intra_col_sep
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ wedge_length

double DDEcalPreshowerAlgoTB::wedge_length
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ wedge_offset

double DDEcalPreshowerAlgoTB::wedge_offset
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ ywedge_ceramic_diff

double DDEcalPreshowerAlgoTB::ywedge_ceramic_diff
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

◆ zfoam1_

double DDEcalPreshowerAlgoTB::zfoam1_
private

Definition at line 28 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers().

◆ zfoam2_

double DDEcalPreshowerAlgoTB::zfoam2_
private

Definition at line 28 of file DDEcalPreshowerAlgoTB.h.

◆ zlead1_

double DDEcalPreshowerAlgoTB::zlead1_
private

Definition at line 28 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and doWedges().

◆ zlead2_

double DDEcalPreshowerAlgoTB::zlead2_
private

Definition at line 28 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and doWedges().

◆ zwedge_ceramic_diff

double DDEcalPreshowerAlgoTB::zwedge_ceramic_diff
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().