CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Attributes

DDHCalBarrelAlgo Class Reference

#include <DDHCalBarrelAlgo.h>

List of all members.

Public Member Functions

 DDHCalBarrelAlgo ()
void execute (DDCompactView &cpv)
double getAbsorbD (unsigned int i) const
int getAbsorberN () const
std::string getAbsorbMat (unsigned int i) const
std::string getAbsorbName (unsigned int i) const
double getAbsorbT (unsigned int i) const
double getDetdP1 (unsigned int i) const
double getDetdP2 (unsigned int i) const
std::string getDetMat () const
std::string getDetMatPl () const
std::string getDetMatSc () const
int getDetPosY (unsigned int i) const
double getDetT11 (unsigned int i) const
double getDetT12 (unsigned int i) const
double getDetT21 (unsigned int i) const
double getDetT22 (unsigned int i) const
double getDetTsc (unsigned int i) const
int getDetType (unsigned int i) const
double getDetWidth1 (unsigned int i) const
double getDetWidth2 (unsigned int i) const
std::string getGenMaterial () const
int getLayerAbsorb (unsigned int i) const
double getLayerAlpha (unsigned i) const
double getLayerD1 (unsigned i) const
double getLayerD2 (unsigned i) const
double getLayerGap (unsigned int i) const
int getLayerId (unsigned i) const
std::string getLayerLabel (unsigned i) const
std::string getLayerMaterial (unsigned i) const
double getLayerT1 (unsigned i) const
double getLayerT2 (unsigned i) const
double getLayerWidth (unsigned i) const
std::string getMidAbsMat (unsigned int i) const
std::string getMidAbsName (unsigned int i) const
int getMidAbsorber () const
double getMidAbsT (unsigned int i) const
double getMidAbsW (unsigned int i) const
double getMiddleD () const
std::string getMiddleMat () const
double getMiddleW () const
int getNhalf () const
int getNLayers () const
int getNsectors () const
int getNsectortot () const
double getRin () const
double getRmax (unsigned int i) const
double getRout () const
int getRzones () const
std::string getSideAbsMat (unsigned int i) const
std::string getSideAbsName (unsigned int i) const
int getSideAbsorber () const
double getSideAbsW (unsigned int i) const
double getSideD (unsigned int i) const
std::string getSideMat (unsigned int i) const
double getSideT (unsigned int i) const
double getTanTheta (unsigned int i) const
double getTheta (unsigned int i) const
double getZoff (unsigned int i) const
void initialize (const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs)
virtual ~DDHCalBarrelAlgo ()

Protected Member Functions

void constructGeneralVolume (DDCompactView &cpv)
void constructInsideDetectors (DDLogicalPart detector, std::string name, int id, double dx, double dy, double dz, int type, DDCompactView &cpv)
void constructInsideLayers (DDLogicalPart laylog, std::string name, int id, int nAbs, double rin, double d1, double alpha1, double d2, double alpha2, double t1, double t2, DDCompactView &cpv)
void constructInsideSector (DDLogicalPart sector, DDCompactView &cpv)
DDLogicalPart constructMidLayer (DDLogicalPart laylog, std::string nm, double rin, double alpha, DDCompactView &cpv)
DDLogicalPart constructSideLayer (DDLogicalPart laylog, std::string nm, int nAbs, double rin, double alpha, DDCompactView &cpv)

Private Attributes

std::vector< double > absorbD
std::vector< std::string > absorbMat
std::vector< std::string > absorbName
std::vector< double > absorbT
std::vector< double > detdP1
std::vector< double > detdP2
std::string detMat
std::string detMatPl
std::string detMatSc
std::vector< int > detPosY
std::string detRot
std::vector< double > detT11
std::vector< double > detT12
std::vector< double > detT21
std::vector< double > detT22
std::vector< double > detTsc
std::vector< int > detType
std::vector< double > detWidth1
std::vector< double > detWidth2
std::string genMaterial
std::string idName
std::string idNameSpace
int idOffset
std::vector< int > layerAbsorb
std::vector< double > layerAlpha
std::vector< double > layerD1
std::vector< double > layerD2
std::vector< double > layerGap
std::vector< int > layerId
std::vector< std::string > layerLabel
std::vector< std::string > layerMat
std::vector< double > layerT1
std::vector< double > layerT2
std::vector< double > layerWidth
double middleD
std::string middleMat
double middleW
std::vector< std::string > midMat
std::vector< std::string > midName
std::vector< double > midT
std::vector< double > midW
int nAbsorber
int nhalf
int nLayers
int nMidAbs
int nsectors
int nsectortot
int nSideAbs
double rin
std::vector< double > rmax
std::string rotHalf
std::string rotns
double rout
int rzones
std::vector< std::string > sideAbsMat
std::vector< std::string > sideAbsName
std::vector< double > sideAbsW
std::vector< double > sideD
std::vector< std::string > sideMat
std::vector< double > sideT
std::vector< double > theta
std::vector< double > ttheta
std::vector< double > zoff

Detailed Description

Definition at line 10 of file DDHCalBarrelAlgo.h.


Constructor & Destructor Documentation

DDHCalBarrelAlgo::DDHCalBarrelAlgo ( )

Definition at line 22 of file DDHCalBarrelAlgo.cc.

References LogDebug.

                                  :
  theta(0),rmax(0),zoff(0),ttheta(0),layerId(0),layerLabel(0),layerMat(0),
  layerWidth(0),layerD1(0),layerD2(0),layerAlpha(0),layerT1(0),layerT2(0),
  layerAbsorb(0),layerGap(0),absorbName(0),absorbMat(0),absorbD(0),absorbT(0),
  midName(0),midMat(0),midW(0),midT(0),sideMat(0),sideD(0),sideT(0),
  sideAbsName(0),sideAbsMat(0),sideAbsW(0),detType(0),detdP1(0),detdP2(0),
  detT11(0),detT12(0),detTsc(0),detT21(0),detT22(0),detWidth1(0),detWidth2(0),
  detPosY(0) {
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo info: Creating an instance";
}
DDHCalBarrelAlgo::~DDHCalBarrelAlgo ( ) [virtual]

Definition at line 33 of file DDHCalBarrelAlgo.cc.

{}

Member Function Documentation

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

Definition at line 198 of file DDHCalBarrelAlgo.cc.

References alpha, constructInsideSector(), dbl_to_string(), DDrot(), DDSplit(), first, getGenMaterial(), getNhalf(), getNsectors(), getNsectortot(), getRin(), getRmax(), getRout(), getTanTheta(), getZoff(), i, idName, idNameSpace, LogDebug, DDBase< N, C >::name(), mergeVDriftHistosByStation::name, dbtoconf::parent, phi, pi, DDSolidFactory::polyhedra(), DDCompactView::position(), rin, makeMuonMisalignmentScenario::rot, idealTransformation::rotation, rotHalf, rotns, rout, edm::second(), and SiStripMonitorClusterAlca_cfi::zmax.

