CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
DDHCalBarrelAlgo Class Reference
Inheritance diagram for DDHCalBarrelAlgo:

Public Member Functions

 DDHCalBarrelAlgo ()
 
void execute (DDCompactView &cpv) override
 
double getAbsorbD (unsigned int i) const
 
int getAbsorberN () const
 
const std::string & getAbsorbMat (unsigned int i) const
 
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
 
const std::string & getDetMat () const
 
const std::string & getDetMatPl () const
 
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
 
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
 
const std::string & getLayerLabel (unsigned i) const
 
const std::string & getLayerMaterial (unsigned i) const
 
double getLayerT1 (unsigned i) const
 
double getLayerT2 (unsigned i) const
 
double getLayerWidth (unsigned i) const
 
const std::string & getMidAbsMat (unsigned int i) const
 
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
 
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
 
const std::string & getSideAbsMat (unsigned int i) const
 
const std::string & getSideAbsName (unsigned int i) const
 
int getSideAbsorber () const
 
double getSideAbsW (unsigned int i) const
 
double getSideD (unsigned int i) const
 
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) override
 
 ~DDHCalBarrelAlgo () override
 

Private Member Functions

void constructGeneralVolume (DDCompactView &cpv)
 
void constructInsideDetectors (const DDLogicalPart &detector, const std::string &name, int id, double dx, double dy, double dz, int type, DDCompactView &cpv)
 
