CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
DDTECModuleAlgo Class Reference

#include <DDTECModuleAlgo.h>

Inheritance diagram for DDTECModuleAlgo:

Public Member Functions

 DDTECModuleAlgo ()
 
void execute (DDCompactView &cpv)
 
void initialize (const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs)
 
virtual ~DDTECModuleAlgo ()
 

Private Member Functions

void doPos (DDLogicalPart toPos, DDLogicalPart mother, int copyNr, double x, double y, double z, std::string rotName, DDCompactView &cpv)
 
void doPos (DDLogicalPart toPos, double x, double y, double z, std::string rotName, DDCompactView &cpv)
 

Private Attributes

double activeHeight
 
std::string activeMat
 
std::string activeRot
 
double activeZ
 
double backplaneThick
 
double bridgeHeight
 
std::string bridgeMat
 
double bridgeSep
 
double bridgeThick
 
double bridgeWidth
 
double detTilt
 
double dlBottom
 
double dlHybrid
 
double dlTop
 
double frameOver
 
double frameThick
 
double frameWidth
 
double fullHeight
 
std::string genMat
 
double hybridHeight
 
std::string hybridMat
 
double hybridThick
 
double hybridWidth
 
double hybridZ
 
std::string idNameSpace
 
double inactiveDy
 
std::string inactiveMat
 
double inactivePos
 
bool isRing6
 
bool isStereo
 
double moduleThick
 
double noOverlapShift
 
double pitchHeight
 
std::string pitchMat
 
std::string pitchRot
 
double pitchThick
 
double pitchWidth
 
double pitchZ
 
double posCorrectionPhi
 
int ringNo
 
double rPos
 
double sideFrameLHeight
 
double sideFrameLtheta
 
double sideFrameLWidth
 
double sideFrameLWidthLow
 
std::string sideFrameMat
 
double sideFrameRHeight
 
double sideFrameRtheta
 
double sideFrameRWidth
 
double sideFrameRWidthLow
 
double sideFrameThick
 
double sideFrameZ
 
double sideWidthBottom
 
double sideWidthTop
 
std::vector< double > siFrSuppBoxHeight
 
std::string siFrSuppBoxMat
 
double siFrSuppBoxThick
 
std::vector< double > siFrSuppBoxWidth
 
std::vector< double > siFrSuppBoxYPos
 
std::vector< double > siReenforceHeight
 
std::string siReenforceMat
 
double siReenforceThick
 
std::vector< double > siReenforceWidth
 
std::vector< double > siReenforceYPos
 
std::string standardRot
 
double topFrame2LHeight
 
double topFrame2RHeight
 
double topFrame2Width
 
double topFrameBotWidth
 
double topFrameHeight
 
std::string topFrameMat
 
double topFrameThick
 
double topFrameTopWidth
 
double topFrameZ
 
std::string waferMat
 
double waferPosition
 
std::string waferRot
 
double waferThick
 

Detailed Description

Definition at line 11 of file DDTECModuleAlgo.h.

Constructor & Destructor Documentation

DDTECModuleAlgo::DDTECModuleAlgo ( )

Definition at line 21 of file DDTECModuleAlgo.cc.

References LogDebug.

21  {
22  LogDebug("TECGeom") << "DDTECModuleAlgo info: Creating an instance";
23 }
#define LogDebug(id)
DDTECModuleAlgo::~DDTECModuleAlgo ( )
virtual

Definition at line 25 of file DDTECModuleAlgo.cc.

25 {}

Member Function Documentation

void DDTECModuleAlgo::doPos ( DDLogicalPart  toPos,
DDLogicalPart  mother,
int  copyNr,
double  x,
double  y,
double  z,
std::string  rotName,
DDCompactView cpv 
)
private

Definition at line 219 of file DDTECModuleAlgo.cc.

References DDSplit(), LogDebug, DDBase< N, C >::name(), DDCompactView::position(), and makeMuonMisalignmentScenario::rot.

Referenced by doPos(), and execute().

221  {
222 
223  DDTranslation tran(z, x, y);
224  DDRotation rot;
225  std::string rotstr = DDSplit(rotName).first;
226  std::string rotns;
227  if (rotstr != "NULL") {
228  rotns = DDSplit(rotName).second;
229  rot = DDRotation(DDName(rotstr, rotns));
230  } else {
231  rot = DDRotation();
232  }
233 
234  cpv.position(toPos, mother, copyNr, tran, rot);
235  LogDebug("TECGeom") << "DDTECModuleAlgo test: " << toPos.name()
236  << " positioned in "<< mother.name()
237  << " at " << tran << " with " << rot;
238 }
#define LogDebug(id)
const N & name() const
Definition: DDBase.h:82
void position(const DDLogicalPart &self, const DDLogicalPart &parent, std::string copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=NULL)
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:18
double double double z
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:66
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:4
x
Definition: VDTMath.h:216
void DDTECModuleAlgo::doPos ( DDLogicalPart  toPos,
double  x,
double  y,
double  z,
std::string  rotName,
DDCompactView cpv 
)
private

Definition at line 240 of file DDTECModuleAlgo.cc.

References doPos(), isStereo, dbtoconf::parent, posCorrectionPhi, rPos, funct::sin(), and standardRot.

241  {
242  int copyNr = 1;
243  if (isStereo) copyNr = 2;
244 
245  // This has to be done so that the Mother coordinate System of a Tub resembles
246  // the coordinate System of a Trap or Box.
247  z += rPos;
248 
249  if(isStereo){
250  // z is x , x is y
251  //z+= rPos*sin(posCorrectionPhi); <<- this is already corrected with the r position!
253  }
254  if (rotName == "NULL") rotName = standardRot;
255 
256  doPos(toPos,parent(),copyNr,x,y,z,rotName, cpv);
257 }
list parent
Definition: dbtoconf.py:74
void doPos(DDLogicalPart toPos, DDLogicalPart mother, int copyNr, double x, double y, double z, std::string rotName, DDCompactView &cpv)
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
double double double z
std::string standardRot
x
Definition: VDTMath.h:216
void DDTECModuleAlgo::execute ( DDCompactView cpv)

