CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Attributes

DDHCalEndcapAlgo Class Reference

#include <DDHCalEndcapAlgo.h>

List of all members.

Public Member Functions

 DDHCalEndcapAlgo ()
int equipModule (unsigned int i) const
void execute (DDCompactView &cpv)
std::string getAbsMat () const
double getAngBot () const
double getAngGap () const
double getAngTop () const
double getDrEnd () const
double getDzShift () const
double getDzStep () const
int getEndcaps () const
std::string getGenMat () const
double getHeboxDepth () const
int getLayer (unsigned int i, unsigned int j) const
int getLayerN (unsigned int i) const
std::string getLayerName (unsigned int i) const
int getLayers () const
double getLayerT (unsigned int i) const
int getLayerType (unsigned int i) const
std::string getModMat (unsigned int i) const
std::string getModName (unsigned int i) const
int getModType (unsigned int i) const
int getModules () const
int getNsectors () const
int getNsectortot () const
int getPhi () const
std::string getPhiName (unsigned int i) const
std::string getPlastMat () const
double getRinBlock1 (unsigned i) const
double getRinBlock2 (unsigned i) const
double getRinDip () const
double getRinKink () const
std::string getRotation () const
std::string getRotMat () const
double getRout () const
double getRoutBlock1 (unsigned i) const
double getRoutBlock2 (unsigned i) const
double getRoutDip () const
std::string getScintMat () const
double getScintT (unsigned int i) const
int getSectionModule (unsigned i) const
double getSlope () const
double getThick (unsigned int i) const
double getTolAbs () const
double getTolPos () const
double getTrim (unsigned int i, unsigned int j) const
double getZ0Beam () const
double getZ1Beam () const
double getZEnd () const
double getZFront () const
double getZiBody () const
double getZiDip () const
double getZiKink () const
double getZiL0Body () const
double getZiL0Nose () const
double getZiNose () const
double getZmaxBlock (unsigned i) const
double getZminBlock (unsigned i) const
double getZShift () const
double getZShiftHac2 () const
void initialize (const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs)
virtual ~DDHCalEndcapAlgo ()

Protected Member Functions

void constructGeneralVolume (DDCompactView &cpv)
void constructInsideModule (DDLogicalPart module, int mod, DDCompactView &cpv)
void constructInsideModule0 (DDLogicalPart module, int mod, DDCompactView &cpv)
void constructInsideSector (DDLogicalPart sector, DDCompactView &cpv)
void constructScintLayer (DDLogicalPart glog, double pDz, double yh, double bl, double tl, double alp, std::string name, int id, DDCompactView &cpv)
void parameterLayer (int iphi, double rinF, double routF, double rinB, double routB, double zi, double zo, double &yh1, double &bl1, double &tl1, double &yh2, double &bl2, double &tl2, double &alp, double &theta, double &phi, double &xpos, double &ypos, double &zcpv)
void parameterLayer0 (int mod, int layer, int iphi, double &yh, double &bl, double &tl, double &alp, double &xpos, double &ypos, double &zcpv)

Private Attributes

std::string absMat
double angBot
double angGap
double angTop
double drEnd
double dzShift
double dzStep
std::vector< int > eModule
std::string genMaterial
double heboxDepth
std::string idName
std::string idNameSpace
int idOffset
std::vector< int > layerN
std::vector< int > layerN0
std::vector< int > layerN1
std::vector< int > layerN2
std::vector< int > layerN3
std::vector< int > layerN4
std::vector< int > layerN5
std::vector< std::string > layerName
int layers
std::vector< double > layerT
std::vector< int > layerType
std::vector< std::string > modMat
std::vector< std::string > modName
std::vector< int > modType
int modules
int nEndcap
int nsectors
int nsectortot
std::vector< std::string > phiName
int phiSections
std::string plastMat
double riDip
double riKink
std::vector< double > rinBlock1
std::vector< double > rinBlock2
double roDip
std::string rotation
std::string rotHalf
std::string rotmat
std::string rotns
double rout
std::vector< double > routBlock1
std::vector< double > routBlock2
std::string scintMat
std::vector< double > scintT
std::vector< int > sectionModule
double slope
std::vector< double > thick
double tolAbs
double tolPos
std::vector< double > trimLeft
std::vector< double > trimRight
double z0Beam
double z1Beam
double zEnd
double zFront
double ziBody
double ziDip
double ziKink
double ziL0Body
double ziL0Nose
double ziNose
std::vector< double > zmaxBlock
std::vector< double > zminBlock
double zShift
double zShiftHac2

Detailed Description

Definition at line 10 of file DDHCalEndcapAlgo.h.


Constructor & Destructor Documentation

DDHCalEndcapAlgo::DDHCalEndcapAlgo ( )

Definition at line 22 of file DDHCalEndcapAlgo.cc.

References LogDebug.

                                  :
  modMat(0),modType(0),sectionModule(0),layerN(0),layerN0(0),layerN1(0),
  layerN2(0),layerN3(0),layerN4(0),layerN5(0),thick(0),trimLeft(0),
  trimRight(0),zminBlock(0),zmaxBlock(0),rinBlock1(0),routBlock1(0),
  rinBlock2(0),routBlock2(0),layerType(0),layerT(0),scintT(0) {
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo info: Creating an instance";
}
DDHCalEndcapAlgo::~DDHCalEndcapAlgo ( ) [virtual]

Definition at line 30 of file DDHCalEndcapAlgo.cc.

{}

Member Function Documentation

void DDHCalEndcapAlgo::constructGeneralVolume ( DDCompactView cpv) [protected]

!!!!!!!!!!!!!!!!Should be zero. And removed as soon as

Definition at line 323 of file DDHCalEndcapAlgo.cc.

References alpha, constructInsideSector(), dbl_to_string(), DDrot(), DDSplit(), equipModule(), first, getAbsMat(), getAngBot(), getAngTop(), getDrEnd(), getDzShift(), getEndcaps(), getGenMat(), getNsectors(), getNsectortot(), getRinDip(), getRinKink(), getRotation(), getRout(), getRoutDip(), getSlope(), getZ1Beam(), getZEnd(), getZFront(), getZiBody(), getZiDip(), getZiKink(), getZiL0Body(), getZShift(), getZShiftHac2(), i, idName, idNameSpace, LogDebug, DDBase< N, C >::name(), mergeVDriftHistosByStation::name, dbtoconf::parent, phi, pi, DDSolidFactory::polyhedra(), DDCompactView::position(), rotation, rotHalf, rotns, edm::second(), and funct::tan().

