CMS 3D CMS Logo

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 22 of file DDTECModuleAlgo.cc.

References LogDebug.

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

Definition at line 26 of file DDTECModuleAlgo.cc.

26 {}

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 220 of file DDTECModuleAlgo.cc.

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

Referenced by doPos(), and execute().

222  {
223 
224  DDTranslation tran(z, x, y);
225  DDRotation rot;
226  std::string rotstr = DDSplit(rotName).first;
227  std::string rotns;
228  if (rotstr != "NULL") {
229  rotns = DDSplit(rotName).second;
230  rot = DDRotation(DDName(rotstr, rotns));
231  } else {
232  rot = DDRotation();
233  }
234 
235  cpv.position(toPos, mother, copyNr, tran, rot);
236  LogDebug("TECGeom") << "DDTECModuleAlgo test: " << toPos.name()
237  << " positioned in "<< mother.name()
238  << " at " << tran << " with " << rot;
239 }
#define LogDebug(id)
const N & name() const
Definition: DDBase.h:78
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:16
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
void DDTECModuleAlgo::doPos ( DDLogicalPart  toPos,
double  x,
double  y,
double  z,
std::string  rotName,
DDCompactView cpv 
)
private

Definition at line 241 of file DDTECModuleAlgo.cc.

References doPos(), isStereo, class-composition::parent, posCorrectionPhi, rPos, funct::sin(), and standardRot.

242  {
243  int copyNr = 1;
244  if (isStereo) copyNr = 2;
245 
246  // This has to be done so that the Mother coordinate System of a Tub resembles
247  // the coordinate System of a Trap or Box.
248  z += rPos;
249 
250  if(isStereo){
251  // z is x , x is y
252  //z+= rPos*sin(posCorrectionPhi); <<- this is already corrected with the r position!
254  }
255  if (rotName == "NULL") rotName = standardRot;
256 
257  doPos(toPos,parent(),copyNr,x,y,z,rotName, cpv);
258 }
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
std::string standardRot
void DDTECModuleAlgo::execute ( DDCompactView cpv)

Definition at line 260 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(), allConversions_cfi::dz, plotBeamSpotDB::first, frameOver, frameWidth, fullHeight, genMat, hybridHeight, hybridMat, hybridThick, hybridWidth, hybridZ, i, trivialCutFlow_cff::idName, idNameSpace, inactiveDy, inactiveMat, inactivePos, createfilelist::int, isRing6, isStereo, LogDebug, dataset::name, DDName::name(), DDBase< N, C >::name(), AnalysisDataFormats_SUSYBSMObjects::pa, class-composition::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, AlCaHLTBitMon_QueryRunRegistry::string, GlobalPosition_Frontier_DevDB_cff::tag, funct::tan(), tmp, topFrame2LHeight, topFrame2RHeight, topFrame2Width, topFrameBotWidth, topFrameHeight, topFrameMat, topFrameThick, topFrameTopWidth, topFrameZ, DDSolidFactory::trap(), waferMat, waferPosition, waferRot, and waferThick.