Definition at line 259 of file DDTECModuleAlgo.cc.

References activeHeight, activeMat, activeRot, activeZ, backplaneThick, DDSolidFactory::box(), bridgeHeight, bridgeMat, bridgeSep, bridgeThick, bridgeWidth, funct::cos(), DDBase< N, C >::ddname(), DDSplit(), detTilt, dlBottom, dlHybrid, dlTop, doPos(), first, frameOver, frameWidth, fullHeight, genMat, hybridHeight, hybridMat, hybridThick, hybridWidth, hybridZ, i, idNameSpace, inactiveDy, inactiveMat, inactivePos, isRing6, isStereo, LogDebug, DDName::name(), mergeVDriftHistosByStation::name, DDBase< N, C >::name(), dbtoconf::parent, pitchHeight, pitchMat, pitchRot, pitchThick, pitchWidth, pitchZ, DDCompactView::position(), ringNo, edm::second(), sideFrameLHeight, sideFrameLtheta, sideFrameLWidth, sideFrameLWidthLow, sideFrameMat, sideFrameRHeight, sideFrameRtheta, sideFrameRWidth, sideFrameRWidthLow, sideFrameThick, sideFrameZ, sideWidthBottom, sideWidthTop, siFrSuppBoxHeight, siFrSuppBoxMat, siFrSuppBoxThick, siFrSuppBoxWidth, siFrSuppBoxYPos, funct::sin(), siReenforceHeight, siReenforceMat, siReenforceThick, siReenforceWidth, siReenforceYPos, GlobalPosition_Frontier_DevDB_cff::tag, funct::tan(), tmp, topFrame2LHeight, topFrame2RHeight, topFrame2Width, topFrameBotWidth, topFrameHeight, topFrameMat, topFrameThick, topFrameTopWidth, topFrameZ, DDSolidFactory::trap(), waferMat, waferPosition, waferRot, and waferThick.