Referenced by execute().

                                                                {
  
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: General volume...";
  bool proto = true;
  for (int i=0; i<3; i++) 
    if (equipModule(i) > 0) proto = false;

  DDRotation    rot;
  if (DDSplit(getRotation()).first == "NULL") rot = DDRotation();
  else rot = DDRotation(DDName(DDSplit(getRotation()).first,DDSplit(getRotation()).second));
  LogDebug("HCalGeom") << " First " << DDSplit(getRotation()).first
                       << " Second " << DDSplit(getRotation()).second 
                       << " Rotation " << rot;
  DDTranslation r0(0,0,getZShift());
  double alpha = CLHEP::pi/getNsectors();
  double dphi  = getNsectortot()*CLHEP::twopi/getNsectors();

  //vertical walls are allowed in SolidPolyhedra
  double delz = 0;

  vector<double> pgonZ, pgonRmin, pgonRmax;
  if (proto) {
    double zf = getZiBody() + getZShiftHac2();
    pgonZ.push_back(zf - getDzShift()); 
    pgonRmin.push_back(zf * tan(getAngBot())); 
    pgonRmax.push_back((zf - getZ1Beam())*getSlope()); 
  } else {
    pgonZ.push_back(getZFront()   - getDzShift()); 
    pgonRmin.push_back(getZFront()   * tan(getAngTop())); 
    pgonRmax.push_back((getZFront()   - getZ1Beam())*getSlope()); 
    pgonZ.push_back(getZiL0Body() - getDzShift()); 
    pgonRmin.push_back(getZiL0Body() * tan(getAngTop())); 
    pgonRmax.push_back((getZiL0Body() - getZ1Beam())*getSlope()); 
    pgonZ.push_back(getZiL0Body() - getDzShift()); 
    pgonRmin.push_back(getZiL0Body() * tan(getAngBot())); 
    pgonRmax.push_back((getZiL0Body() - getZ1Beam())*getSlope()); 
  }
  pgonZ.push_back(getZiKink()   - getDzShift()); 
  pgonRmin.push_back(getRinKink()); 
  pgonRmax.push_back(getRout()); 
  pgonZ.push_back(getZiDip()    - getDzShift()); 
  pgonRmin.push_back(getRinDip()); 
  pgonRmax.push_back(getRout()); 
  pgonZ.push_back(getZiDip()    - getDzShift() + delz); 
  pgonRmin.push_back(getRinDip()); 
  pgonRmax.push_back(getRoutDip()); 
  pgonZ.push_back(getZEnd()     - getDzShift()); 
  pgonRmin.push_back(getZEnd() * tan(getAngBot())); 
  pgonRmax.push_back(getRoutDip()); 
  pgonZ.push_back(getZEnd()); 
  pgonRmin.push_back(getZEnd() * tan(getAngBot())); 
  pgonRmax.push_back(getRoutDip()); 

  string name("Null");
  unsigned int i=0;
  DDSolid solid;
  solid = DDSolidFactory::polyhedra(DDName(idName, idNameSpace),
                                    getNsectortot(), -alpha, dphi, pgonZ, 
                                    pgonRmin, pgonRmax);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " 
                       << DDName(idName, idNameSpace) << " Polyhedra made of "
                       << getGenMat() << " with " << getNsectortot() 
                       << " sectors from " << -alpha/CLHEP::deg << " to " 
                       << (-alpha+dphi)/CLHEP::deg << " and with " 
                       << pgonZ.size() << " sections";
  for (i = 0; i <pgonZ.size(); i++) 
    LogDebug("HCalGeom") << "\t\tZ = " << pgonZ[i] << "\tRmin = " <<pgonRmin[i]
                         << "\tRmax = " << pgonRmax[i];

  DDName matname(DDSplit(getGenMat()).first, DDSplit(getGenMat()).second); 
  DDMaterial matter(matname);
  DDLogicalPart genlogic(DDName(idName, idNameSpace), matter, solid);

  DDName parentName = parent().name(); 
  cpv.position(DDName(idName, idNameSpace), parentName, 1, r0, rot);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " 
                       << DDName(idName, idNameSpace) << " number 1 positioned"
                       << " in " << parentName << " at " << r0 << " with " 
                       << rot;
  if (getEndcaps() != 1) {
    rot = DDRotation(DDName(rotHalf,rotns));
   cpv.position(DDName(idName, idNameSpace), parentName, 2, r0, rot);
    LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " 
                         << DDName(idName, idNameSpace) << " number 2 "
                         << "positioned in " << parentName  << " at " << r0
                         << " with " << rot;
  }

  //Forward half
  name  = idName + "Front";
  vector<double> pgonZMod, pgonRminMod, pgonRmaxMod;
  for (i=0; i < (pgonZ.size()-1); i++) {
    pgonZMod.push_back(pgonZ[i] + getDzShift()); 
    pgonRminMod.push_back(pgonRmin[i]); 
    pgonRmaxMod.push_back(pgonRmax[i]); 
  }
  solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace),
                                    getNsectortot(), -alpha, dphi, pgonZMod,
                                    pgonRminMod, pgonRmaxMod);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << DDName(name,idNameSpace)
                       << " Polyhedra made of " << getGenMat() << " with "
                       << getNsectortot() << " sectors from " 
                       << -alpha/CLHEP::deg << " to " 
                       << (-alpha+dphi)/CLHEP::deg << " and with "
                       << pgonZMod.size() << " sections ";
  for (i = 0; i < pgonZMod.size(); i++) 
    LogDebug("HCalGeom") << "\t\tZ = " << pgonZMod[i] << "\tRmin = " 
                         << pgonRminMod[i] << "\tRmax = " << pgonRmaxMod[i];
  DDLogicalPart genlogich(DDName(name, idNameSpace), matter, solid);

  cpv.position(genlogich, genlogic, 1, DDTranslation(0.0, 0.0, -getDzShift()),
        DDRotation());
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << genlogich.name() 
                       << " number 1 positioned in " << genlogic.name() 
                       << " at (0,0," << -getDzShift() << ") with no rotation";
  
  //Construct sector (from -alpha to +alpha)
  name  = idName + "Module";
  solid =   DDSolidFactory::polyhedra(DDName(name, idNameSpace),
                                      1, -alpha, 2*alpha, pgonZMod,
                                      pgonRminMod, pgonRmaxMod);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << DDName(name,idNameSpace)
                       << " Polyhedra made of " << getGenMat() 
                       <<" with 1 sector from " << -alpha/CLHEP::deg << " to " 
                       << alpha/CLHEP::deg << " and with " << pgonZMod.size() 
                       << " sections";
  for (i = 0; i < pgonZMod.size(); i++) 
    LogDebug("HCalGeom") << "\t\tZ = " << pgonZMod[i] << "\tRmin = " 
                         << pgonRminMod[i] << "\tRmax = " << pgonRmaxMod[i];

  DDLogicalPart seclogic(DDName(name, idNameSpace), matter, solid);
  
  for (int ii=0; ii<getNsectortot(); ii++) {
    double phi    = ii*2*alpha;
    double phideg = phi/CLHEP::deg;
    
    DDRotation rotation;
    string rotstr("NULL");
    if (phideg != 0) {
      rotstr = "R"; 
      if (phideg < 100) rotstr = "R0"; 
      rotstr = rotstr + dbl_to_string(phideg);
      rotation = DDRotation(DDName(rotstr, rotns)); 
      if (!rotation) {
        LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: Creating a new "
                             << "rotation " << rotstr << "\t" << 90 << "," 
                             << phideg << ","  << 90 << "," << (phideg+90)
                             << ", 0, 0";
        rotation = DDrot(DDName(rotstr, rotns), 90*CLHEP::deg, 
                         phideg*CLHEP::deg, 90*CLHEP::deg, 
                         (90+phideg)*CLHEP::deg, 0*CLHEP::deg,  0*CLHEP::deg);
      } //if !rotation
    } //if phideg!=0
  
   cpv.position(seclogic, genlogich, ii+1, DDTranslation(0.0, 0.0, 0.0), rotation);
    LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << seclogic.name() 
                         << " number " << ii+1 << " positioned in " 
                         << genlogich.name() << " at (0,0,0) with " <<rotation;
  }
  
  //Construct the things inside the sector
  constructInsideSector(seclogic, cpv);

  //Backward half
  name  = idName + "Back";
  vector<double> pgonZBack, pgonRminBack, pgonRmaxBack;
  pgonZBack.push_back(getZEnd() - getDzShift()); 
  pgonRminBack.push_back(pgonZBack[0]*tan(getAngBot()) + getDrEnd()); 
  pgonRmaxBack.push_back(getRoutDip()); 
  pgonZBack.push_back(getZEnd()); 
  pgonRminBack.push_back(pgonZBack[1]*tan(getAngBot()) + getDrEnd()); 
  pgonRmaxBack.push_back(getRoutDip()); 
  solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace),
                                    getNsectortot(), -alpha, dphi, pgonZBack,
                                    pgonRminBack, pgonRmaxBack);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << DDName(name,idNameSpace)
                       << " Polyhedra made of " << getAbsMat() << " with " 
                       << getNsectortot() << " sectors from " 
                       << -alpha/CLHEP::deg << " to " 
                       << (-alpha+dphi)/CLHEP::deg << " and with " 
                       << pgonZBack.size()      << " sections";
  for (i = 0; i < pgonZBack.size(); i++) 
    LogDebug("HCalGeom") << "\t\tZ = " << pgonZBack[i] << "\tRmin = " 
                         << pgonRminBack[i] << "\tRmax = " << pgonRmaxBack[i];
  DDName absMatname(DDSplit(getAbsMat()).first, DDSplit(getAbsMat()).second); 
  DDMaterial absMatter(absMatname);
  DDLogicalPart glog(DDName(name, idNameSpace), absMatter, solid);

  cpv.position(glog, genlogic, 1, DDTranslation(0.0, 0.0, 0.0), DDRotation());
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << glog.name() 
                       << " number 1 positioned in "  << genlogic.name() 
                       << " at (0,0,0) with no rotation";
}
void DDHCalEndcapAlgo::constructInsideModule ( DDLogicalPart  module,
int  mod,
DDCompactView cpv 
) [protected]

Definition at line 781 of file DDHCalEndcapAlgo.cc.

References alpha, constructScintLayer(), DDBase< N, C >::ddname(), DDSplit(), first, getAngBot(), getAngTop(), getDzStep(), getGenMat(), getLayer(), getLayerN(), getLayerName(), getLayerT(), getLayerType(), getModName(), getNsectors(), getPhi(), getPhiName(), getPlastMat(), getRotMat(), getRoutBlock2(), getScintT(), getSlope(), getThick(), getTrim(), getZ1Beam(), getZminBlock(), i, idNameSpace, idOffset, LogDebug, mod(), DDName::name(), mergeVDriftHistosByStation::name, DDBase< N, C >::name(), parameterLayer(), phi, pi, DDCompactView::position(), rotns, edm::second(), funct::tan(), theta(), and DDSolidFactory::trap().