Referenced by execute().

                                                                {
  
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: General volume...";
  unsigned int i=0;

  DDRotation rot = DDRotation();

  double alpha = CLHEP::pi/getNsectors();
  double dphi  = getNsectortot()*CLHEP::twopi/getNsectors();
  int nsec, ntot=15;
  if (getNhalf() == 1)
    nsec = 8;
  else
    nsec = 15;
  int nf = ntot - nsec;

  //Calculate zmin... see HCalBarrel.hh picture. For polyhedra
  //Rmin and Rmax are distances to vertex
  double zmax   = getZoff(3);
  double zstep5 = getZoff(4);
  double zstep4 =(getZoff(1) + getRmax(1)*getTanTheta(1));
  if ((getZoff(2)+getRmax(1)*getTanTheta(2)) > zstep4)
    zstep4 = (getZoff(2)+getRmax(1)*getTanTheta(2));
  double zstep3 =(getZoff(1) + getRmax(0)*getTanTheta(1));
  double zstep2 =(getZoff(0) + getRmax(0)*getTanTheta(0));
  double zstep1 =(getZoff(0) + getRin()  *getTanTheta(0));
  double rout   = getRout();
  double rout1  = getRmax(3);
  double rin    = getRin();
  double rmid1  = getRmax(0);
  double rmid2  = getRmax(1);
  double rmid3  =(getZoff(4) - getZoff(2))/getTanTheta(2);
  double rmid4  = getRmax(2);

  vector<double> pgonZ;
  pgonZ.push_back( -zmax); 
  pgonZ.push_back( -zstep5); 
  pgonZ.push_back( -zstep5); 
  pgonZ.push_back( -zstep4); 
  pgonZ.push_back( -zstep3); 
  pgonZ.push_back( -zstep2); 
  pgonZ.push_back( -zstep1); 
  pgonZ.push_back(       0); 
  pgonZ.push_back(  zstep1); 
  pgonZ.push_back(  zstep2); 
  pgonZ.push_back(  zstep3); 
  pgonZ.push_back(  zstep4); 
  pgonZ.push_back(  zstep5); 
  pgonZ.push_back(  zstep5); 
  pgonZ.push_back(    zmax);

  vector<double> pgonRmin;
  pgonRmin.push_back(   rmid4); 
  pgonRmin.push_back(   rmid3); 
  pgonRmin.push_back(   rmid3); 
  pgonRmin.push_back(   rmid2); 
  pgonRmin.push_back(   rmid1); 
  pgonRmin.push_back(   rmid1); 
  pgonRmin.push_back(     rin); 
  pgonRmin.push_back(     rin); 
  pgonRmin.push_back(     rin); 
  pgonRmin.push_back(   rmid1); 
  pgonRmin.push_back(   rmid1); 
  pgonRmin.push_back(   rmid2); 
  pgonRmin.push_back(   rmid3); 
  pgonRmin.push_back(   rmid3); 
  pgonRmin.push_back(   rmid4);

  vector<double> pgonRmax;
  pgonRmax.push_back(   rout1); 
  pgonRmax.push_back(   rout1); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(    rout); 
  pgonRmax.push_back(   rout1);
  pgonRmax.push_back(   rout1);

  vector<double> pgonZHalf;
  pgonZHalf.push_back(       0); 
  pgonZHalf.push_back(  zstep1); 
  pgonZHalf.push_back(  zstep2); 
  pgonZHalf.push_back(  zstep3); 
  pgonZHalf.push_back(  zstep4); 
  pgonZHalf.push_back(  zstep5); 
  pgonZHalf.push_back(  zstep5); 
  pgonZHalf.push_back(    zmax);

  vector<double> pgonRminHalf;
  pgonRminHalf.push_back(     rin); 
  pgonRminHalf.push_back(     rin); 
  pgonRminHalf.push_back(   rmid1); 
  pgonRminHalf.push_back(   rmid1); 
  pgonRminHalf.push_back(   rmid2); 
  pgonRminHalf.push_back(   rmid3); 
  pgonRminHalf.push_back(   rmid3); 
  pgonRminHalf.push_back(   rmid4);

  vector<double> pgonRmaxHalf;
  pgonRmaxHalf.push_back(    rout); 
  pgonRmaxHalf.push_back(    rout); 
  pgonRmaxHalf.push_back(    rout); 
  pgonRmaxHalf.push_back(    rout); 
  pgonRmaxHalf.push_back(    rout); 
  pgonRmaxHalf.push_back(    rout); 
  pgonRmaxHalf.push_back(   rout1);
  pgonRmaxHalf.push_back(   rout1);

  string name("Null");
  DDSolid solid;
  if (nf == 0) { 
    solid = DDSolidFactory::polyhedra(DDName(idName, idNameSpace),
                                      getNsectortot(), -alpha, dphi, pgonZ, 
                                      pgonRmin, pgonRmax);
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: "
                         << DDName(idName, idNameSpace) <<" Polyhedra made of "
                         << getGenMaterial() << " with " << getNsectortot()
                         << " sectors from " << -alpha/CLHEP::deg <<" to "
                         << (-alpha+dphi)/CLHEP::deg << " and with " << nsec
                         << " sections ";
    for (i = 0; i <pgonZ.size(); i++) {
      LogDebug("HCalGeom") << "\t" << "\tZ = " << pgonZ[i] << "\tRmin = " 
                           << pgonRmin[i] << "\tRmax = " << pgonRmax[i];
    }
  } else {
    solid = DDSolidFactory::polyhedra(DDName(idName, idNameSpace),
                                      getNsectortot(), -alpha, dphi, pgonZHalf,
                                      pgonRminHalf, pgonRmaxHalf);
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " 
                         << DDName(idName, idNameSpace) <<" Polyhedra made of "
                         << getGenMaterial() << " with " << getNsectortot()
                         << " sectors from " << -alpha/CLHEP::deg << " to " 
                         << (-alpha+dphi)/CLHEP::deg << " and with " << nsec 
                         << " sections ";
    for (i = 0; i < pgonZHalf.size(); i++) {
      LogDebug("HCalGeom") << "\t" << "\tZ = " << pgonZHalf[i] << "\tRmin = "
                           << pgonRminHalf[i] << "\tRmax = " <<pgonRmaxHalf[i];
    }
  }  
  

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

  DDName parentName = parent().name(); 
  DDTranslation r0(0,0,0);
  cpv.position(DDName(idName, idNameSpace), parentName, 1, r0, rot);
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " 
                       << DDName(idName, idNameSpace) << " number 1 positioned"
                       << " in " << parentName << " at " << r0 <<" with "<<rot;

  //Forward and backwards halfs
  name = idName + "Half";
  nf   = (ntot+1)/2;
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << DDName(name,idNameSpace)
                       << " Polyhedra made of " << getGenMaterial() << " with "
                       << getNsectortot() << " sectors from " 
                       << -alpha/CLHEP::deg << " to " 
                       << (-alpha+dphi)/CLHEP::deg << " and with " << nf
                       << " sections "; 
  for (i = 0; i < pgonZHalf.size(); i++) {
    LogDebug("HCalGeom") << "\t" << "\tZ = " << pgonZHalf[i] << "\tRmin = "
                         << pgonRminHalf[i] << "\tRmax = " << pgonRmaxHalf[i];
  }

  solid =   DDSolidFactory::polyhedra(DDName(name, idNameSpace),
                                      getNsectortot(), -alpha, dphi, pgonZHalf,
                                      pgonRminHalf, pgonRmaxHalf);
  DDLogicalPart genlogich(DDName(name, idNameSpace), matter, solid);

  cpv.position(genlogich, genlogic, 1, r0, rot);
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: "  << genlogich.name() 
                       << " number 1 positioned in " << genlogic.name() 
                       << " at " << r0 << " with " << rot;

  if (getNhalf() != 1) {
    rot = DDRotation(DDName(rotHalf, rotns));
   cpv.position(genlogich, genlogic, 2, r0, rot);
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test:  " << genlogich.name()
                         << " number 2 positioned in " << genlogic.name()
                         << " at " << r0 << " with " << rot;
  } //end if (getNhalf...
  
  //Construct sector (from -alpha to +alpha)
  name = idName + "Module";
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << DDName(name,idNameSpace)
                       << " Polyhedra made of " << getGenMaterial() 
                       << " with 1 sector from " << -alpha/CLHEP::deg << " to "
                       << alpha/CLHEP::deg << " and with " << nf <<" sections";
  for (i = 0; i < pgonZHalf.size(); i++) {
    LogDebug("HCalGeom") << "\t" << "\tZ = " << pgonZHalf[i] << "\tRmin = " 
                         << pgonRminHalf[i] << "\tRmax = " << pgonRmaxHalf[i];
  }

  solid =   DDSolidFactory::polyhedra(DDName(name, idNameSpace),
                                      1, -alpha, 2*alpha, pgonZHalf,
                                      pgonRminHalf, pgonRmaxHalf);
  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") << "DDHCalBarrelAlgo test: Creating a new rotat"
                             << "ion " << 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, r0, rotation);
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << seclogic.name() 
                         << " number " << ii+1 << " positioned in " 
                         << genlogich.name() << " at " << r0 << " with "
                         << rotation;
  }
  
  //Construct the things inside the sector
  constructInsideSector(seclogic, cpv);
}
void DDHCalBarrelAlgo::constructInsideDetectors ( DDLogicalPart  detector,
std::string  name,
int  id,
double  dx,
double  dy,
double  dz,
int  type,
DDCompactView cpv 
) [protected]

Definition at line 885 of file DDHCalBarrelAlgo.cc.

References DDSolidFactory::box(), DDBase< N, C >::ddname(), DDSplit(), first, getDetdP1(), getDetdP2(), getDetMatPl(), getDetMatSc(), getDetPosY(), getDetT11(), getDetT12(), getDetT21(), getDetT22(), getDetTsc(), getDetType(), getDetWidth1(), getDetWidth2(), idName, idNameSpace, LogDebug, DDName::name(), DDBase< N, C >::name(), mergeVDriftHistosByStation::name, DDCompactView::position(), edm::second(), x, and detailsBasic3DVector::y.