259  {
260 
261  LogDebug("TECGeom") << "==>> Constructing DDTECModuleAlgo...";
262  //declarations
263  double tmp;
264  double dxdif, dzdif;
265  double dxbot, dxtop; // topfr;
266  //positions
267  double xpos, ypos, zpos;
268  //dimensons
269  double bl1, bl2;
270  double h1;
271  double dx, dy, dz;
272  double thet;
273  //names
274  std::string idName;
275  std::string name;
276  std::string tag("Rphi");
277  if (isStereo) tag = "Stereo";
278  char buf[5]; //for string operations
279  //usefull constants
280  const double topFrameEndZ = 0.5 * (-waferPosition + fullHeight) + pitchHeight + hybridHeight - topFrameHeight;
281  DDName parentName = parent().name();
282  idName = parentName.name();
283  LogDebug("TECGeom") << "==>> " << idName << " parent " << parentName << " namespace " << idNameSpace;
284  DDSolid solid;
285 
286  //set global parameters
288  DDMaterial matter(matname);
289  dzdif = fullHeight + topFrameHeight;
290  if(isStereo) dzdif += 0.5*(topFrame2LHeight+topFrame2RHeight);
291 
292  dxbot = 0.5*dlBottom + frameWidth - frameOver;
293  dxtop = 0.5*dlHybrid + frameWidth - frameOver;
294  // topfr = 0.5*dlBottom * sin(detTilt);
295  if (isRing6) {
296  dxbot = dxtop;
297  dxtop = 0.5*dlTop + frameWidth - frameOver;
298  // topfr = 0.5*dlTop * sin(detTilt);
299  }
300  dxdif = dxtop - dxbot;
301 
302  //Frame Sides
303  // left Frame
304  name = idName + "SideFrameLeft";
306  matter = DDMaterial(matname);
307 
308  h1 = 0.5 * sideFrameThick;
309  dz = 0.5 * sideFrameLHeight;
310  bl1 = bl2 = 0.5 * sideFrameLWidth;
311  thet = sideFrameLtheta;
312  //for stereo modules
313  if(isStereo) bl1 = 0.5 * sideFrameLWidthLow;
314  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1, bl1,
315  bl1, 0, h1, bl2, bl2, 0);
316  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
317  << " Trap made of " << matname << " of dimensions "
318  << dz << ", "<<thet<<", 0, " << h1 << ", " << bl1 << ", "
319  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
320  << ", 0";
321  DDLogicalPart sideFrameLeft(solid.ddname(), matter, solid);
322  //translate
323  xpos = - 0.5*topFrameBotWidth +bl2+ tan(fabs(thet)) * dz;
324  ypos = sideFrameZ;
325  zpos = topFrameEndZ -dz;
326  //flip ring 6
327  if (isRing6){
328  zpos *= -1;
329  xpos -= 2*tan(fabs(thet)) * dz; // because of the flip the tan(..) to be in the other direction
330  }
331  //the stereo modules are on the back of the normal ones...
332  if(isStereo) {
333  xpos = - 0.5*topFrameBotWidth + bl2*cos(detTilt) + dz*sin(fabs(thet)+detTilt)/cos(fabs(thet));
334  xpos = -xpos;
335  zpos = topFrameEndZ -topFrame2LHeight- 0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width)-dz*cos(detTilt+fabs(thet))/cos(fabs(thet))+bl2*sin(detTilt)-0.1*CLHEP::mm;
336  }
337  //position
338  doPos(sideFrameLeft,xpos,ypos,zpos,waferRot, cpv);
339 
340  //right Frame
341  name = idName + "SideFrameRight";
343  matter = DDMaterial(matname);
344 
345  h1 = 0.5 * sideFrameThick;
346  dz = 0.5 * sideFrameRHeight;
347  bl1 = bl2 = 0.5 * sideFrameRWidth;
348  thet = sideFrameRtheta;
349  if(isStereo) bl1 = 0.5 * sideFrameRWidthLow;
350  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1, bl1,
351  bl1, 0, h1, bl2, bl2, 0);
352  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
353  << " Trap made of " << matname << " of dimensions "
354  << dz << ", "<<thet<<", 0, " << h1 << ", " << bl1 << ", "
355  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
356  << ", 0";
357  DDLogicalPart sideFrameRight(solid.ddname(), matter, solid);
358  //translate
359  xpos = 0.5*topFrameBotWidth -bl2- tan(fabs(thet)) * dz;
360  ypos = sideFrameZ;
361  zpos = topFrameEndZ -dz ;
362  if (isRing6){
363  zpos *= -1;
364  xpos += 2*tan(fabs(thet)) * dz; // because of the flip the tan(..) has to be in the other direction
365  }
366  if(isStereo){
367  xpos = 0.5*topFrameBotWidth - bl2*cos(detTilt) - dz*sin(fabs(detTilt-fabs(thet)))/cos(fabs(thet));
368  xpos = -xpos;
369  zpos = topFrameEndZ -topFrame2RHeight+ 0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width)-dz*cos(detTilt-fabs(thet))/cos(fabs(thet))-bl2*sin(detTilt)-0.1*CLHEP::mm;
370  }
371  //position it
372  doPos(sideFrameRight,xpos,ypos,zpos,waferRot, cpv);
373 
374 
375  //Supplies Box(es)
376  for (int i= 0; i < (int)(siFrSuppBoxWidth.size());i++){
377  sprintf(buf,"%i",i);
378  name = idName + "SuppliesBox"+buf;
380  matter = DDMaterial(matname);
381 
382  h1 = 0.5 * siFrSuppBoxThick;
383  dz = 0.5 * siFrSuppBoxHeight[i];
384  bl1 = bl2 = 0.5 * siFrSuppBoxWidth[i];
385  thet = sideFrameRtheta;
386  if(isStereo) thet = -atan(fabs(sideFrameRWidthLow-sideFrameRWidth)/(2*sideFrameRHeight)-tan(fabs(thet)));
387  // ^-- this calculates the lower left angel of the tipped trapezoid, which is the SideFframe...
388 
389  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet,0, h1, bl1,
390  bl1, 0, h1, bl2, bl2, 0);
391  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
392  << " Trap made of " << matname << " of dimensions "
393  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
394  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
395  << ", 0";
396  DDLogicalPart siFrSuppBox(solid.ddname(), matter, solid);
397  //translate
398  xpos = 0.5*topFrameBotWidth -sideFrameRWidth - bl1-siFrSuppBoxYPos[i]*tan(fabs(thet));
399  ypos = sideFrameZ*(0.5+(siFrSuppBoxThick/sideFrameThick)); //via * so I do not have to worry about the sign of sideFrameZ
400  zpos = topFrameEndZ - siFrSuppBoxYPos[i];
401  if (isRing6){
402  xpos += 2*fabs(tan(thet))* siFrSuppBoxYPos[i]; // the flipped issue again
403  zpos *= -1;
404  }
405  if(isStereo){
406  xpos = 0.5*topFrameBotWidth - (sideFrameRWidth+bl1)*cos(detTilt) -sin(fabs(detTilt-fabs(thet)))*(siFrSuppBoxYPos[i]+dz*(1/cos(thet)- cos(detTilt))+bl1*sin(detTilt));
407  xpos =-xpos;
408  zpos = topFrameEndZ - topFrame2RHeight - 0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width) - siFrSuppBoxYPos[i]-sin(detTilt)*sideFrameRWidth;
409  }
410  //position it;
411  doPos(siFrSuppBox,xpos,ypos,zpos,waferRot,cpv);
412  }
413  //The Hybrid
414  name = idName + "Hybrid";
415  matname = DDName(DDSplit(hybridMat).first, DDSplit(hybridMat).second);
416  matter = DDMaterial(matname);
417  dx = 0.5 * hybridWidth;
418  dy = 0.5 * hybridThick;
419  dz = 0.5 * hybridHeight;
420  solid = DDSolidFactory::box(DDName(name, idNameSpace), dx, dy, dz);
421  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
422  << " Box made of " << matname << " of dimensions "
423  << dx << ", " << dy << ", " << dz;
424  DDLogicalPart hybrid(solid.ddname(), matter, solid);
425 
426  ypos = hybridZ;
427  zpos = 0.5 * (-waferPosition + fullHeight + hybridHeight)+pitchHeight;
428  if (isRing6) zpos *=-1;
429  //position it
430  doPos(hybrid,0,ypos,zpos,"NULL", cpv);
431 
432  // Wafer
433  name = idName + tag +"Wafer";
434  matname = DDName(DDSplit(waferMat).first, DDSplit(waferMat).second);
435  matter = DDMaterial(matname);
436  bl1 = 0.5 * dlBottom;
437  bl2 = 0.5 * dlTop;
438  h1 = 0.5 * waferThick;
439  dz = 0.5 * fullHeight;
440  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1,
441  bl1, 0, h1, bl2, bl2, 0);
442  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
443  << " Trap made of " << matname << " of dimensions "
444  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
445  << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
446  << bl2 << ", 0";
447  DDLogicalPart wafer(solid.ddname(), matter, solid);
448 
449  ypos = activeZ;
450  zpos =-0.5 * waferPosition;// former and incorrect topFrameHeight;
451  if (isRing6) zpos *= -1;
452 
453  doPos(wafer,0,ypos,zpos,waferRot,cpv);
454 
455  // Active
456  name = idName + tag +"Active";
457  matname = DDName(DDSplit(activeMat).first, DDSplit(activeMat).second);
458  matter = DDMaterial(matname);
459  bl1 -= sideWidthBottom;
460  bl2 -= sideWidthTop;
461  dz = 0.5 * (waferThick-backplaneThick); // inactive backplane
462  h1 = 0.5 * activeHeight;
463  if (isRing6) { //switch bl1 <->bl2
464  tmp = bl2; bl2 =bl1; bl1 = tmp;
465  }
466  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl2,
467  bl1, 0, h1, bl2, bl1, 0);
468  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
469  << " Trap made of " << matname << " of dimensions "
470  << dz << ", 0, 0, " << h1 << ", " << bl2 << ", "
471  << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
472  << bl1 << ", 0";
473  DDLogicalPart active(solid.ddname(), matter, solid);
474  doPos(active, wafer, 1, -0.5 * backplaneThick,0,0, activeRot, cpv); // from the definition of the wafer local axes and doPos() routine
475  //inactive part in rings > 3
476  if(ringNo > 3){
477  inactivePos -= fullHeight-activeHeight; //inactivePos is measured from the beginning of the _wafer_
478  name = idName + tag +"Inactive";
479  matname = DDName(DDSplit(inactiveMat).first, DDSplit(inactiveMat).second);
480  matter = DDMaterial(matname);
481  bl1 = 0.5*dlBottom-sideWidthBottom
482  + ((0.5*dlTop-sideWidthTop-0.5*dlBottom+sideWidthBottom)/activeHeight)
483  *(activeHeight-inactivePos-inactiveDy);
484  bl2 = 0.5*dlBottom-sideWidthBottom
485  + ((0.5*dlTop-sideWidthTop-0.5*dlBottom+sideWidthBottom)/activeHeight)
486  *(activeHeight-inactivePos+inactiveDy);
487  dz = 0.5 * (waferThick-backplaneThick); // inactive backplane
488  h1 = inactiveDy;
489  if (isRing6) { //switch bl1 <->bl2
490  tmp = bl2; bl2 =bl1; bl1 = tmp;
491  }
492  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl2,
493  bl1, 0, h1, bl2, bl1, 0);
494  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
495  << " Trap made of " << matname << " of dimensions "
496  << dz << ", 0, 0, " << h1 << ", " << bl2 << ", "
497  << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
498  << bl1 << ", 0";
499  DDLogicalPart inactive(solid.ddname(), matter, solid);
500  ypos = inactivePos - 0.5*activeHeight;
501  doPos(inactive,active, 1, ypos,0,0, "NULL", cpv); // from the definition of the wafer local axes and doPos() routine
502  }
503  //Pitch Adapter
504  name = idName + "PA";
505  matname = DDName(DDSplit(pitchMat).first, DDSplit(pitchMat).second);
506  matter = DDMaterial(matname);
507 
508  if (!isStereo) {
509  dx = 0.5 * pitchWidth;
510  dy = 0.5 * pitchThick;
511  dz = 0.5 * pitchHeight;
512  solid = DDSolidFactory::box(DDName(name, idNameSpace), dx, dy, dz);
513  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
514  << " Box made of " << matname <<" of dimensions "
515  << dx << ", " << dy << ", " << dz;
516  } else {
517  dz = 0.5 * pitchWidth;
518  h1 = 0.5 * pitchThick;
519  bl1 = 0.5 * pitchHeight + 0.5 * dz * sin(detTilt);
520  bl2 = 0.5 * pitchHeight - 0.5 * dz * sin(detTilt);
521  double thet = atan((bl1-bl2)/(2.*dz));
522  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1,
523  bl1, bl1, 0, h1, bl2, bl2, 0);
524  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
525  << " Trap made of " << matname
526  << " of dimensions " << dz << ", " << thet/CLHEP::deg
527  << ", 0, " << h1 << ", " << bl1 << ", " << bl1
528  << ", 0, " << h1 << ", " << bl2 << ", " << bl2
529  << ", 0";
530  }
531  xpos = 0;
532  ypos = pitchZ;
533  zpos = 0.5 * (-waferPosition + fullHeight + pitchHeight);
534  if (isRing6) zpos *= -1;
535  if(isStereo) xpos = 0.5 * fullHeight * sin(detTilt);
536 
537  DDLogicalPart pa(solid.ddname(), matter, solid);
538  if(isStereo)doPos(pa, xpos, ypos,zpos, pitchRot, cpv);
539  else doPos(pa, xpos, ypos,zpos, "NULL", cpv);
540  //Top of the frame
541  name = idName + "TopFrame";
542  matname = DDName(DDSplit(topFrameMat).first, DDSplit(topFrameMat).second);
543  matter = DDMaterial(matname);
544 
545  h1 = 0.5 * topFrameThick;
546  dz = 0.5 * topFrameHeight;
547  bl1 = 0.5 * topFrameBotWidth;
548  bl2 = 0.5 * topFrameTopWidth;
549  if (isRing6) { // ring 6 faces the other way!
550  bl1 = 0.5 * topFrameTopWidth;
551  bl2 = 0.5 * topFrameBotWidth;
552  }
553 
554  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1,
555  bl1,0, h1, bl2, bl2, 0);
556  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
557  << " Trap made of " << matname << " of dimensions "
558  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
559  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
560  << ", 0";
561  DDLogicalPart topFrame(solid.ddname(), matter, solid);
562 
563  if(isStereo){
564  name = idName + "TopFrame2";
565  //additional object to build the not trapzoid geometry of the stereo topframes
566  dz = 0.5 * topFrame2Width;
567  h1 = 0.5 * topFrameThick;
568  bl1 = 0.5 * topFrame2LHeight;
569  bl2 = 0.5 * topFrame2RHeight;
570  double thet = atan((bl1-bl2)/(2.*dz));
571 
572  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1,
573  bl1, bl1, 0, h1, bl2, bl2, 0);
574  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
575  << " Trap made of " << matname << " of dimensions "
576  << dz << ", " << thet/CLHEP::deg << ", 0, " << h1
577  << ", " << bl1 << ", " << bl1 << ", 0, " << h1
578  << ", " << bl2 << ", " << bl2 << ", 0";
579  }
580 
581  // Position the topframe
582  ypos = topFrameZ;
584  if(isRing6){
585  zpos *=-1;
586  }
587 
588  doPos(topFrame, 0,ypos,zpos,"NULL", cpv);
589  if(isStereo){
590  //create
591  DDLogicalPart topFrame2(solid.ddname(), matter, solid);
592  zpos -= 0.5*(topFrameHeight + 0.5*(topFrame2LHeight+topFrame2RHeight));
593  doPos(topFrame2, 0,ypos,zpos,pitchRot, cpv);
594  }
595 
596  //Si - Reencorcement
597  for (int i= 0; i < (int)(siReenforceWidth.size());i++){
598  char buf[5];
599  sprintf(buf,"%i",i);
600  name = idName + "SiReenforce"+buf;
602  matter = DDMaterial(matname);
603 
604  h1 = 0.5 * siReenforceThick;
605  dz = 0.5 * siReenforceHeight[i];
606  bl1 = bl2 = 0.5 * siReenforceWidth[i];
607 
608  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1,
609  bl1, 0, h1, bl2, bl2, 0);
610  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
611  << " Trap made of " << matname << " of dimensions "
612  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
613  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
614  << ", 0";
615  DDLogicalPart siReenforce(solid.ddname(), matter, solid);
616  //translate
617  xpos =0 ;
618  ypos = sideFrameZ;
619  zpos = topFrameEndZ -dz -siReenforceYPos[i];
620 
621  if (isRing6) zpos *= -1;
622  if(isStereo){
623  xpos = (-siReenforceYPos[i]+0.5*fullHeight)*sin(detTilt);
624  // thet = detTilt;
625  // if(topFrame2RHeight > topFrame2LHeight) thet *= -1;
626  // zpos -= topFrame2RHeight + sin(thet)*(sideFrameRWidth + 0.5*dlTop);
627  zpos -= topFrame2RHeight + sin (fabs(detTilt))* 0.5*topFrame2Width;
628  }
629  doPos(siReenforce,xpos,ypos,zpos,waferRot, cpv);
630  }
631 
632  //Bridge
633  if (bridgeMat != "None") {
634  name = idName + "Bridge";
635  matname = DDName(DDSplit(bridgeMat).first, DDSplit(bridgeMat).second);
636  matter = DDMaterial(matname);
637  bl2 = 0.5*bridgeSep + bridgeWidth;
638  bl1 = bl2 - bridgeHeight * dxdif / dzdif;
639  h1 = 0.5 * bridgeThick;
640  dz = 0.5 * bridgeHeight;
641  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1,
642  bl1, 0, h1, bl2, bl2, 0);
643  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
644  << " Trap made of " << matname << " of dimensions "
645  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
646  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
647  << ", 0";
648  DDLogicalPart bridge(solid.ddname(), matter, solid);
649 
650  name = idName + "BridgeGap";
651  matname = DDName(DDSplit(genMat).first, DDSplit(genMat).second);
652  matter = DDMaterial(matname);
653  bl1 = 0.5*bridgeSep;
654  solid = DDSolidFactory::box(DDName(name,idNameSpace), bl1, h1, dz);
655  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
656  << " Box made of " << matname << " of dimensions "
657  << bl1 << ", " << h1 << ", " << dz;
658  DDLogicalPart bridgeGap(solid.ddname(), matter, solid);
659  cpv.position(bridgeGap, bridge, 1, DDTranslation(0.0, 0.0, 0.0), DDRotation());
660  LogDebug("TECGeom") << "DDTECModuleAlgo test: " << bridgeGap.name()
661  << " number 1 positioned in " << bridge.name()
662  << " at (0,0,0) with no rotation";
663  }
664 
665  LogDebug("TECGeom") << "<<== End of DDTECModuleAlgo construction ...";
666 }
#define LogDebug(id)
std::string waferRot
int i
Definition: DBlmapReader.cc:9
std::vector< double > siFrSuppBoxHeight
const N & name() const
Definition: DDBase.h:82
list parent
Definition: dbtoconf.py:74
void doPos(DDLogicalPart toPos, DDLogicalPart mother, int copyNr, double x, double y, double z, std::string rotName, DDCompactView &cpv)
double sideFrameLWidthLow
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:41
std::vector< double > siFrSuppBoxWidth
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
void position(const DDLogicalPart &self, const DDLogicalPart &parent, std::string copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=NULL)
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:18
std::string pitchMat
std::string bridgeMat
A DDSolid represents the shape of a part.
Definition: DDSolid.h:35
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
std::string activeMat
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:66
U second(std::pair< T, U > const &p)
std::string siReenforceMat
std::string hybridMat
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:88
std::string siFrSuppBoxMat
std::vector< double > siReenforceYPos
static DDSolid trap(const DDName &name, double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
Definition: DDSolid.cc:723
bool first
Definition: L1TdeRCT.cc:94
std::string pitchRot
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:519
double sideFrameRWidthLow
std::vector< double > siReenforceWidth
std::string waferMat
std::string idNameSpace
std::vector< double > siFrSuppBoxYPos
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
std::string activeRot
std::string genMat
std::vector< double > siReenforceHeight
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:4
std::string sideFrameMat
const std::string & name() const
Returns the name.
Definition: DDName.cc:87
std::string topFrameMat
std::string inactiveMat
const N & ddname() const
Definition: DDBase.h:84
void DDTECModuleAlgo::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)