Referenced by constructInsideSector().

                                                                                              {
  
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: \t\tInside module ..." <<mod;

  //Pointers to the Rotation Matrices and to the Materials
  string rotstr = getRotMat();
  DDRotation rot(DDName(rotstr, rotns));
  DDName matName(DDSplit(getGenMat()).first, DDSplit(getGenMat()).second);
  DDMaterial matter(matName);
  DDName plasName(DDSplit(getPlastMat()).first, DDSplit(getPlastMat()).second);
  DDMaterial matplastic(plasName);

  double  alpha = CLHEP::pi/getNsectors();
  double  zi    = getZminBlock(mod);

  for (int i = 0; i < getLayerN(mod); i++) {
    string name;
    DDSolid solid;
    DDLogicalPart glog, plog;
    int     layer  = getLayer(mod,i);
    double  zo     = zi + 0.5*getDzStep();

    for (int iphi = 0; iphi < getPhi(); iphi++) {
      double  ziAir = zo - getThick(mod);
      double  rinF, rinB;
      if (layer == 1) {
        rinF  = ziAir * tan(getAngTop());
        rinB  = zo    * tan(getAngTop());
      } else {
        rinF  = ziAir * tan(getAngBot());
        rinB  = zo    * tan(getAngBot());
      }
      double routF = (ziAir - getZ1Beam()) * getSlope();
      double routB = (zo    - getZ1Beam()) * getSlope();
      if (routF > getRoutBlock2(mod)) routF =  getRoutBlock2(mod);
      if (routB > getRoutBlock2(mod)) routB =  getRoutBlock2(mod);
      LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: Layer " << i << " Phi "
                           << iphi << " Front " << ziAir << ", " << rinF
                           << ", " << routF << " Back " << zo << ", " << rinB
                           << ", " << routB;
      double yh1, bl1, tl1, yh2, bl2, tl2, theta, phi, alp;
      double xpos, ypos, zpos;
      parameterLayer(iphi, rinF, routF, rinB, routB, ziAir, zo, yh1, bl1, tl1, 
                     yh2, bl2, tl2, alp, theta, phi, xpos, ypos, zpos);
      
      name = module.name().name()+getLayerName(layer)+getPhiName(iphi)+"Air";
      solid = DDSolidFactory::trap(DDName(name, idNameSpace), 
                                   0.5*getThick(mod), theta, phi, yh1,
                                   bl1, tl1, alp, yh2, bl2, tl2, alp);
      LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << solid.name() 
                           << " Trap made of " << getGenMat() 
                           << " of dimensions " << 0.5*getThick(mod) << ", " 
                           << theta/CLHEP::deg << ", " << phi/CLHEP::deg
                           << ", " << yh1 << ", " << bl1 << ", " << tl1 << ", "
                           << alp/CLHEP::deg << ", " << yh2 << ", " << bl2 
                           << ", " << tl2 << ", " << alp/CLHEP::deg;
      glog = DDLogicalPart(solid.ddname(), matter, solid);

      DDTranslation r1(xpos, ypos, zpos);
      cpv.position(glog, module, layer+1, r1, rot);
      LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << glog.name() 
                           << " number " << layer+1 << " positioned in " 
                           << module.name() << " at " << r1 << " with " << rot;

      //Now the plastic with scintillators
      double yh = 0.5 * (routF - rinB) - getTrim(mod,iphi);
      double bl = 0.5 * rinB  * tan(alpha) - getTrim(mod,iphi);
      double tl = 0.5 * routF * tan(alpha) - getTrim(mod,iphi);
      name = module.name().name()+getLayerName(layer)+getPhiName(iphi);
      solid = DDSolidFactory::trap(DDName(name, idNameSpace), 
                                   0.5*getLayerT(layer), 0, 0, yh,
                                   bl, tl, alp, yh, bl, tl, alp);
      LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << solid.name() 
                           << " Trap made of " << getPlastMat() 
                           << " of dimensions " << 0.5*getLayerT(layer) 
                           << ", 0, 0, " << yh << ", " << bl << ", " << tl
                           << ", " << alp/CLHEP::deg << ", " << yh << ", " 
                           << bl << ", " << tl << ", " << alp/CLHEP::deg;
      plog = DDLogicalPart(solid.ddname(), matplastic, solid);

      ypos = 0.5*(routF+rinB) - xpos;
      DDTranslation r2(0., ypos, 0.);
      cpv.position(plog, glog, idOffset+layer+1, r2, DDRotation());
      LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << plog.name() 
                           << " number " << idOffset+layer+1 
                           << " positioned in " << glog.name() << " at " << r2
                           << " with no rotation";

      //Constructin the scintillators inside
      int copyNo = layer*10 + getLayerType(layer);
      name = getModName(mod)+getLayerName(layer)+getPhiName(iphi);
      constructScintLayer (plog, getScintT(layer), yh,bl,tl, alp,name,copyNo, cpv);
      zo += 0.5*getDzStep();
    } // End of loop over phi indices
    zi = zo - 0.5*getDzStep();
  }   // End of loop on layers
}
void DDHCalEndcapAlgo::constructInsideModule0 ( DDLogicalPart  module,
int  mod,
DDCompactView cpv 
) [protected]

Definition at line 686 of file DDHCalEndcapAlgo.cc.

References constructScintLayer(), DDBase< N, C >::ddname(), DDSplit(), first, getAbsMat(), getAngBot(), getAngTop(), getDzStep(), getLayer(), getLayerName(), getLayerT(), getLayerType(), getModName(), getPhi(), getPhiName(), getPlastMat(), getRotMat(), getScintT(), getSlope(), getThick(), getTolAbs(), getZ1Beam(), getZminBlock(), idNameSpace, idOffset, LogDebug, mod(), DDName::name(), mergeVDriftHistosByStation::name, DDBase< N, C >::name(), parameterLayer(), parameterLayer0(), phi, DDCompactView::position(), rotns, edm::second(), funct::tan(), theta(), and DDSolidFactory::trap().

Referenced by constructInsideSector().

                                                                                               {
  
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: \t\tInside module0 ..."<<mod;

  //Pointers to the Rotation Matrices and to the Materials
  string rotstr = getRotMat();
  DDRotation rot(DDName(rotstr, rotns));
  DDName matName(DDSplit(getAbsMat()).first, DDSplit(getAbsMat()).second);
  DDMaterial matabsorbr(matName);
  DDName plasName(DDSplit(getPlastMat()).first, DDSplit(getPlastMat()).second);
  DDMaterial matplastic(plasName);

  int     layer  = getLayer(mod,0);
  int     layer0 = getLayer(mod,1);
  string  name;
  double  xpos, ypos, zpos;
  DDSolid solid;
  DDLogicalPart glog, plog;
  for (int iphi = 0; iphi < getPhi(); iphi++) {
    double yh, bl, tl, alp;
    parameterLayer0(mod, layer, iphi, yh, bl, tl, alp, xpos, ypos, zpos);
    name = module.name().name()+getLayerName(layer)+getPhiName(iphi);
    solid = DDSolidFactory::trap(DDName(name, idNameSpace), 
                                 0.5*getLayerT(layer), 0, 0, yh,
                                 bl, tl, alp, yh, bl, tl, alp);
    LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << solid.name() 
                         << " Trap made of " << getPlastMat() 
                         << " of dimensions " << 0.5*getLayerT(layer) 
                         << ", 0, 0, " << yh << ", " << bl << ", " << tl 
                         << ", " << alp/CLHEP::deg << ", " << yh << ", " << bl 
                         << ", " << tl << ", " << alp/CLHEP::deg;
    glog = DDLogicalPart(solid.ddname(), matplastic, solid);

    DDTranslation r1(xpos, ypos, zpos);
    cpv.position(glog, module, idOffset+layer+1, r1, rot);
    LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << glog.name() 
                         << " number " << idOffset+layer+1 << " positioned in "
                         << module.name() << " at " << r1 << " with " << rot;
    //Now construct the layer of scintillator inside this
    int copyNo = layer0*10 + getLayerType(layer);
    name = getModName(mod)+getLayerName(layer)+getPhiName(iphi);
    constructScintLayer (glog, getScintT(layer), yh, bl, tl, alp, name, copyNo, cpv);
  }

  //Now the absorber layer
  double zi = getZminBlock(mod) + getLayerT(layer);
  double zo = zi + 0.5*getDzStep();
  double rinF, routF, rinB, routB;
  if (mod == 0) {
    rinF  = zi * tan(getAngTop());
    routF =(zi - getZ1Beam()) * getSlope();
    rinB  = zo * tan(getAngTop());
    routB =(zo - getZ1Beam()) * getSlope();
  } else {
    rinF  = zi * tan(getAngBot());
    routF = zi * tan(getAngTop());
    rinB  = zo * tan(getAngBot());
    routB = zo * tan(getAngTop());
  }
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: Module " << mod << " Front "
                       << zi << ", " << rinF << ", " << routF << " Back "
                       << zo << ", " << rinB << ", " << routB;
  double yh1, bl1, tl1, yh2, bl2, tl2, theta, phi, alp;
  parameterLayer(0, rinF, routF, rinB, routB, zi, zo, yh1, bl1, tl1, yh2, bl2, 
                 tl2, alp, theta, phi, xpos, ypos, zpos);
  double fact = getTolAbs();
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: Trim " << fact << " Param "
                       << yh1 << ", " << bl1 << ", " << tl1 << ", " << yh2
                       << ", " << bl2 << ", " << tl2;
  bl1 -= fact;
  tl1 -= fact;
  bl2 -= fact;
  tl2 -= fact;

  name = module.name().name()+"Absorber";
  solid = DDSolidFactory::trap(DDName(name, idNameSpace), 
                               0.5*getThick(mod), theta, phi, yh1,
                               bl1, tl1, alp, yh2, bl2, tl2, alp);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << solid.name() 
                       << " Trap made of " << getAbsMat() << " of dimensions " 
                       << 0.5*getThick(mod) << ", " << theta/CLHEP::deg << ", "
                       << phi/CLHEP::deg << ", " << yh1 << ", " << bl1 << ", " 
                       << tl1 << ", " << alp/CLHEP::deg << ", " << yh2 << ", "
                       << bl2 << ", " << tl2 << ", " << alp/CLHEP::deg;
  glog = DDLogicalPart(solid.ddname(), matabsorbr, solid);

  DDTranslation r2(xpos, ypos, zpos);
  cpv.position(glog, module, 1, r2, rot);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << glog.name() 
                       << " number 1 positioned in " << module.name() << " at "
                       << r2 << " with " << rot;
}
void DDHCalEndcapAlgo::constructInsideSector ( DDLogicalPart  sector,
DDCompactView cpv 
) [protected]

!!!!!!!!!!!!!!!!Should be zero. And removed as soon as

Definition at line 519 of file DDHCalEndcapAlgo.cc.

