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, phase1PixelTopology::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
constexpr std::array< uint8_t, layerIndexSize > layer
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
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 436 of file DDEcalPreshowerAlgoTB.cc.

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

Referenced by execute().

436  {
437  double xpos(0), ypos(0);
438  DDTranslation tran;
439  DDName child1 = DDName("SFSX", idNameSpace);
440  DDName child2 = DDName("SFSY", idNameSpace);
441  DDName mother1 = DDName("SFAX", idNameSpace);
442  DDName mother2 = DDName("SFAY", idNameSpace);
443  DDRotation rot;
444  for (size_t i = 0; i < 32; ++i) {
445  xpos = -waf_active / 2. + i * waf_active / 32. + waf_active / 64.;
446  tran = DDTranslation(xpos, 0., 0.);
447  cpv.position(DDLogicalPart(child1), mother1, i + 1, tran, rot);
448  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << child1 << "\ncopy number " << i + 1 << " in "
449  << mother1 << " translation " << tran << " rotation " << rot;
450 
451  ypos = -waf_active / 2. + i * waf_active / 32. + waf_active / 64.;
452  tran = DDTranslation(0., ypos, 0.);
453  cpv.position(DDLogicalPart(child2), mother2, i + 1, tran, rot);
454  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << child2 << "\ncopy number " << i + 1 << " in "
455  << mother2 << " translation " << tran << " rotation " << rot;
456  }
457 }
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 nx(0), ny(0), 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  nx += 1;
155  icopy += 1;
156  go = 0;
157  for (double m : micromodulesx)
158  if (m == icopy) {
159  go = 1;
160  icopyt += 1;
161  }
162  xpos = -1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
163  ypos = (sz - int(I)) * waf_active + wedge_length / 2. + 0.05 * cm;
164  xpos = xpos + TotSFXshift;
165  ypos = ypos + TotSFYshift;
166  zpos = zlead1_ + wedge_offset;
167  // place the wedge
168  if (go == 1) {
169  tran = DDTranslation(xpos, ypos, zpos);
170  cpv.position(DDLogicalPart(name1), parent(), icopyt, tran, rot1);
171  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
172  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
173  << rot1;
174  }
175  zpos = zlead1_ + zwedge_ceramic_diff;
176  ypos = ypos + ywedge_ceramic_diff;
177  if (go == 1) {
178  tran = DDTranslation(xpos, ypos, zpos);
179  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
180  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
181  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
182  << rot2;
183  }
184  }
185 
186  for (int J = int(quadMin_[I - 1]); J <= int(quadMax_[I - 1]); ++J) {
187  nx += 1;
188  icopy += 1;
189  go = 0;
190  for (double m : micromodulesx)
191  if (m == icopy) {
192  go = 1;
193  icopyt += 1;
194  }
195  xpos = 1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
196  ypos = (sz - int(I)) * waf_active + wedge_length / 2. + 0.05 * cm;
197  xpos = xpos + TotSFXshift;
198  ypos = ypos + TotSFYshift;
199  zpos = zlead1_ + wedge_offset;
200  if (go == 1) {
201  tran = DDTranslation(xpos, ypos, zpos);
202  cpv.position(DDLogicalPart(name1), parent(), icopyt, tran, rot1);
203  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
204  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
205  << rot1;
206  }
207  zpos = zlead1_ + zwedge_ceramic_diff;
208  ypos = ypos + ywedge_ceramic_diff;
209  if (go == 1) {
210  tran = DDTranslation(xpos, ypos, zpos);
211  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
212  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
213  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
214  << rot2;
215  }
216  }
217  }
218 
219  // mirror image system
220  rot1 = DDRotation("rotations:RM1303");
221  rot2 = DDRotation("rotations:RM1302");
222  for (int I = sz; I >= 1; --I) {
223  for (int J = int(quadMax_[I - 1]); J >= int(quadMin_[I - 1]); --J) {
224  nx += 1;
225  icopy += 1;
226  go = 0;
227  for (double m : micromodulesx)
228  if (m == icopy) {
229  go = 1;
230  icopyt += 1;
231  }
232  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
233  xpos = -1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
234  ypos = -1. * (sz - int(I)) * waf_active - wedge_length / 2. - 0.05 * cm;
235  xpos = xpos + TotSFXshift;
236  ypos = ypos + TotSFYshift;
237  zpos = zlead1_ + wedge_offset;
238  if (go == 1) {
239  tran = DDTranslation(xpos, ypos, zpos);
240  cpv.position(DDLogicalPart(name1), parent(), icopyt, tran, rot1);
241  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
242  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
243  << rot1;
244  }
245  zpos = zlead1_ + zwedge_ceramic_diff;
246  ypos = ypos - ywedge_ceramic_diff;
247  if (go == 1) {
248  tran = DDTranslation(xpos, ypos, zpos);
249  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
250  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
251  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
252  << rot2;
253  }
254  }
255 
256  for (int J = int(quadMin_[I - 1]); J <= int(quadMax_[I - 1]); ++J) {
257  nx += 1;
258  icopy += 1;
259  go = 0;
260  for (double m : micromodulesx)
261  if (m == icopy) {
262  go = 1;
263  icopyt += 1;
264  }
265  xpos = 1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
266  ypos = -1. * (sz - int(I)) * waf_active - wedge_length / 2. - 0.05 * cm;
267  xpos = xpos + TotSFXshift;
268  ypos = ypos + TotSFYshift;
269  zpos = zlead1_ + wedge_offset;
270  if (go == 1) {
271  tran = DDTranslation(xpos, ypos, zpos);
272  cpv.position(DDLogicalPart(name1), parent(), icopyt, tran, rot1);
273  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
274  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
275  << rot1;
276  }
277  zpos = zlead1_ + zwedge_ceramic_diff;
278  ypos = ypos - ywedge_ceramic_diff;
279  if (go == 1) {
280  tran = DDTranslation(xpos, ypos, zpos);
281  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
282  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
283  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
284  << rot2;
285  }
286  }
287  }
288 
289  // Do Plane Y
290  icopy = 0;
291  int nxt = micromodulesy.size();
292  name1 = DDName("SWED", idNameSpace);
293  name2 = DDName("SFBY", idNameSpace);
294  rot1 = DDRotation(DDName("RM1301B", idNameSpace));
295  rot2 = DDRotation(DDName("RM1300B", idNameSpace));
296  for (int I = 1; I <= sz; ++I) {
297  for (int J = int(quadMax_[I - 1]); J >= int(quadMin_[I - 1]); --J) {
298  ny += 1;
299  icopy += 1;
300  go = 0;
301  for (double m : micromodulesy)
302  if (m == icopy) {
303  go = 1;
304  icopyt += 1;
305  }
306  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
307  ypos = -1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
308  xpos = (sz - int(I)) * waf_active + wedge_length / 2. + 0.05 * cm + ScndplaneXshift;
309  xpos = xpos + TotSFXshift;
310  ypos = ypos + TotSFYshift;
311  zpos = zlead2_ + wedge_offset;
312  if (go == 1) {
313  tran = DDTranslation(xpos, ypos, zpos);
314  cpv.position(DDLogicalPart(name1), parent(), icopy + nxt, tran, rot1);
315  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
316  << icopyt + nxt << ") in Mother " << parent().name() << " translation " << tran
317  << " rotation " << rot1;
318  }
319  zpos = zlead2_ + zwedge_ceramic_diff;
320  xpos = xpos - ywedge_ceramic_diff;
321  if (go == 1) {
322  tran = DDTranslation(xpos, ypos, zpos);
323  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
324  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
325  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
326  << rot2;
327  }
328  }
329 
330  for (int J = int(quadMin_[I - 1]); J <= int(quadMax_[I - 1]); ++J) {
331  ny += 1;
332  icopy += 1;
333  go = 0;
334  for (double m : micromodulesy)
335  if (m == icopy) {
336  go = 1;
337  icopyt += 1;
338  }
339  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
340  ypos = 1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
341  xpos = (sz - int(I)) * waf_active + wedge_length / 2. + 0.05 * cm + ScndplaneXshift;
342  xpos = xpos + TotSFXshift;
343  ypos = ypos + TotSFYshift;
344  zpos = zlead2_ + wedge_offset;
345  if (go == 1) {
346  tran = DDTranslation(xpos, ypos, zpos);
347  cpv.position(DDLogicalPart(name1), parent(), icopyt + nxt, tran, rot1);
348  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
349  << icopyt + nxt << ") in Mother " << parent().name() << " translation " << tran
350  << " rotation " << rot1;
351  }
352  zpos = zlead2_ + zwedge_ceramic_diff;
353  xpos = xpos - ywedge_ceramic_diff;
354  if (go == 1) {
355  tran = DDTranslation(xpos, ypos, zpos);
356  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
357  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
358  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
359  << rot2;
360  }
361  }
362  }
363 
364  // mirror image system
365  rot1 = DDRotation(DDName("RM1305B", idNameSpace));
366  rot2 = DDRotation(DDName("RM1304B", idNameSpace));
367  for (int I = sz; I >= 1; --I) {
368  for (int J = int(quadMax_[I - 1]); J >= int(quadMin_[I - 1]); --J) {
369  ny += 1;
370  icopy += 1;
371  go = 0;
372  for (double m : micromodulesy)
373  if (m == icopy) {
374  go = 1;
375  icopyt += 1;
376  }
377  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
378  ypos = -1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
379  xpos = -1. * (sz - int(I)) * waf_active - wedge_length / 2. - 0.05 * cm + ScndplaneXshift;
380  xpos = xpos + TotSFXshift;
381  ypos = ypos + TotSFYshift;
382  zpos = zlead2_ + wedge_offset;
383  if (go == 1) {
384  tran = DDTranslation(xpos, ypos, zpos);
385  cpv.position(DDLogicalPart(name1), parent(), icopyt + nxt, tran, rot1);
386  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
387  << icopyt + nxt << ") in Mother " << parent().name() << " translation " << tran
388  << " rotation " << rot1;
389  }
390  zpos = zlead2_ + zwedge_ceramic_diff;
391  xpos = xpos + ywedge_ceramic_diff;
392  if (go == 1) {
393  tran = DDTranslation(xpos, ypos, zpos);
394  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
395  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
396  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
397  << rot2;
398  }
399  }
400 
401  for (int J = int(quadMin_[I - 1]); J <= int(quadMax_[I - 1]); ++J) {
402  ny += 1;
403  icopy += 1;
404  go = 0;
405  for (double m : micromodulesy)
406  if (m == icopy) {
407  go = 1;
408  icopyt += 1;
409  }
410  //LogDebug("HCalGeom") <<"DDEcalPreshowerAlgoTB::I=" << I << " J=" << J;
411  ypos = 1. * (J * waf_intra_col_sep + (int(J / 2)) * waf_inter_col_sep - waf_intra_col_sep / 2.);
412  xpos = -1. * (sz - int(I)) * waf_active - wedge_length / 2. - 0.05 * cm + ScndplaneXshift;
413  xpos = xpos + TotSFXshift;
414  ypos = ypos + TotSFYshift;
415  zpos = zlead2_ + wedge_offset;
416  if (go == 1) {
417  tran = DDTranslation(xpos, ypos, zpos);
418  cpv.position(DDLogicalPart(name1), parent(), icopyt + nxt, tran, rot1);
419  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name1 << " copy = " << icopy << " ("
420  << icopyt + nxt << ") in Mother " << parent().name() << " translation " << tran
421  << " rotation " << rot1;
422  }
423  zpos = zlead2_ + zwedge_ceramic_diff;
424  xpos = xpos + ywedge_ceramic_diff;
425  if (go == 1) {
426  tran = DDTranslation(xpos, ypos, zpos);
427  cpv.position(DDLogicalPart(name2), parent(), icopyt, tran, rot2);
428  LogDebug("HCalGeom") << "DDEcalPreshowerAlgoTB::debug : Child " << name2 << " copy = " << icopy << " ("
429  << icopyt << ") in Mother " << parent().name() << " translation " << tran << " rotation "
430  << rot2;
431  }
432  }
433  }
434 }
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().