Definition at line 27 of file DDTECModuleAlgo.cc.

References activeHeight, activeMat, activeRot, activeZ, backplaneThick, bridgeHeight, bridgeMat, bridgeSep, bridgeThick, bridgeWidth, detTilt, dlBottom, dlHybrid, dlTop, frameOver, frameThick, frameWidth, fullHeight, genMat, hybridHeight, hybridMat, hybridThick, hybridWidth, hybridZ, i, idNameSpace, inactiveDy, inactiveMat, inactivePos, isRing6, isStereo, LogDebug, moduleThick, noOverlapShift, DDCurrentNamespace::ns(), dbtoconf::parent, pitchHeight, pitchMat, pitchRot, pitchThick, pitchWidth, pitchZ, posCorrectionPhi, ringNo, rPos, sideFrameLHeight, sideFrameLtheta, sideFrameLWidth, sideFrameLWidthLow, sideFrameMat, sideFrameRHeight, sideFrameRtheta, sideFrameRWidth, sideFrameRWidthLow, sideFrameThick, sideFrameZ, sideWidthBottom, sideWidthTop, siFrSuppBoxHeight, siFrSuppBoxMat, siFrSuppBoxThick, siFrSuppBoxWidth, siFrSuppBoxYPos, siReenforceHeight, siReenforceMat, siReenforceThick, siReenforceWidth, siReenforceYPos, standardRot, topFrame2LHeight, topFrame2RHeight, topFrame2Width, topFrameBotWidth, topFrameHeight, topFrameMat, topFrameThick, topFrameTopWidth, topFrameZ, waferMat, waferPosition, waferRot, and waferThick.