References alpha, constructInsideModule(), constructInsideModule0(), DDSplit(), equipModule(), first, getAngBot(), getModMat(), getModName(), getModType(), getModules(), getNsectors(), getRinBlock1(), getRinBlock2(), getRinDip(), getRinKink(), getRout(), getRoutBlock1(), getRoutBlock2(), getRoutDip(), getSectionModule(), getSlope(), getZ1Beam(), getZiDip(), getZiKink(), getZmaxBlock(), getZminBlock(), getZShiftHac2(), i, idName, idNameSpace, gen::k, LogDebug, DDBase< N, C >::name(), mergeVDriftHistosByStation::name, pi, DDSolidFactory::polyhedra(), DDCompactView::position(), edm::second(), and funct::tan().

Referenced by constructGeneralVolume().

                                                                                     {
  
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: Modules (" << getModules()
                       << ") ...";
  double alpha = CLHEP::pi/getNsectors();

  for (int i = 0; i < getModules(); i++) {
    string  name   = idName + getModName(i);
    DDName matname(DDSplit(getModMat(i)).first, DDSplit(getModMat(i)).second); 
    DDMaterial matter(matname);
    
    if (equipModule(i)>0) {
      int nsec = getSectionModule(i);

      //vertical walls are allowed in SolidPolyhedra
      double deltaz = 0;
    
      vector<double> pgonZ, pgonRmin, pgonRmax;
      if (nsec == 3) {
        double zf = getZminBlock(i) + getZShiftHac2();
        pgonZ.push_back(zf);
        pgonRmin.push_back(zf*tan(getAngBot())); 
        pgonRmax.push_back((zf-getZ1Beam())*getSlope());
        pgonZ.push_back(getZiKink());  
        pgonRmin.push_back(getRinKink()); 
        pgonRmax.push_back(getRout());
      } else {
        pgonZ.push_back(getZminBlock(i));
        pgonRmin.push_back(getRinBlock1(i)); 
        pgonRmax.push_back(getRoutBlock1(i));
      }
      if (nsec == 4) {
        pgonZ.push_back(getZiDip());
        pgonRmin.push_back(getRinDip());
        pgonRmax.push_back(getRout());
        pgonZ.push_back(pgonZ[1] + deltaz);
        pgonRmin.push_back(pgonRmin[1]); 
        pgonRmax.push_back(getRoutDip());
      }
      pgonZ.push_back(getZmaxBlock(i));
      pgonRmin.push_back(getRinBlock2(i)); 
      pgonRmax.push_back(getRoutBlock2(i));

      //Solid & volume
      DDSolid solid;
      solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 
                                        1, -alpha, 2*alpha,
                                        pgonZ, pgonRmin, pgonRmax);
      LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " 
                           << DDName(name,idNameSpace) << " Polyhedra made of "
                           << getModMat(i) << " with 1 sector from "
                           << -alpha/CLHEP::deg << " to " << alpha/CLHEP::deg 
                           << " and with " << nsec << " sections";
      for (unsigned int k=0; k<pgonZ.size(); k++)
        LogDebug("HCalGeom") << "\t\tZ = " << pgonZ[k] << "\tRmin = "
                             << pgonRmin[k] << "\tRmax = " << pgonRmax[k];
    
      DDLogicalPart glog(DDName(name, idNameSpace), matter, solid);

     cpv.position(glog, sector, i+1, DDTranslation(0.0, 0.0, 0.0), DDRotation());
      LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << glog.name() 
                           << " number " << i+1 << " positioned in " 
                           << sector.name() << " at (0,0,0) with no rotation";
      
      if (getModType(i) == 0) 
        constructInsideModule0 (glog, i, cpv);
      else
        constructInsideModule  (glog, i, cpv);
    }
  }
  
}
void DDHCalEndcapAlgo::constructScintLayer ( DDLogicalPart  glog,
double  pDz,
double  yh,
double  bl,
double  tl,
double  alp,
std::string  name,
int  id,
DDCompactView cpv 
) [protected]

Definition at line 881 of file DDHCalEndcapAlgo.cc.

References DDBase< N, C >::ddname(), DDSplit(), first, getScintMat(), idName, idNameSpace, LogDebug, DDBase< N, C >::name(), mergeVDriftHistosByStation::name, DDCompactView::position(), edm::second(), and DDSolidFactory::trap().

Referenced by constructInsideModule(), and constructInsideModule0().

                                                                                              {

  DDName matname(DDSplit(getScintMat()).first, DDSplit(getScintMat()).second);
  DDMaterial matter(matname);
  string name = idName+"Scintillator"+nm;

  DDSolid solid = DDSolidFactory::trap(DDName(name, idNameSpace), 0.5*dz, 0, 0,
                                       yh, bl, tl, alp, yh, bl, tl, alp);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << DDName(name,idNameSpace)
                       << " Trap made of " << getScintMat() <<" of dimensions "
                       << 0.5*dz << ", 0, 0, " << yh << ", "  << bl << ", " 
                       << tl << ", " << alp/CLHEP::deg << ", " << yh << ", " 
                       << bl << ", " << tl << ", " << alp/CLHEP::deg;

  DDLogicalPart glog(solid.ddname(), matter, solid); 

  cpv.position(glog, detector, id, DDTranslation(0,0,0), DDRotation());
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo test: " << glog.name() 
                       << " number " << id << " positioned in " 
                       << detector.name() << " at (0,0,0) with no rotation";

}
int DDHCalEndcapAlgo::equipModule ( unsigned int  i) const [inline]

Definition at line 22 of file DDHCalEndcapAlgo.h.

References eModule, and i.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return eModule[i];}
void DDHCalEndcapAlgo::execute ( DDCompactView cpv)

Definition at line 314 of file DDHCalEndcapAlgo.cc.

References constructGeneralVolume(), and LogDebug.

                                                 {
  
  LogDebug("HCalGeom") << "==>> Constructing DDHCalEndcapAlgo...";
  constructGeneralVolume(cpv);
  LogDebug("HCalGeom") << "<<== End of DDHCalEndcapAlgo construction ...";
}
std::string DDHCalEndcapAlgo::getAbsMat ( ) const [inline]

Definition at line 50 of file DDHCalEndcapAlgo.h.

References absMat.

Referenced by constructGeneralVolume(), and constructInsideModule0().

{return absMat;}
double DDHCalEndcapAlgo::getAngBot ( ) const [inline]
double DDHCalEndcapAlgo::getAngGap ( ) const [inline]

Definition at line 47 of file DDHCalEndcapAlgo.h.

References angGap.

{return angGap;}
double DDHCalEndcapAlgo::getAngTop ( ) const [inline]

Definition at line 45 of file DDHCalEndcapAlgo.h.

References angTop.

Referenced by constructGeneralVolume(), constructInsideModule(), constructInsideModule0(), and parameterLayer0().

{return angTop;}
double DDHCalEndcapAlgo::getDrEnd ( ) const [inline]

Definition at line 44 of file DDHCalEndcapAlgo.h.

References drEnd.

Referenced by constructGeneralVolume().

{return drEnd;}
double DDHCalEndcapAlgo::getDzShift ( ) const [inline]

Definition at line 36 of file DDHCalEndcapAlgo.h.

References dzShift.

Referenced by constructGeneralVolume().

{return dzShift;}
double DDHCalEndcapAlgo::getDzStep ( ) const [inline]

Definition at line 35 of file DDHCalEndcapAlgo.h.

References dzStep.

Referenced by constructInsideModule(), and constructInsideModule0().

{return dzStep;}
int DDHCalEndcapAlgo::getEndcaps ( ) const [inline]

Definition at line 21 of file DDHCalEndcapAlgo.h.

References nEndcap.

Referenced by constructGeneralVolume().

{return nEndcap;}
std::string DDHCalEndcapAlgo::getGenMat ( ) const [inline]

Definition at line 17 of file DDHCalEndcapAlgo.h.

References genMaterial.

Referenced by constructGeneralVolume(), and constructInsideModule().

{return genMaterial;}
double DDHCalEndcapAlgo::getHeboxDepth ( ) const [inline]

Definition at line 43 of file DDHCalEndcapAlgo.h.

References heboxDepth.

{return heboxDepth;}
int DDHCalEndcapAlgo::getLayer ( unsigned int  i,
unsigned int  j 
) const

Definition at line 32 of file DDHCalEndcapAlgo.cc.

References j, layerN0, layerN1, layerN2, layerN3, layerN4, and layerN5.

Referenced by constructInsideModule(), and constructInsideModule0().

                                                                   {

  switch (i) {
  case 0: 
    return layerN0[j];
    break;

  case 1: 
    return layerN1[j];
    break;

  case 2: 
    return layerN2[j];
    break;

  case 3: 
    return layerN3[j];
    break;

  case 4: 
    return layerN4[j];
    break;

  case 5: 
    return layerN5[j];
    break;

  default:
    return 0;
  }
}
int DDHCalEndcapAlgo::getLayerN ( unsigned int  i) const [inline]

Definition at line 56 of file DDHCalEndcapAlgo.h.

References i, and layerN.

Referenced by constructInsideModule().

{return layerN[i];}
std::string DDHCalEndcapAlgo::getLayerName ( unsigned int  i) const [inline]

Definition at line 70 of file DDHCalEndcapAlgo.h.

References i, and layerName.

Referenced by constructInsideModule(), and constructInsideModule0().

{return layerName[i];}
int DDHCalEndcapAlgo::getLayers ( ) const [inline]