Referenced by constructInsideLayers().

                                                                              {

  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: \t\tInside detector " << id 
                       << "...";
  
  DDName plmatname(DDSplit(getDetMatPl()).first, DDSplit(getDetMatPl()).second);
  DDMaterial plmatter(plmatname);
  DDName scmatname(DDSplit(getDetMatSc()).first, DDSplit(getDetMatSc()).second);
  DDMaterial scmatter(scmatname);
  
  string plname = detector.name().name()+"Plastic_";
  string scname = idName+"Scintillator"+name;
  
  id--;
  DDSolid solid;
  DDLogicalPart glog;
  double  wid, y=0;
  double  dx1, dx2, shiftX;

  if (type == 1) {
    wid = 0.5*getDetWidth1(id);
    if (getDetPosY(id)>0) y =-dy+wid;
    dx1    = 0.5*getDetT11(id);
    dx2    = 0.5*getDetT21(id);
    shiftX = getDetdP1(id);
  } else {
    wid = 0.5*getDetWidth2(id);
    dx1    = 0.5*getDetT12(id);
    dx2    = 0.5*getDetT22(id);
    shiftX = getDetdP2(id);
  }

  solid = DDSolidFactory::box(DDName(plname+"1", idNameSpace), dx1, wid, dz);
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                       << " Box made of " << getDetMatPl() << " of dimensions "
                       << dx1 <<", " << wid << ", "  << dz;
  glog = DDLogicalPart(solid.ddname(), plmatter, solid); 

  double x = shiftX + dx1 - dx;
  cpv.position(glog, detector, 1, DDTranslation(x,y,0), DDRotation());
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << glog.name() 
                       << " Number 1 positioned in " << detector.name() 
                       << " at (" << x << "," << y << ",0) with no rotation";

  solid = DDSolidFactory::box(DDName(scname, idNameSpace), 
                              0.5*getDetTsc(id), wid, dz);
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                       << " Box made of " << getDetMatSc() << " of dimensions "
                       << 0.5*getDetTsc(id) << ", " << wid << ", " << dz;
  glog = DDLogicalPart(solid.ddname(), scmatter, solid);

  x += dx1 + 0.5*getDetTsc(id);
  int copyNo = id*10 + getDetType(id);
  cpv.position(glog, detector, copyNo, DDTranslation(x, y, 0), DDRotation());
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << glog.name() <<" Number "
                       << copyNo << " positioned in " << detector.name() 
                       << " at (" << x << "," << y  << ",0) with no rotation";

  solid = DDSolidFactory::box(DDName(plname+"2", idNameSpace), dx2, wid, dz);
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                       << " Box made of " << getDetMatPl() << " of dimensions "
                       << dx2 <<", " << wid << ", "  << dz;
  glog = DDLogicalPart(solid.ddname(), plmatter, solid);

  x+=0.5*getDetTsc(id) + dx2;
 cpv.position(glog, detector, 1, DDTranslation(x, y, 0), DDRotation());
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << glog.name() 
                       << " Number 1 positioned in " << detector.name() 
                       << " at (" << x << "," << y << ",0) with no rotation";

}
void DDHCalBarrelAlgo::constructInsideLayers ( DDLogicalPart  laylog,
std::string  name,
int  id,
int  nAbs,
double  rin,
double  d1,
double  alpha1,
double  d2,
double  alpha2,
double  t1,
double  t2,
DDCompactView cpv 
) [protected]

Definition at line 554 of file DDHCalBarrelAlgo.cc.

References DDSolidFactory::box(), constructInsideDetectors(), constructMidLayer(), constructSideLayer(), DDBase< N, C >::ddname(), DDSplit(), detRot, first, getDetMat(), getRmax(), getRzones(), getTanTheta(), getZoff(), i, idName, idNameSpace, idOffset, recoMuon::in, LogDebug, DDBase< N, C >::name(), mergeVDriftHistosByStation::name, DDCompactView::position(), makeMuonMisalignmentScenario::rot, rotns, edm::second(), funct::tan(), x, and detailsBasic3DVector::y.

Referenced by constructInsideSector().

                                                                            {
  
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: \t\tInside layer " << id 
                       << "...";

  //Pointers to the Rotation Matrices and to the Materials
  DDRotation rot(DDName(detRot, rotns));

  string nam0 = nm + "In";
  string name = idName + nam0;
  DDName matName(DDSplit(getDetMat()).first, DDSplit(getDetMat()).second);
  DDMaterial matter (matName);

  DDSolid        solid;
  DDLogicalPart  glog, mother;
  double         rsi, dx, dy, dz, x, y;
  int            i, in;
  //Two lower volumes
  if (alpha1 > 0) {
    rsi = rin + d1;
    in  = 0;
    for (i = 0; i < getRzones()-1; i++) {
      if (rsi >= getRmax(i)) in = i+1;
    }
    dx = 0.5*t1;
    dy = 0.5*rsi*(tan(alpha1)-tan(alpha2));
    dz = 0.5*(getZoff(in) + rsi*getTanTheta(in));
    x  = rsi + dx;
    y  = 0.5*rsi*(tan(alpha1)+tan(alpha2));
    DDTranslation r11(x, y, dz);
    DDTranslation r12(x, -y, dz);

    solid = DDSolidFactory::box(DDName(name+"1", idNameSpace), dx, dy, dz);
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                         <<" Box made of " << getDetMat() << " of dimensions "
                         << dx << ", " << dy << ", " << dz;
    glog = DDLogicalPart(solid.ddname(), matter, solid);

    if (nAbs != 0) {
      mother = constructSideLayer(laylog, name, nAbs, rin, alpha1, cpv);
    } else {
      mother = laylog;
    }
    cpv.position(glog, mother, idOffset+1, r11, DDRotation());
    cpv.position(glog, mother, idOffset+2, r12, rot);
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << glog.name() 
                         << " Number " << idOffset+1 << " positioned in " 
                         << mother.name() << " at " << r11 
                         << " with no rotation\n"
                         << "DDHCalBarrelAlgo test: " << glog.name() 
                         << " Number " << idOffset+2 << " positioned in " 
                         << mother.name() << " at " << r12 << " with " << rot;

    //Constructin the plastics and scintillators inside
    constructInsideDetectors(glog, nam0+"1", id, dx, dy, dz, 1, cpv);
  }

  //Upper volume
  rsi = rin + d2;
  in  = 0;
  for (i = 0; i < getRzones()-1; i++) {
    if (rsi >= getRmax(i)) in = i+1;
  }
  dx  = 0.5*t2;
  dy  = 0.5*rsi*tan(alpha2);
  dz  = 0.5*(getZoff(in) + rsi*getTanTheta(in));
  x   = rsi + dx;
  DDTranslation r21(x, dy, dz);
  DDTranslation r22(x, -dy, dz);
  
  solid = DDSolidFactory::box(DDName(name+"2", idNameSpace), dx, dy, dz);
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                       << " Box made of " << getDetMat() << " of dimensions "
                       << dx << ", " << dy << ", " << dz;
  glog = DDLogicalPart(solid.ddname(), matter, solid);

  if (nAbs < 0) {
    mother = constructMidLayer(laylog, name, rin, alpha1, cpv);
  } else {
    mother = laylog;
  }
 cpv.position(glog, mother, idOffset+3, r21, DDRotation());
 cpv.position(glog, mother, idOffset+4, r22, rot);
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << glog.name() <<" Number "
                       << idOffset+3 << " positioned in " << mother.name() 
                       << " at " << r21 << " with no rotation\n"
                       << "DDHCalBarrelAlgo test: " << glog.name() <<" Number "
                       << idOffset+4 << " positioned in " << mother.name()
                       << " at " << r22 << " with " << rot;

  //Constructin the plastics and scintillators inside
  constructInsideDetectors(glog, nam0+"2", id, dx, dy, dz, 2, cpv);
}
void DDHCalBarrelAlgo::constructInsideSector ( DDLogicalPart  sector,
DDCompactView cpv 
) [protected]

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

Definition at line 438 of file DDHCalBarrelAlgo.cc.

References alpha, constructInsideLayers(), DDSplit(), alignCSCRings::e, first, getLayerAbsorb(), getLayerAlpha(), getLayerD1(), getLayerD2(), getLayerGap(), getLayerId(), getLayerLabel(), getLayerMaterial(), getLayerT1(), getLayerT2(), getLayerWidth(), getNLayers(), getNsectors(), getRin(), getRmax(), getRzones(), getTanTheta(), getZoff(), i, idName, idNameSpace, recoMuon::in, j, gen::k, LogDebug, DDBase< N, C >::name(), mergeVDriftHistosByStation::name, dbtoconf::out, pi, DDSolidFactory::polyhedra(), DDCompactView::position(), rin, rout, edm::second(), funct::tan(), and tablePrinter::width.