31  {
32 
34  genMat = sArgs["GeneralMaterial"];
35 
36  DDName parentName = parent().name();
37 
38  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Parent " << parentName
39  << " NameSpace " << idNameSpace << " General Material "
40  << genMat;
41  ringNo = (int)nArgs["RingNo"];
42  moduleThick = nArgs["ModuleThick"];
43  detTilt = nArgs["DetTilt"];
44  fullHeight = nArgs["FullHeight"];
45  dlTop = nArgs["DlTop"];
46  dlBottom = nArgs["DlBottom"];
47  dlHybrid = nArgs["DlHybrid"];
48  rPos = nArgs["RPos"];
49  standardRot = sArgs["StandardRotation"];
50 
51  isRing6 = (ringNo == 6);
52 
53  LogDebug("TECGeom") << "DDTECModuleAlgo debug: ModuleThick " << moduleThick
54  << " Detector Tilt " << detTilt/CLHEP::deg << " Height "
55  << fullHeight << " dl(Top) " << dlTop << " dl(Bottom) "
56  << dlBottom << " dl(Hybrid) " << dlHybrid
57  << " rPos " << rPos << " standrad rotation "
58  << standardRot;
59 
60  frameWidth = nArgs["FrameWidth"];
61  frameThick = nArgs["FrameThick"];
62  frameOver = nArgs["FrameOver"];
63  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Frame Width " << frameWidth
64  << " Thickness " << frameThick << " Overlap "
65  << frameOver;
66 
67  topFrameMat = sArgs["TopFrameMaterial"];
68  topFrameHeight = nArgs["TopFrameHeight"];
69  topFrameTopWidth= nArgs["TopFrameTopWidth"];
70  topFrameBotWidth= nArgs["TopFrameBotWidth"];
71  topFrameThick = nArgs["TopFrameThick"];
72  topFrameZ = nArgs["TopFrameZ"];
73  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Top Frame Material "
74  << topFrameMat << " Height " << topFrameHeight
75  << " Top Width " << topFrameTopWidth << " Bottom Width "
77  << " Thickness " << topFrameThick <<" positioned at"
78  << topFrameZ;
79  double resizeH =0.96;
80  sideFrameMat = sArgs["SideFrameMaterial"];
81  sideFrameThick = nArgs["SideFrameThick"];
82  sideFrameLWidth = nArgs["SideFrameLWidth"];
83  sideFrameLHeight = resizeH*nArgs["SideFrameLHeight"];
84  sideFrameLtheta = nArgs["SideFrameLtheta"];
85  sideFrameRWidth = nArgs["SideFrameRWidth"];
86  sideFrameRHeight = resizeH*nArgs["SideFrameRHeight"];
87  sideFrameRtheta = nArgs["SideFrameRtheta"];
88  siFrSuppBoxWidth = vArgs["SiFrSuppBoxWidth"];
89  siFrSuppBoxHeight = vArgs["SiFrSuppBoxHeight"];
90  siFrSuppBoxYPos = vArgs["SiFrSuppBoxYPos"];
91  siFrSuppBoxThick = nArgs["SiFrSuppBoxThick"];
92  siFrSuppBoxMat = sArgs["SiFrSuppBoxMaterial"];
93  sideFrameZ = nArgs["SideFrameZ"];
94  LogDebug("TECGeom") << "DDTECModuleAlgo debug : Side Frame Material "
95  << sideFrameMat << " Thickness " << sideFrameThick
96  << " left Leg's Width: " << sideFrameLWidth
97  << " left Leg's Height: " << sideFrameLHeight
98  << " left Leg's tilt(theta): " << sideFrameLtheta
99  << " right Leg's Width: " << sideFrameRWidth
100  << " right Leg's Height: " << sideFrameRHeight
101  << " right Leg's tilt(theta): " << sideFrameRtheta
102  << "Supplies Box's Material: " << siFrSuppBoxMat
103  << " positioned at" << sideFrameZ;
104  for (int i= 0; i < (int)(siFrSuppBoxWidth.size());i++){
105  LogDebug("TECGeom") << " Supplies Box" << i << "'s Width: "
106  << siFrSuppBoxWidth[i] << " Supplies Box" << i
107  <<"'s Height: " << siFrSuppBoxHeight[i]
108  << " Supplies Box" << i << "'s y Position: "
109  << siFrSuppBoxYPos[i];
110  }
111  waferMat = sArgs["WaferMaterial"];
112  sideWidthTop = nArgs["SideWidthTop"];
113  sideWidthBottom= nArgs["SideWidthBottom"];
114  waferRot = sArgs["WaferRotation"];
115  waferPosition = nArgs["WaferPosition"];
116  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Wafer Material "
117  << waferMat << " Side Width Top" << sideWidthTop
118  << " Side Width Bottom" << sideWidthBottom
119  << " and positioned at "<<waferPosition
120  << " positioned with rotation" << " matrix:"
121  << waferRot;
122 
123  activeMat = sArgs["ActiveMaterial"];
124  activeHeight = nArgs["ActiveHeight"];
125  waferThick = nArgs["WaferThick"];
126  activeRot = sArgs["ActiveRotation"];
127  activeZ = nArgs["ActiveZ"];
128  backplaneThick = nArgs["BackPlaneThick"];
129  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Active Material "
130  << activeMat << " Height " << activeHeight
131  << " rotated by " << activeRot
132  << " translated by (0,0," << -0.5 * backplaneThick << ")"
133  << " Thickness/Z"
134  << waferThick-backplaneThick << "/" << activeZ;
135 
136 
137  hybridMat = sArgs["HybridMaterial"];
138  hybridHeight = nArgs["HybridHeight"];
139  hybridWidth = nArgs["HybridWidth"];
140  hybridThick = nArgs["HybridThick"];
141  hybridZ = nArgs["HybridZ"];
142  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Hybrid Material "
143  << hybridMat << " Height " << hybridHeight
144  << " Width " << hybridWidth << " Thickness "
145  << hybridThick << " Z" << hybridZ;
146 
147  pitchMat = sArgs["PitchMaterial"];
148  pitchHeight = nArgs["PitchHeight"];
149  pitchThick = nArgs["PitchThick"];
150  pitchWidth = nArgs["PitchWidth"];
151  pitchZ = nArgs["PitchZ"];
152  pitchRot = sArgs["PitchRotation"];
153  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Pitch Adapter Material "
154  << pitchMat << " Height " << pitchHeight
155  << " Thickness " << pitchThick << " position with "
156  << " rotation " << pitchRot << " at Z" << pitchZ;
157 
158  bridgeMat = sArgs["BridgeMaterial"];
159  bridgeWidth = nArgs["BridgeWidth"];
160  bridgeThick = nArgs["BridgeThick"];
161  bridgeHeight = nArgs["BridgeHeight"];
162  bridgeSep = nArgs["BridgeSeparation"];
163  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Bridge Material "
164  << bridgeMat << " Width " << bridgeWidth
165  << " Thickness " << bridgeThick << " Height "
166  << bridgeHeight << " Separation "<< bridgeSep;
167 
168  siReenforceWidth = vArgs["SiReenforcementWidth"];
169  siReenforceHeight = vArgs["SiReenforcementHeight"];
170  siReenforceYPos = vArgs["SiReenforcementPosY"];
171  siReenforceThick = nArgs["SiReenforcementThick"];
172  siReenforceMat = sArgs["SiReenforcementMaterial"];
173 
174  LogDebug("TECGeom") << "FALTBOOT DDTECModuleAlgo debug : Si-Reenforcement Material "
175  << sideFrameMat << " Thickness " << siReenforceThick;
176 
177  for (int i= 0; i < (int)(siReenforceWidth.size());i++){
178  LogDebug("TECGeom") << " SiReenforcement" << i << "'s Width: "
179  << siReenforceWidth[i] << " SiReenforcement" << i
180  << "'s Height: " << siReenforceHeight[i]
181  << " SiReenforcement" << i << "'s y Position: "
182  <<siReenforceYPos[i];
183  }
184  inactiveDy = 0;
185  inactivePos = 0;
186  if(ringNo > 3){
187  inactiveDy = nArgs["InactiveDy"];
188  inactivePos = nArgs["InactivePos"];
189  inactiveMat = sArgs["InactiveMaterial"];
190  }
191 
192  noOverlapShift = nArgs["NoOverlapShift"];
193  //Everything that is normal/stereo specific comes here
194  isStereo = (int)nArgs["isStereo"] == 1;
195  if(!isStereo){
196  LogDebug("TECGeom") << "This is a normal module, in ring "<<ringNo<<"!";
197  } else {
198  LogDebug("TECGeom") << "This is a stereo module, in ring "<<ringNo<<"!";
199  posCorrectionPhi= nArgs["PosCorrectionPhi"];
200  topFrame2LHeight = nArgs["TopFrame2LHeight"];
201  topFrame2RHeight = nArgs["TopFrame2RHeight"];
202  topFrame2Width = nArgs["TopFrame2Width"];
203  LogDebug("TECGeom") << "Phi Position corrected by " << posCorrectionPhi << "*rad";
204  LogDebug("TECGeom") << "DDTECModuleAlgo debug: stereo Top Frame 2nd Part left Heigt "
205  << topFrame2LHeight << " right Height " << topFrame2RHeight
206  << " Width " << topFrame2Width ;
207 
208  sideFrameLWidthLow = nArgs["SideFrameLWidthLow"];
209  sideFrameRWidthLow = nArgs["SideFrameRWidthLow"];
210 
211  LogDebug("TECGeom") << " left Leg's lower Width: " << sideFrameLWidthLow
212  << " right Leg's lower Width: " << sideFrameRWidthLow;
213 
214  // posCorrectionR = nArgs["PosCorrectionR"];
215  //LogDebug("TECGeom") << "Stereo Module Position Correction with R = " << posCorrectionR;
216  }
217 }
#define LogDebug(id)
std::string waferRot
int i
Definition: DBlmapReader.cc:9
std::vector< double > siFrSuppBoxHeight
list parent
Definition: dbtoconf.py:74
double sideFrameLWidthLow
std::vector< double > siFrSuppBoxWidth
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:18
static std::string & ns()
std::string pitchMat
std::string bridgeMat
std::string activeMat
std::string siReenforceMat
std::string hybridMat
std::string siFrSuppBoxMat
std::vector< double > siReenforceYPos
std::string pitchRot
double sideFrameRWidthLow
std::vector< double > siReenforceWidth
std::string waferMat
std::string idNameSpace
std::vector< double > siFrSuppBoxYPos
std::string activeRot
std::string genMat
std::string standardRot
std::vector< double > siReenforceHeight
std::string sideFrameMat
std::string topFrameMat
std::string inactiveMat