Definition at line 69 of file DDHCalEndcapAlgo.h.

References layers.

{return layers;}
double DDHCalEndcapAlgo::getLayerT ( unsigned int  i) const [inline]

Definition at line 72 of file DDHCalEndcapAlgo.h.

References i, and layerT.

Referenced by constructInsideModule(), constructInsideModule0(), and parameterLayer0().

{return layerT[i];}
int DDHCalEndcapAlgo::getLayerType ( unsigned int  i) const [inline]

Definition at line 71 of file DDHCalEndcapAlgo.h.

References i, and layerType.

Referenced by constructInsideModule(), and constructInsideModule0().

{return layerType[i];}
std::string DDHCalEndcapAlgo::getModMat ( unsigned int  i) const [inline]

Definition at line 53 of file DDHCalEndcapAlgo.h.

References i, and modMat.

Referenced by constructInsideSector().

{return modMat[i];}
std::string DDHCalEndcapAlgo::getModName ( unsigned int  i) const [inline]

Definition at line 52 of file DDHCalEndcapAlgo.h.

References i, and modName.

Referenced by constructInsideModule(), constructInsideModule0(), and constructInsideSector().

{return modName[i];}
int DDHCalEndcapAlgo::getModType ( unsigned int  i) const [inline]

Definition at line 54 of file DDHCalEndcapAlgo.h.

References i, and modType.

Referenced by constructInsideSector().

{return modType[i];}
int DDHCalEndcapAlgo::getModules ( ) const [inline]

Definition at line 51 of file DDHCalEndcapAlgo.h.

References modules.

Referenced by constructInsideSector().

{return modules;}
int DDHCalEndcapAlgo::getNsectors ( ) const [inline]
int DDHCalEndcapAlgo::getNsectortot ( ) const [inline]

Definition at line 20 of file DDHCalEndcapAlgo.h.

References nsectortot.

Referenced by constructGeneralVolume().

{return nsectortot;}
int DDHCalEndcapAlgo::getPhi ( ) const [inline]

Definition at line 67 of file DDHCalEndcapAlgo.h.

References phiSections.

Referenced by constructInsideModule(), and constructInsideModule0().

{return phiSections;}
std::string DDHCalEndcapAlgo::getPhiName ( unsigned int  i) const [inline]

Definition at line 68 of file DDHCalEndcapAlgo.h.

References i, and phiName.

Referenced by constructInsideModule(), and constructInsideModule0().

{return phiName[i];}
std::string DDHCalEndcapAlgo::getPlastMat ( ) const [inline]

Definition at line 74 of file DDHCalEndcapAlgo.h.

References plastMat.

Referenced by constructInsideModule(), and constructInsideModule0().

{return plastMat;}
double DDHCalEndcapAlgo::getRinBlock1 ( unsigned  i) const [inline]

Definition at line 62 of file DDHCalEndcapAlgo.h.

References i, and rinBlock1.

Referenced by constructInsideSector().

{return rinBlock1[i];}
double DDHCalEndcapAlgo::getRinBlock2 ( unsigned  i) const [inline]

Definition at line 63 of file DDHCalEndcapAlgo.h.

References i, and rinBlock2.

Referenced by constructInsideSector().

{return rinBlock2[i];}
double DDHCalEndcapAlgo::getRinDip ( ) const [inline]

Definition at line 41 of file DDHCalEndcapAlgo.h.

References riDip.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return riDip;}
double DDHCalEndcapAlgo::getRinKink ( ) const [inline]

Definition at line 40 of file DDHCalEndcapAlgo.h.

References riKink.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return riKink;}
std::string DDHCalEndcapAlgo::getRotation ( ) const [inline]

Definition at line 18 of file DDHCalEndcapAlgo.h.

References rotation.

Referenced by constructGeneralVolume().

{return rotation;}
std::string DDHCalEndcapAlgo::getRotMat ( ) const [inline]

Definition at line 76 of file DDHCalEndcapAlgo.h.

References rotmat.

Referenced by constructInsideModule(), and constructInsideModule0().

{return rotmat;}
double DDHCalEndcapAlgo::getRout ( ) const [inline]

Definition at line 39 of file DDHCalEndcapAlgo.h.

References rout.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return rout;}
double DDHCalEndcapAlgo::getRoutBlock1 ( unsigned  i) const [inline]

Definition at line 64 of file DDHCalEndcapAlgo.h.

References i, and routBlock1.

Referenced by constructInsideSector().

{return routBlock1[i];}
double DDHCalEndcapAlgo::getRoutBlock2 ( unsigned  i) const [inline]

Definition at line 65 of file DDHCalEndcapAlgo.h.

References i, and routBlock2.

Referenced by constructInsideModule(), and constructInsideSector().

{return routBlock2[i];}
double DDHCalEndcapAlgo::getRoutDip ( ) const [inline]

Definition at line 42 of file DDHCalEndcapAlgo.h.

References roDip.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return roDip;}
std::string DDHCalEndcapAlgo::getScintMat ( ) const [inline]

Definition at line 75 of file DDHCalEndcapAlgo.h.

References scintMat.

Referenced by constructScintLayer().

{return scintMat;}
double DDHCalEndcapAlgo::getScintT ( unsigned int  i) const [inline]

Definition at line 73 of file DDHCalEndcapAlgo.h.

References i, and scintT.

Referenced by constructInsideModule(), and constructInsideModule0().

{return scintT[i];}
int DDHCalEndcapAlgo::getSectionModule ( unsigned  i) const [inline]

Definition at line 55 of file DDHCalEndcapAlgo.h.

References i, and sectionModule.

Referenced by constructInsideSector().

{return sectionModule[i];}
double DDHCalEndcapAlgo::getSlope ( ) const [inline]
double DDHCalEndcapAlgo::getThick ( unsigned int  i) const [inline]

Definition at line 58 of file DDHCalEndcapAlgo.h.

References i, and thick.

Referenced by constructInsideModule(), and constructInsideModule0().

{return thick[i];}
double DDHCalEndcapAlgo::getTolAbs ( ) const [inline]

Definition at line 78 of file DDHCalEndcapAlgo.h.

References tolAbs.

Referenced by constructInsideModule0().

{return tolAbs;}
double DDHCalEndcapAlgo::getTolPos ( ) const [inline]

Definition at line 77 of file DDHCalEndcapAlgo.h.

References tolPos.

{return tolPos;}
double DDHCalEndcapAlgo::getTrim ( unsigned int  i,
unsigned int  j 
) const

Definition at line 64 of file DDHCalEndcapAlgo.cc.

References i, j, trimLeft, and trimRight.

Referenced by constructInsideModule(), and parameterLayer0().

                                                                     {
 
 if (j == 0)
    return trimLeft[i];
  else
    return trimRight[j];
}
double DDHCalEndcapAlgo::getZ0Beam ( ) const [inline]

Definition at line 32 of file DDHCalEndcapAlgo.h.

References z0Beam.

{return z0Beam;}
double DDHCalEndcapAlgo::getZ1Beam ( ) const [inline]
double DDHCalEndcapAlgo::getZEnd ( ) const [inline]

Definition at line 26 of file DDHCalEndcapAlgo.h.

References zEnd.

Referenced by constructGeneralVolume().

{return zEnd;}
double DDHCalEndcapAlgo::getZFront ( ) const [inline]

Definition at line 25 of file DDHCalEndcapAlgo.h.

References zFront.

Referenced by constructGeneralVolume().

{return zFront;}
double DDHCalEndcapAlgo::getZiBody ( ) const [inline]

Definition at line 29 of file DDHCalEndcapAlgo.h.

References ziBody.

Referenced by constructGeneralVolume().

{return ziBody;}
double DDHCalEndcapAlgo::getZiDip ( ) const [inline]

Definition at line 34 of file DDHCalEndcapAlgo.h.

References ziDip.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return ziDip;}
double DDHCalEndcapAlgo::getZiKink ( ) const [inline]

Definition at line 31 of file DDHCalEndcapAlgo.h.

References ziKink.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return ziKink;}
double DDHCalEndcapAlgo::getZiL0Body ( ) const [inline]

Definition at line 30 of file DDHCalEndcapAlgo.h.

References ziL0Body.

Referenced by constructGeneralVolume().

{return ziL0Body;}
double DDHCalEndcapAlgo::getZiL0Nose ( ) const [inline]

Definition at line 28 of file DDHCalEndcapAlgo.h.

References ziL0Nose.

{return ziL0Nose;}
double DDHCalEndcapAlgo::getZiNose ( ) const [inline]

Definition at line 27 of file DDHCalEndcapAlgo.h.

References ziNose.

{return ziNose;}
double DDHCalEndcapAlgo::getZmaxBlock ( unsigned  i) const [inline]

Definition at line 61 of file DDHCalEndcapAlgo.h.

References i, and zmaxBlock.

Referenced by constructInsideSector(), and parameterLayer0().

{return zmaxBlock[i];}
double DDHCalEndcapAlgo::getZminBlock ( unsigned  i) const [inline]

Definition at line 60 of file DDHCalEndcapAlgo.h.

References i, and zminBlock.

Referenced by constructInsideModule(), constructInsideModule0(), constructInsideSector(), and parameterLayer0().

{return zminBlock[i];}
double DDHCalEndcapAlgo::getZShift ( ) const [inline]

Definition at line 23 of file DDHCalEndcapAlgo.h.

References zShift.

Referenced by constructGeneralVolume().

{return zShift;}
double DDHCalEndcapAlgo::getZShiftHac2 ( ) const [inline]

