CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

DDTECModuleAlgo Class Reference

#include <DDTECModuleAlgo.h>

List of all members.

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.

                                 {
  LogDebug("TECGeom") << "DDTECModuleAlgo info: Creating an instance";
}
DDTECModuleAlgo::~DDTECModuleAlgo ( ) [virtual]

Definition at line 25 of file DDTECModuleAlgo.cc.

{}

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

                                                                   {

  DDTranslation tran(z, x, y);
  DDRotation rot;
  std::string rotstr = DDSplit(rotName).first;
  std::string rotns; 
  if (rotstr != "NULL") {
    rotns = DDSplit(rotName).second;
    rot   = DDRotation(DDName(rotstr, rotns));
  } else {
    rot = DDRotation();
  }
        
  cpv.position(toPos, mother, copyNr, tran, rot);
  LogDebug("TECGeom") << "DDTECModuleAlgo test: " << toPos.name()
                      << " positioned in "<< mother.name() 
                      << " at " << tran  << " with " << rot;
}
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.

                                                                   {
  int           copyNr = 1;
  if (isStereo) copyNr = 2;

  // This has to be done so that the Mother coordinate System of a Tub resembles 
  // the coordinate System of a Trap or Box.
  z += rPos;

  if(isStereo){
    // z is x , x is y
    //z+= rPos*sin(posCorrectionPhi);  <<- this is already corrected with the r position!
    x+= rPos*sin(posCorrectionPhi);
  }
  if (rotName == "NULL") rotName = standardRot;

  doPos(toPos,parent(),copyNr,x,y,z,rotName, cpv);
}
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.

                                                {

  LogDebug("TECGeom") << "==>> Constructing DDTECModuleAlgo...";
  //declarations
  double tmp;
  double dxdif, dzdif;
  double dxbot, dxtop; // topfr;
  //positions
  double xpos, ypos, zpos;
  //dimensons
  double bl1, bl2;
  double h1;
  double dx, dy, dz;
  double thet;
  //names
  std::string idName;
  std::string name;
  std::string tag("Rphi");
  if (isStereo) tag = "Stereo";
  char buf[5]; //for string operations
  //usefull constants
  const double topFrameEndZ = 0.5 * (-waferPosition + fullHeight) + pitchHeight + hybridHeight - topFrameHeight;
  DDName  parentName = parent().name(); 
  idName = parentName.name();
  LogDebug("TECGeom") << "==>> " << idName << " parent " << parentName << " namespace " << idNameSpace;
  DDSolid solid;

  //set global parameters
  DDName matname(DDSplit(genMat).first, DDSplit(genMat).second);
  DDMaterial matter(matname);
  dzdif = fullHeight + topFrameHeight;
  if(isStereo) dzdif += 0.5*(topFrame2LHeight+topFrame2RHeight);
  
  dxbot = 0.5*dlBottom + frameWidth - frameOver;
  dxtop = 0.5*dlHybrid + frameWidth - frameOver;
  //  topfr = 0.5*dlBottom * sin(detTilt);
  if (isRing6) {
    dxbot = dxtop;
    dxtop = 0.5*dlTop    + frameWidth - frameOver;
    //    topfr = 0.5*dlTop    * sin(detTilt);
  }
  dxdif = dxtop - dxbot;

  //Frame Sides
  // left Frame
  name    = idName + "SideFrameLeft";
  matname =  DDName(DDSplit(sideFrameMat).first, DDSplit(sideFrameMat).second);
  matter  = DDMaterial(matname);

  h1 = 0.5 * sideFrameThick;
  dz = 0.5 * sideFrameLHeight;
  bl1 = bl2 = 0.5 * sideFrameLWidth;
  thet = sideFrameLtheta;
  //for stereo modules
  if(isStereo)  bl1 = 0.5 * sideFrameLWidthLow;
  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1, bl1, 
                               bl1, 0, h1, bl2, bl2, 0);
  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                      << " Trap made of " << matname << " of dimensions "
                      << dz << ",  "<<thet<<", 0, " << h1 << ", " << bl1 << ", "
                      << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
                      << ", 0";
  DDLogicalPart sideFrameLeft(solid.ddname(), matter, solid);
  //translate
  xpos = - 0.5*topFrameBotWidth +bl2+ tan(fabs(thet)) * dz;
  ypos = sideFrameZ;
  zpos = topFrameEndZ -dz;
  //flip ring 6
  if (isRing6){
    zpos *= -1;
    xpos -= 2*tan(fabs(thet)) * dz; // because of the flip the tan(..) to be in the other direction
  }
  //the stereo modules are on the back of the normal ones...
  if(isStereo) {
    xpos = - 0.5*topFrameBotWidth + bl2*cos(detTilt) + dz*sin(fabs(thet)+detTilt)/cos(fabs(thet));
    xpos = -xpos;
    zpos = topFrameEndZ -topFrame2LHeight- 0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width)-dz*cos(detTilt+fabs(thet))/cos(fabs(thet))+bl2*sin(detTilt)-0.1*CLHEP::mm;
  }
  //position
  doPos(sideFrameLeft,xpos,ypos,zpos,waferRot, cpv);

  //right Frame
  name    = idName + "SideFrameRight";
  matname = DDName(DDSplit(sideFrameMat).first, DDSplit(sideFrameMat).second);
  matter  = DDMaterial(matname);

  h1 = 0.5 * sideFrameThick;
  dz = 0.5 * sideFrameRHeight;
  bl1 = bl2 = 0.5 * sideFrameRWidth;
  thet = sideFrameRtheta;
  if(isStereo) bl1 = 0.5 * sideFrameRWidthLow;
  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1, bl1, 
                               bl1, 0, h1, bl2, bl2, 0);
  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                      << " Trap made of " << matname << " of dimensions "
                      << dz << ", "<<thet<<", 0, " << h1 << ", " << bl1 << ", "
                      << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
                      << ", 0";
  DDLogicalPart sideFrameRight(solid.ddname(), matter, solid);
  //translate
  xpos =  0.5*topFrameBotWidth -bl2- tan(fabs(thet)) * dz;
  ypos = sideFrameZ;
  zpos = topFrameEndZ -dz ;        
  if (isRing6){
    zpos *= -1;
    xpos += 2*tan(fabs(thet)) * dz; // because of the flip the tan(..) has to be in the other direction
  }
  if(isStereo){
    xpos = 0.5*topFrameBotWidth - bl2*cos(detTilt) - dz*sin(fabs(detTilt-fabs(thet)))/cos(fabs(thet));
    xpos = -xpos;
    zpos = topFrameEndZ -topFrame2RHeight+ 0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width)-dz*cos(detTilt-fabs(thet))/cos(fabs(thet))-bl2*sin(detTilt)-0.1*CLHEP::mm;
  }
  //position it
  doPos(sideFrameRight,xpos,ypos,zpos,waferRot, cpv);


  //Supplies Box(es)
  for (int i= 0; i < (int)(siFrSuppBoxWidth.size());i++){
    sprintf(buf,"%i",i);
    name    = idName + "SuppliesBox"+buf;
    matname = DDName(DDSplit(siFrSuppBoxMat).first, DDSplit(siFrSuppBoxMat).second);
    matter  = DDMaterial(matname);
    
    h1 = 0.5 * siFrSuppBoxThick;
    dz = 0.5 * siFrSuppBoxHeight[i];
    bl1 = bl2 = 0.5 * siFrSuppBoxWidth[i];
    thet = sideFrameRtheta;
    if(isStereo) thet = -atan(fabs(sideFrameRWidthLow-sideFrameRWidth)/(2*sideFrameRHeight)-tan(fabs(thet)));
                   // ^-- this calculates the lower left angel of the tipped trapezoid, which is the SideFframe...
    
    solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet,0, h1, bl1,
                                 bl1, 0, h1, bl2, bl2, 0);
    LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                        << " Trap made of " << matname << " of dimensions "
                        << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
                        << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
                        << ", 0";
    DDLogicalPart siFrSuppBox(solid.ddname(), matter, solid);
    //translate
    xpos =  0.5*topFrameBotWidth  -sideFrameRWidth - bl1-siFrSuppBoxYPos[i]*tan(fabs(thet));
    ypos = sideFrameZ*(0.5+(siFrSuppBoxThick/sideFrameThick)); //via * so I do not have to worry about the sign of sideFrameZ
    zpos = topFrameEndZ - siFrSuppBoxYPos[i];        
    if (isRing6){ 
      xpos += 2*fabs(tan(thet))*  siFrSuppBoxYPos[i]; // the flipped issue again
      zpos *= -1;
    }
    if(isStereo){ 
      xpos = 0.5*topFrameBotWidth - (sideFrameRWidth+bl1)*cos(detTilt) -sin(fabs(detTilt-fabs(thet)))*(siFrSuppBoxYPos[i]+dz*(1/cos(thet)- cos(detTilt))+bl1*sin(detTilt));
      xpos =-xpos;
      zpos = topFrameEndZ - topFrame2RHeight - 0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width) - siFrSuppBoxYPos[i]-sin(detTilt)*sideFrameRWidth;
    }
    //position it;
    doPos(siFrSuppBox,xpos,ypos,zpos,waferRot,cpv);
  }
  //The Hybrid
  name    = idName + "Hybrid";
  matname = DDName(DDSplit(hybridMat).first, DDSplit(hybridMat).second);
  matter  = DDMaterial(matname);
  dx = 0.5 * hybridWidth;
  dy = 0.5 * hybridThick;
  dz        = 0.5 * hybridHeight;
  solid = DDSolidFactory::box(DDName(name, idNameSpace), dx, dy, dz);
  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                                          << " Box made of " << matname << " of dimensions "
                                          << dx << ", " << dy << ", " << dz;
  DDLogicalPart hybrid(solid.ddname(), matter, solid);

  ypos = hybridZ;
  zpos = 0.5 * (-waferPosition + fullHeight + hybridHeight)+pitchHeight;
  if (isRing6)  zpos *=-1;
  //position it
  doPos(hybrid,0,ypos,zpos,"NULL", cpv);  

  // Wafer
  name    = idName + tag +"Wafer";
  matname = DDName(DDSplit(waferMat).first, DDSplit(waferMat).second);
  matter  = DDMaterial(matname);
  bl1     = 0.5 * dlBottom;
  bl2     = 0.5 * dlTop;
  h1      = 0.5 * waferThick;
  dz      = 0.5 * fullHeight;
  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1, 
                                                           bl1, 0, h1, bl2, bl2, 0);
  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
                        << " Trap made of " << matname << " of dimensions "
                        << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
                        << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
                        << bl2 << ", 0";
  DDLogicalPart wafer(solid.ddname(), matter, solid);
  
  ypos = activeZ;
  zpos =-0.5 * waferPosition;// former and incorrect topFrameHeight;
  if (isRing6) zpos *= -1;
  
  doPos(wafer,0,ypos,zpos,waferRot,cpv);
  
  // Active
  name    = idName + tag +"Active";
  matname = DDName(DDSplit(activeMat).first, DDSplit(activeMat).second);
  matter  = DDMaterial(matname);
  bl1    -= sideWidthBottom;
  bl2    -= sideWidthTop;
  dz      = 0.5 * (waferThick-backplaneThick); // inactive backplane
  h1      = 0.5 * activeHeight;
  if (isRing6) { //switch bl1 <->bl2
    tmp = bl2;  bl2 =bl1;       bl1 = tmp;
  }
  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl2, 
                               bl1, 0, h1, bl2, bl1, 0);
  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                      << " Trap made of " << matname << " of dimensions "
                      << dz << ", 0, 0, " << h1 << ", " << bl2 << ", "
                      << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
                      << bl1 << ", 0";
  DDLogicalPart active(solid.ddname(), matter, solid);
  doPos(active, wafer, 1, -0.5 * backplaneThick,0,0, activeRot, cpv); // from the definition of the wafer local axes and doPos() routine
  //inactive part in rings > 3
  if(ringNo > 3){
    inactivePos -= fullHeight-activeHeight; //inactivePos is measured from the beginning of the _wafer_
    name    = idName + tag +"Inactive";
    matname = DDName(DDSplit(inactiveMat).first, DDSplit(inactiveMat).second);
    matter  = DDMaterial(matname);
    bl1     = 0.5*dlBottom-sideWidthBottom
              + ((0.5*dlTop-sideWidthTop-0.5*dlBottom+sideWidthBottom)/activeHeight)
                *(activeHeight-inactivePos-inactiveDy);
    bl2    =  0.5*dlBottom-sideWidthBottom
              + ((0.5*dlTop-sideWidthTop-0.5*dlBottom+sideWidthBottom)/activeHeight)
                *(activeHeight-inactivePos+inactiveDy);
    dz      = 0.5 * (waferThick-backplaneThick); // inactive backplane
    h1      = inactiveDy;
    if (isRing6) { //switch bl1 <->bl2
      tmp = bl2;        bl2 =bl1;       bl1 = tmp;
    }
    solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl2, 
                                 bl1, 0, h1, bl2, bl1, 0);
    LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                        << " Trap made of " << matname << " of dimensions "
                        << dz << ", 0, 0, " << h1 << ", " << bl2 << ", "
                        << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
                        << bl1 << ", 0";  
    DDLogicalPart inactive(solid.ddname(), matter, solid);
    ypos = inactivePos - 0.5*activeHeight;
    doPos(inactive,active, 1, ypos,0,0, "NULL", cpv); // from the definition of the wafer local axes and doPos() routine
  }
  //Pitch Adapter
  name    = idName + "PA";
  matname = DDName(DDSplit(pitchMat).first, DDSplit(pitchMat).second);
  matter  = DDMaterial(matname);
  
  if (!isStereo) {
    dx      = 0.5 * pitchWidth;
    dy      = 0.5 * pitchThick;
    dz      = 0.5 * pitchHeight;
    solid   = DDSolidFactory::box(DDName(name, idNameSpace), dx, dy, dz);
    LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                        << " Box made of " << matname <<" of dimensions "
                        << dx << ", " << dy << ", " << dz;
  } else {
    dz      = 0.5 * pitchWidth;    
    h1      = 0.5 * pitchThick;
    bl1     = 0.5 * pitchHeight + 0.5 * dz * sin(detTilt);
    bl2     = 0.5 * pitchHeight - 0.5 * dz * sin(detTilt);
    double thet = atan((bl1-bl2)/(2.*dz));
    solid   = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1,
                                   bl1, bl1, 0, h1, bl2, bl2, 0);
    LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
                        << " Trap made of " << matname 
                        << " of dimensions " << dz << ", " << thet/CLHEP::deg
                        << ", 0, " << h1 << ", " << bl1 << ", " << bl1
                        << ", 0, " << h1 << ", " << bl2 << ", " << bl2
                        << ", 0";
  }
  xpos = 0;
  ypos = pitchZ;
  zpos = 0.5 * (-waferPosition + fullHeight + pitchHeight);
  if (isRing6) zpos *= -1;
  if(isStereo)    xpos    = 0.5 * fullHeight * sin(detTilt);
  
  DDLogicalPart pa(solid.ddname(), matter, solid);
  if(isStereo)doPos(pa, xpos, ypos,zpos, pitchRot, cpv);
  else        doPos(pa, xpos, ypos,zpos, "NULL", cpv);
  //Top of the frame
  name = idName + "TopFrame";
  matname = DDName(DDSplit(topFrameMat).first, DDSplit(topFrameMat).second);
  matter  = DDMaterial(matname);
  
  h1 = 0.5 * topFrameThick;
  dz = 0.5 * topFrameHeight;
  bl1 = 0.5 * topFrameBotWidth;
  bl2 = 0.5 * topFrameTopWidth;
  if (isRing6) {    // ring 6 faces the other way!
    bl1 = 0.5 * topFrameTopWidth;
    bl2 = 0.5 * topFrameBotWidth;
  }
  
  solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1, 
                               bl1,0, h1, bl2, bl2, 0);
  LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                      << " Trap made of " << matname << " of dimensions " 
                      << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "  
                      << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
                      << ", 0";
  DDLogicalPart topFrame(solid.ddname(), matter, solid);
  
  if(isStereo){ 
    name = idName + "TopFrame2";
    //additional object to build the not trapzoid geometry of the stereo topframes
    dz      = 0.5 * topFrame2Width;    
    h1      = 0.5 * topFrameThick;
    bl1     = 0.5 * topFrame2LHeight;
    bl2     = 0.5 * topFrame2RHeight;
    double thet = atan((bl1-bl2)/(2.*dz));
        
    solid   = DDSolidFactory::trap(DDName(name,idNameSpace), dz, thet, 0, h1,
                                   bl1, bl1, 0, h1, bl2, bl2, 0);
    LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
                        << " Trap made of " << matname << " of dimensions "
                        << dz << ", " << thet/CLHEP::deg << ", 0, " << h1 
                        << ", " << bl1 << ", " << bl1 << ", 0, " << h1 
                        << ", " << bl2 << ", " << bl2 << ", 0";
  }
  
  // Position the topframe
  ypos = topFrameZ;
  zpos = 0.5 * (-waferPosition + fullHeight - topFrameHeight)+ pitchHeight + hybridHeight;
  if(isRing6){
    zpos *=-1;
  }

  doPos(topFrame, 0,ypos,zpos,"NULL", cpv);
  if(isStereo){
    //create
    DDLogicalPart topFrame2(solid.ddname(), matter, solid);
    zpos -= 0.5*(topFrameHeight + 0.5*(topFrame2LHeight+topFrame2RHeight));
    doPos(topFrame2, 0,ypos,zpos,pitchRot, cpv);
  }
  
  //Si - Reencorcement
  for (int i= 0; i < (int)(siReenforceWidth.size());i++){
    char buf[5];
    sprintf(buf,"%i",i);
    name    = idName + "SiReenforce"+buf;
    matname = DDName(DDSplit(siReenforceMat).first, DDSplit(siReenforceMat).second);
    matter  = DDMaterial(matname);
    
    h1 = 0.5 * siReenforceThick;
    dz = 0.5 * siReenforceHeight[i];
    bl1 = bl2 = 0.5 * siReenforceWidth[i];
    
    solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1, 
                                 bl1, 0, h1, bl2, bl2, 0);
    LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                        << " Trap made of " << matname << " of dimensions "
                        << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
                        << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
                        << ", 0";
    DDLogicalPart siReenforce(solid.ddname(), matter, solid);
    //translate
    xpos =0 ;
    ypos =  sideFrameZ;
    zpos = topFrameEndZ -dz -siReenforceYPos[i];
        
    if (isRing6)  zpos *= -1;
    if(isStereo){ 
      xpos = (-siReenforceYPos[i]+0.5*fullHeight)*sin(detTilt);
      //  thet = detTilt;
      //  if(topFrame2RHeight > topFrame2LHeight) thet *= -1;
      //    zpos -= topFrame2RHeight + sin(thet)*(sideFrameRWidth + 0.5*dlTop);
      zpos -= topFrame2RHeight + sin (fabs(detTilt))* 0.5*topFrame2Width;
    }
    doPos(siReenforce,xpos,ypos,zpos,waferRot, cpv);
  }

  //Bridge 
  if (bridgeMat != "None") {
    name    = idName + "Bridge";
    matname = DDName(DDSplit(bridgeMat).first, DDSplit(bridgeMat).second);
    matter  = DDMaterial(matname);
    bl2     = 0.5*bridgeSep + bridgeWidth;
    bl1     = bl2 - bridgeHeight * dxdif / dzdif;
    h1      = 0.5 * bridgeThick;
    dz      = 0.5 * bridgeHeight;
    solid = DDSolidFactory::trap(DDName(name,idNameSpace), dz, 0, 0, h1, bl1, 
                                 bl1, 0, h1, bl2, bl2, 0);
    LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name()
                        << " Trap made of " << matname << " of dimensions "
                        << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
                        << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
                        << ", 0";
    DDLogicalPart bridge(solid.ddname(), matter, solid);

    name    = idName + "BridgeGap";
    matname = DDName(DDSplit(genMat).first, DDSplit(genMat).second);
    matter  = DDMaterial(matname);
    bl1     = 0.5*bridgeSep;
    solid = DDSolidFactory::box(DDName(name,idNameSpace), bl1, h1, dz);
    LogDebug("TECGeom") << "DDTECModuleAlgo test:\t" << solid.name() 
                        << " Box made of " << matname << " of dimensions "
                        << bl1 << ", " << h1 << ", " << dz;
    DDLogicalPart bridgeGap(solid.ddname(), matter, solid);
   cpv.position(bridgeGap, bridge, 1, DDTranslation(0.0, 0.0, 0.0), DDRotation());
    LogDebug("TECGeom") << "DDTECModuleAlgo test: " << bridgeGap.name() 
                        << " number 1 positioned in " << bridge.name()
                        << " at (0,0,0) with no rotation";
  }

  LogDebug("TECGeom") << "<<== End of DDTECModuleAlgo construction ...";
}
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.

                                                                         {

  idNameSpace  = DDCurrentNamespace::ns();
  genMat       = sArgs["GeneralMaterial"];

  DDName parentName = parent().name(); 

  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Parent " << parentName 
                      << " NameSpace " << idNameSpace << " General Material "
                      << genMat;
  ringNo = (int)nArgs["RingNo"];
  moduleThick    = nArgs["ModuleThick"];
  detTilt        = nArgs["DetTilt"];
  fullHeight     = nArgs["FullHeight"];
  dlTop          = nArgs["DlTop"];
  dlBottom       = nArgs["DlBottom"];
  dlHybrid       = nArgs["DlHybrid"];
  rPos           = nArgs["RPos"];
  standardRot    = sArgs["StandardRotation"];

  isRing6 = (ringNo == 6);

  LogDebug("TECGeom") << "DDTECModuleAlgo debug: ModuleThick " << moduleThick
                      << " Detector Tilt " << detTilt/CLHEP::deg << " Height "
                      << fullHeight << " dl(Top) " << dlTop << " dl(Bottom) "
                      << dlBottom << " dl(Hybrid) " << dlHybrid
                      << " rPos " << rPos << " standrad rotation " 
                      << standardRot;

  frameWidth     = nArgs["FrameWidth"];
  frameThick     = nArgs["FrameThick"];
  frameOver      = nArgs["FrameOver"];
  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Frame Width " << frameWidth 
                      << " Thickness " << frameThick << " Overlap " 
                      << frameOver;

  topFrameMat    = sArgs["TopFrameMaterial"];
  topFrameHeight = nArgs["TopFrameHeight"];
  topFrameTopWidth= nArgs["TopFrameTopWidth"];
  topFrameBotWidth= nArgs["TopFrameBotWidth"];
  topFrameThick  = nArgs["TopFrameThick"];
  topFrameZ      = nArgs["TopFrameZ"];
  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Top Frame Material " 
                      << topFrameMat << " Height " << topFrameHeight 
                      << " Top Width " << topFrameTopWidth << " Bottom Width "
                      << topFrameTopWidth
                      << " Thickness " << topFrameThick <<" positioned at"
                      << topFrameZ;
  double resizeH =0.96;
  sideFrameMat   = sArgs["SideFrameMaterial"];
  sideFrameThick = nArgs["SideFrameThick"];
  sideFrameLWidth =  nArgs["SideFrameLWidth"]; 
  sideFrameLHeight = resizeH*nArgs["SideFrameLHeight"];
  sideFrameLtheta =  nArgs["SideFrameLtheta"];
  sideFrameRWidth =  nArgs["SideFrameRWidth"]; 
  sideFrameRHeight = resizeH*nArgs["SideFrameRHeight"];
  sideFrameRtheta =  nArgs["SideFrameRtheta"];
  siFrSuppBoxWidth  = vArgs["SiFrSuppBoxWidth"];
  siFrSuppBoxHeight = vArgs["SiFrSuppBoxHeight"];
  siFrSuppBoxYPos = vArgs["SiFrSuppBoxYPos"];
  siFrSuppBoxThick =  nArgs["SiFrSuppBoxThick"]; 
  siFrSuppBoxMat = sArgs["SiFrSuppBoxMaterial"]; 
  sideFrameZ     = nArgs["SideFrameZ"];
  LogDebug("TECGeom") << "DDTECModuleAlgo debug : Side Frame Material " 
                      << sideFrameMat << " Thickness " << sideFrameThick
                      << " left Leg's Width: " << sideFrameLWidth
                      << " left Leg's Height: " << sideFrameLHeight
                      << " left Leg's tilt(theta): " << sideFrameLtheta
                      << " right Leg's Width: " << sideFrameRWidth
                      << " right Leg's Height: " << sideFrameRHeight
                      << " right Leg's tilt(theta): " << sideFrameRtheta
                      << "Supplies Box's Material: " << siFrSuppBoxMat
                      << " positioned at" << sideFrameZ;
  for (int i= 0; i < (int)(siFrSuppBoxWidth.size());i++){
    LogDebug("TECGeom") << " Supplies Box" << i << "'s Width: " 
                        << siFrSuppBoxWidth[i] << " Supplies Box" << i
                        <<"'s Height: " << siFrSuppBoxHeight[i]
                        << " Supplies Box" << i << "'s y Position: " 
                        << siFrSuppBoxYPos[i];
  }
  waferMat       = sArgs["WaferMaterial"];
  sideWidthTop   = nArgs["SideWidthTop"];
  sideWidthBottom= nArgs["SideWidthBottom"];
  waferRot       = sArgs["WaferRotation"];
  waferPosition  = nArgs["WaferPosition"];
  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Wafer Material " 
                      << waferMat << " Side Width Top" << sideWidthTop
                      << " Side Width Bottom" << sideWidthBottom
                      << " and positioned at "<<waferPosition
                      << " positioned with rotation"    << " matrix:"
                      << waferRot;

  activeMat      = sArgs["ActiveMaterial"];
  activeHeight   = nArgs["ActiveHeight"];
  waferThick     = nArgs["WaferThick"];
  activeRot      = sArgs["ActiveRotation"];
  activeZ        = nArgs["ActiveZ"];
  backplaneThick = nArgs["BackPlaneThick"];
  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Active Material " 
                      << activeMat << " Height " << activeHeight 
                      << " rotated by " << activeRot
                      << " translated by (0,0," << -0.5 * backplaneThick << ")"
                      << " Thickness/Z"
                      << waferThick-backplaneThick << "/" << activeZ;

  
  hybridMat      = sArgs["HybridMaterial"];
  hybridHeight   = nArgs["HybridHeight"];
  hybridWidth    = nArgs["HybridWidth"];
  hybridThick    = nArgs["HybridThick"];
  hybridZ        = nArgs["HybridZ"];
  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Hybrid Material " 
                      << hybridMat << " Height " << hybridHeight 
                      << " Width " << hybridWidth << " Thickness " 
                      << hybridThick << " Z"  << hybridZ;

  pitchMat       = sArgs["PitchMaterial"];
  pitchHeight    = nArgs["PitchHeight"];
  pitchThick     = nArgs["PitchThick"];
  pitchWidth     = nArgs["PitchWidth"];
  pitchZ         = nArgs["PitchZ"];
  pitchRot       = sArgs["PitchRotation"];
  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Pitch Adapter Material " 
                      << pitchMat << " Height " << pitchHeight 
                      << " Thickness " << pitchThick << " position with "
                      << " rotation " << pitchRot << " at Z" << pitchZ;

  bridgeMat      = sArgs["BridgeMaterial"];
  bridgeWidth    = nArgs["BridgeWidth"];
  bridgeThick    = nArgs["BridgeThick"];
  bridgeHeight   = nArgs["BridgeHeight"];
  bridgeSep      = nArgs["BridgeSeparation"];
  LogDebug("TECGeom") << "DDTECModuleAlgo debug: Bridge Material " 
                      << bridgeMat << " Width " << bridgeWidth 
                      << " Thickness " << bridgeThick << " Height " 
                      << bridgeHeight << " Separation "<< bridgeSep;

  siReenforceWidth  = vArgs["SiReenforcementWidth"];
  siReenforceHeight = vArgs["SiReenforcementHeight"];
  siReenforceYPos =   vArgs["SiReenforcementPosY"];
  siReenforceThick =  nArgs["SiReenforcementThick"]; 
  siReenforceMat   =  sArgs["SiReenforcementMaterial"];
 
  LogDebug("TECGeom") << "FALTBOOT DDTECModuleAlgo debug : Si-Reenforcement Material " 
                      << sideFrameMat << " Thickness " << siReenforceThick;
    
  for (int i= 0; i < (int)(siReenforceWidth.size());i++){
    LogDebug("TECGeom") << " SiReenforcement" << i << "'s Width: " 
                        << siReenforceWidth[i] << " SiReenforcement" << i 
                        << "'s Height: " << siReenforceHeight[i]
                        << " SiReenforcement" << i << "'s y Position: "
                        <<siReenforceYPos[i];
  }
  inactiveDy  = 0;
  inactivePos = 0;
  if(ringNo > 3){
    inactiveDy = nArgs["InactiveDy"];
    inactivePos = nArgs["InactivePos"];
    inactiveMat = sArgs["InactiveMaterial"];
  }

  noOverlapShift = nArgs["NoOverlapShift"];
  //Everything that is normal/stereo specific comes here
  isStereo = (int)nArgs["isStereo"] == 1;
  if(!isStereo){
    LogDebug("TECGeom") << "This is a normal module, in ring "<<ringNo<<"!"; 
  } else {
    LogDebug("TECGeom") << "This is a stereo module, in ring "<<ringNo<<"!"; 
    posCorrectionPhi= nArgs["PosCorrectionPhi"];
    topFrame2LHeight = nArgs["TopFrame2LHeight"];
    topFrame2RHeight = nArgs["TopFrame2RHeight"];
    topFrame2Width   = nArgs["TopFrame2Width"];
    LogDebug("TECGeom") << "Phi Position corrected by " << posCorrectionPhi << "*rad";
    LogDebug("TECGeom") << "DDTECModuleAlgo debug: stereo Top Frame 2nd Part left Heigt " 
                        << topFrame2LHeight << " right Height " << topFrame2RHeight 
                        << " Width " << topFrame2Width ;
    
    sideFrameLWidthLow =  nArgs["SideFrameLWidthLow"]; 
    sideFrameRWidthLow =  nArgs["SideFrameRWidthLow"]; 

    LogDebug("TECGeom") << " left Leg's lower Width: " << sideFrameLWidthLow
                        << " right Leg's lower Width: " << sideFrameRWidthLow;

    // posCorrectionR =  nArgs["PosCorrectionR"]; 
    //LogDebug("TECGeom") << "Stereo Module Position Correction with R = " << posCorrectionR;
  }
}

Member Data Documentation

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

Definition at line 87 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

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

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

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

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

Definition at line 65 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

Definition at line 66 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

Definition at line 63 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

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

Definition at line 69 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

Definition at line 70 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

Definition at line 67 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

Definition at line 68 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

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

Definition at line 80 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

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

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

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

Definition at line 58 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

Definition at line 59 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

Definition at line 57 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

Definition at line 56 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

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

Definition at line 54 of file DDTECModuleAlgo.h.

Referenced by execute(), and initialize().

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

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