Member Data Documentation

double DDTECModuleAlgo::activeHeight
private

Definition at line 83 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::activeMat
private

Definition at line 82 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::activeRot
private

Definition at line 85 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::activeZ
private

Definition at line 86 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::backplaneThick
private

Definition at line 87 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::bridgeHeight
private

Definition at line 105 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::bridgeMat
private

Definition at line 102 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::bridgeSep
private

Definition at line 106 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::bridgeThick
private

Definition at line 104 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::bridgeWidth
private

Definition at line 103 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::detTilt
private

Definition at line 44 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::dlBottom
private

Definition at line 47 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::dlHybrid
private

Definition at line 48 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::dlTop
private

Definition at line 46 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::frameOver
private

Definition at line 51 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::frameThick
private

Definition at line 50 of file DDTECModuleAlgo.h.

Referenced by initialize().

double DDTECModuleAlgo::frameWidth
private

Definition at line 49 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::fullHeight
private

Definition at line 45 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::genMat
private

Definition at line 42 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::hybridHeight
private

Definition at line 92 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::hybridMat
private

Definition at line 91 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::hybridThick
private

Definition at line 94 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::hybridWidth
private

Definition at line 93 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::hybridZ
private

Definition at line 95 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::idNameSpace
private

Definition at line 41 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::inactiveDy
private