Definition at line 37 of file DDHCalEndcapAlgo.h.

References zShiftHac2.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return zShiftHac2;}
void DDHCalEndcapAlgo::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)

Definition at line 72 of file DDHCalEndcapAlgo.cc.

References absMat, angBot, angGap, angTop, dbl_to_int(), drEnd, dzShift, dzStep, eModule, funct::exp(), genMaterial, heboxDepth, i, idName, idNameSpace, idOffset, j, layerN, layerN0, layerN1, layerN2, layerN3, layerN4, layerN5, layerName, layers, layerT, layerType, LogDebug, modMat, modName, modType, module(), modules, nEndcap, DDCurrentNamespace::ns(), nsectors, nsectortot, dbtoconf::parent, phiName, phiSections, plastMat, riDip, riKink, rinBlock1, rinBlock2, roDip, rotation, rotHalf, rotmat, rotns, rout, routBlock1, routBlock2, scintMat, scintT, sectionModule, funct::sin(), slope, funct::tan(), thick, tolAbs, tolPos, trimLeft, trimRight, z0Beam, z1Beam, zEnd, zFront, ziBody, ziDip, ziKink, ziL0Body, ziL0Nose, ziNose, zmaxBlock, zminBlock, zShift, and zShiftHac2.

                                                                          {

  int i,j;
  genMaterial   = sArgs["MaterialName"];
  rotation      = sArgs["Rotation"];
  nsectors      = int (nArgs["Sector"]);
  nsectortot    = int (nArgs["SectorTot"]);
  nEndcap       = int (nArgs["Endcap"]);
  rotHalf       = sArgs["RotHalf"];
  rotns         = sArgs["RotNameSpace"];
  zShift        = nArgs["ZShift"];

  zFront        = nArgs["ZFront"];
  zEnd          = nArgs["ZEnd"];
  ziNose        = nArgs["ZiNose"];
  ziL0Nose      = nArgs["ZiL0Nose"];
  ziBody        = nArgs["ZiBody"];
  ziL0Body      = nArgs["ZiL0Body"];
  z0Beam        = nArgs["Z0Beam"];
  ziDip         = nArgs["ZiDip"];
  dzStep        = nArgs["DzStep"];
  zShiftHac2    = nArgs["ZShiftHac2"];
  double gap    = nArgs["Gap"];
  double z1     = nArgs["Z1"];
  double r1     = nArgs["R1"];
  rout          = nArgs["Rout"];
  heboxDepth    = nArgs["HEboxDepth"];
  drEnd         = nArgs["DrEnd"];
  double etamin = nArgs["Etamin"];
  angBot        = nArgs["AngBot"];
  angGap        = nArgs["AngGap"];

  LogDebug("HCalGeom") << "DDHCalEndcapAlgo debug: General material " 
                       << genMaterial << "\tSectors "  << nsectors << ",  " 
                       << nsectortot << "\tEndcaps " << nEndcap  
                       << "\tRotation matrix for half " << rotns 
                       << ":" << rotHalf << "\n\tzFront " << zFront << " zEnd "
                       << zEnd << " ziNose " << ziNose << " ziL0Nose " 
                       << ziL0Nose << " ziBody " << ziBody  << " ziL0Body " 
                       << ziL0Body << " z0Beam " << z0Beam << " ziDip " 
                       << ziDip << " dzStep " << dzStep << " Gap " << gap 
                       << " z1 " << z1 << "\n\tr1 " << r1 << " rout " << rout
                       << " HeboxDepth " << heboxDepth << " drEnd " << drEnd 
                       << "\tetamin " << etamin << " Bottom angle " << angBot
                       << " Gap angle " << angGap << " Z-Shift " << zShift
                       << " " << zShiftHac2;

  //Derived quantities
  angTop   = 2.0 * atan (exp(-etamin));
  slope    = tan(angGap);
  z1Beam   = z1 - r1/slope;
  ziKink   = z1Beam + rout/slope;
  riKink   = ziKink*tan(angBot);
  riDip    = ziDip*tan(angBot);
  roDip    = rout - heboxDepth;
  dzShift  = (z1Beam - z0Beam) - gap/sin(angGap);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo debug: angTop " 
                       << angTop/CLHEP::deg  <<"\tSlope " << slope 
                       << "\tDzShift " << dzShift << "\n\tz1Beam " << z1Beam 
                       << "\tziKink" << ziKink << "\triKink " << riKink 
                       << "\triDip " << riDip << "\n\troDip " << roDip 
                       << "\tRotation " << rotation;

  //Modules
  absMat        = sArgs["AbsMat"];
  modules       = int(nArgs["Modules"]);
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo debug: Number of modules " 
                       << modules << " and absorber material " << absMat;

  modName       = vsArgs["ModuleName"];
  modMat        = vsArgs["ModuleMat"];
  modType       = dbl_to_int(vArgs["ModuleType"]);
  sectionModule = dbl_to_int(vArgs["SectionModule"]);
  thick         = vArgs["ModuleThick"];
  trimLeft      = vArgs["TrimLeft"]; 
  trimRight     = vArgs["TrimRight"]; 
  eModule       = dbl_to_int(vArgs["EquipModule"]);
  layerN        = dbl_to_int(vArgs["LayerN"]);
  layerN0       = dbl_to_int(vArgs["LayerN0"]);
  layerN1       = dbl_to_int(vArgs["LayerN1"]);
  layerN2       = dbl_to_int(vArgs["LayerN2"]);
  layerN3       = dbl_to_int(vArgs["LayerN3"]);
  layerN4       = dbl_to_int(vArgs["LayerN4"]);
  layerN5       = dbl_to_int(vArgs["LayerN5"]);
  for (i = 0; i < modules; i++) {
    LogDebug("HCalGeom") << "DDHCalEndcapAlgo debug: " << modName[i] <<" type "
                         << modType[i] << " Sections " << sectionModule[i] 
                         << " thickness of absorber/air " << thick[i] 
                         << " trim " << trimLeft[i] << ", " << trimRight[i] 
                         << " equip module " << eModule[i] << " with "
                         << layerN[i] << " layers";
    if (i == 0) {
      for (j = 0; j < layerN[i]; j++) {
        LogDebug("HCalGeom") << "\t " << layerN0[j] << "/" << layerN0[j+1];
      }
    } else if (i == 1) {
      for (j = 0; j < layerN[i]; j++) {
        LogDebug("HCalGeom") << "\t " << layerN1[j] << "/" << layerN1[j+1];
      }
    } else if (i == 2) {
      for (j = 0; j < layerN[i]; j++) {
        LogDebug("HCalGeom") << "\t " << layerN2[j];
      }
    } else if (i == 3) {
      for (j = 0; j < layerN[i]; j++) {
        LogDebug("HCalGeom") << "\t " << layerN3[j];
      }
    } else if (i == 4) {
      for (j = 0; j < layerN[i]; j++) {
        LogDebug("HCalGeom") << "\t " << layerN4[j];
      }
    } else if (i == 5) {
      for (j = 0; j < layerN[i]; j++) {
        LogDebug("HCalGeom") << "\t " << layerN5[j];
      }
    }
  }
  
  //Layers
  phiSections = int(nArgs["PhiSections"]);
  phiName     = vsArgs["PhiName"];
  layers      = int(nArgs["Layers"]);
  layerName   = vsArgs["LayerName"];
  layerType   = dbl_to_int(vArgs["LayerType"]);
  layerT      = vArgs["LayerT"];
  scintT      = vArgs["ScintT"];
  scintMat    = sArgs["ScintMat"];
  plastMat    = sArgs["PlastMat"];
  rotmat      = sArgs["RotMat"];
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo debug: Phi Sections " 
                       << phiSections;
  for (i = 0; i < phiSections; i++) 
    LogDebug("HCalGeom") << "\tName[" << i << "] : " << phiName[i];
  LogDebug("HCalGeom") << "\tPlastic: " << plastMat << "\tScintillator: "
                       << scintMat << "\tRotation matrix " << rotns << ":" 
                       << rotmat << "\n\tNumber of layers " << layers;
  for (i = 0; i < layers; i++) {
    LogDebug("HCalGeom") << "\t" << layerName[i] << "\tType " << layerType[i]
                         << "\tThickness " << layerT[i] << "\tScint.Thick " 
                         << scintT[i];
  }

  // Derive bounding of the modules
  int module = 0;
  // Layer 0 (Nose)
  if (modules > 0) {
    zminBlock.push_back(ziL0Nose);
    zmaxBlock.push_back(zminBlock[module] + layerT[0] + 0.5*dzStep);
    rinBlock1.push_back(zminBlock[module] * tan(angTop));
    rinBlock2.push_back(zmaxBlock[module] * tan(angTop));
    routBlock1.push_back((zminBlock[module] - z1Beam) * slope);
    routBlock2.push_back((zmaxBlock[module] - z1Beam) * slope);
    module++;
  }

  // Layer 0 (Body)
  if (modules > 1) {
    zminBlock.push_back(ziL0Body);
    zmaxBlock.push_back(zminBlock[module] + layerT[0] + 0.5*dzStep);
    rinBlock1.push_back(zminBlock[module] * tan(angBot));
    rinBlock2.push_back(zmaxBlock[module] * tan(angBot));
    routBlock1.push_back(zminBlock[module] * tan(angTop));
    routBlock2.push_back(zmaxBlock[module] * tan(angTop));
    module++;
  }

  // Hac1
  if (modules > 2) {
    zminBlock.push_back(ziNose);
    zmaxBlock.push_back(ziBody);
    rinBlock1.push_back(zminBlock[module] * tan(angTop));
    rinBlock2.push_back(zmaxBlock[module] * tan(angTop));
    routBlock1.push_back((zminBlock[module] - z1Beam) * slope);
    routBlock2.push_back((zmaxBlock[module] - z1Beam) * slope);
    module++;
  }

  // Hac2
  if (modules > 3) {
    zminBlock.push_back(ziBody);
    zmaxBlock.push_back(zminBlock[module] + layerN[3]*dzStep);
    rinBlock1.push_back(zminBlock[module] * tan(angBot));
    rinBlock2.push_back(zmaxBlock[module] * tan(angBot));
    routBlock1.push_back((zmaxBlock[module-1] - z1Beam) * slope);
    routBlock2.push_back(rout);
    module++;
  }

  // Hac3
  if (modules > 4) {
    zminBlock.push_back(zmaxBlock[module-1]);
    zmaxBlock.push_back(zminBlock[module] + layerN[4]*dzStep);
    rinBlock1.push_back(zminBlock[module] * tan(angBot));
    rinBlock2.push_back(zmaxBlock[module] * tan(angBot));
    routBlock1.push_back(rout);
    routBlock2.push_back(rout);
    module++;
  }

  // Hac4
  if (modules > 5) {
    zminBlock.push_back(zmaxBlock[module-1]);
    zmaxBlock.push_back(zminBlock[module] + layerN[5]*dzStep);
    rinBlock1.push_back(zminBlock[module] * tan(angBot));
    rinBlock2.push_back(zmaxBlock[module] * tan(angBot));
    routBlock1.push_back(rout);
    routBlock2.push_back(roDip);
    module++;
  }

  for (i = 0; i < module; i++)
    LogDebug("HCalGeom") << "DDHCalEndcapAlgo debug: Module " << i 
                         << "\tZ/Rin/Rout " << zminBlock[i] << ", " 
                         << zmaxBlock[i] << "/ " << rinBlock1[i] << ", " 
                         << rinBlock2[i] << "/ " << routBlock1[i] << ", " 
                         << routBlock2[i];

  idName      = sArgs["MotherName"];
  idNameSpace = DDCurrentNamespace::ns();
  idOffset = int (nArgs["IdOffset"]); 
  DDName parentName = parent().name(); 
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo debug: Parent " << parentName 
                       << " idName " << idName << " NameSpace " << idNameSpace
                       << " Offset " << idOffset;

  tolPos      = nArgs["TolPos"];
  tolAbs      = nArgs["TolAbs"];
  LogDebug("HCalGeom") << "DDHCalEndcapAlgo debug: Tolerances - Positioning "
                       << tolPos << " Absorber " << tolAbs;
}
void DDHCalEndcapAlgo::parameterLayer ( int  iphi,
double  rinF,
double  routF,
double  rinB,
double  routB,
double  zi,
double  zo,
double &  yh1,
double &  bl1,
double &  tl1,
double &  yh2,
double &  bl2,
double &  tl2,
double &  alp,
double &  theta,
double &  phi,
double &  xpos,
double &  ypos,
double &  zcpv 
) [protected]