260  {
261 
262  LogDebug("TECGeom") << "==>> Constructing DDTECModuleAlgo...";
263  //declarations
264  double tmp;
265  double dxdif, dzdif;
266  double dxbot, dxtop; // topfr;
267  //positions
268  double xpos, ypos, zpos;
269  //dimensons
270  double bl1, bl2;
271  double h1;
272  double dx, dy, dz;
273  double thet;
274  //names
277  std::string tag("Rphi");
278  if (isStereo) tag = "Stereo";
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  name = idName + "SuppliesBox" + std::to_string(i);
379  matter = DDMaterial(matname);
380 
381  h1 = 0.5 * siFrSuppBoxThick;
382  dz = 0.5 * siFrSuppBoxHeight[i];
383  bl1 = bl2 = 0.5 * siFrSuppBoxWidth[i];
384  thet = sideFrameRtheta;
385  if(isStereo) thet = -atan(fabs(sideFrameRWidthLow-sideFrameRWidth)/(2*sideFrameRHeight)-tan(fabs(thet)));
386  // ^-- this calculates the lower left angel of the tipped trapezoid, which is the SideFframe...
387 
388  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet,0, h1, bl1,
389  bl1, 0, h1, bl2, bl2, 0);
390  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
391  << " Trap made of " << matname << " of dimensions "
392  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
393  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
394  << ", 0";
395  DDLogicalPart siFrSuppBox(solid.ddname(), matter, solid);
396  //translate
397  xpos = 0.5*topFrameBotWidth -sideFrameRWidth - bl1-siFrSuppBoxYPos[i]*tan(fabs(thet));
398  ypos = sideFrameZ*(0.5+(siFrSuppBoxThick/sideFrameThick)); //via * so I do not have to worry about the sign of sideFrameZ
399  zpos = topFrameEndZ - siFrSuppBoxYPos[i];
400  if (isRing6){
401  xpos += 2*fabs(tan(thet))* siFrSuppBoxYPos[i]; // the flipped issue again
402  zpos *= -1;
403  }
404  if(isStereo){
405  xpos = 0.5*topFrameBotWidth - (sideFrameRWidth+bl1)*cos(detTilt) -sin(fabs(detTilt-fabs(thet)))*(siFrSuppBoxYPos[i]+dz*(1/cos(thet)- cos(detTilt))+bl1*sin(detTilt));
406  xpos =-xpos;
407  zpos = topFrameEndZ - topFrame2RHeight - 0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width) - siFrSuppBoxYPos[i]-sin(detTilt)*sideFrameRWidth;
408  }
409  //position it;
410  doPos(siFrSuppBox,xpos,ypos,zpos,waferRot,cpv);
411  }
412  //The Hybrid
413  name = idName + "Hybrid";
414  matname = DDName(DDSplit(hybridMat).first, DDSplit(hybridMat).second);
415  matter = DDMaterial(matname);
416  dx = 0.5 * hybridWidth;
417  dy = 0.5 * hybridThick;
418  dz = 0.5 * hybridHeight;
419  solid = DDSolidFactory::box(DDName(name, idNameSpace), dx, dy, dz);
420  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
421  << " Box made of " << matname << " of dimensions "
422  << dx << ", " << dy << ", " << dz;
423  DDLogicalPart hybrid(solid.ddname(), matter, solid);
424 
425  ypos = hybridZ;
426  zpos = 0.5 * (-waferPosition + fullHeight + hybridHeight)+pitchHeight;
427  if (isRing6) zpos *=-1;
428  //position it
429  doPos(hybrid,0,ypos,zpos,"NULL", cpv);
430 
431  // Wafer
432  name = idName + tag +"Wafer";
433  matname = DDName(DDSplit(waferMat).first, DDSplit(waferMat).second);
434  matter = DDMaterial(matname);
435  bl1 = 0.5 * dlBottom;
436  bl2 = 0.5 * dlTop;
437  h1 = 0.5 * waferThick;
438  dz = 0.5 * fullHeight;
439  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1,
440  bl1, 0, h1, bl2, bl2, 0);
441  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
442  << " Trap made of " << matname << " of dimensions "
443  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
444  << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
445  << bl2 << ", 0";
446  DDLogicalPart wafer(solid.ddname(), matter, solid);
447 
448  ypos = activeZ;
449  zpos =-0.5 * waferPosition;// former and incorrect topFrameHeight;
450  if (isRing6) zpos *= -1;
451 
452  doPos(wafer,0,ypos,zpos,waferRot,cpv);
453 
454  // Active
455  name = idName + tag +"Active";
456  matname = DDName(DDSplit(activeMat).first, DDSplit(activeMat).second);
457  matter = DDMaterial(matname);
458  bl1 -= sideWidthBottom;
459  bl2 -= sideWidthTop;
460  dz = 0.5 * (waferThick-backplaneThick); // inactive backplane
461  h1 = 0.5 * activeHeight;
462  if (isRing6) { //switch bl1 <->bl2
463  tmp = bl2; bl2 =bl1; bl1 = tmp;
464  }
465  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl2,
466  bl1, 0, h1, bl2, bl1, 0);
467  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
468  << " Trap made of " << matname << " of dimensions "
469  << dz << ", 0, 0, " << h1 << ", " << bl2 << ", "
470  << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
471  << bl1 << ", 0";
472  DDLogicalPart active(solid.ddname(), matter, solid);
473  doPos(active, wafer, 1, -0.5 * backplaneThick,0,0, activeRot, cpv); // from the definition of the wafer local axes and doPos() routine
474  //inactive part in rings > 3
475  if(ringNo > 3){
476  inactivePos -= fullHeight-activeHeight; //inactivePos is measured from the beginning of the _wafer_
477  name = idName + tag +"Inactive";
478  matname = DDName(DDSplit(inactiveMat).first, DDSplit(inactiveMat).second);
479  matter = DDMaterial(matname);
480  bl1 = 0.5*dlBottom-sideWidthBottom
481  + ((0.5*dlTop-sideWidthTop-0.5*dlBottom+sideWidthBottom)/activeHeight)
482  *(activeHeight-inactivePos-inactiveDy);
483  bl2 = 0.5*dlBottom-sideWidthBottom
484  + ((0.5*dlTop-sideWidthTop-0.5*dlBottom+sideWidthBottom)/activeHeight)
485  *(activeHeight-inactivePos+inactiveDy);
486  dz = 0.5 * (waferThick-backplaneThick); // inactive backplane
487  h1 = inactiveDy;
488  if (isRing6) { //switch bl1 <->bl2
489  tmp = bl2; bl2 =bl1; bl1 = tmp;
490  }
491  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl2,
492  bl1, 0, h1, bl2, bl1, 0);
493  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
494  << " Trap made of " << matname << " of dimensions "
495  << dz << ", 0, 0, " << h1 << ", " << bl2 << ", "
496  << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
497  << bl1 << ", 0";
498  DDLogicalPart inactive(solid.ddname(), matter, solid);
499  ypos = inactivePos - 0.5*activeHeight;
500  doPos(inactive,active, 1, ypos,0,0, "NULL", cpv); // from the definition of the wafer local axes and doPos() routine
501  }
502  //Pitch Adapter
503  name = idName + "PA";
504  matname = DDName(DDSplit(pitchMat).first, DDSplit(pitchMat).second);
505  matter = DDMaterial(matname);
506 
507  if (!isStereo) {
508  dx = 0.5 * pitchWidth;
509  dy = 0.5 * pitchThick;
510  dz = 0.5 * pitchHeight;
511  solid = DDSolidFactory::box(DDName(name, idNameSpace), dx, dy, dz);
512  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
513  << " Box made of " << matname <<" of dimensions "
514  << dx << ", " << dy << ", " << dz;
515  } else {
516  dz = 0.5 * pitchWidth;
517  h1 = 0.5 * pitchThick;
518  bl1 = 0.5 * pitchHeight + 0.5 * dz * sin(detTilt);
519  bl2 = 0.5 * pitchHeight - 0.5 * dz * sin(detTilt);
520  double thet = atan((bl1-bl2)/(2.*dz));
521  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1,
522  bl1, bl1, 0, h1, bl2, bl2, 0);
523  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
524  << " Trap made of " << matname
525  << " of dimensions " << dz << ", " << thet/CLHEP::deg
526  << ", 0, " << h1 << ", " << bl1 << ", " << bl1
527  << ", 0, " << h1 << ", " << bl2 << ", " << bl2
528  << ", 0";
529  }
530  xpos = 0;
531  ypos = pitchZ;
532  zpos = 0.5 * (-waferPosition + fullHeight + pitchHeight);
533  if (isRing6) zpos *= -1;
534  if(isStereo) xpos = 0.5 * fullHeight * sin(detTilt);
535 
536  DDLogicalPart pa(solid.ddname(), matter, solid);
537  if(isStereo)doPos(pa, xpos, ypos,zpos, pitchRot, cpv);
538  else doPos(pa, xpos, ypos,zpos, "NULL", cpv);
539  //Top of the frame
540  name = idName + "TopFrame";
541  matname = DDName(DDSplit(topFrameMat).first, DDSplit(topFrameMat).second);
542  matter = DDMaterial(matname);
543 
544  h1 = 0.5 * topFrameThick;
545  dz = 0.5 * topFrameHeight;
546  bl1 = 0.5 * topFrameBotWidth;
547  bl2 = 0.5 * topFrameTopWidth;
548  if (isRing6) { // ring 6 faces the other way!
549  bl1 = 0.5 * topFrameTopWidth;
550  bl2 = 0.5 * topFrameBotWidth;
551  }
552 
553  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1,
554  bl1,0, h1, bl2, bl2, 0);
555  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
556  << " Trap made of " << matname << " of dimensions "
557  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
558  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
559  << ", 0";
560  DDLogicalPart topFrame(solid.ddname(), matter, solid);
561 
562  if(isStereo){
563  name = idName + "TopFrame2";
564  //additional object to build the not trapzoid geometry of the stereo topframes
565  dz = 0.5 * topFrame2Width;
566  h1 = 0.5 * topFrameThick;
567  bl1 = 0.5 * topFrame2LHeight;
568  bl2 = 0.5 * topFrame2RHeight;
569  double thet = atan((bl1-bl2)/(2.*dz));
570 
571  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1,
572  bl1, bl1, 0, h1, bl2, bl2, 0);
573  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
574  << " Trap made of " << matname << " of dimensions "
575  << dz << ", " << thet/CLHEP::deg << ", 0, " << h1
576  << ", " << bl1 << ", " << bl1 << ", 0, " << h1
577  << ", " << bl2 << ", " << bl2 << ", 0";
578  }
579 
580  // Position the topframe
581  ypos = topFrameZ;
583  if(isRing6){
584  zpos *=-1;
585  }
586 
587  doPos(topFrame, 0,ypos,zpos,"NULL", cpv);
588  if(isStereo){
589  //create
590  DDLogicalPart topFrame2(solid.ddname(), matter, solid);
591  zpos -= 0.5*(topFrameHeight + 0.5*(topFrame2LHeight+topFrame2RHeight));
592  doPos(topFrame2, 0,ypos,zpos,pitchRot, cpv);
593  }
594 
595  //Si - Reencorcement
596  for (int i= 0; i < (int)(siReenforceWidth.size());i++){
597  name = idName + "SiReenforce" + std::to_string(i);
599  matter = DDMaterial(matname);
600 
601  h1 = 0.5 * siReenforceThick;
602  dz = 0.5 * siReenforceHeight[i];
603  bl1 = bl2 = 0.5 * siReenforceWidth[i];
604 
605  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1,
606  bl1, 0, h1, bl2, bl2, 0);
607  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
608  << " Trap made of " << matname << " of dimensions "
609  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
610  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
611  << ", 0";
612  DDLogicalPart siReenforce(solid.ddname(), matter, solid);
613  //translate
614  xpos =0 ;
615  ypos = sideFrameZ;
616  zpos = topFrameEndZ -dz -siReenforceYPos[i];
617 
618  if (isRing6) zpos *= -1;
619  if(isStereo){
620  xpos = (-siReenforceYPos[i]+0.5*fullHeight)*sin(detTilt);
621  // thet = detTilt;
622  // if(topFrame2RHeight > topFrame2LHeight) thet *= -1;
623  // zpos -= topFrame2RHeight + sin(thet)*(sideFrameRWidth + 0.5*dlTop);
624  zpos -= topFrame2RHeight + sin (fabs(detTilt))* 0.5*topFrame2Width;
625  }
626  doPos(siReenforce,xpos,ypos,zpos,waferRot, cpv);
627  }
628 
629  //Bridge
630  if (bridgeMat != "None") {
631  name = idName + "Bridge";
632  matname = DDName(DDSplit(bridgeMat).first, DDSplit(bridgeMat).second);
633  matter = DDMaterial(matname);
634  bl2 = 0.5*bridgeSep + bridgeWidth;
635  bl1 = bl2 - bridgeHeight * dxdif / dzdif;
636  h1 = 0.5 * bridgeThick;
637  dz = 0.5 * bridgeHeight;
638  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1,
639  bl1, 0, h1, bl2, bl2, 0);
640  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
641  << " Trap made of " << matname << " of dimensions "
642  << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
643  << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
644  << ", 0";
645  DDLogicalPart bridge(solid.ddname(), matter, solid);
646 
647  name = idName + "BridgeGap";
648  matname = DDName(DDSplit(genMat).first, DDSplit(genMat).second);
649  matter = DDMaterial(matname);
650  bl1 = 0.5*bridgeSep;
651  solid = DDSolidFactory::box(DDName(name,idNameSpace), bl1, h1, dz);
652  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
653  << " Box made of " << matname << " of dimensions "
654  << bl1 << ", " << h1 << ", " << dz;
655  DDLogicalPart bridgeGap(solid.ddname(), matter, solid);
656  cpv.position(bridgeGap, bridge, 1, DDTranslation(0.0, 0.0, 0.0), DDRotation());
657  LogDebug("TECGeom") << "DDTECModuleAlgo test: " << bridgeGap.name()
658  << " number 1 positioned in " << bridge.name()
659  << " at (0,0,0) with no rotation";
660  }
661 
662  LogDebug("TECGeom") << "<<== End of DDTECModuleAlgo construction ...";
663 }
#define LogDebug(id)
std::string waferRot
int i
Definition: DBlmapReader.cc:9
std::vector< double > siFrSuppBoxHeight
const N & name() const
Definition: DDBase.h:78
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:16
susybsm::HSCParticle pa
Definition: classes.h:8
std::string pitchMat
std::string bridgeMat
A DDSolid represents the shape of a part.
Definition: DDSolid.h:37
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:92
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:758
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:526
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:90
std::string topFrameMat
std::string inactiveMat
const N & ddname() const
Definition: DDBase.h:80
void DDTECModuleAlgo::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)

Definition at line 28 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, createfilelist::int, isRing6, isStereo, LogDebug, moduleThick, noOverlapShift, DDCurrentNamespace::ns(), class-composition::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.

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