Definition at line 88 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::inactiveMat
private

Definition at line 90 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::inactivePos
private

Definition at line 89 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

bool DDTECModuleAlgo::isRing6
private

Definition at line 37 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

bool DDTECModuleAlgo::isStereo
private

Definition at line 36 of file DDTECModuleAlgo.h.

Referenced by doPos(), execute(), and initialize().

double DDTECModuleAlgo::moduleThick
private

Definition at line 43 of file DDTECModuleAlgo.h.

Referenced by initialize().

double DDTECModuleAlgo::noOverlapShift
private

Definition at line 34 of file DDTECModuleAlgo.h.

Referenced by initialize().

double DDTECModuleAlgo::pitchHeight
private

Definition at line 98 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::pitchMat
private

Definition at line 96 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::pitchRot
private

Definition at line 101 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::pitchThick
private

Definition at line 99 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::pitchWidth
private

Definition at line 97 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::pitchZ
private

Definition at line 100 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::posCorrectionPhi
private

Definition at line 39 of file DDTECModuleAlgo.h.

Referenced by doPos(), and initialize().

int DDTECModuleAlgo::ringNo
private

Definition at line 35 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::rPos
private

Definition at line 38 of file DDTECModuleAlgo.h.

Referenced by doPos(), and initialize().

double DDTECModuleAlgo::sideFrameLHeight
private