Referenced by constructGeneralVolume().

                                                                                     {
  
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: Layers (" << getNLayers()
                       << ") ...";

  double alpha = CLHEP::pi/getNsectors();
  double rin   = getRin();
  for (int i = 0; i < getNLayers(); i++) {
    string  name   = idName + getLayerLabel(i);
    DDName matname(DDSplit(getLayerMaterial(i)).first, 
                   DDSplit(getLayerMaterial(i)).second); //idNameSpace);
    DDMaterial matter(matname);

    double width = getLayerWidth(i);
    double rout  = rin + width;

    int    in = 0, out = 0;
    for (int j = 0; j < getRzones()-1; j++) {
      if (rin >= getRmax(j)) in = j+1;
      if (rout>  getRmax(j)) out= j+1;
    }
    double zout  = getZoff(in) + rin*getTanTheta(in);

    //vertical walls are allowed in SolidPolyhedra
    double deltaz = 0;
    int    nsec=2;
    vector<double> pgonZ, pgonRmin, pgonRmax;
    // index 0
    pgonZ.push_back(0);
    pgonRmin.push_back(rin); 
    pgonRmax.push_back(rout);
    // index 1
    pgonZ.push_back(zout);  
    pgonRmin.push_back(rin); 
    pgonRmax.push_back(rout);
    if (in == out) {
      if (in <= 3) {
        //index 2
        pgonZ.push_back(getZoff(in) + rout*getTanTheta(in));
        pgonRmin.push_back(pgonRmax[1]);
        pgonRmax.push_back(pgonRmax[1]);
        nsec++;
      }
    } else {
      if (in == 3) {
        //redo index 1, add index 2
        pgonZ[1]    =(getZoff(out) + getRmax(out)*getTanTheta(out));
        pgonZ.push_back(pgonZ[1] + deltaz);
        pgonRmin.push_back(pgonRmin[1]); 
        pgonRmax.push_back(getRmax(in));
        //index 3 
        pgonZ.push_back(getZoff(in) + getRmax(in)*getTanTheta(in));
        pgonRmin.push_back(pgonRmin[2]); 
        pgonRmax.push_back(pgonRmax[2]);
        nsec       += 2;
      } else {
        //index 2
        pgonZ.push_back(getZoff(in) + getRmax(in)*getTanTheta(in));
        pgonRmin.push_back(getRmax(in)); 
        pgonRmax.push_back(pgonRmax[1]); 
        nsec++;
        if (in == 0) {
          pgonZ.push_back(getZoff(out) + getRmax(in)*getTanTheta(out));
          pgonRmin.push_back(pgonRmin[2]); 
          pgonRmax.push_back(pgonRmax[2]);
          nsec++;
        }
        if (in <= 1) {
          pgonZ.push_back(getZoff(out) + rout*getTanTheta(out));
          pgonRmin.push_back(rout);
          pgonRmax.push_back(rout);
          nsec++;
        }
      }
    }
    //Solid & volume
    DDSolid solid;
    double  alpha1 = alpha;
    if (getLayerGap(i)>1.e-6) {
      double rmid  = 0.5*(rin+rout);
      double width = rmid*tan(alpha) - getLayerGap(i);
      alpha1 = atan(width/rmid);
      LogDebug("HCalGeom") << "\t" << "Alpha_1 modified from " 
                           << alpha/CLHEP::deg << " to " << alpha1/CLHEP::deg 
                           << " Rmid " << rmid << " Reduced width " << width;
    }
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << name << " (Layer " 
                         << i << ") Polyhedra made of " << getLayerMaterial(i)
                         << " with 1 sector from " << -alpha1/CLHEP::deg 
                         << " to " << alpha1/CLHEP::deg << " and with " 
                         << nsec << " sections";
    for (unsigned int k=0; k<pgonZ.size(); k++) {
      LogDebug("HCalGeom") << "\t" << "\t" << pgonZ[k] << "\t" << pgonRmin[k]
                           << "\t" << pgonRmax[k];
    }    
    solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 
                                      1, -alpha1, 2*alpha1,
                                      pgonZ, pgonRmin, pgonRmax);
    DDLogicalPart glog(DDName(name, idNameSpace), matter, solid);

   cpv.position(glog, sector, getLayerId(i), DDTranslation(0.0, 0.0, 0.0), 
           DDRotation());
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << glog.name() 
                         << " number " << getLayerId(i) << " positioned in " 
                         << sector.name() << " at (0,0,0) with no rotation";

    constructInsideLayers(glog, getLayerLabel(i), getLayerId(i), 
                          getLayerAbsorb(i), rin,  getLayerD1(i), alpha1, 
                          getLayerD2(i), getLayerAlpha(i), getLayerT1(i),
                          getLayerT2(i), cpv);
    rin = rout;
  }
  
}
DDLogicalPart DDHCalBarrelAlgo::constructMidLayer ( DDLogicalPart  laylog,
std::string  nm,
double  rin,
double  alpha,
DDCompactView cpv 
) [protected]

Definition at line 738 of file DDHCalBarrelAlgo.cc.

References DDBase< N, C >::ddname(), DDSplit(), first, getAbsorbD(), getAbsorberN(), getAbsorbMat(), getAbsorbName(), getAbsorbT(), getMidAbsMat(), getMidAbsName(), getMidAbsorber(), getMidAbsT(), getMidAbsW(), getMiddleD(), getMiddleMat(), getMiddleW(), getRmax(), getRzones(), getTanTheta(), getZoff(), i, idNameSpace, recoMuon::in, gen::k, funct::log(), LogDebug, DDBase< N, C >::name(), mergeVDriftHistosByStation::name, DDSolidFactory::polyhedra(), DDCompactView::position(), rmax, and edm::second().

Referenced by constructInsideLayers().

                                                                                    {

  DDSolid       solid;
  DDLogicalPart log, glog;
  string name = nm + "Mid";
  for (int k=0; k < getAbsorberN(); k++) {
    string namek = name + getAbsorbName(k);
    double rsi   = rin + getAbsorbD(k);
    int    in  = 0;
    for (int i = 0; i < getRzones()-1; i++) {
      if (rsi >= getRmax(i)) in = i+1;
    }
    vector<double> pgonZ, pgonRmin, pgonRmax;
    // index 0
    pgonZ.push_back(0.0);     
    pgonRmin.push_back(rsi); 
    pgonRmax.push_back(rsi+getAbsorbT(k));
    // index 1
    pgonZ.push_back(getZoff(in) + rsi*getTanTheta(in));  
    pgonRmin.push_back(rsi); 
    pgonRmax.push_back(pgonRmax[0]);
    // index 2
    pgonZ.push_back(getZoff(in) + pgonRmax[0]*getTanTheta(in));
    pgonRmin.push_back(pgonRmax[1]);
    pgonRmax.push_back(pgonRmax[1]);
    solid = DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, -alpha, 
                                      2*alpha, pgonZ, pgonRmin, pgonRmax);
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                         << " Polyhedra made of " << getAbsorbMat(k) 
                         << " with 1 sector from " << -alpha/CLHEP::deg
                         << " to " << alpha/CLHEP::deg << " and with "
                         << pgonZ.size() << " sections";
    for (unsigned int ii=0; ii<pgonZ.size(); ii++) {
      LogDebug("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " 
                           << pgonRmin[ii] << "\tRmax = " << pgonRmax[ii];
    }

    DDName matName(DDSplit(getAbsorbMat(k)).first, DDSplit(getAbsorbMat(k)).second);
    DDMaterial matter(matName);
    log = DDLogicalPart(solid.ddname(), matter, solid);

    cpv.position(log, laylog, 1, DDTranslation(), DDRotation());
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << log.name() 
                         << " Number 1 positioned in " << laylog.name()
                         << " at (0,0,0) with no rotation";
    
    if (k==0) {
      double rmin   = pgonRmin[0];
      double rmax   = pgonRmax[0];
      DDLogicalPart mother = log;
      for (int i=0; i<1; i++) {
        double alpha1 = atan(getMidAbsW(i)/rmin);
        string namek  = name + getMidAbsName(i);
        solid = DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, 
                                          -alpha1, 2*alpha1, pgonZ, pgonRmin, 
                                          pgonRmax);
        LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                             << " Polyhedra made of " << getMidAbsMat(i) 
                             << " with 1 sector from " << -alpha1/CLHEP::deg
                           << " to " << alpha1/CLHEP::deg << " and with "
                             << pgonZ.size() << " sections";
        for (unsigned int ii=0; ii<pgonZ.size(); ii++) {
          LogDebug("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " 
                               << pgonRmin[ii] << "\tRmax = " << pgonRmax[ii];
        }

        DDName matNam1(DDSplit(getMidAbsMat(i)).first, 
                       DDSplit(getMidAbsMat(i)).second);
        DDMaterial matter1(matNam1);
        log = DDLogicalPart(solid.ddname(), matter1, solid);

        cpv.position(log, mother, 1, DDTranslation(), DDRotation());
        LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << log.name() 
                             << " Number 1 positioned in " << mother.name()
                             << " at (0,0,0) with no rotation";
        mother = log;
      }

      // Now the layer with detectors
      double rmid = rmin + getMiddleD();
      pgonRmin[0] = rmid; pgonRmax[0] = rmax;
      pgonRmin[1] = rmid; pgonRmax[1] = rmax; pgonZ[1] = getZoff(in) + rmid*getTanTheta(in);
      pgonRmin[2] = rmax; pgonRmax[2] = rmax; pgonZ[2] = getZoff(in) + rmax*getTanTheta(in);
      double alpha1 = atan(getMiddleW()/rmin);
      solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, 
                                        -alpha1, 2*alpha1, pgonZ, pgonRmin, 
                                        pgonRmax);
      LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                           << " Polyhedra made of " << getMiddleMat() 
                           << " with 1 sector from " << -alpha1/CLHEP::deg
                           << " to " << alpha1/CLHEP::deg << " and with "
                           << pgonZ.size() << " sections";
      for (unsigned int ii=0; ii<pgonZ.size(); ii++) {
        LogDebug("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " 
                             << pgonRmin[ii] << "\tRmax = " << pgonRmax[ii];
      }

      DDName matNam1(DDSplit(getMiddleMat()).first, 
                     DDSplit(getMiddleMat()).second);
      DDMaterial matter1(matNam1);
      glog = DDLogicalPart(solid.ddname(), matter1, solid);

      cpv.position(glog, mother, 1, DDTranslation(), DDRotation());
      LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << glog.name() 
                           << " Number 1 positioned in " << mother.name()
                           << " at (0,0,0) with no rotation";

      // Now the remaining absorber layers
      for (int i = 1; i < getMidAbsorber(); i++) {
        namek  = name + getMidAbsName(i);
        rmid   = rmin + getMidAbsT(i);
        pgonRmin[0] = rmin; pgonRmax[0] = rmid;
        pgonRmin[1] = rmin; pgonRmax[1] = rmid; pgonZ[1] = getZoff(in) + rmin*getTanTheta(in);
        pgonRmin[2] = rmid; pgonRmax[2] = rmid; pgonZ[2] = getZoff(in) + rmid*getTanTheta(in);
        alpha1 = atan(getMidAbsW(i)/rmin);
        solid = DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, 
                                          -alpha1, 2*alpha1, pgonZ, pgonRmin, 
                                          pgonRmax);
        LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                             << " Polyhedra made of " << getMidAbsMat(i) 
                             << " with 1 sector from " << -alpha1/CLHEP::deg
                             << " to " << alpha1/CLHEP::deg << " and with "
                             << pgonZ.size() << " sections";
        for (unsigned int ii=0; ii<pgonZ.size(); ii++) {
          LogDebug("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " 
                               << pgonRmin[ii] << "\tRmax = " << pgonRmax[ii];
        }

        DDName matName2(DDSplit(getMidAbsMat(i)).first, 
                        DDSplit(getMidAbsMat(i)).second);
        DDMaterial matter2(matName2);
        log = DDLogicalPart(solid.ddname(), matter2, solid);

        cpv.position(log, mother, i, DDTranslation(), DDRotation());
        LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << log.name() 
                             << " Number " << i << " positioned in " 
                             << mother.name() << " at (0,0,0) with no "
                             << "rotation";
        mother = log;
      }
    }
  }
  return glog;
}
DDLogicalPart DDHCalBarrelAlgo::constructSideLayer ( DDLogicalPart  laylog,
std::string  nm,
int  nAbs,
double  rin,
double  alpha,
DDCompactView cpv 
) [protected]