Definition at line 641 of file DDHCalEndcapAlgo.cc.

References alpha, getNsectors(), LogDebug, pi, csvReporter::r, mathSSE::sqrt(), and funct::tan().

Referenced by constructInsideModule(), and constructInsideModule0().

                                                    {

  //Given rin, rout compute parameters of the trapezoid and 
  //position of the trapezoid for a standrd layer
  double alpha = CLHEP::pi/getNsectors();
  LogDebug("HCalGeom") << "Input " << iphi << " Front " << rinF << " " << routF
                       << " " << zi << " Back " << rinB << " " << routB << " "
                       << zo << " Alpha " << alpha/CLHEP::deg;

  yh1 = 0.5 * (routF - rinB);
  bl1 = 0.5 * rinB  * tan(alpha);
  tl1 = 0.5 * routF * tan(alpha);
  yh2 = 0.5 * (routF - rinB);
  bl2 = 0.5 * rinB  * tan(alpha);
  tl2 = 0.5 * routF * tan(alpha);
  double dx  = 0.25* (bl2+tl2-bl1-tl1);
  double dy  = 0.5 * (rinB+routF-rinB-routF);
  xpos = 0.25*(rinB+routF+rinB+routF);
  ypos = 0.25*(bl2+tl2+bl1+tl1);
  zpos = 0.5*(zi+zo);
  alp  = atan(0.5 * tan(alpha));
  //  ypos-= getTolPos();
  if (iphi == 0) {
    ypos  = -ypos;
  } else {
    alp  = -alp;
    dx   = -dx;
  }
  double r   = sqrt (dx*dx + dy*dy);
  theta= atan (r/(zo-zi));
  phi  = atan2 (dy, dx);
  LogDebug("HCalGeom") << "Output Dimensions " << yh1 << " " << bl1 << " "
                       << tl1 << " " << yh2 << " " << bl2 << " " << tl2
                       << " " << alp/CLHEP::deg << " " << theta/CLHEP::deg
                       << " " << phi/CLHEP::deg << " Position " << xpos << " "
                       << ypos << " " << zpos;
}
void DDHCalEndcapAlgo::parameterLayer0 ( int  mod,
int  layer,
int  iphi,
double &  yh,
double &  bl,
double &  tl,
double &  alp,
double &  xpos,
double &  ypos,
double &  zcpv 
) [protected]

Definition at line 593 of file DDHCalEndcapAlgo.cc.

References alpha, getAngBot(), getAngTop(), getLayerT(), getNsectors(), getSlope(), getTrim(), getZ1Beam(), getZmaxBlock(), getZminBlock(), LogDebug, pi, rout, and funct::tan().

Referenced by constructInsideModule0().

                                                     {

  //Given module and layer number compute parameters of trapezoid
  //and positioning parameters
  double alpha = CLHEP::pi/getNsectors();
  LogDebug("HCalGeom") << "Input " << iphi << " " << layer << " " << iphi
                       << " Alpha " << alpha/CLHEP::deg;

  double zi, zo;
  if (iphi == 0) {
    zi = getZminBlock(mod);
    zo = zi + getLayerT(layer);
  } else {
    zo = getZmaxBlock(mod);
    zi = zo - getLayerT(layer);
  }
  double rin, rout;
  if (mod == 0) {
    rin  = zo * tan(getAngTop());
    rout = (zi - getZ1Beam()) * getSlope();
  } else {
    rin  = zo * tan(getAngBot());
    rout = zi * tan(getAngTop());
  }
  yh   = 0.5 * (rout - rin);
  bl   = 0.5 * rin * tan (alpha);
  tl   = 0.5 * rout * tan(alpha);
  xpos = 0.5 * (rin + rout);
  ypos = 0.5 * (bl + tl);
  zpos = 0.5 * (zi + zo);
  yh  -= getTrim(mod,iphi);
  bl  -= getTrim(mod,iphi);
  tl  -= getTrim(mod,iphi);
  alp  = atan(0.5 * tan(alpha));
  if (iphi == 0) {
    ypos  = -ypos;
  } else {
    alp  = -alp;
  }
  LogDebug("HCalGeom") << "Output Dimensions " << yh << " " << bl << " "
                       << tl << " " << alp/CLHEP::deg << " Position " << xpos 
                       << " " << ypos << " " << zpos;
}

Member Data Documentation

std::string DDHCalEndcapAlgo::absMat [private]

Definition at line 144 of file DDHCalEndcapAlgo.h.

Referenced by getAbsMat(), and initialize().

double DDHCalEndcapAlgo::angBot [private]

Definition at line 140 of file DDHCalEndcapAlgo.h.

Referenced by getAngBot(), and initialize().

double DDHCalEndcapAlgo::angGap [private]

Definition at line 141 of file DDHCalEndcapAlgo.h.

Referenced by getAngGap(), and initialize().

double DDHCalEndcapAlgo::angTop [private]

Definition at line 139 of file DDHCalEndcapAlgo.h.

Referenced by getAngTop(), and initialize().

double DDHCalEndcapAlgo::drEnd [private]

Definition at line 137 of file DDHCalEndcapAlgo.h.

Referenced by getDrEnd(), and initialize().

double DDHCalEndcapAlgo::dzShift [private]

Definition at line 129 of file DDHCalEndcapAlgo.h.

Referenced by getDzShift(), and initialize().

double DDHCalEndcapAlgo::dzStep [private]

Definition at line 128 of file DDHCalEndcapAlgo.h.

Referenced by getDzStep(), and initialize().

std::vector<int> DDHCalEndcapAlgo::eModule [private]

Definition at line 112 of file DDHCalEndcapAlgo.h.

Referenced by equipModule(), and initialize().

std::string DDHCalEndcapAlgo::genMaterial [private]

Definition at line 108 of file DDHCalEndcapAlgo.h.

Referenced by getGenMat(), and initialize().

double DDHCalEndcapAlgo::heboxDepth [private]

Definition at line 136 of file DDHCalEndcapAlgo.h.

Referenced by getHeboxDepth(), and initialize().

std::string DDHCalEndcapAlgo::idName [private]
std::string DDHCalEndcapAlgo::idNameSpace [private]

Definition at line 180 of file DDHCalEndcapAlgo.h.

Referenced by constructInsideModule(), constructInsideModule0(), and initialize().

std::vector<int> DDHCalEndcapAlgo::layerN [private]

