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 ( )

Definition at line 21 of file DDEcalPreshowerAlgoTB.cc.

References LogDebug.

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

Member Function Documentation

void DDEcalPreshowerAlgoTB::doLayers ( DDCompactView pos)
private

Definition at line 91 of file DDEcalPreshowerAlgoTB.cc.

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

Referenced by execute(), and getMaterial().

91  {
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 }
#define LogDebug(id)
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:43
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
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
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
std::vector< double > thickLayers_
void DDEcalPreshowerAlgoTB::doSens ( DDCompactView pos)
private

Definition at line 440 of file DDEcalPreshowerAlgoTB.cc.

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

Referenced by execute(), and getMaterial().

440  {
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)
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:68
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
void DDEcalPreshowerAlgoTB::doWedges ( DDCompactView pos)
private

Definition at line 148 of file DDEcalPreshowerAlgoTB.cc.

References go, Exhume::I, idNameSpace, createfilelist::int, LogDebug, funct::m, micromodulesx, micromodulesy, 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(), and getMaterial().

148  {
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 }
#define LogDebug(id)
std::vector< double > quadMax_
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
std::vector< double > micromodulesy
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:68
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
void DDEcalPreshowerAlgoTB::execute ( DDCompactView pos)
override

Definition at line 78 of file DDEcalPreshowerAlgoTB.cc.

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

78  {
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 }
#define LogDebug(id)
void doSens(DDCompactView &pos)
void doLayers(DDCompactView &pos)
void doWedges(DDCompactView &pos)
std::string DDEcalPreshowerAlgoTB::getMaterial ( unsigned int  i) const
inlineprivate

Definition at line 21 of file DDEcalPreshowerAlgoTB.h.

References doLayers(), doSens(), doWedges(), mps_fire::i, and materials_.

Referenced by doLayers().

21 {return materials_[i];}
std::vector< std::string > materials_
void DDEcalPreshowerAlgoTB::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)
override

Definition at line 26 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.

30  {
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 }
#define LogDebug(id)
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

Member Data Documentation

double DDEcalPreshowerAlgoTB::absorbx
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

double DDEcalPreshowerAlgoTB::absorby
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

std::string DDEcalPreshowerAlgoTB::dummyMaterial
private

Definition at line 36 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

int DDEcalPreshowerAlgoTB::go
private

Definition at line 39 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges().

std::string DDEcalPreshowerAlgoTB::idNameSpace
private

Definition at line 37 of file DDEcalPreshowerAlgoTB.h.

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

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

Definition at line 30 of file DDEcalPreshowerAlgoTB.h.

Referenced by getMaterial(), and initialize().

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

Definition at line 34 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

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

Definition at line 35 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

int DDEcalPreshowerAlgoTB::nmat_
private

Definition at line 27 of file DDEcalPreshowerAlgoTB.h.

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

Definition at line 26 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

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

Definition at line 26 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

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

Definition at line 33 of file DDEcalPreshowerAlgoTB.h.

Referenced by initialize().

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

Definition at line 32 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

double DDEcalPreshowerAlgoTB::ScndplaneXshift
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

double DDEcalPreshowerAlgoTB::ScndplaneYshift
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by initialize().

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

Definition at line 31 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

double DDEcalPreshowerAlgoTB::thickness_
private

Definition at line 28 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

double DDEcalPreshowerAlgoTB::TotSFXshift
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

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

double DDEcalPreshowerAlgoTB::TotSFYshift
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

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

double DDEcalPreshowerAlgoTB::trabsorbx
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

double DDEcalPreshowerAlgoTB::trabsorby
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and initialize().

double DDEcalPreshowerAlgoTB::waf_active
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

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

double DDEcalPreshowerAlgoTB::waf_inter_col_sep
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

double DDEcalPreshowerAlgoTB::waf_intra_col_sep
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

double DDEcalPreshowerAlgoTB::wedge_length
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

double DDEcalPreshowerAlgoTB::wedge_offset
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

double DDEcalPreshowerAlgoTB::ywedge_ceramic_diff
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().

double DDEcalPreshowerAlgoTB::zfoam1_
private

Definition at line 29 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers().

double DDEcalPreshowerAlgoTB::zfoam2_
private

Definition at line 29 of file DDEcalPreshowerAlgoTB.h.

double DDEcalPreshowerAlgoTB::zlead1_
private

Definition at line 29 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and doWedges().

double DDEcalPreshowerAlgoTB::zlead2_
private

Definition at line 29 of file DDEcalPreshowerAlgoTB.h.

Referenced by doLayers(), and doWedges().

double DDEcalPreshowerAlgoTB::zwedge_ceramic_diff
private

Definition at line 38 of file DDEcalPreshowerAlgoTB.h.

Referenced by doWedges(), and initialize().