Definition at line 654 of file DDHCalBarrelAlgo.cc.

References abs, DDBase< N, C >::ddname(), DDSplit(), first, getRmax(), getRzones(), getSideAbsMat(), getSideAbsName(), getSideAbsorber(), getSideAbsW(), getSideD(), getSideMat(), getSideT(), getTanTheta(), getZoff(), i, idNameSpace, recoMuon::in, gen::k, funct::log(), LogDebug, DDBase< N, C >::name(), mergeVDriftHistosByStation::name, DDSolidFactory::polyhedra(), DDCompactView::position(), and edm::second().

Referenced by constructInsideLayers().

                                                                       {

  //Extra absorber layer
  int k = abs(nAbs) - 1;
  string namek = nm + "Side";
  double rsi   = rin + getSideD(k);
  int    in  = 0;
  for (int i = 0; i < getRzones()-1; i++) {
    if (rsi >= getRmax(i)) in = i+1;
  }
  vector<double> pgonZ, pgonRmin, pgonRmax;
  // index 0
  pgonZ.push_back(0.0);     
  pgonRmin.push_back(rsi); 
  pgonRmax.push_back(rsi+getSideT(k));
  // index 1
  pgonZ.push_back(getZoff(in) + rsi*getTanTheta(in));  
  pgonRmin.push_back(rsi); 
  pgonRmax.push_back(pgonRmax[0]);
  // index 2
  pgonZ.push_back(getZoff(in) + pgonRmax[0]*getTanTheta(in));
  pgonRmin.push_back(pgonRmax[1]);
  pgonRmax.push_back(pgonRmax[1]);
  DDSolid solid = DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, 
                                            -alpha, 2*alpha, pgonZ, pgonRmin, 
                                            pgonRmax);
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                       << " Polyhedra made of " << getSideMat(k) 
                       << " with 1 sector from " << -alpha/CLHEP::deg
                       << " to " << alpha/CLHEP::deg << " and with "
                       << pgonZ.size() << " sections";
  for (unsigned int ii=0; ii<pgonZ.size(); ii++) {
    LogDebug("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " 
                         << pgonRmin[ii] << "\tRmax = " << pgonRmax[ii];
  }

  DDName matName(DDSplit(getSideMat(k)).first, DDSplit(getSideMat(k)).second);
  DDMaterial matter(matName);
  DDLogicalPart glog = DDLogicalPart(solid.ddname(), matter, solid);

  cpv.position(glog, laylog, 1, DDTranslation(), DDRotation());
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << glog.name() 
                       << " Number 1 positioned in " << laylog.name()
                       << " at (0,0,0) with no rotation";

  if (nAbs < 0) {
    DDLogicalPart mother = glog;
    double rmid  = pgonRmax[0];
    for (int i = 0; i < getSideAbsorber(); i++) {
      double alpha1 = atan(getSideAbsW(i)/rmid);  
      if (alpha1 > 0) {
        string name   = namek + getSideAbsName(i);
        solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, 
                                          -alpha1, 2*alpha1, pgonZ, pgonRmin, 
                                          pgonRmax);
        LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << solid.name() 
                             << " Polyhedra made of " << getSideAbsMat(i) 
                             << " with 1 sector from " << -alpha1/CLHEP::deg
                             << " to " << alpha1/CLHEP::deg << " and with "
                             << pgonZ.size() << " sections";
        for (unsigned int ii=0; ii<pgonZ.size(); ii++) {
          LogDebug("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " 
                               << pgonRmin[ii] << "\tRmax = " << pgonRmax[ii];
        }

        DDName matName(DDSplit(getSideAbsMat(i)).first, 
                       DDSplit(getSideAbsMat(i)).second);
        DDMaterial matter(matName);
        DDLogicalPart log = DDLogicalPart(solid.ddname(), matter, solid);

        cpv.position(log, mother, 1, DDTranslation(), DDRotation());
        LogDebug("HCalGeom") << "DDHCalBarrelAlgo test: " << log.name() 
                             << " Number 1 positioned in " << mother.name()
                             << " at (0,0,0) with no rotation";
        mother = log;
      }
    }
  }
  return glog;
}
void DDHCalBarrelAlgo::execute ( DDCompactView cpv)

Definition at line 189 of file DDHCalBarrelAlgo.cc.

References constructGeneralVolume(), and LogDebug.

                                                 {

  LogDebug("HCalGeom") << "==>> Constructing DDHCalBarrelAlgo...";
  constructGeneralVolume(cpv);
  LogDebug("HCalGeom") << "<<== End of DDHCalBarrelAlgo construction ...";
}
double DDHCalBarrelAlgo::getAbsorbD ( unsigned int  i) const [inline]

Definition at line 53 of file DDHCalBarrelAlgo.h.

References absorbD, and i.

Referenced by constructMidLayer().

{return absorbD[i];}
int DDHCalBarrelAlgo::getAbsorberN ( ) const [inline]

Definition at line 50 of file DDHCalBarrelAlgo.h.

References nAbsorber.

Referenced by constructMidLayer().

{return nAbsorber;}
std::string DDHCalBarrelAlgo::getAbsorbMat ( unsigned int  i) const [inline]

Definition at line 52 of file DDHCalBarrelAlgo.h.

References absorbMat, and i.

Referenced by constructMidLayer().

{return absorbMat[i];}
std::string DDHCalBarrelAlgo::getAbsorbName ( unsigned int  i) const [inline]

Definition at line 51 of file DDHCalBarrelAlgo.h.

References absorbName, and i.

Referenced by constructMidLayer().

{return absorbName[i];}
double DDHCalBarrelAlgo::getAbsorbT ( unsigned int  i) const [inline]

Definition at line 54 of file DDHCalBarrelAlgo.h.

References absorbT, and i.

Referenced by constructMidLayer().

{return absorbT[i];}
double DDHCalBarrelAlgo::getDetdP1 ( unsigned int  i) const [inline]

Definition at line 68 of file DDHCalBarrelAlgo.h.

References detdP1, and i.

Referenced by constructInsideDetectors().

{return detdP1[i];}
double DDHCalBarrelAlgo::getDetdP2 ( unsigned int  i) const [inline]

Definition at line 69 of file DDHCalBarrelAlgo.h.

References detdP2, and i.

Referenced by constructInsideDetectors().

{return detdP2[i];}
std::string DDHCalBarrelAlgo::getDetMat ( ) const [inline]

Definition at line 64 of file DDHCalBarrelAlgo.h.

References detMat.

Referenced by constructInsideLayers().

{return detMat;}
std::string DDHCalBarrelAlgo::getDetMatPl ( ) const [inline]

Definition at line 65 of file DDHCalBarrelAlgo.h.

References detMatPl.

Referenced by constructInsideDetectors().

{return detMatPl;}
std::string DDHCalBarrelAlgo::getDetMatSc ( ) const [inline]

Definition at line 66 of file DDHCalBarrelAlgo.h.

References detMatSc.

Referenced by constructInsideDetectors().

{return detMatSc;}
int DDHCalBarrelAlgo::getDetPosY ( unsigned int  i) const [inline]

Definition at line 77 of file DDHCalBarrelAlgo.h.

References detPosY, and i.

Referenced by constructInsideDetectors().

{return detPosY[i];}
double DDHCalBarrelAlgo::getDetT11 ( unsigned int  i) const [inline]

Definition at line 70 of file DDHCalBarrelAlgo.h.

References detT11, and i.

Referenced by constructInsideDetectors().

{return detT11[i];}
double DDHCalBarrelAlgo::getDetT12 ( unsigned int  i) const [inline]

Definition at line 71 of file DDHCalBarrelAlgo.h.

References detT12, and i.

Referenced by constructInsideDetectors().

{return detT12[i];}
double DDHCalBarrelAlgo::getDetT21 ( unsigned int  i) const [inline]

Definition at line 73 of file DDHCalBarrelAlgo.h.