void constructInsideLayers (const DDLogicalPart &laylog, const 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 (const DDLogicalPart &sector, DDCompactView &cpv)
 
DDLogicalPart constructMidLayer (const DDLogicalPart &laylog, const std::string &nm, double rin, double alpha, DDCompactView &cpv)
 
DDLogicalPart constructSideLayer (const DDLogicalPart &laylog, const 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 29 of file DDHCalBarrelAlgo.cc.

Constructor & Destructor Documentation

◆ DDHCalBarrelAlgo()

DDHCalBarrelAlgo::DDHCalBarrelAlgo ( )

Definition at line 252 of file DDHCalBarrelAlgo.cc.

253  : theta(0),
254  rmax(0),
255  zoff(0),
256  ttheta(0),
257  layerId(0),
258  layerLabel(0),
259  layerMat(0),
260  layerWidth(0),
261  layerD1(0),
262  layerD2(0),
263  layerAlpha(0),
264  layerT1(0),
265  layerT2(0),
266  layerAbsorb(0),
267  layerGap(0),
268  absorbName(0),
269  absorbMat(0),
270  absorbD(0),
271  absorbT(0),
272  midName(0),
273  midMat(0),
274  midW(0),
275  midT(0),
276  sideMat(0),
277  sideD(0),
278  sideT(0),
279  sideAbsName(0),
280  sideAbsMat(0),
281  sideAbsW(0),
282  detType(0),
283  detdP1(0),
284  detdP2(0),
285  detT11(0),
286  detT12(0),
287  detTsc(0),
288  detT21(0),
289  detT22(0),
290  detWidth1(0),
291  detWidth2(0),
292  detPosY(0) {
293 #ifdef EDM_ML_DEBUG
294  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: Creating an instance";
295 #endif
296 }
std::vector< std::string > absorbMat
Log< level::Info, true > LogVerbatim
std::vector< std::string > midMat
std::vector< double > sideAbsW
std::vector< std::string > layerLabel
std::vector< double > layerD2
std::vector< std::string > layerMat
std::vector< int > layerId
std::vector< double > rmax
std::vector< double > layerT1
std::vector< double > detdP2
std::vector< double > detWidth2
std::vector< std::string > sideAbsName
std::vector< double > detdP1
std::vector< double > absorbT
std::vector< double > detWidth1
std::vector< double > layerGap
std::vector< double > layerAlpha
std::vector< double > detT22
std::vector< int > layerAbsorb
std::vector< std::string > sideAbsMat
std::vector< double > sideT
std::vector< double > detTsc
std::vector< std::string > midName
std::vector< std::string > sideMat
std::vector< double > detT21
std::vector< int > detPosY
std::vector< int > detType
std::vector< double > zoff
std::vector< double > sideD
std::vector< double > detT11
std::vector< double > absorbD
std::vector< double > ttheta
std::vector< double > theta
std::vector< double > layerWidth
std::vector< std::string > absorbName
std::vector< double > midW
std::vector< double > layerD1
std::vector< double > detT12
std::vector< double > midT
std::vector< double > layerT2

◆ ~DDHCalBarrelAlgo()

DDHCalBarrelAlgo::~DDHCalBarrelAlgo ( )
override

Definition at line 298 of file DDHCalBarrelAlgo.cc.

298 {}

Member Function Documentation

◆ constructGeneralVolume()

void DDHCalBarrelAlgo::constructGeneralVolume ( DDCompactView cpv)
private

Definition at line 460 of file DDHCalBarrelAlgo.cc.

References alpha, constructInsideSector(), angle_units::operators::convertRadToDeg(), DDrot(), DDSplit(), first, formatAsDegreesInInteger(), getGenMaterial(), getNhalf(), getNsectors(), getNsectortot(), getRin(), getRmax(), getRout(), getTanTheta(), getZoff(), mps_fire::i, idName, idNameSpace, cuy::ii, Skims_PA_cff::name, DDBase< N, C >::name(), gpuPixelDoublets::ntot, class-composition::parent, phi, DDSolidFactory::polyhedra(), DDCompactView::position(), rin, makeMuonMisalignmentScenario::rot, idealTransformation::rotation, rotHalf, rotns, rout, edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, theta, and SiStripMonitorCluster_cfi::zmax.

Referenced by execute().

460  {
461 #ifdef EDM_ML_DEBUG
462  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: General volume...";
463 #endif
464 
466 
467  double alpha = (1._pi) / getNsectors();
468  double dphi = getNsectortot() * (2._pi) / getNsectors();
469  int nsec, ntot = 15;
470  if (getNhalf() == 1)
471  nsec = 8;
472  else
473  nsec = 15;
474  int nf = ntot - nsec;
475 
476  //Calculate zmin... see HCalBarrel.hh picture. For polyhedra
477  //Rmin and Rmax are distances to vertex
478  double zmax = getZoff(3);
479  double zstep5 = getZoff(4);
480  double zstep4 = (getZoff(1) + getRmax(1) * getTanTheta(1));
481  if ((getZoff(2) + getRmax(1) * getTanTheta(2)) > zstep4)
482  zstep4 = (getZoff(2) + getRmax(1) * getTanTheta(2));
483  double zstep3 = (getZoff(1) + getRmax(0) * getTanTheta(1));
484  double zstep2 = (getZoff(0) + getRmax(0) * getTanTheta(0));
485  double zstep1 = (getZoff(0) + getRin() * getTanTheta(0));
486  double rout = getRout();
487  double rout1 = getRmax(3);
488  double rin = getRin();
489  double rmid1 = getRmax(0);
490  double rmid2 = getRmax(1);
491  double rmid3 = (getZoff(4) - getZoff(2)) / getTanTheta(2);
492  double rmid4 = getRmax(2);
493 
494  std::vector<double> pgonZ = {-zmax,
495  -zstep5,
496  -zstep5,
497  -zstep4,
498  -zstep3,
499  -zstep2,
500  -zstep1,
501  0,
502  zstep1,
503  zstep2,
504  zstep3,
505  zstep4,
506  zstep5,
507  zstep5,
508  zmax};
509 
510  std::vector<double> pgonRmin = {
511  rmid4, rmid3, rmid3, rmid2, rmid1, rmid1, rin, rin, rin, rmid1, rmid1, rmid2, rmid3, rmid3, rmid4};
512 
513  std::vector<double> pgonRmax = {
514  rout1, rout1, rout, rout, rout, rout, rout, rout, rout, rout, rout, rout, rout, rout1, rout1};
515 
516  std::vector<double> pgonZHalf = {0, zstep1, zstep2, zstep3, zstep4, zstep5, zstep5, zmax};
517 
518  std::vector<double> pgonRminHalf = {rin, rin, rmid1, rmid1, rmid2, rmid3, rmid3, rmid4};
519 
520  std::vector<double> pgonRmaxHalf = {rout, rout, rout, rout, rout, rout, rout1, rout1};
521 
522  std::string name("Null");
523  DDSolid solid;
524  if (nf == 0) {
526  DDName(idName, idNameSpace), getNsectortot(), -alpha, dphi, pgonZ, pgonRmin, pgonRmax);
527 #ifdef EDM_ML_DEBUG
528  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << DDName(idName, idNameSpace) << " Polyhedra made of "
529  << getGenMaterial() << " with " << getNsectortot() << " sectors from "
530  << convertRadToDeg(-alpha) << " to " << convertRadToDeg(-alpha + dphi) << " and with "
531  << nsec << " sections ";
532  for (unsigned int i = 0; i < pgonZ.size(); i++)
533  edm::LogVerbatim("HCalGeom") << "\t"
534  << "\tZ = " << pgonZ[i] << "\tRmin = " << pgonRmin[i] << "\tRmax = " << pgonRmax[i];
535 #endif
536  } else {
538  DDName(idName, idNameSpace), getNsectortot(), -alpha, dphi, pgonZHalf, pgonRminHalf, pgonRmaxHalf);
539 #ifdef EDM_ML_DEBUG
540  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << DDName(idName, idNameSpace) << " Polyhedra made of "
541  << getGenMaterial() << " with " << getNsectortot() << " sectors from "
542  << convertRadToDeg(-alpha) << " to " << convertRadToDeg(-alpha + dphi) << " and with "
543  << nsec << " sections ";
544  for (unsigned int i = 0; i < pgonZHalf.size(); i++)
545  edm::LogVerbatim("HCalGeom") << "\t"
546  << "\tZ = " << pgonZHalf[i] << "\tRmin = " << pgonRminHalf[i]
547  << "\tRmax = " << pgonRmaxHalf[i];
548 #endif
549  }
550 
552  DDMaterial matter(matname);
553  DDLogicalPart genlogic(DDName(idName, idNameSpace), matter, solid);
554 
555  DDName parentName = parent().name();
556  DDTranslation r0(0, 0, 0);
557  cpv.position(DDName(idName, idNameSpace), parentName, 1, r0, rot);
558 #ifdef EDM_ML_DEBUG
559  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << DDName(idName, idNameSpace) << " number 1 positioned in "
560  << parentName << " at (0, 0, 0) with no rotation";
561 #endif
562  //Forward and backwards halfs
563  name = idName + "Half";
564  nf = (ntot + 1) / 2;
565 #ifdef EDM_ML_DEBUG
566  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << DDName(name, idNameSpace) << " Polyhedra made of "
567  << getGenMaterial() << " with " << getNsectortot() << " sectors from "
568  << convertRadToDeg(-alpha) << " to " << convertRadToDeg(-alpha + dphi) << " and with "
569  << nf << " sections ";
570  for (unsigned int i = 0; i < pgonZHalf.size(); i++)
571  edm::LogVerbatim("HCalGeom") << "\t"
572  << "\tZ = " << pgonZHalf[i] << "\tRmin = " << pgonRminHalf[i]
573  << "\tRmax = " << pgonRmaxHalf[i];
574 #endif
575 
577  DDName(name, idNameSpace), getNsectortot(), -alpha, dphi, pgonZHalf, pgonRminHalf, pgonRmaxHalf);
578  DDLogicalPart genlogich(DDName(name, idNameSpace), matter, solid);
579 
580  cpv.position(genlogich, genlogic, 1, r0, rot);
581 #ifdef EDM_ML_DEBUG
582  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << genlogich.name() << " number 1 positioned in "
583  << genlogic.name() << " at (0, 0, 0) with no rotation";
584 #endif
585  if (getNhalf() != 1) {
587  cpv.position(genlogich, genlogic, 2, r0, rot);
588 #ifdef EDM_ML_DEBUG
589  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << genlogich.name() << " number 2 positioned in "
590  << genlogic.name() << " at " << r0 << " with " << rot;
591 #endif
592  } //end if (getNhalf...
593 
594  //Construct sector (from -alpha to +alpha)
595  name = idName + "Module";
596 #ifdef EDM_ML_DEBUG
597  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << DDName(name, idNameSpace) << " Polyhedra made of "
598  << getGenMaterial() << " with 1 sector from " << convertRadToDeg(-alpha) << " to "
599  << convertRadToDeg(alpha) << " and with " << nf << " sections";
600  for (unsigned int i = 0; i < pgonZHalf.size(); i++)
601  edm::LogVerbatim("HCalGeom") << "\t"
602  << "\tZ = " << pgonZHalf[i] << "\tRmin = " << pgonRminHalf[i]
603  << "\tRmax = " << pgonRmaxHalf[i];
604 #endif
605 
606  solid =
607  DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, -alpha, 2 * alpha, pgonZHalf, pgonRminHalf, pgonRmaxHalf);
608  DDLogicalPart seclogic(DDName(name, idNameSpace), matter, solid);
609 
610  double theta = 90._deg;
611  for (int ii = 0; ii < getNsectortot(); ii++) {
612  double phi = ii * 2 * alpha;
613  double phiy = phi + 90._deg;
614 
616  std::string rotstr("NULL");
617  if (phi != 0) {
618  rotstr = "R" + formatAsDegreesInInteger(phi);
619  rotation = DDRotation(DDName(rotstr, rotns));
620  if (!rotation) {
621 #ifdef EDM_ML_DEBUG
622  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: Creating a new "
623  << "rotation " << rotstr << "\t 90," << convertRadToDeg(phi) << ",90,"
624  << (90 + convertRadToDeg(phi)) << ", 0, 0";
625 #endif
626  rotation = DDrot(DDName(rotstr, rotns), theta, phi, theta, phiy, 0, 0);
627  } //if !rotation
628  } //if phideg!=0
629 
630  cpv.position(seclogic, genlogich, ii + 1, r0, rotation);
631 #ifdef EDM_ML_DEBUG
632  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << seclogic.name() << " number " << ii + 1 << " positioned in "
633  << genlogich.name() << " at " << r0 << " with " << rotation;
634 #endif
635  }
636 
637  //Construct the things inside the sector
638  constructInsideSector(seclogic, cpv);
639 }
Log< level::Info, true > LogVerbatim
float alpha
Definition: AMPTWrapper.h:105
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
double getRout() const
double getTanTheta(unsigned int i) const
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
std::string idNameSpace
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
std::string formatAsDegreesInInteger(double radianVal)
Definition: DDTypes.cc:79
int getNhalf() const
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
double getZoff(unsigned int i) const
void constructInsideSector(const DDLogicalPart &sector, DDCompactView &cpv)
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
U second(std::pair< T, U > const &p)
int getNsectortot() const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
DDRotation DDrot(const DDName &name, std::unique_ptr< DDRotationMatrix > rot)
Definition of a uniquely identifiable rotation matrix named by DDName name.
Definition: DDRotation.cc:67
const std::string & getGenMaterial() const
ii
Definition: cuy.py:589
int getNsectors() const
std::vector< double > theta
double getRmax(unsigned int i) const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
double getRin() const
__shared__ uint32_t ntot
static DDSolid polyhedra(const DDName &name, int sides, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polyhedra (refere to Geant3 or Geant4 documentation)
Definition: DDSolid.cc:565

◆ constructInsideDetectors()

void DDHCalBarrelAlgo::constructInsideDetectors ( const DDLogicalPart detector,
const std::string &  name,
int  id,
double  dx,
double  dy,
double  dz,
int  type,
DDCompactView cpv 
)
private

Definition at line 1092 of file DDHCalBarrelAlgo.cc.

References DDSolidFactory::box(), DDBase< N, C >::ddname(), DDSplit(), hgcalTestNeighbor_cfi::detector, PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, first, getDetdP1(), getDetdP2(), getDetMatPl(), getDetMatSc(), getDetPosY(), getDetT11(), getDetT12(), getDetT21(), getDetT22(), getDetTsc(), getDetType(), getDetWidth1(), getDetWidth2(), idName, idNameSpace, Skims_PA_cff::name, DDBase< N, C >::name(), DDCompactView::position(), edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, x, and y.

Referenced by constructInsideLayers().

1099  {
1100 #ifdef EDM_ML_DEBUG
1101  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: \t\tInside detector " << id << "...";
1102 #endif
1103 
1105  DDMaterial plmatter(plmatname);
1107  DDMaterial scmatter(scmatname);
1108 
1109  std::string plname = detector.name().name() + "Plastic_";
1110  std::string scname = idName + "Scintillator" + name;
1111 
1112  id--;
1113  DDSolid solid;
1114  DDLogicalPart glog;
1115  double wid, y = 0;
1116  double dx1, dx2, shiftX;
1117 
1118  if (type == 1) {
1119  wid = 0.5 * getDetWidth1(id);
1120  if (getDetPosY(id) > 0)
1121  y = -dy + wid;
1122  dx1 = 0.5 * getDetT11(id);
1123  dx2 = 0.5 * getDetT21(id);
1124  shiftX = getDetdP1(id);
1125  } else {
1126  wid = 0.5 * getDetWidth2(id);
1127  dx1 = 0.5 * getDetT12(id);
1128  dx2 = 0.5 * getDetT22(id);
1129  shiftX = getDetdP2(id);
1130  }
1131 
1132  solid = DDSolidFactory::box(DDName(plname + "1", idNameSpace), dx1, wid, dz);
1133 #ifdef EDM_ML_DEBUG
1134  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMatPl()
1135  << " of dimensions " << dx1 << ", " << wid << ", " << dz;
1136 #endif
1137  glog = DDLogicalPart(solid.ddname(), plmatter, solid);
1138 
1139  double x = shiftX + dx1 - dx;
1140  cpv.position(glog, detector, 1, DDTranslation(x, y, 0), DDRotation());
1141 #ifdef EDM_ML_DEBUG
1142  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number 1 positioned in " << detector.name()
1143  << " at (" << x << "," << y << ",0) with no rotation";
1144 #endif
1145  solid = DDSolidFactory::box(DDName(scname, idNameSpace), 0.5 * getDetTsc(id), wid, dz);
1146 #ifdef EDM_ML_DEBUG
1147  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMatSc()
1148  << " of dimensions " << 0.5 * getDetTsc(id) << ", " << wid << ", " << dz;
1149 #endif
1150  glog = DDLogicalPart(solid.ddname(), scmatter, solid);
1151 
1152  x += dx1 + 0.5 * getDetTsc(id);
1153  int copyNo = id * 10 + getDetType(id);
1154  cpv.position(glog, detector, copyNo, DDTranslation(x, y, 0), DDRotation());
1155 #ifdef EDM_ML_DEBUG
1156  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number " << copyNo << " positioned in "
1157  << detector.name() << " at (" << x << "," << y << ",0) with no rotation";
1158 #endif
1159  solid = DDSolidFactory::box(DDName(plname + "2", idNameSpace), dx2, wid, dz);
1160 #ifdef EDM_ML_DEBUG
1161  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMatPl()
1162  << " of dimensions " << dx2 << ", " << wid << ", " << dz;
1163 #endif
1164  glog = DDLogicalPart(solid.ddname(), plmatter, solid);
1165 
1166  x += 0.5 * getDetTsc(id) + dx2;
1167  cpv.position(glog, detector, 1, DDTranslation(x, y, 0), DDRotation());
1168 #ifdef EDM_ML_DEBUG
1169  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number 1 positioned in " << detector.name()
1170  << " at (" << x << "," << y << ",0) with no rotation";
1171 #endif
1172 }
Log< level::Info, true > LogVerbatim
int getDetPosY(unsigned int i) const
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
double getDetdP2(unsigned int i) const
std::string idNameSpace
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
const std::string & getDetMatSc() const
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
double getDetdP1(unsigned int i) const
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
double getDetT21(unsigned int i) const
U second(std::pair< T, U > const &p)
double getDetT22(unsigned int i) const
double getDetT11(unsigned int i) const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
double getDetT12(unsigned int i) const
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
Definition: DDSolid.cc:547
int getDetType(unsigned int i) const
const N & name() const
Definition: DDBase.h:59
double getDetWidth2(unsigned int i) const
const N & ddname() const
Definition: DDBase.h:61
double getDetTsc(unsigned int i) const
const std::string & getDetMatPl() const
double getDetWidth1(unsigned int i) const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7

◆ constructInsideLayers()

void DDHCalBarrelAlgo::constructInsideLayers ( const DDLogicalPart laylog,
const std::string &  name,
int  id,
int  nAbs,
double  rin,
double  d1,
double  alpha1,
double  d2,
double  alpha2,
double  t1,
double  t2,
DDCompactView cpv 
)
private

Definition at line 763 of file DDHCalBarrelAlgo.cc.

References DDSolidFactory::box(), constructInsideDetectors(), constructMidLayer(), constructSideLayer(), d1, DDBase< N, C >::ddname(), DDSplit(), detRot, PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, first, getDetMat(), getRmax(), getRzones(), getTanTheta(), getZoff(), mps_fire::i, idName, idNameSpace, idOffset, recoMuon::in, Skims_PA_cff::name, DDBase< N, C >::name(), DDCompactView::position(), rin, makeMuonMisalignmentScenario::rot, rotns, edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, RandomServiceHelper::t1, RandomServiceHelper::t2, funct::tan(), x, and y.

Referenced by constructInsideSector().

774  {
775 #ifdef EDM_ML_DEBUG
776  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: \t\tInside layer " << id << "...";
777 #endif
778  //Pointers to the Rotation Matrices and to the Materials
781 
782  std::string nam0 = nm + "In";
783  std::string name = idName + nam0;
785  DDMaterial matter(matName);
786 
787  DDSolid solid;
788  DDLogicalPart glog, mother;
789  double rsi, dx, dy, dz, x, y;
790  int i, in;
791  //Two lower volumes
792  if (alpha1 > 0) {
793  rsi = rin + d1;
794  in = 0;
795  for (i = 0; i < getRzones() - 1; i++) {
796  if (rsi >= getRmax(i))
797  in = i + 1;
798  }
799  dx = 0.5 * t1;
800  dy = 0.5 * rsi * (tan(alpha1) - tan(alpha2));
801  dz = 0.5 * (getZoff(in) + rsi * getTanTheta(in));
802  x = rsi + dx;
803  y = 0.5 * rsi * (tan(alpha1) + tan(alpha2));
804  DDTranslation r11(x, y, dz);
805  DDTranslation r12(x, -y, dz);
806 
807  solid = DDSolidFactory::box(DDName(name + "1", idNameSpace), dx, dy, dz);
808 #ifdef EDM_ML_DEBUG
809  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMat()
810  << " of dimensions " << dx << ", " << dy << ", " << dz;
811 #endif
812  glog = DDLogicalPart(solid.ddname(), matter, solid);
813 
814  if (nAbs != 0) {
815  mother = constructSideLayer(laylog, name, nAbs, rin, alpha1, cpv);
816  } else {
817  mother = laylog;
818  }
819  cpv.position(glog, mother, idOffset + 1, r11, DDRotation());
820  cpv.position(glog, mother, idOffset + 2, r12, rot);
821 #ifdef EDM_ML_DEBUG
822  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number " << idOffset + 1
823  << " positioned in " << mother.name() << " at " << r11 << " with no rotation\n"
824  << "DDHCalBarrelAlgo: " << glog.name() << " Number " << idOffset + 2
825  << " positioned in " << mother.name() << " at " << r12 << " with " << rot;
826 #endif
827  //Constructin the plastics and scintillators inside
828  constructInsideDetectors(glog, nam0 + "1", id, dx, dy, dz, 1, cpv);
829  }
830 
831  //Upper volume
832  rsi = rin + d2;
833  in = 0;
834  for (i = 0; i < getRzones() - 1; i++) {
835  if (rsi >= getRmax(i))
836  in = i + 1;
837  }
838  dx = 0.5 * t2;
839  dy = 0.5 * rsi * tan(alpha2);
840  dz = 0.5 * (getZoff(in) + rsi * getTanTheta(in));
841  x = rsi + dx;
842  DDTranslation r21(x, dy, dz);
843  DDTranslation r22(x, -dy, dz);
844 
845  solid = DDSolidFactory::box(DDName(name + "2", idNameSpace), dx, dy, dz);
846 #ifdef EDM_ML_DEBUG
847  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMat()
848  << " of dimensions " << dx << ", " << dy << ", " << dz;
849 #endif
850  glog = DDLogicalPart(solid.ddname(), matter, solid);
851 
852  if (nAbs < 0) {
853  mother = constructMidLayer(laylog, name, rin, alpha1, cpv);
854  } else {
855  mother = laylog;
856  }
857  cpv.position(glog, mother, idOffset + 3, r21, DDRotation());
858  cpv.position(glog, mother, idOffset + 4, r22, rot);
859 #ifdef EDM_ML_DEBUG
860  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number " << idOffset + 3 << " positioned in "
861  << mother.name() << " at " << r21
862  << " with no rotation\nDDHCalBarrelAlgo: " << glog.name() << " Number " << idOffset + 4
863  << " positioned in " << mother.name() << " at " << r22 << " with " << rot;
864 #endif
865  //Constructin the plastics and scintillators inside
866  constructInsideDetectors(glog, nam0 + "2", id, dx, dy, dz, 2, cpv);
867 }
Log< level::Info, true > LogVerbatim
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
double getTanTheta(unsigned int i) const
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
std::string idNameSpace
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
void constructInsideDetectors(const DDLogicalPart &detector, const std::string &name, int id, double dx, double dy, double dz, int type, DDCompactView &cpv)
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
double getZoff(unsigned int i) const
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
U second(std::pair< T, U > const &p)
const std::string & getDetMat() const
DDLogicalPart constructSideLayer(const DDLogicalPart &laylog, const std::string &nm, int nAbs, double rin, double alpha, DDCompactView &cpv)
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
Definition: DDSolid.cc:547
const N & name() const
Definition: DDBase.h:59
const N & ddname() const
Definition: DDBase.h:61
double getRmax(unsigned int i) const
static constexpr float d1
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
DDLogicalPart constructMidLayer(const DDLogicalPart &laylog, const std::string &nm, double rin, double alpha, DDCompactView &cpv)
int getRzones() const

◆ constructInsideSector()

void DDHCalBarrelAlgo::constructInsideSector ( const DDLogicalPart sector,
DDCompactView cpv 
)
private

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

Definition at line 641 of file DDHCalBarrelAlgo.cc.

References alpha, constructInsideLayers(), angle_units::operators::convertRadToDeg(), DDSplit(), MillePedeFileConverter_cfg::e, first, getLayerAbsorb(), getLayerAlpha(), getLayerD1(), getLayerD2(), getLayerGap(), getLayerId(), getLayerLabel(), getLayerMaterial(), getLayerT1(), getLayerT2(), getLayerWidth(), getNLayers(), getNsectors(), getRin(), getRmax(), getRzones(), getTanTheta(), getZoff(), mps_fire::i, idName, idNameSpace, recoMuon::in, dqmiolumiharvest::j, dqmdumpme::k, Skims_PA_cff::name, DDBase< N, C >::name(), MillePedeFileConverter_cfg::out, DDSolidFactory::polyhedra(), DDCompactView::position(), rin, rout, edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, funct::tan(), and ApeEstimator_cff::width.

Referenced by constructGeneralVolume().

641  {
642 #ifdef EDM_ML_DEBUG
643  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: Layers (" << getNLayers() << ") ...";
644 #endif
645  double alpha = (1._pi) / getNsectors();
646  double rin = getRin();
647  for (int i = 0; i < getNLayers(); i++) {
650  DDSplit(getLayerMaterial(i)).second); //idNameSpace);
651  DDMaterial matter(matname);
652 
653  double width = getLayerWidth(i);
654  double rout = rin + width;
655 
656  int in = 0, out = 0;
657  for (int j = 0; j < getRzones() - 1; j++) {
658  if (rin >= getRmax(j))
659  in = j + 1;
660  if (rout > getRmax(j))
661  out = j + 1;
662  }
663  double zout = getZoff(in) + rin * getTanTheta(in);
664 
666  //vertical walls are allowed in SolidPolyhedra
667  double deltaz = 0;
668  int nsec = 2;
669  std::vector<double> pgonZ, pgonRmin, pgonRmax;
670  // index 0
671  pgonZ.emplace_back(0);
672  pgonRmin.emplace_back(rin);
673  pgonRmax.emplace_back(rout);
674  // index 1
675  pgonZ.emplace_back(zout);
676  pgonRmin.emplace_back(rin);
677  pgonRmax.emplace_back(rout);
678  if (in == out) {
679  if (in <= 3) {
680  //index 2
681  pgonZ.emplace_back(getZoff(in) + rout * getTanTheta(in));
682  pgonRmin.emplace_back(pgonRmax[1]);
683  pgonRmax.emplace_back(pgonRmax[1]);
684  nsec++;
685  }
686  } else {
687  if (in == 3) {
688  //redo index 1, add index 2
689  pgonZ[1] = (getZoff(out) + getRmax(out) * getTanTheta(out));
690  pgonZ.emplace_back(pgonZ[1] + deltaz);
691  pgonRmin.emplace_back(pgonRmin[1]);
692  pgonRmax.emplace_back(getRmax(in));
693  //index 3
694  pgonZ.emplace_back(getZoff(in) + getRmax(in) * getTanTheta(in));
695  pgonRmin.emplace_back(pgonRmin[2]);
696  pgonRmax.emplace_back(pgonRmax[2]);
697  nsec += 2;
698  } else {
699  //index 2
700  pgonZ.emplace_back(getZoff(in) + getRmax(in) * getTanTheta(in));
701  pgonRmin.emplace_back(getRmax(in));
702  pgonRmax.emplace_back(pgonRmax[1]);
703  nsec++;
704  if (in == 0) {
705  pgonZ.emplace_back(getZoff(out) + getRmax(in) * getTanTheta(out));
706  pgonRmin.emplace_back(pgonRmin[2]);
707  pgonRmax.emplace_back(pgonRmax[2]);
708  nsec++;
709  }
710  if (in <= 1) {
711  pgonZ.emplace_back(getZoff(out) + rout * getTanTheta(out));
712  pgonRmin.emplace_back(rout);
713  pgonRmax.emplace_back(rout);
714  nsec++;
715  }
716  }
717  }
718  //Solid & volume
719  DDSolid solid;
720  double alpha1 = alpha;
721  if (getLayerGap(i) > 1.e-6) {
722  double rmid = 0.5 * (rin + rout);
723  double width = rmid * tan(alpha) - getLayerGap(i);
724  alpha1 = atan(width / rmid);
725 #ifdef EDM_ML_DEBUG
726  edm::LogVerbatim("HCalGeom") << "\t"
727  << "Alpha_1 modified from " << convertRadToDeg(alpha) << " to "
728  << convertRadToDeg(alpha1) << " Rmid " << rmid << " Reduced width " << width;
729 #endif
730  }
731 #ifdef EDM_ML_DEBUG
732  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << name << " (Layer " << i << ") Polyhedra made of "
733  << getLayerMaterial(i) << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
734  << convertRadToDeg(alpha1) << " and with " << nsec << " sections";
735  for (unsigned int k = 0; k < pgonZ.size(); k++)
736  edm::LogVerbatim("HCalGeom") << "\t"
737  << "\t" << pgonZ[k] << "\t" << pgonRmin[k] << "\t" << pgonRmax[k];
738 #endif
739  solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
740  DDLogicalPart glog(DDName(name, idNameSpace), matter, solid);
741 
742  cpv.position(glog, sector, getLayerId(i), DDTranslation(0.0, 0.0, 0.0), DDRotation());
743 #ifdef EDM_ML_DEBUG
744  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " number " << getLayerId(i)
745  << " positioned in " << sector.name() << " at (0,0,0) with no rotation";
746 #endif
748  getLayerLabel(i),
749  getLayerId(i),
750  getLayerAbsorb(i),
751  rin,
752  getLayerD1(i),
753  alpha1,
754  getLayerD2(i),
755  getLayerAlpha(i),
756  getLayerT1(i),
757  getLayerT2(i),
758  cpv);
759  rin = rout;
760  }
761 }
Log< level::Info, true > LogVerbatim
double getLayerT1(unsigned i) const
float alpha
Definition: AMPTWrapper.h:105
const std::string & getLayerMaterial(unsigned i) const
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
double getTanTheta(unsigned int i) const
double getLayerWidth(unsigned i) const
double getLayerD1(unsigned i) const
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
std::string idNameSpace
double getLayerD2(unsigned i) const
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
double getZoff(unsigned int i) const
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
U second(std::pair< T, U > const &p)
int getNLayers() const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
void constructInsideLayers(const DDLogicalPart &laylog, const std::string &name, int id, int nAbs, double rin, double d1, double alpha1, double d2, double alpha2, double t1, double t2, DDCompactView &cpv)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
const N & name() const
Definition: DDBase.h:59
double getLayerGap(unsigned int i) const
int getLayerId(unsigned i) const
double getLayerAlpha(unsigned i) const
const std::string & getLayerLabel(unsigned i) const
double getLayerT2(unsigned i) const
int getNsectors() const
double getRmax(unsigned int i) const
int getLayerAbsorb(unsigned int i) const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
double getRin() const
static DDSolid polyhedra(const DDName &name, int sides, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polyhedra (refere to Geant3 or Geant4 documentation)
Definition: DDSolid.cc:565
int getRzones() const

◆ constructMidLayer()

DDLogicalPart DDHCalBarrelAlgo::constructMidLayer ( const DDLogicalPart laylog,
const std::string &  nm,
double  rin,
double  alpha,
DDCompactView cpv 
)
private

Definition at line 946 of file DDHCalBarrelAlgo.cc.

References alpha, angle_units::operators::convertRadToDeg(), DDBase< N, C >::ddname(), DDSplit(), first, getAbsorbD(), getAbsorberN(), getAbsorbMat(), getAbsorbName(), getAbsorbT(), getMidAbsMat(), getMidAbsName(), getMidAbsorber(), getMidAbsT(), getMidAbsW(), getMiddleD(), getMiddleMat(), getMiddleW(), getRmax(), getRzones(), getTanTheta(), getZoff(), mps_fire::i, idNameSpace, cuy::ii, recoMuon::in, dqmdumpme::k, dqm-mbProfile::log, Skims_PA_cff::name, DDBase< N, C >::name(), DDSolidFactory::polyhedra(), DDCompactView::position(), rin, rmax, edm::second(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by constructInsideLayers().

947  {
948  DDSolid solid;
949  DDLogicalPart log, glog;
950  std::string name = nm + "Mid";
951  for (int k = 0; k < getAbsorberN(); k++) {
952  std::string namek = name + getAbsorbName(k);
953  double rsi = rin + getAbsorbD(k);
954  int in = 0;
955  for (int i = 0; i < getRzones() - 1; i++) {
956  if (rsi >= getRmax(i))
957  in = i + 1;
958  }
959  std::vector<double> pgonZ, pgonRmin, pgonRmax;
960  // index 0
961  pgonZ.emplace_back(0.0);
962  pgonRmin.emplace_back(rsi);
963  pgonRmax.emplace_back(rsi + getAbsorbT(k));
964  // index 1
965  pgonZ.emplace_back(getZoff(in) + rsi * getTanTheta(in));
966  pgonRmin.emplace_back(rsi);
967  pgonRmax.emplace_back(pgonRmax[0]);
968  // index 2
969  pgonZ.emplace_back(getZoff(in) + pgonRmax[0] * getTanTheta(in));
970  pgonRmin.emplace_back(pgonRmax[1]);
971  pgonRmax.emplace_back(pgonRmax[1]);
972  solid = DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, -alpha, 2 * alpha, pgonZ, pgonRmin, pgonRmax);
973 #ifdef EDM_ML_DEBUG
974  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getAbsorbMat(k)
975  << " with 1 sector from " << convertRadToDeg(-alpha) << " to "
976  << convertRadToDeg(alpha) << " and with " << pgonZ.size() << " sections";
977  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
978  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
979  << "\tRmax = " << pgonRmax[ii];
980 #endif
981 
983  DDMaterial matter(matName);
984  log = DDLogicalPart(solid.ddname(), matter, solid);
985 
986  cpv.position(log, laylog, 1, DDTranslation(), DDRotation());
987 #ifdef EDM_ML_DEBUG
988  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << log.name() << " Number 1 positioned in " << laylog.name()
989  << " at (0,0,0) with no rotation";
990 #endif
991  if (k == 0) {
992  double rmin = pgonRmin[0];
993  double rmax = pgonRmax[0];
994  DDLogicalPart mother = log;
995  for (int i = 0; i < 1; i++) {
996  double alpha1 = atan(getMidAbsW(i) / rmin);
997  std::string namek = name + getMidAbsName(i);
998  solid =
999  DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
1000 #ifdef EDM_ML_DEBUG
1001  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getMidAbsMat(i)
1002  << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
1003  << convertRadToDeg(alpha1) << " and with " << pgonZ.size() << " sections";
1004  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
1005  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
1006  << "\tRmax = " << pgonRmax[ii];
1007 #endif
1008 
1010  DDMaterial matter1(matNam1);
1011  log = DDLogicalPart(solid.ddname(), matter1, solid);
1012 
1013  cpv.position(log, mother, 1, DDTranslation(), DDRotation());
1014 #ifdef EDM_ML_DEBUG
1015  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << log.name() << " Number 1 positioned in "
1016  << mother.name() << " at (0,0,0) with no rotation";
1017 #endif
1018  mother = log;
1019  }
1020 
1021  // Now the layer with detectors
1022  double rmid = rmin + getMiddleD();
1023  pgonRmin[0] = rmid;
1024  pgonRmax[0] = rmax;
1025  pgonRmin[1] = rmid;
1026  pgonRmax[1] = rmax;
1027  pgonZ[1] = getZoff(in) + rmid * getTanTheta(in);
1028  pgonRmin[2] = rmax;
1029  pgonRmax[2] = rmax;
1030  pgonZ[2] = getZoff(in) + rmax * getTanTheta(in);
1031  double alpha1 = atan(getMiddleW() / rmin);
1032  solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
1033 #ifdef EDM_ML_DEBUG
1034  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getMiddleMat()
1035  << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
1036  << convertRadToDeg(alpha1) << " and with " << pgonZ.size() << " sections";
1037  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
1038  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
1039  << "\tRmax = " << pgonRmax[ii];
1040 #endif
1041 
1043  DDMaterial matter1(matNam1);
1044  glog = DDLogicalPart(solid.ddname(), matter1, solid);
1045 
1046  cpv.position(glog, mother, 1, DDTranslation(), DDRotation());
1047 #ifdef EDM_ML_DEBUG
1048  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number 1 positioned in " << mother.name()
1049  << " at (0,0,0) with no rotation";
1050 #endif
1051  // Now the remaining absorber layers
1052  for (int i = 1; i < getMidAbsorber(); i++) {
1053  namek = name + getMidAbsName(i);
1054  rmid = rmin + getMidAbsT(i);
1055  pgonRmin[0] = rmin;
1056  pgonRmax[0] = rmid;
1057  pgonRmin[1] = rmin;
1058  pgonRmax[1] = rmid;
1059  pgonZ[1] = getZoff(in) + rmin * getTanTheta(in);
1060  pgonRmin[2] = rmid;
1061  pgonRmax[2] = rmid;
1062  pgonZ[2] = getZoff(in) + rmid * getTanTheta(in);
1063  alpha1 = atan(getMidAbsW(i) / rmin);
1064  solid =
1065  DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
1066 #ifdef EDM_ML_DEBUG
1067  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getMidAbsMat(i)
1068  << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
1069  << convertRadToDeg(alpha1) << " and with " << pgonZ.size() << " sections";
1070  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
1071  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
1072  << "\tRmax = " << pgonRmax[ii];
1073 #endif
1074 
1076  DDMaterial matter2(matName2);
1077  log = DDLogicalPart(solid.ddname(), matter2, solid);
1078 
1079  cpv.position(log, mother, i, DDTranslation(), DDRotation());
1080 #ifdef EDM_ML_DEBUG
1081  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << log.name() << " Number " << i << " positioned in "
1082  << mother.name() << " at (0,0,0) with no "
1083  << "rotation";
1084 #endif
1085  mother = log;
1086  }
1087  }
1088  }
1089  return glog;
1090 }
double getMiddleD() const
Log< level::Info, true > LogVerbatim
double getMidAbsT(unsigned int i) const
float alpha
Definition: AMPTWrapper.h:105
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
double getTanTheta(unsigned int i) const
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
std::string idNameSpace
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
std::vector< double > rmax
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
double getZoff(unsigned int i) const
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
U second(std::pair< T, U > const &p)
int getMidAbsorber() const
const std::string & getMiddleMat() const
double getAbsorbT(unsigned int i) const
double getMidAbsW(unsigned int i) const
const std::string & getAbsorbName(unsigned int i) const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
const std::string & getMidAbsName(unsigned int i) const
const std::string & getMidAbsMat(unsigned int i) const
ii
Definition: cuy.py:589
const N & name() const
Definition: DDBase.h:59
int getAbsorberN() const
double getAbsorbD(unsigned int i) const
const N & ddname() const
Definition: DDBase.h:61
double getMiddleW() const
const std::string & getAbsorbMat(unsigned int i) const
double getRmax(unsigned int i) const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
static DDSolid polyhedra(const DDName &name, int sides, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polyhedra (refere to Geant3 or Geant4 documentation)
Definition: DDSolid.cc:565
int getRzones() const

◆ constructSideLayer()

DDLogicalPart DDHCalBarrelAlgo::constructSideLayer ( const DDLogicalPart laylog,
const std::string &  nm,
int  nAbs,
double  rin,
double  alpha,
DDCompactView cpv 
)
private

Definition at line 869 of file DDHCalBarrelAlgo.cc.

References funct::abs(), alpha, angle_units::operators::convertRadToDeg(), DDBase< N, C >::ddname(), DDSplit(), first, getRmax(), getRzones(), getSideAbsMat(), getSideAbsName(), getSideAbsorber(), getSideAbsW(), getSideD(), getSideMat(), getSideT(), getTanTheta(), getZoff(), mps_fire::i, idNameSpace, cuy::ii, recoMuon::in, dqmdumpme::k, dqm-mbProfile::log, Skims_PA_cff::name, DDBase< N, C >::name(), DDSolidFactory::polyhedra(), DDCompactView::position(), rin, edm::second(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by constructInsideLayers().

870  {
871  //Extra absorber layer
872  int k = abs(nAbs) - 1;
873  std::string namek = nm + "Side";
874  double rsi = rin + getSideD(k);
875  int in = 0;
876  for (int i = 0; i < getRzones() - 1; i++) {
877  if (rsi >= getRmax(i))
878  in = i + 1;
879  }
880  std::vector<double> pgonZ, pgonRmin, pgonRmax;
881  // index 0
882  pgonZ.emplace_back(0.0);
883  pgonRmin.emplace_back(rsi);
884  pgonRmax.emplace_back(rsi + getSideT(k));
885  // index 1
886  pgonZ.emplace_back(getZoff(in) + rsi * getTanTheta(in));
887  pgonRmin.emplace_back(rsi);
888  pgonRmax.emplace_back(pgonRmax[0]);
889  // index 2
890  pgonZ.emplace_back(getZoff(in) + pgonRmax[0] * getTanTheta(in));
891  pgonRmin.emplace_back(pgonRmax[1]);
892  pgonRmax.emplace_back(pgonRmax[1]);
893  DDSolid solid =
894  DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, -alpha, 2 * alpha, pgonZ, pgonRmin, pgonRmax);
895 #ifdef EDM_ML_DEBUG
896  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getSideMat(k)
897  << " with 1 sector from " << convertRadToDeg(-alpha) << " to " << convertRadToDeg(alpha)
898  << " and with " << pgonZ.size() << " sections";
899  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
900  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
901  << "\tRmax = " << pgonRmax[ii];
902 #endif
903 
905  DDMaterial matter(matName);
906  DDLogicalPart glog = DDLogicalPart(solid.ddname(), matter, solid);
907 
908  cpv.position(glog, laylog, 1, DDTranslation(), DDRotation());
909 #ifdef EDM_ML_DEBUG
910  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number 1 positioned in " << laylog.name()
911  << " at (0,0,0) with no rotation";
912 #endif
913  if (nAbs < 0) {
914  DDLogicalPart mother = glog;
915  double rmid = pgonRmax[0];
916  for (int i = 0; i < getSideAbsorber(); i++) {
917  double alpha1 = atan(getSideAbsW(i) / rmid);
918  if (alpha1 > 0) {
919  std::string name = namek + getSideAbsName(i);
920  solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
921 #ifdef EDM_ML_DEBUG
922  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of "
923  << getSideAbsMat(i) << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
924  << convertRadToDeg(alpha1) << " and with " << pgonZ.size() << " sections";
925  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
926  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
927  << "\tRmax = " << pgonRmax[ii];
928 #endif
929 
931  DDMaterial matter(matName);
932  DDLogicalPart log = DDLogicalPart(solid.ddname(), matter, solid);
933 
934  cpv.position(log, mother, 1, DDTranslation(), DDRotation());
935 #ifdef EDM_ML_DEBUG
936  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << log.name() << " Number 1 positioned in "
937  << mother.name() << " at (0,0,0) with no rotation";
938 #endif
939  mother = log;
940  }
941  }
942  }
943  return glog;
944 }
Log< level::Info, true > LogVerbatim
float alpha
Definition: AMPTWrapper.h:105
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
double getTanTheta(unsigned int i) const
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
double getSideAbsW(unsigned int i) const
std::string idNameSpace
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
const std::string & getSideAbsMat(unsigned int i) const
double getSideD(unsigned int i) const
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
double getZoff(unsigned int i) const
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
const std::string & getSideMat(unsigned int i) const
U second(std::pair< T, U > const &p)
const std::string & getSideAbsName(unsigned int i) const
int getSideAbsorber() const
double getSideT(unsigned int i) const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
ii
Definition: cuy.py:589
const N & name() const
Definition: DDBase.h:59
const N & ddname() const
Definition: DDBase.h:61
double getRmax(unsigned int i) const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
static DDSolid polyhedra(const DDName &name, int sides, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polyhedra (refere to Geant3 or Geant4 documentation)
Definition: DDSolid.cc:565
int getRzones() const

◆ execute()

void DDHCalBarrelAlgo::execute ( DDCompactView cpv)
override

Definition at line 448 of file DDHCalBarrelAlgo.cc.

References constructGeneralVolume().

448  {
449 #ifdef EDM_ML_DEBUG
450  edm::LogVerbatim("HCalGeom") << "==>> Constructing DDHCalBarrelAlgo...";
451 #endif
453 #ifdef EDM_ML_DEBUG
454  edm::LogVerbatim("HCalGeom") << "<<== End of DDHCalBarrelAlgo construction";
455 #endif
456 }
Log< level::Info, true > LogVerbatim
void constructGeneralVolume(DDCompactView &cpv)

◆ getAbsorbD()

double DDHCalBarrelAlgo::getAbsorbD ( unsigned int  i) const
inline

Definition at line 72 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructMidLayer().

72 { return absorbD[i]; }
std::vector< double > absorbD

◆ getAbsorberN()

int DDHCalBarrelAlgo::getAbsorberN ( ) const
inline

Definition at line 69 of file DDHCalBarrelAlgo.cc.

Referenced by constructMidLayer().

69 { return nAbsorber; }

◆ getAbsorbMat()

const std::string& DDHCalBarrelAlgo::getAbsorbMat ( unsigned int  i) const
inline

Definition at line 71 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructMidLayer().

71 { return absorbMat[i]; }
std::vector< std::string > absorbMat

◆ getAbsorbName()

const std::string& DDHCalBarrelAlgo::getAbsorbName ( unsigned int  i) const
inline

Definition at line 70 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructMidLayer().

70 { return absorbName[i]; }
std::vector< std::string > absorbName

◆ getAbsorbT()

double DDHCalBarrelAlgo::getAbsorbT ( unsigned int  i) const
inline

Definition at line 73 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructMidLayer().

73 { return absorbT[i]; }
std::vector< double > absorbT

◆ getDetdP1()

double DDHCalBarrelAlgo::getDetdP1 ( unsigned int  i) const
inline

Definition at line 87 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

87 { return detdP1[i]; }
std::vector< double > detdP1

◆ getDetdP2()

double DDHCalBarrelAlgo::getDetdP2 ( unsigned int  i) const
inline

Definition at line 88 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

88 { return detdP2[i]; }
std::vector< double > detdP2

◆ getDetMat()

const std::string& DDHCalBarrelAlgo::getDetMat ( ) const
inline

Definition at line 83 of file DDHCalBarrelAlgo.cc.

Referenced by constructInsideLayers().

83 { return detMat; }

◆ getDetMatPl()

const std::string& DDHCalBarrelAlgo::getDetMatPl ( ) const
inline

Definition at line 84 of file DDHCalBarrelAlgo.cc.

Referenced by constructInsideDetectors().

84 { return detMatPl; }

◆ getDetMatSc()

const std::string& DDHCalBarrelAlgo::getDetMatSc ( ) const
inline

Definition at line 85 of file DDHCalBarrelAlgo.cc.

Referenced by constructInsideDetectors().

85 { return detMatSc; }

◆ getDetPosY()

int DDHCalBarrelAlgo::getDetPosY ( unsigned int  i) const
inline

Definition at line 96 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

96 { return detPosY[i]; }
std::vector< int > detPosY

◆ getDetT11()

double DDHCalBarrelAlgo::getDetT11 ( unsigned int  i) const
inline

Definition at line 89 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

89 { return detT11[i]; }
std::vector< double > detT11

◆ getDetT12()

double DDHCalBarrelAlgo::getDetT12 ( unsigned int  i) const
inline

Definition at line 90 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

90 { return detT12[i]; }
std::vector< double > detT12

◆ getDetT21()

double DDHCalBarrelAlgo::getDetT21 ( unsigned int  i) const
inline

Definition at line 92 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

92 { return detT21[i]; }
std::vector< double > detT21

◆ getDetT22()

double DDHCalBarrelAlgo::getDetT22 ( unsigned int  i) const
inline

Definition at line 93 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

93 { return detT22[i]; }
std::vector< double > detT22

◆ getDetTsc()

double DDHCalBarrelAlgo::getDetTsc ( unsigned int  i) const
inline

Definition at line 91 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

91 { return detTsc[i]; }
std::vector< double > detTsc

◆ getDetType()

int DDHCalBarrelAlgo::getDetType ( unsigned int  i) const
inline

Definition at line 86 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

86 { return detType[i]; }
std::vector< int > detType

◆ getDetWidth1()

double DDHCalBarrelAlgo::getDetWidth1 ( unsigned int  i) const
inline

Definition at line 94 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

94 { return detWidth1[i]; }
std::vector< double > detWidth1

◆ getDetWidth2()

double DDHCalBarrelAlgo::getDetWidth2 ( unsigned int  i) const
inline

Definition at line 95 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideDetectors().

95 { return detWidth2[i]; }
std::vector< double > detWidth2

◆ getGenMaterial()

const std::string& DDHCalBarrelAlgo::getGenMaterial ( ) const
inline

Definition at line 36 of file DDHCalBarrelAlgo.cc.

Referenced by constructGeneralVolume().

36 { return genMaterial; }
std::string genMaterial

◆ getLayerAbsorb()

int DDHCalBarrelAlgo::getLayerAbsorb ( unsigned int  i) const
inline

Definition at line 58 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

58 { return layerAbsorb[i]; }
std::vector< int > layerAbsorb

◆ getLayerAlpha()

double DDHCalBarrelAlgo::getLayerAlpha ( unsigned  i) const
inline

Definition at line 55 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

55 { return layerAlpha[i]; }
std::vector< double > layerAlpha

◆ getLayerD1()

double DDHCalBarrelAlgo::getLayerD1 ( unsigned  i) const
inline

Definition at line 53 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

53 { return layerD1[i]; }
std::vector< double > layerD1

◆ getLayerD2()

double DDHCalBarrelAlgo::getLayerD2 ( unsigned  i) const
inline

Definition at line 54 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

54 { return layerD2[i]; }
std::vector< double > layerD2

◆ getLayerGap()

double DDHCalBarrelAlgo::getLayerGap ( unsigned int  i) const
inline

Definition at line 59 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

59 { return layerGap[i]; }
std::vector< double > layerGap

◆ getLayerId()

int DDHCalBarrelAlgo::getLayerId ( unsigned  i) const
inline

Definition at line 49 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

49 { return layerId[i]; }
std::vector< int > layerId

◆ getLayerLabel()

const std::string& DDHCalBarrelAlgo::getLayerLabel ( unsigned  i) const
inline

Definition at line 50 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

50 { return layerLabel[i]; }
std::vector< std::string > layerLabel

◆ getLayerMaterial()

const std::string& DDHCalBarrelAlgo::getLayerMaterial ( unsigned  i) const
inline

Definition at line 51 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

51 { return layerMat[i]; }
std::vector< std::string > layerMat

◆ getLayerT1()

double DDHCalBarrelAlgo::getLayerT1 ( unsigned  i) const
inline

Definition at line 56 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

56 { return layerT1[i]; }
std::vector< double > layerT1

◆ getLayerT2()

double DDHCalBarrelAlgo::getLayerT2 ( unsigned  i) const
inline

Definition at line 57 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

57 { return layerT2[i]; }
std::vector< double > layerT2

◆ getLayerWidth()

double DDHCalBarrelAlgo::getLayerWidth ( unsigned  i) const
inline

Definition at line 52 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

52 { return layerWidth[i]; }
std::vector< double > layerWidth

◆ getMidAbsMat()

const std::string& DDHCalBarrelAlgo::getMidAbsMat ( unsigned int  i) const
inline

Definition at line 79 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructMidLayer().

79 { return midMat[i]; }
std::vector< std::string > midMat

◆ getMidAbsName()

const std::string& DDHCalBarrelAlgo::getMidAbsName ( unsigned int  i) const
inline

Definition at line 78 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructMidLayer().

78 { return midName[i]; }
std::vector< std::string > midName

◆ getMidAbsorber()

int DDHCalBarrelAlgo::getMidAbsorber ( ) const
inline

Definition at line 77 of file DDHCalBarrelAlgo.cc.

Referenced by constructMidLayer().

77 { return nMidAbs; }

◆ getMidAbsT()

double DDHCalBarrelAlgo::getMidAbsT ( unsigned int  i) const
inline

Definition at line 81 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructMidLayer().

81 { return midT[i]; }
std::vector< double > midT

◆ getMidAbsW()

double DDHCalBarrelAlgo::getMidAbsW ( unsigned int  i) const
inline

Definition at line 80 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructMidLayer().

80 { return midW[i]; }
std::vector< double > midW

◆ getMiddleD()

double DDHCalBarrelAlgo::getMiddleD ( ) const
inline

Definition at line 75 of file DDHCalBarrelAlgo.cc.

Referenced by constructMidLayer().

75 { return middleD; }

◆ getMiddleMat()

const std::string& DDHCalBarrelAlgo::getMiddleMat ( ) const
inline

Definition at line 74 of file DDHCalBarrelAlgo.cc.

Referenced by constructMidLayer().

74 { return middleMat; }

◆ getMiddleW()

double DDHCalBarrelAlgo::getMiddleW ( ) const
inline

Definition at line 76 of file DDHCalBarrelAlgo.cc.

Referenced by constructMidLayer().

76 { return middleW; }

◆ getNhalf()

int DDHCalBarrelAlgo::getNhalf ( ) const
inline

Definition at line 39 of file DDHCalBarrelAlgo.cc.

Referenced by constructGeneralVolume().

39 { return nhalf; }

◆ getNLayers()

int DDHCalBarrelAlgo::getNLayers ( ) const
inline

Definition at line 48 of file DDHCalBarrelAlgo.cc.

References MuonTCMETValueMapProducer_cff::nLayers.

Referenced by constructInsideSector().

48 { return nLayers; }

◆ getNsectors()

int DDHCalBarrelAlgo::getNsectors ( ) const
inline

Definition at line 37 of file DDHCalBarrelAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideSector().

37 { return nsectors; }

◆ getNsectortot()

int DDHCalBarrelAlgo::getNsectortot ( ) const
inline

Definition at line 38 of file DDHCalBarrelAlgo.cc.

Referenced by constructGeneralVolume().

38 { return nsectortot; }

◆ getRin()

double DDHCalBarrelAlgo::getRin ( ) const
inline

Definition at line 40 of file DDHCalBarrelAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideSector().

40 { return rin; }

◆ getRmax()

double DDHCalBarrelAlgo::getRmax ( unsigned int  i) const
inline

◆ getRout()

double DDHCalBarrelAlgo::getRout ( ) const
inline

Definition at line 41 of file DDHCalBarrelAlgo.cc.

Referenced by constructGeneralVolume().

41 { return rout; }

◆ getRzones()

int DDHCalBarrelAlgo::getRzones ( ) const
inline

◆ getSideAbsMat()

const std::string& DDHCalBarrelAlgo::getSideAbsMat ( unsigned int  i) const
inline

Definition at line 66 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructSideLayer().

66 { return sideAbsMat[i]; }
std::vector< std::string > sideAbsMat

◆ getSideAbsName()

const std::string& DDHCalBarrelAlgo::getSideAbsName ( unsigned int  i) const
inline

Definition at line 65 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructSideLayer().

65 { return sideAbsName[i]; }
std::vector< std::string > sideAbsName

◆ getSideAbsorber()

int DDHCalBarrelAlgo::getSideAbsorber ( ) const
inline

Definition at line 64 of file DDHCalBarrelAlgo.cc.

Referenced by constructSideLayer().

64 { return nSideAbs; }

◆ getSideAbsW()

double DDHCalBarrelAlgo::getSideAbsW ( unsigned int  i) const
inline

Definition at line 67 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructSideLayer().

67 { return sideAbsW[i]; }
std::vector< double > sideAbsW

◆ getSideD()

double DDHCalBarrelAlgo::getSideD ( unsigned int  i) const
inline

Definition at line 62 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructSideLayer().

62 { return sideD[i]; }
std::vector< double > sideD

◆ getSideMat()

const std::string& DDHCalBarrelAlgo::getSideMat ( unsigned int  i) const
inline

Definition at line 61 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructSideLayer().

61 { return sideMat[i]; }
std::vector< std::string > sideMat

◆ getSideT()

double DDHCalBarrelAlgo::getSideT ( unsigned int  i) const
inline

Definition at line 63 of file DDHCalBarrelAlgo.cc.

References mps_fire::i.

Referenced by constructSideLayer().

63 { return sideT[i]; }
std::vector< double > sideT

◆ getTanTheta()

double DDHCalBarrelAlgo::getTanTheta ( unsigned int  i) const
inline

◆ getTheta()

double DDHCalBarrelAlgo::getTheta ( unsigned int  i) const
inline

Definition at line 44 of file DDHCalBarrelAlgo.cc.

References mps_fire::i, and theta().

44 { return theta[i]; }
std::vector< double > theta

◆ getZoff()

double DDHCalBarrelAlgo::getZoff ( unsigned int  i) const
inline

◆ initialize()

void DDHCalBarrelAlgo::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)
override

Definition at line 300 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, mps_fire::i, idName, idNameSpace, idOffset, createfilelist::int, layerAbsorb, layerAlpha, layerD1, layerD2, layerGap, layerId, layerLabel, layerMat, layerT1, layerT2, layerWidth, middleD, middleMat, middleW, midMat, midName, midT, midW, nAbsorber, nhalf, nLayers, nMidAbs, DDCurrentNamespace::ns(), nsectors, nsectortot, nSideAbs, class-composition::parent, rin, rmax, rotHalf, rotns, rout, rzones, sideAbsMat, sideAbsName, sideAbsW, sideD, sideMat, sideT, funct::tan(), theta, ttheta, and zoff.

304  {
305  genMaterial = sArgs["MaterialName"];
306  nsectors = int(nArgs["NSector"]);
307  nsectortot = int(nArgs["NSectorTot"]);
308  nhalf = int(nArgs["NHalf"]);
309  rin = nArgs["RIn"];
310  rout = nArgs["ROut"];
311  rzones = int(nArgs["RZones"]);
312  rotHalf = sArgs["RotHalf"];
313  rotns = sArgs["RotNameSpace"];
314 
315  theta = vArgs["Theta"];
316  rmax = vArgs["RMax"];
317  zoff = vArgs["ZOff"];
318  for (int i = 0; i < rzones; i++) {
319  ttheta.emplace_back(tan(theta[i])); //*deg already done in XML
320  }
321  if (rzones > 3)
322  rmax[2] = (zoff[3] - zoff[2]) / ttheta[2];
323 
324 #ifdef EDM_ML_DEBUG
325  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: General material " << genMaterial << "\tSectors " << nsectors
326  << ", " << nsectortot << "\tHalves " << nhalf << "\tRotation matrix " << rotns << ":"
327  << rotHalf << "\n\t\t" << rin << "\t" << rout << "\t" << rzones;
328  for (int i = 0; i < rzones; i++)
329  edm::LogVerbatim("HCalGeom") << "\tTheta[" << i << "] = " << theta[i] << "\trmax[" << i << "] = " << rmax[i]
330  << "\tzoff[" << i << "] = " << zoff[i];
331 #endif
332  //Layers
334  nLayers = int(nArgs["NLayers"]);
335 #ifdef EDM_ML_DEBUG
336  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: Layer\t" << nLayers;
337 #endif
338  layerId = dbl_to_int(vArgs["Id"]);
339  layerLabel = vsArgs["LayerLabel"];
340  layerMat = vsArgs["LayerMat"];
341  layerWidth = vArgs["LayerWidth"];
342  layerD1 = vArgs["D1"];
343  layerD2 = vArgs["D2"];
344  layerAlpha = vArgs["Alpha2"];
345  layerT1 = vArgs["T1"];
346  layerT2 = vArgs["T2"];
347  layerAbsorb = dbl_to_int(vArgs["AbsL"]);
348  layerGap = vArgs["Gap"];
349 #ifdef EDM_ML_DEBUG
350  for (int i = 0; i < nLayers; i++)
351  edm::LogVerbatim("HCalGeom") << layerLabel[i] << "\t" << layerId[i] << "\t" << layerMat[i] << "\t" << layerWidth[i]
352  << "\t" << layerD1[i] << "\t" << layerD2[i] << "\t" << layerAlpha[i] << "\t"
353  << layerT1[i] << "\t" << layerT2[i] << "\t" << layerAbsorb[i] << "\t" << layerGap[i];
354 #endif
355 
357  //Absorber Layers and middle part
358  absorbName = vsArgs["AbsorbName"];
359  absorbMat = vsArgs["AbsorbMat"];
360  absorbD = vArgs["AbsorbD"];
361  absorbT = vArgs["AbsorbT"];
362  nAbsorber = absorbName.size();
363 #ifdef EDM_ML_DEBUG
364  for (int i = 0; i < nAbsorber; i++)
365  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << absorbName[i] << " Material " << absorbMat[i] << " d "
366  << absorbD[i] << " t " << absorbT[i];
367 #endif
368  middleMat = sArgs["MiddleMat"];
369  middleD = nArgs["MiddleD"];
370  middleW = nArgs["MiddleW"];
371 #ifdef EDM_ML_DEBUG
372  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: Middle material " << middleMat << " d " << middleD << " w "
373  << middleW;
374 #endif
375  midName = vsArgs["MidAbsName"];
376  midMat = vsArgs["MidAbsMat"];
377  midW = vArgs["MidAbsW"];
378  midT = vArgs["MidAbsT"];
379  nMidAbs = midName.size();
380 #ifdef EDM_ML_DEBUG
381  for (int i = 0; i < nMidAbs; i++)
382  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << midName[i] << " Material " << midMat[i] << " W " << midW[i]
383  << " T " << midT[i];
384 #endif
385 
386  //Absorber layers in the side part
387  sideMat = vsArgs["SideMat"];
388  sideD = vArgs["SideD"];
389  sideT = vArgs["SideT"];
390 #ifdef EDM_ML_DEBUG
391  for (unsigned int i = 0; i < sideMat.size(); i++)
392  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: Side material " << sideMat[i] << " d " << sideD[i] << " t "
393  << sideT[i];
394 #endif
395  sideAbsName = vsArgs["SideAbsName"];
396  sideAbsMat = vsArgs["SideAbsMat"];
397  sideAbsW = vArgs["SideAbsW"];
398  nSideAbs = sideAbsName.size();
399 #ifdef EDM_ML_DEBUG
400  for (int i = 0; i < nSideAbs; i++)
401  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << sideAbsName[i] << " Material " << sideAbsMat[i] << " W "
402  << sideAbsW[i];
403 #endif
404 
406  // Detectors
407 
408  detMat = sArgs["DetMat"];
409  detRot = sArgs["DetRot"];
410  detMatPl = sArgs["DetMatPl"];
411  detMatSc = sArgs["DetMatSc"];
412 #ifdef EDM_ML_DEBUG
413  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: Detector (" << nLayers << ") Rotation matrix " << rotns << ":"
414  << detRot << "\n\t\t" << detMat << "\t" << detMatPl << "\t" << detMatSc;
415 #endif
416  detType = dbl_to_int(vArgs["DetType"]);
417  detdP1 = vArgs["DetdP1"];
418  detdP2 = vArgs["DetdP2"];
419  detT11 = vArgs["DetT11"];
420  detT12 = vArgs["DetT12"];
421  detTsc = vArgs["DetTsc"];
422  detT21 = vArgs["DetT21"];
423  detT22 = vArgs["DetT22"];
424  detWidth1 = vArgs["DetWidth1"];
425  detWidth2 = vArgs["DetWidth2"];
426  detPosY = dbl_to_int(vArgs["DetPosY"]);
427 #ifdef EDM_ML_DEBUG
428  for (int i = 0; i < nLayers; i++)
429  edm::LogVerbatim("HCalGeom") << i + 1 << "\t" << detType[i] << "\t" << detdP1[i] << ", " << detdP2[i] << "\t"
430  << detT11[i] << ", " << detT12[i] << "\t" << detTsc[i] << "\t" << detT21[i] << ", "
431  << detT22[i] << "\t" << detWidth1[i] << "\t" << detWidth2[i] << "\t" << detPosY[i];
432 #endif
433 
434  // idName = parentName.name();
435  idName = sArgs["MotherName"];
437  idOffset = int(nArgs["IdOffset"]);
438 #ifdef EDM_ML_DEBUG
439  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: Parent " << parent().name() << " idName " << idName
440  << " NameSpace " << idNameSpace << " Offset " << idOffset;
441 #endif
442 }
std::vector< std::string > absorbMat
Log< level::Info, true > LogVerbatim
std::vector< std::string > midMat
std::vector< double > sideAbsW
std::vector< std::string > layerLabel
std::string idNameSpace
std::vector< double > layerD2
std::vector< std::string > layerMat
std::vector< int > layerId
static std::string & ns()
std::vector< double > rmax
std::string genMaterial
std::vector< double > layerT1
std::vector< double > detdP2
std::vector< double > detWidth2
std::vector< std::string > sideAbsName
std::vector< double > detdP1
std::vector< double > absorbT
std::vector< double > detWidth1
std::vector< double > layerGap
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
std::vector< double > layerAlpha
std::vector< double > detT22
std::vector< int > layerAbsorb
std::vector< std::string > sideAbsMat
std::vector< double > sideT
std::vector< double > detTsc
std::vector< int > dbl_to_int(const std::vector< double > &vecdbl)
Converts a std::vector of doubles to a std::vector of int.
Definition: DDutils.h:7
std::vector< std::string > midName
std::vector< std::string > sideMat
std::vector< double > detT21
std::vector< int > detPosY
std::vector< int > detType
std::vector< double > zoff
std::vector< double > sideD
std::vector< double > detT11
std::vector< double > absorbD
std::vector< double > ttheta
std::vector< double > theta
std::vector< double > layerWidth
std::vector< std::string > absorbName
std::vector< double > midW
std::vector< double > layerD1
std::vector< double > detT12
std::vector< double > midT
std::vector< double > layerT2

Member Data Documentation

◆ absorbD

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

Definition at line 200 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ absorbMat

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

Definition at line 199 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ absorbName

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

Definition at line 198 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ absorbT

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

Definition at line 201 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detdP1

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

Definition at line 236 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detdP2

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

Definition at line 237 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detMat

std::string DDHCalBarrelAlgo::detMat
private

Definition at line 231 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detMatPl

std::string DDHCalBarrelAlgo::detMatPl
private

Definition at line 233 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detMatSc

std::string DDHCalBarrelAlgo::detMatSc
private

Definition at line 234 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detPosY

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

Definition at line 245 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detRot

std::string DDHCalBarrelAlgo::detRot
private

Definition at line 232 of file DDHCalBarrelAlgo.cc.

Referenced by constructInsideLayers(), and initialize().

◆ detT11

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

Definition at line 238 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detT12

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

Definition at line 239 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detT21

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

Definition at line 241 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detT22

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

Definition at line 242 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detTsc

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

Definition at line 240 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detType

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

Definition at line 235 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detWidth1

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

Definition at line 243 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ detWidth2

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

Definition at line 244 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ genMaterial

std::string DDHCalBarrelAlgo::genMaterial
private

Definition at line 145 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ idName

std::string DDHCalBarrelAlgo::idName
private

◆ idNameSpace

std::string DDHCalBarrelAlgo::idNameSpace
private

◆ idOffset

int DDHCalBarrelAlgo::idOffset
private

Definition at line 249 of file DDHCalBarrelAlgo.cc.

Referenced by constructInsideLayers(), and initialize().

◆ layerAbsorb

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

Definition at line 194 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerAlpha

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

Definition at line 191 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerD1

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

Definition at line 189 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerD2

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

Definition at line 190 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerGap

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

Definition at line 195 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerId

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

Definition at line 185 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerLabel

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

Definition at line 186 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerMat

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

Definition at line 187 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerT1

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

Definition at line 192 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerT2

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

Definition at line 193 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ layerWidth

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

Definition at line 188 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ middleD

double DDHCalBarrelAlgo::middleD
private

Definition at line 203 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ middleMat

std::string DDHCalBarrelAlgo::middleMat
private

Definition at line 202 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ middleW

double DDHCalBarrelAlgo::middleW
private

Definition at line 204 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ midMat

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

Definition at line 207 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ midName

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

Definition at line 206 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ midT

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

Definition at line 209 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ midW

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

Definition at line 208 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ nAbsorber

int DDHCalBarrelAlgo::nAbsorber
private

Definition at line 197 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ nhalf

int DDHCalBarrelAlgo::nhalf
private

Definition at line 148 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ nLayers

int DDHCalBarrelAlgo::nLayers
private

Definition at line 184 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ nMidAbs

int DDHCalBarrelAlgo::nMidAbs
private

Definition at line 205 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ nsectors

int DDHCalBarrelAlgo::nsectors
private

Definition at line 146 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ nsectortot

int DDHCalBarrelAlgo::nsectortot
private

Definition at line 147 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ nSideAbs

int DDHCalBarrelAlgo::nSideAbs
private

Definition at line 214 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ rin

double DDHCalBarrelAlgo::rin
private

◆ rmax

std::vector<double> DDHCalBarrelAlgo::rmax
private

Definition at line 152 of file DDHCalBarrelAlgo.cc.

Referenced by constructMidLayer(), and initialize().

◆ rotHalf

std::string DDHCalBarrelAlgo::rotHalf
private

Definition at line 155 of file DDHCalBarrelAlgo.cc.

Referenced by constructGeneralVolume(), and initialize().

◆ rotns

std::string DDHCalBarrelAlgo::rotns
private

Definition at line 156 of file DDHCalBarrelAlgo.cc.

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

◆ rout

double DDHCalBarrelAlgo::rout
private

Definition at line 149 of file DDHCalBarrelAlgo.cc.

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

◆ rzones

int DDHCalBarrelAlgo::rzones
private

Definition at line 150 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ sideAbsMat

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

Definition at line 216 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ sideAbsName

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

Definition at line 215 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ sideAbsW

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

Definition at line 217 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ sideD

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

Definition at line 212 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ sideMat

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

Definition at line 211 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ sideT

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

Definition at line 213 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ theta

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

Definition at line 151 of file DDHCalBarrelAlgo.cc.

Referenced by constructGeneralVolume(), initialize(), and Tau.Tau::zImpact().

◆ ttheta

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

Definition at line 154 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().

◆ zoff

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

Definition at line 153 of file DDHCalBarrelAlgo.cc.

Referenced by initialize().