Definition at line 65 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideFrameLtheta
private

Definition at line 66 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideFrameLWidth
private

Definition at line 63 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideFrameLWidthLow
private

Definition at line 64 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::sideFrameMat
private

Definition at line 61 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideFrameRHeight
private

Definition at line 69 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideFrameRtheta
private

Definition at line 70 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideFrameRWidth
private

Definition at line 67 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideFrameRWidthLow
private

Definition at line 68 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideFrameThick
private

Definition at line 62 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideFrameZ
private

Definition at line 74 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideWidthBottom
private

Definition at line 80 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::sideWidthTop
private

Definition at line 79 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::vector<double> DDTECModuleAlgo::siFrSuppBoxHeight
private

Definition at line 72 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::siFrSuppBoxMat
private

Definition at line 76 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::siFrSuppBoxThick
private

Definition at line 75 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::vector<double> DDTECModuleAlgo::siFrSuppBoxWidth
private

Definition at line 71 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::vector<double> DDTECModuleAlgo::siFrSuppBoxYPos
private

Definition at line 73 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::vector<double> DDTECModuleAlgo::siReenforceHeight
private

Definition at line 107 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::siReenforceMat
private

Definition at line 112 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::siReenforceThick
private

Definition at line 111 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::vector<double> DDTECModuleAlgo::siReenforceWidth
private

Definition at line 108 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::vector<double> DDTECModuleAlgo::siReenforceYPos
private

Definition at line 109 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::standardRot
private

Definition at line 40 of file DDTECModuleAlgo.h.

Referenced by doPos(), and initialize().

double DDTECModuleAlgo::topFrame2LHeight
private

Definition at line 58 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::topFrame2RHeight
private

Definition at line 59 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::topFrame2Width
private

Definition at line 57 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::topFrameBotWidth
private

Definition at line 56 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::topFrameHeight
private

Definition at line 53 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::topFrameMat
private

Definition at line 52 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::topFrameThick
private

Definition at line 54 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::topFrameTopWidth
private

Definition at line 55 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::topFrameZ
private

Definition at line 60 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::waferMat
private

Definition at line 77 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::waferPosition
private

Definition at line 78 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

std::string DDTECModuleAlgo::waferRot
private

Definition at line 81 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

double DDTECModuleAlgo::waferThick
private

Definition at line 84 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().