References detT21, and i.

Referenced by constructInsideDetectors().

{return detT21[i];}
double DDHCalBarrelAlgo::getDetT22 ( unsigned int  i) const [inline]

Definition at line 74 of file DDHCalBarrelAlgo.h.

References detT22, and i.

Referenced by constructInsideDetectors().

{return detT22[i];}
double DDHCalBarrelAlgo::getDetTsc ( unsigned int  i) const [inline]

Definition at line 72 of file DDHCalBarrelAlgo.h.

References detTsc, and i.

Referenced by constructInsideDetectors().

{return detTsc[i];}
int DDHCalBarrelAlgo::getDetType ( unsigned int  i) const [inline]

Definition at line 67 of file DDHCalBarrelAlgo.h.

References detType, and i.

Referenced by constructInsideDetectors().

{return detType[i];}
double DDHCalBarrelAlgo::getDetWidth1 ( unsigned int  i) const [inline]

Definition at line 75 of file DDHCalBarrelAlgo.h.

References detWidth1, and i.

Referenced by constructInsideDetectors().

{return detWidth1[i];}
double DDHCalBarrelAlgo::getDetWidth2 ( unsigned int  i) const [inline]

Definition at line 76 of file DDHCalBarrelAlgo.h.

References detWidth2, and i.

Referenced by constructInsideDetectors().

{return detWidth2[i];}
std::string DDHCalBarrelAlgo::getGenMaterial ( ) const [inline]

Definition at line 17 of file DDHCalBarrelAlgo.h.

References genMaterial.

Referenced by constructGeneralVolume().

{return genMaterial;}
int DDHCalBarrelAlgo::getLayerAbsorb ( unsigned int  i) const [inline]

Definition at line 39 of file DDHCalBarrelAlgo.h.

References i, and layerAbsorb.

Referenced by constructInsideSector().

{return layerAbsorb[i];}
double DDHCalBarrelAlgo::getLayerAlpha ( unsigned  i) const [inline]

Definition at line 36 of file DDHCalBarrelAlgo.h.

References i, and layerAlpha.

Referenced by constructInsideSector().

{return layerAlpha[i];}
double DDHCalBarrelAlgo::getLayerD1 ( unsigned  i) const [inline]

Definition at line 34 of file DDHCalBarrelAlgo.h.

References i, and layerD1.

Referenced by constructInsideSector().

{return layerD1[i];}
double DDHCalBarrelAlgo::getLayerD2 ( unsigned  i) const [inline]

Definition at line 35 of file DDHCalBarrelAlgo.h.

References i, and layerD2.

Referenced by constructInsideSector().

{return layerD2[i];}
double DDHCalBarrelAlgo::getLayerGap ( unsigned int  i) const [inline]

Definition at line 40 of file DDHCalBarrelAlgo.h.

References i, and layerGap.

Referenced by constructInsideSector().

{return layerGap[i];}
int DDHCalBarrelAlgo::getLayerId ( unsigned  i) const [inline]

Definition at line 30 of file DDHCalBarrelAlgo.h.

References i, and layerId.

Referenced by constructInsideSector().

{return layerId[i];}
std::string DDHCalBarrelAlgo::getLayerLabel ( unsigned  i) const [inline]

Definition at line 31 of file DDHCalBarrelAlgo.h.

References i, and layerLabel.

Referenced by constructInsideSector().

{return layerLabel[i];}
std::string DDHCalBarrelAlgo::getLayerMaterial ( unsigned  i) const [inline]

Definition at line 32 of file DDHCalBarrelAlgo.h.

References i, and layerMat.

Referenced by constructInsideSector().

{return layerMat[i];}
double DDHCalBarrelAlgo::getLayerT1 ( unsigned  i) const [inline]

Definition at line 37 of file DDHCalBarrelAlgo.h.

References i, and layerT1.

Referenced by constructInsideSector().

{return layerT1[i];}
double DDHCalBarrelAlgo::getLayerT2 ( unsigned  i) const [inline]

Definition at line 38 of file DDHCalBarrelAlgo.h.

References i, and layerT2.

Referenced by constructInsideSector().

{return layerT2[i];}
double DDHCalBarrelAlgo::getLayerWidth ( unsigned  i) const [inline]

Definition at line 33 of file DDHCalBarrelAlgo.h.

References i, and layerWidth.

Referenced by constructInsideSector().

{return layerWidth[i];}
std::string DDHCalBarrelAlgo::getMidAbsMat ( unsigned int  i) const [inline]

Definition at line 60 of file DDHCalBarrelAlgo.h.

References i, and midMat.

Referenced by constructMidLayer().

{return midMat[i];}
std::string DDHCalBarrelAlgo::getMidAbsName ( unsigned int  i) const [inline]

Definition at line 59 of file DDHCalBarrelAlgo.h.

References i, and midName.

Referenced by constructMidLayer().

{return midName[i];}
int DDHCalBarrelAlgo::getMidAbsorber ( ) const [inline]

Definition at line 58 of file DDHCalBarrelAlgo.h.

References nMidAbs.

Referenced by constructMidLayer().

{return nMidAbs;}
double DDHCalBarrelAlgo::getMidAbsT ( unsigned int  i) const [inline]

Definition at line 62 of file DDHCalBarrelAlgo.h.

References i, and midT.

Referenced by constructMidLayer().

{return midT[i];}
double DDHCalBarrelAlgo::getMidAbsW ( unsigned int  i) const [inline]

Definition at line 61 of file DDHCalBarrelAlgo.h.

References i, and midW.

Referenced by constructMidLayer().

{return midW[i];}
double DDHCalBarrelAlgo::getMiddleD ( ) const [inline]

Definition at line 56 of file DDHCalBarrelAlgo.h.

References middleD.

Referenced by constructMidLayer().

{return middleD;}
std::string DDHCalBarrelAlgo::getMiddleMat ( ) const [inline]

Definition at line 55 of file DDHCalBarrelAlgo.h.

References middleMat.

Referenced by constructMidLayer().

{return middleMat;}
double DDHCalBarrelAlgo::getMiddleW ( ) const [inline]

Definition at line 57 of file DDHCalBarrelAlgo.h.

References middleW.

Referenced by constructMidLayer().

{return middleW;}
int DDHCalBarrelAlgo::getNhalf ( ) const [inline]

Definition at line 20 of file DDHCalBarrelAlgo.h.

References nhalf.

Referenced by constructGeneralVolume().

{return nhalf;}
int DDHCalBarrelAlgo::getNLayers ( ) const [inline]

Definition at line 29 of file DDHCalBarrelAlgo.h.

References nLayers.

Referenced by constructInsideSector().

{return nLayers;}
int DDHCalBarrelAlgo::getNsectors ( ) const [inline]

Definition at line 18 of file DDHCalBarrelAlgo.h.

References nsectors.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return nsectors;}
int DDHCalBarrelAlgo::getNsectortot ( ) const [inline]

Definition at line 19 of file DDHCalBarrelAlgo.h.

References nsectortot.

Referenced by constructGeneralVolume().

{return nsectortot;}
double DDHCalBarrelAlgo::getRin ( ) const [inline]

Definition at line 21 of file DDHCalBarrelAlgo.h.

References rin.

Referenced by constructGeneralVolume(), and constructInsideSector().

{return rin;}
double DDHCalBarrelAlgo::getRmax ( unsigned int  i) const [inline]
double DDHCalBarrelAlgo::getRout ( ) const [inline]

Definition at line 22 of file DDHCalBarrelAlgo.h.

References rout.

Referenced by constructGeneralVolume().

{return rout;}
int DDHCalBarrelAlgo::getRzones ( ) const [inline]

Definition at line 23 of file DDHCalBarrelAlgo.h.

References rzones.

Referenced by constructInsideLayers(), constructInsideSector(), constructMidLayer(), and constructSideLayer().

{return rzones;}
std::string DDHCalBarrelAlgo::getSideAbsMat ( unsigned int  i) const [inline]

Definition at line 47 of file DDHCalBarrelAlgo.h.

References i, and sideAbsMat.

Referenced by constructSideLayer().

{return sideAbsMat[i];}
std::string DDHCalBarrelAlgo::getSideAbsName ( unsigned int  i) const [inline]

Definition at line 46 of file DDHCalBarrelAlgo.h.

References i, and sideAbsName.

Referenced by constructSideLayer().

{return sideAbsName[i];}
int DDHCalBarrelAlgo::getSideAbsorber ( ) const [inline]

Definition at line 45 of file DDHCalBarrelAlgo.h.

References nSideAbs.

Referenced by constructSideLayer().

{return nSideAbs;}
double DDHCalBarrelAlgo::getSideAbsW ( unsigned int  i) const [inline]

Definition at line 48 of file DDHCalBarrelAlgo.h.

References i, and sideAbsW.

Referenced by constructSideLayer().

{return sideAbsW[i];}
double DDHCalBarrelAlgo::getSideD ( unsigned int  i) const [inline]

Definition at line 43 of file DDHCalBarrelAlgo.h.

References i, and sideD.

Referenced by constructSideLayer().

{return sideD[i];}
std::string DDHCalBarrelAlgo::getSideMat ( unsigned int  i) const [inline]

Definition at line 42 of file DDHCalBarrelAlgo.h.

References i, and sideMat.