Definition at line 150 of file DDHCalEndcapAlgo.h.

Referenced by getLayerN(), and initialize().

std::vector<int> DDHCalEndcapAlgo::layerN0 [private]

Definition at line 151 of file DDHCalEndcapAlgo.h.

Referenced by getLayer(), and initialize().

std::vector<int> DDHCalEndcapAlgo::layerN1 [private]

Definition at line 152 of file DDHCalEndcapAlgo.h.

Referenced by getLayer(), and initialize().

std::vector<int> DDHCalEndcapAlgo::layerN2 [private]

Definition at line 153 of file DDHCalEndcapAlgo.h.

Referenced by getLayer(), and initialize().

std::vector<int> DDHCalEndcapAlgo::layerN3 [private]

Definition at line 154 of file DDHCalEndcapAlgo.h.

Referenced by getLayer(), and initialize().

std::vector<int> DDHCalEndcapAlgo::layerN4 [private]

Definition at line 155 of file DDHCalEndcapAlgo.h.

Referenced by getLayer(), and initialize().

std::vector<int> DDHCalEndcapAlgo::layerN5 [private]

Definition at line 156 of file DDHCalEndcapAlgo.h.

Referenced by getLayer(), and initialize().

std::vector<std::string> DDHCalEndcapAlgo::layerName [private]

Definition at line 170 of file DDHCalEndcapAlgo.h.

Referenced by getLayerName(), and initialize().

int DDHCalEndcapAlgo::layers [private]

Definition at line 169 of file DDHCalEndcapAlgo.h.

Referenced by getLayers(), and initialize().

std::vector<double> DDHCalEndcapAlgo::layerT [private]

Definition at line 172 of file DDHCalEndcapAlgo.h.

Referenced by getLayerT(), and initialize().

std::vector<int> DDHCalEndcapAlgo::layerType [private]

Definition at line 171 of file DDHCalEndcapAlgo.h.

Referenced by getLayerType(), and initialize().

std::vector<std::string> DDHCalEndcapAlgo::modMat [private]

Definition at line 147 of file DDHCalEndcapAlgo.h.

Referenced by getModMat(), and initialize().

std::vector<std::string> DDHCalEndcapAlgo::modName [private]

Definition at line 146 of file DDHCalEndcapAlgo.h.

Referenced by getModName(), and initialize().

std::vector<int> DDHCalEndcapAlgo::modType [private]

Definition at line 148 of file DDHCalEndcapAlgo.h.

Referenced by getModType(), and initialize().

Definition at line 145 of file DDHCalEndcapAlgo.h.

Referenced by getModules(), and initialize().

Definition at line 111 of file DDHCalEndcapAlgo.h.

Referenced by getEndcaps(), and initialize().

Definition at line 109 of file DDHCalEndcapAlgo.h.

Referenced by getNsectors(), and initialize().

Definition at line 110 of file DDHCalEndcapAlgo.h.

Referenced by getNsectortot(), and initialize().

std::vector<std::string> DDHCalEndcapAlgo::phiName [private]

Definition at line 168 of file DDHCalEndcapAlgo.h.

Referenced by getPhiName(), and initialize().

Definition at line 167 of file DDHCalEndcapAlgo.h.

Referenced by getPhi(), and initialize().

std::string DDHCalEndcapAlgo::plastMat [private]

Definition at line 174 of file DDHCalEndcapAlgo.h.

Referenced by getPlastMat(), and initialize().

double DDHCalEndcapAlgo::riDip [private]

Definition at line 134 of file DDHCalEndcapAlgo.h.

Referenced by getRinDip(), and initialize().

double DDHCalEndcapAlgo::riKink [private]

Definition at line 133 of file DDHCalEndcapAlgo.h.

Referenced by getRinKink(), and initialize().

std::vector<double> DDHCalEndcapAlgo::rinBlock1 [private]

Definition at line 162 of file DDHCalEndcapAlgo.h.

Referenced by getRinBlock1(), and initialize().

std::vector<double> DDHCalEndcapAlgo::rinBlock2 [private]

Definition at line 164 of file DDHCalEndcapAlgo.h.

Referenced by getRinBlock2(), and initialize().

double DDHCalEndcapAlgo::roDip [private]

Definition at line 135 of file DDHCalEndcapAlgo.h.

Referenced by getRoutDip(), and initialize().

std::string DDHCalEndcapAlgo::rotation [private]

Definition at line 115 of file DDHCalEndcapAlgo.h.

Referenced by constructGeneralVolume(), getRotation(), and initialize().

std::string DDHCalEndcapAlgo::rotHalf [private]

Definition at line 113 of file DDHCalEndcapAlgo.h.

Referenced by constructGeneralVolume(), and initialize().

std::string DDHCalEndcapAlgo::rotmat [private]

Definition at line 176 of file DDHCalEndcapAlgo.h.

Referenced by getRotMat(), and initialize().

std::string DDHCalEndcapAlgo::rotns [private]
double DDHCalEndcapAlgo::rout [private]

Definition at line 132 of file DDHCalEndcapAlgo.h.

Referenced by getRout(), initialize(), and parameterLayer0().

std::vector<double> DDHCalEndcapAlgo::routBlock1 [private]

Definition at line 163 of file DDHCalEndcapAlgo.h.

Referenced by getRoutBlock1(), and initialize().

std::vector<double> DDHCalEndcapAlgo::routBlock2 [private]

Definition at line 165 of file DDHCalEndcapAlgo.h.

Referenced by getRoutBlock2(), and initialize().

std::string DDHCalEndcapAlgo::scintMat [private]

Definition at line 175 of file DDHCalEndcapAlgo.h.

Referenced by getScintMat(), and initialize().

std::vector<double> DDHCalEndcapAlgo::scintT [private]

Definition at line 173 of file DDHCalEndcapAlgo.h.

Referenced by getScintT(), and initialize().

std::vector<int> DDHCalEndcapAlgo::sectionModule [private]

Definition at line 149 of file DDHCalEndcapAlgo.h.

Referenced by getSectionModule(), and initialize().

double DDHCalEndcapAlgo::slope [private]

Definition at line 142 of file DDHCalEndcapAlgo.h.

Referenced by getSlope(), and initialize().

std::vector<double> DDHCalEndcapAlgo::thick [private]

Definition at line 157 of file DDHCalEndcapAlgo.h.

Referenced by getThick(), and initialize().

double DDHCalEndcapAlgo::tolAbs [private]

Definition at line 182 of file DDHCalEndcapAlgo.h.

Referenced by getTolAbs(), and initialize().

double DDHCalEndcapAlgo::tolPos [private]

Definition at line 182 of file DDHCalEndcapAlgo.h.

Referenced by getTolPos(), and initialize().

std::vector<double> DDHCalEndcapAlgo::trimLeft [private]

Definition at line 158 of file DDHCalEndcapAlgo.h.

Referenced by getTrim(), and initialize().

std::vector<double> DDHCalEndcapAlgo::trimRight [private]

Definition at line 159 of file DDHCalEndcapAlgo.h.

Referenced by getTrim(), and initialize().

double DDHCalEndcapAlgo::z0Beam [private]

Definition at line 125 of file DDHCalEndcapAlgo.h.

Referenced by getZ0Beam(), and initialize().

double DDHCalEndcapAlgo::z1Beam [private]

Definition at line 126 of file DDHCalEndcapAlgo.h.

Referenced by getZ1Beam(), and initialize().

double DDHCalEndcapAlgo::zEnd [private]

Definition at line 119 of file DDHCalEndcapAlgo.h.

Referenced by getZEnd(), and initialize().

double DDHCalEndcapAlgo::zFront [private]

Definition at line 118 of file DDHCalEndcapAlgo.h.

Referenced by getZFront(), and initialize().

double DDHCalEndcapAlgo::ziBody [private]

Definition at line 122 of file DDHCalEndcapAlgo.h.

Referenced by getZiBody(), and initialize().

double DDHCalEndcapAlgo::ziDip [private]

Definition at line 127 of file DDHCalEndcapAlgo.h.

Referenced by getZiDip(), and initialize().

double DDHCalEndcapAlgo::ziKink [private]

Definition at line 124 of file DDHCalEndcapAlgo.h.

Referenced by getZiKink(), and initialize().

double DDHCalEndcapAlgo::ziL0Body [private]

Definition at line 123 of file DDHCalEndcapAlgo.h.

Referenced by getZiL0Body(), and initialize().

double DDHCalEndcapAlgo::ziL0Nose [private]

Definition at line 121 of file DDHCalEndcapAlgo.h.

Referenced by getZiL0Nose(), and initialize().

double DDHCalEndcapAlgo::ziNose [private]

Definition at line 120 of file DDHCalEndcapAlgo.h.

Referenced by getZiNose(), and initialize().

std::vector<double> DDHCalEndcapAlgo::zmaxBlock [private]

Definition at line 161 of file DDHCalEndcapAlgo.h.

Referenced by getZmaxBlock(), and initialize().

std::vector<double> DDHCalEndcapAlgo::zminBlock [private]

Definition at line 160 of file DDHCalEndcapAlgo.h.

Referenced by getZminBlock(), and initialize().

double DDHCalEndcapAlgo::zShift [private]

Definition at line 116 of file DDHCalEndcapAlgo.h.

Referenced by getZShift(), and initialize().

double DDHCalEndcapAlgo::zShiftHac2 [private]

Definition at line 130 of file DDHCalEndcapAlgo.h.

Referenced by getZShiftHac2(), and initialize().