Referenced by constructSideLayer().

{return sideMat[i];}
double DDHCalBarrelAlgo::getSideT ( unsigned int  i) const [inline]

Definition at line 44 of file DDHCalBarrelAlgo.h.

References i, and sideT.

Referenced by constructSideLayer().

{return sideT[i];}
double DDHCalBarrelAlgo::getTanTheta ( unsigned int  i) const [inline]
double DDHCalBarrelAlgo::getTheta ( unsigned int  i) const [inline]

Definition at line 25 of file DDHCalBarrelAlgo.h.

References i, and theta.

{return theta[i];}
double DDHCalBarrelAlgo::getZoff ( unsigned int  i) const [inline]
void DDHCalBarrelAlgo::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)

Definition at line 36 of file DDHCalBarrelAlgo.cc.

References absorbD, absorbMat, absorbName, absorbT, dbl_to_int(), detdP1, detdP2, detMat, detMatPl, detMatSc, detPosY, detRot, detT11, detT12, detT21, detT22, detTsc, detType, detWidth1, detWidth2, genMaterial, i, idName, idNameSpace, idOffset, layerAbsorb, layerAlpha, layerD1, layerD2, layerGap, layerId, layerLabel, layerMat, layerT1, layerT2, layerWidth, LogDebug, middleD, middleMat, middleW, midMat, midName, midT, midW, nAbsorber, nhalf, nLayers, nMidAbs, DDCurrentNamespace::ns(), nsectors, nsectortot, nSideAbs, dbtoconf::parent, rin, rmax, rotHalf, rotns, rout, rzones, sideAbsMat, sideAbsName, sideAbsW, sideD, sideMat, sideT, funct::tan(), theta, ttheta, and zoff.

                                                                          {

  genMaterial = sArgs["MaterialName"];
  nsectors    = int (nArgs["NSector"]);
  nsectortot  = int (nArgs["NSectorTot"]);
  nhalf       = int (nArgs["NHalf"]);
  rin         = nArgs["RIn"];
  rout        = nArgs["ROut"];
  rzones      = int (nArgs["RZones"]);
  rotHalf     = sArgs["RotHalf"];
  rotns       = sArgs["RotNameSpace"];

  theta       = vArgs["Theta"];
  rmax        = vArgs["RMax"];
  zoff        = vArgs["ZOff"];
  int i = 0;
  for (i = 0; i < rzones; i++) {
    ttheta.push_back(tan(theta[i])); //*deg already done in XML
  }
  if (rzones > 3)
    rmax[2] = (zoff[3] - zoff[2]) / ttheta[2];

  LogDebug("HCalGeom") << "DDHCalBarrelAlgo debug: General material " 
                       << genMaterial << "\tSectors " << nsectors << ", " 
                       << nsectortot <<"\tHalves "      << nhalf 
                       << "\tRotation matrix " << rotns << ":" << rotHalf 
                       << "\n\t\t" << rin << "\t" << rout << "\t" << rzones;
  for (i = 0; i < rzones; i++) {
    LogDebug("HCalGeom") << "\tTheta[" << i << "] = " << theta[i] << "\trmax["
                         << i << "] = " << rmax[i] << "\tzoff[" << i << "] = "
                         << zoff[i];
  }
  //Layers
  nLayers = int(nArgs["NLayers"]);
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo debug: Layer\t" << nLayers;
  layerId     = dbl_to_int (vArgs["Id"]);
  layerLabel  = vsArgs["LayerLabel"];
  layerMat    = vsArgs["LayerMat"];
  layerWidth  = vArgs["LayerWidth"];
  layerD1     = vArgs["D1"];
  layerD2     = vArgs["D2"];
  layerAlpha  = vArgs["Alpha2"]; 
  layerT1     = vArgs["T1"];
  layerT2     = vArgs["T2"];
  layerAbsorb = dbl_to_int(vArgs["AbsL"]);
  layerGap    = vArgs["Gap"];
  for (i = 0; i < nLayers; i++) {
    LogDebug("HCalGeom") << layerLabel[i] << "\t" << layerId[i] << "\t" 
                         << layerMat[i] << "\t" << layerWidth[i] << "\t" 
                         << layerD1[i] << "\t" << layerD2[i]  << "\t" 
                         << layerAlpha[i] << "\t" << layerT1[i] << "\t"
                         << layerT2[i] << "\t" << layerAbsorb[i] << "\t" 
                         << layerGap[i];
  }
  
  //Absorber Layers and middle part
  absorbName  = vsArgs["AbsorbName"];
  absorbMat   = vsArgs["AbsorbMat"];
  absorbD     = vArgs["AbsorbD"];
  absorbT     = vArgs["AbsorbT"];
  nAbsorber   = absorbName.size();
  for (i = 0; i < nAbsorber; i++) {
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo debug: " << absorbName[i]
                         <<" Material " <<  absorbMat[i] << " d " << absorbD[i]
                         << " t " <<absorbT[i];
  }
  middleMat   = sArgs["MiddleMat"];
  middleD     = nArgs["MiddleD"];
  middleW     = nArgs["MiddleW"];
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo debug: Middle material " 
                       << middleMat << " d " << middleD << " w " << middleW;
  midName     = vsArgs["MidAbsName"];
  midMat      = vsArgs["MidAbsMat"];
  midW        = vArgs["MidAbsW"];
  midT        = vArgs["MidAbsT"];
  nMidAbs     = midName.size();
  for (i = 0; i < nMidAbs; i++) {
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo debug: " << midName[i]
                         << " Material " <<  midMat[i] << " W " << midW[i]
                         << " T " << midT[i];
  }

  //Absorber layers in the side part
  sideMat     = vsArgs["SideMat"];
  sideD       = vArgs["SideD"];
  sideT       = vArgs["SideT"];
  int nSide   = sideMat.size();
  for (int i = 0; i < nSide; i++) {
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo debug: Side material " 
                         << sideMat[i] << " d " << sideD[i] << " t "
                         << sideT[i];
  }
  sideAbsName = vsArgs["SideAbsName"];
  sideAbsMat  = vsArgs["SideAbsMat"];
  sideAbsW    = vArgs["SideAbsW"];
  nSideAbs    = sideAbsName.size();
  for (i = 0; i < nSideAbs; i++) {
    LogDebug("HCalGeom") << "DDHCalBarrelAlgo debug: " << sideAbsName[i]
                         <<" Material " <<  sideAbsMat[i] << " W "
                         << sideAbsW[i];
  }

  // Detectors

  detMat   = sArgs["DetMat"];
  detRot   = sArgs["DetRot"];
  detMatPl = sArgs["DetMatPl"];
  detMatSc = sArgs["DetMatSc"];
  LogDebug("HCalGeom") << "DDHCalBarrelAlgo debug: Detector (" <<  nLayers 
                       << ") Rotation matrix " << rotns << ":" << detRot
                       << "\n\t\t" << detMat << "\t" << detMatPl  << "\t"
                       << detMatSc;

  detType   = dbl_to_int(vArgs["DetType"]);
  detdP1    = vArgs["DetdP1"];
  detdP2    = vArgs["DetdP2"];
  detT11    = vArgs["DetT11"];
  detT12    = vArgs["DetT12"];
  detTsc    = vArgs["DetTsc"];
  detT21    = vArgs["DetT21"];
  detT22    = vArgs["DetT22"];
  detWidth1 = vArgs["DetWidth1"];
  detWidth2 = vArgs["DetWidth2"];
  detPosY   = dbl_to_int(vArgs["DetPosY"]);
  for (i = 0; i < nLayers; i ++) {
    LogDebug("HCalGeom") << i+1 << "\t" << detType[i] << "\t" << detdP1[i]
                         << ", "  << detdP2[i] << "\t" << detT11[i] << ", " 
                         << detT12[i] << "\t" << detTsc[i] << "\t" << detT21[i]
                         <<", " << detT22[i] << "\t" << detWidth1[i] << "\t" 
                         << detWidth2[i] << "\t" << detPosY[i];
  }

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

Member Data Documentation

std::vector<double> DDHCalBarrelAlgo::absorbD [private]

Definition at line 169 of file DDHCalBarrelAlgo.h.

Referenced by getAbsorbD(), and initialize().

std::vector<std::string> DDHCalBarrelAlgo::absorbMat [private]

Definition at line 168 of file DDHCalBarrelAlgo.h.

Referenced by getAbsorbMat(), and initialize().

std::vector<std::string> DDHCalBarrelAlgo::absorbName [private]

Definition at line 167 of file DDHCalBarrelAlgo.h.

Referenced by getAbsorbName(), and initialize().

std::vector<double> DDHCalBarrelAlgo::absorbT [private]

Definition at line 170 of file DDHCalBarrelAlgo.h.

Referenced by getAbsorbT(), and initialize().

std::vector<double> DDHCalBarrelAlgo::detdP1 [private]

Definition at line 205 of file DDHCalBarrelAlgo.h.

Referenced by getDetdP1(), and initialize().

std::vector<double> DDHCalBarrelAlgo::detdP2 [private]

Definition at line 206 of file DDHCalBarrelAlgo.h.

Referenced by getDetdP2(), and initialize().

std::string DDHCalBarrelAlgo::detMat [private]

Definition at line 200 of file DDHCalBarrelAlgo.h.

Referenced by getDetMat(), and initialize().

std::string DDHCalBarrelAlgo::detMatPl [private]

Definition at line 202 of file DDHCalBarrelAlgo.h.

Referenced by getDetMatPl(), and initialize().

std::string DDHCalBarrelAlgo::detMatSc [private]

Definition at line 203 of file DDHCalBarrelAlgo.h.

Referenced by getDetMatSc(), and initialize().

std::vector<int> DDHCalBarrelAlgo::detPosY [private]

Definition at line 214 of file DDHCalBarrelAlgo.h.

Referenced by getDetPosY(), and initialize().

std::string DDHCalBarrelAlgo::detRot [private]

Definition at line 201 of file DDHCalBarrelAlgo.h.

Referenced by constructInsideLayers(), and initialize().

std::vector<double> DDHCalBarrelAlgo::detT11 [private]

Definition at line 207 of file DDHCalBarrelAlgo.h.

Referenced by getDetT11(), and initialize().

std::vector<double> DDHCalBarrelAlgo::detT12 [private]

Definition at line 208 of file DDHCalBarrelAlgo.h.

Referenced by getDetT12(), and initialize().

std::vector<double> DDHCalBarrelAlgo::detT21 [private]

Definition at line 210 of file DDHCalBarrelAlgo.h.

Referenced by getDetT21(), and initialize().

std::vector<double> DDHCalBarrelAlgo::detT22 [private]

Definition at line 211 of file DDHCalBarrelAlgo.h.

Referenced by getDetT22(), and initialize().

std::vector<double> DDHCalBarrelAlgo::detTsc [private]

Definition at line 209 of file DDHCalBarrelAlgo.h.

Referenced by getDetTsc(), and initialize().

std::vector<int> DDHCalBarrelAlgo::detType [private]

Definition at line 204 of file DDHCalBarrelAlgo.h.

Referenced by getDetType(), and initialize().

std::vector<double> DDHCalBarrelAlgo::detWidth1 [private]

Definition at line 212 of file DDHCalBarrelAlgo.h.

Referenced by getDetWidth1(), and initialize().

std::vector<double> DDHCalBarrelAlgo::detWidth2 [private]

Definition at line 213 of file DDHCalBarrelAlgo.h.

Referenced by getDetWidth2(), and initialize().

std::string DDHCalBarrelAlgo::genMaterial [private]

Definition at line 114 of file DDHCalBarrelAlgo.h.

Referenced by getGenMaterial(), and initialize().

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

Definition at line 218 of file DDHCalBarrelAlgo.h.

Referenced by constructInsideLayers(), and initialize().

std::vector<int> DDHCalBarrelAlgo::layerAbsorb [private]

Definition at line 163 of file DDHCalBarrelAlgo.h.

Referenced by getLayerAbsorb(), and initialize().

std::vector<double> DDHCalBarrelAlgo::layerAlpha [private]

Definition at line 160 of file DDHCalBarrelAlgo.h.

Referenced by getLayerAlpha(), and initialize().

std::vector<double> DDHCalBarrelAlgo::layerD1 [private]

Definition at line 158 of file DDHCalBarrelAlgo.h.

Referenced by getLayerD1(), and initialize().

std::vector<double> DDHCalBarrelAlgo::layerD2 [private]

Definition at line 159 of file DDHCalBarrelAlgo.h.

Referenced by getLayerD2(), and initialize().

std::vector<double> DDHCalBarrelAlgo::layerGap [private]

Definition at line 164 of file DDHCalBarrelAlgo.h.

Referenced by getLayerGap(), and initialize().

std::vector<int> DDHCalBarrelAlgo::layerId [private]

Definition at line 154 of file DDHCalBarrelAlgo.h.

Referenced by getLayerId(), and initialize().

std::vector<std::string> DDHCalBarrelAlgo::layerLabel [private]

Definition at line 155 of file DDHCalBarrelAlgo.h.

Referenced by getLayerLabel(), and initialize().

std::vector<std::string> DDHCalBarrelAlgo::layerMat [private]

Definition at line 156 of file DDHCalBarrelAlgo.h.

Referenced by getLayerMaterial(), and initialize().

std::vector<double> DDHCalBarrelAlgo::layerT1 [private]

Definition at line 161 of file DDHCalBarrelAlgo.h.

Referenced by getLayerT1(), and initialize().

std::vector<double> DDHCalBarrelAlgo::layerT2 [private]

Definition at line 162 of file DDHCalBarrelAlgo.h.

Referenced by getLayerT2(), and initialize().

std::vector<double> DDHCalBarrelAlgo::layerWidth [private]

Definition at line 157 of file DDHCalBarrelAlgo.h.

Referenced by getLayerWidth(), and initialize().

double DDHCalBarrelAlgo::middleD [private]

Definition at line 172 of file DDHCalBarrelAlgo.h.

Referenced by getMiddleD(), and initialize().

std::string DDHCalBarrelAlgo::middleMat [private]

Definition at line 171 of file DDHCalBarrelAlgo.h.

Referenced by getMiddleMat(), and initialize().

double DDHCalBarrelAlgo::middleW [private]

Definition at line 173 of file DDHCalBarrelAlgo.h.

Referenced by getMiddleW(), and initialize().

std::vector<std::string> DDHCalBarrelAlgo::midMat [private]

Definition at line 176 of file DDHCalBarrelAlgo.h.

Referenced by getMidAbsMat(), and initialize().

std::vector<std::string> DDHCalBarrelAlgo::midName [private]

Definition at line 175 of file DDHCalBarrelAlgo.h.

Referenced by getMidAbsName(), and initialize().

std::vector<double> DDHCalBarrelAlgo::midT [private]

Definition at line 178 of file DDHCalBarrelAlgo.h.

Referenced by getMidAbsT(), and initialize().

std::vector<double> DDHCalBarrelAlgo::midW [private]

Definition at line 177 of file DDHCalBarrelAlgo.h.

Referenced by getMidAbsW(), and initialize().

Definition at line 166 of file DDHCalBarrelAlgo.h.

Referenced by getAbsorberN(), and initialize().

int DDHCalBarrelAlgo::nhalf [private]

Definition at line 117 of file DDHCalBarrelAlgo.h.

Referenced by getNhalf(), and initialize().

Definition at line 153 of file DDHCalBarrelAlgo.h.

Referenced by getNLayers(), and initialize().

Definition at line 174 of file DDHCalBarrelAlgo.h.

Referenced by getMidAbsorber(), and initialize().

Definition at line 115 of file DDHCalBarrelAlgo.h.

Referenced by getNsectors(), and initialize().

Definition at line 116 of file DDHCalBarrelAlgo.h.

Referenced by getNsectortot(), and initialize().

Definition at line 183 of file DDHCalBarrelAlgo.h.

Referenced by getSideAbsorber(), and initialize().

double DDHCalBarrelAlgo::rin [private]
std::vector<double> DDHCalBarrelAlgo::rmax [private]

Definition at line 121 of file DDHCalBarrelAlgo.h.

Referenced by constructMidLayer(), getRmax(), and initialize().

std::string DDHCalBarrelAlgo::rotHalf [private]

Definition at line 124 of file DDHCalBarrelAlgo.h.

Referenced by constructGeneralVolume(), and initialize().

std::string DDHCalBarrelAlgo::rotns [private]

Definition at line 125 of file DDHCalBarrelAlgo.h.

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

double DDHCalBarrelAlgo::rout [private]
int DDHCalBarrelAlgo::rzones [private]

Definition at line 119 of file DDHCalBarrelAlgo.h.

Referenced by getRzones(), and initialize().

std::vector<std::string> DDHCalBarrelAlgo::sideAbsMat [private]

Definition at line 185 of file DDHCalBarrelAlgo.h.

Referenced by getSideAbsMat(), and initialize().

std::vector<std::string> DDHCalBarrelAlgo::sideAbsName [private]

Definition at line 184 of file DDHCalBarrelAlgo.h.

Referenced by getSideAbsName(), and initialize().

std::vector<double> DDHCalBarrelAlgo::sideAbsW [private]

Definition at line 186 of file DDHCalBarrelAlgo.h.

Referenced by getSideAbsW(), and initialize().

std::vector<double> DDHCalBarrelAlgo::sideD [private]

Definition at line 181 of file DDHCalBarrelAlgo.h.

Referenced by getSideD(), and initialize().

std::vector<std::string> DDHCalBarrelAlgo::sideMat [private]

Definition at line 180 of file DDHCalBarrelAlgo.h.

Referenced by getSideMat(), and initialize().

std::vector<double> DDHCalBarrelAlgo::sideT [private]

Definition at line 182 of file DDHCalBarrelAlgo.h.

Referenced by getSideT(), and initialize().

std::vector<double> DDHCalBarrelAlgo::theta [private]

Definition at line 120 of file DDHCalBarrelAlgo.h.

Referenced by getTheta(), and initialize().

std::vector<double> DDHCalBarrelAlgo::ttheta [private]

Definition at line 123 of file DDHCalBarrelAlgo.h.

Referenced by getTanTheta(), and initialize().

std::vector<double> DDHCalBarrelAlgo::zoff [private]

Definition at line 122 of file DDHCalBarrelAlgo.h.

Referenced by getZoff(), and initialize().