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 simBeamSpotPI::alpha, constructInsideSector(), angle_units::operators::convertRadToDeg(), DDrot(), DDSplit(), dqmdumpme::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
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 1104 of file DDHCalBarrelAlgo.cc.

References DDSolidFactory::box(), DDBase< N, C >::ddname(), DDSplit(), hgcalTestNeighbor_cfi::detector, PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, dqmdumpme::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().

1111  {
1112 #ifdef EDM_ML_DEBUG
1113  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: \t\tInside detector " << id << "...";
1114 #endif
1115 
1117  DDMaterial plmatter(plmatname);
1119  DDMaterial scmatter(scmatname);
1120 
1121  std::string plname = detector.name().name() + "Plastic_";
1122  std::string scname = idName + "Scintillator" + name;
1123 
1124  id--;
1125  DDSolid solid;
1126  DDLogicalPart glog;
1127  double wid, y = 0;
1128  double dx1, dx2, shiftX;
1129 
1130  if (type == 1) {
1131  wid = 0.5 * getDetWidth1(id);
1132  if (getDetPosY(id) > 0)
1133  y = -dy + wid;
1134  dx1 = 0.5 * getDetT11(id);
1135  dx2 = 0.5 * getDetT21(id);
1136  shiftX = getDetdP1(id);
1137  } else {
1138  wid = 0.5 * getDetWidth2(id);
1139  dx1 = 0.5 * getDetT12(id);
1140  dx2 = 0.5 * getDetT22(id);
1141  shiftX = getDetdP2(id);
1142  }
1143 
1144  solid = DDSolidFactory::box(DDName(plname + "1", idNameSpace), dx1, wid, dz);
1145 #ifdef EDM_ML_DEBUG
1146  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMatPl()
1147  << " of dimensions " << dx1 << ", " << wid << ", " << dz;
1148 #endif
1149  glog = DDLogicalPart(solid.ddname(), plmatter, solid);
1150 
1151  double x = shiftX + dx1 - dx;
1152  cpv.position(glog, detector, 1, DDTranslation(x, y, 0), DDRotation());
1153 #ifdef EDM_ML_DEBUG
1154  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number 1 positioned in " << detector.name()
1155  << " at (" << x << "," << y << ",0) with no rotation";
1156 #endif
1157  solid = DDSolidFactory::box(DDName(scname, idNameSpace), 0.5 * getDetTsc(id), wid, dz);
1158 #ifdef EDM_ML_DEBUG
1159  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMatSc()
1160  << " of dimensions " << 0.5 * getDetTsc(id) << ", " << wid << ", " << dz;
1161 #endif
1162  glog = DDLogicalPart(solid.ddname(), scmatter, solid);
1163 
1164  x += dx1 + 0.5 * getDetTsc(id);
1165  int copyNo = id * 10 + getDetType(id);
1166  cpv.position(glog, detector, copyNo, DDTranslation(x, y, 0), DDRotation());
1167 #ifdef EDM_ML_DEBUG
1168  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number " << copyNo << " positioned in "
1169  << detector.name() << " at (" << x << "," << y << ",0) with no rotation";
1170 #endif
1171  solid = DDSolidFactory::box(DDName(plname + "2", idNameSpace), dx2, wid, dz);
1172 #ifdef EDM_ML_DEBUG
1173  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMatPl()
1174  << " of dimensions " << dx2 << ", " << wid << ", " << dz;
1175 #endif
1176  glog = DDLogicalPart(solid.ddname(), plmatter, solid);
1177 
1178  x += 0.5 * getDetTsc(id) + dx2;
1179  cpv.position(glog, detector, 1, DDTranslation(x, y, 0), DDRotation());
1180 #ifdef EDM_ML_DEBUG
1181  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number 1 positioned in " << detector.name()
1182  << " at (" << x << "," << y << ",0) with no rotation";
1183 #endif
1184 }
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 775 of file DDHCalBarrelAlgo.cc.

References DDSolidFactory::box(), constructInsideDetectors(), constructMidLayer(), constructSideLayer(), d1, DDBase< N, C >::ddname(), DDSplit(), detRot, PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, dqmdumpme::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().

786  {
787 #ifdef EDM_ML_DEBUG
788  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: \t\tInside layer " << id << "...";
789 #endif
790  //Pointers to the Rotation Matrices and to the Materials
793 
794  std::string nam0 = nm + "In";
795  std::string name = idName + nam0;
797  DDMaterial matter(matName);
798 
799  DDSolid solid;
800  DDLogicalPart glog, mother;
801  double rsi, dx, dy, dz, x, y;
802  int i, in;
803  //Two lower volumes
804  if (alpha1 > 0) {
805  rsi = rin + d1;
806  in = 0;
807  for (i = 0; i < getRzones() - 1; i++) {
808  if (rsi >= getRmax(i))
809  in = i + 1;
810  }
811  dx = 0.5 * t1;
812  dy = 0.5 * rsi * (tan(alpha1) - tan(alpha2));
813  dz = 0.5 * (getZoff(in) + rsi * getTanTheta(in));
814  x = rsi + dx;
815  y = 0.5 * rsi * (tan(alpha1) + tan(alpha2));
816  DDTranslation r11(x, y, dz);
817  DDTranslation r12(x, -y, dz);
818 
819  solid = DDSolidFactory::box(DDName(name + "1", idNameSpace), dx, dy, dz);
820 #ifdef EDM_ML_DEBUG
821  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMat()
822  << " of dimensions " << dx << ", " << dy << ", " << dz;
823 #endif
824  glog = DDLogicalPart(solid.ddname(), matter, solid);
825 
826  if (nAbs != 0) {
827  mother = constructSideLayer(laylog, name, nAbs, rin, alpha1, cpv);
828  } else {
829  mother = laylog;
830  }
831  cpv.position(glog, mother, idOffset + 1, r11, DDRotation());
832  cpv.position(glog, mother, idOffset + 2, r12, rot);
833 #ifdef EDM_ML_DEBUG
834  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number " << idOffset + 1
835  << " positioned in " << mother.name() << " at " << r11 << " with no rotation\n"
836  << "DDHCalBarrelAlgo: " << glog.name() << " Number " << idOffset + 2
837  << " positioned in " << mother.name() << " at " << r12 << " with " << rot;
838 #endif
839  //Constructin the plastics and scintillators inside
840  constructInsideDetectors(glog, nam0 + "1", id, dx, dy, dz, 1, cpv);
841  }
842 
843  //Upper volume
844  rsi = rin + d2;
845  in = 0;
846  for (i = 0; i < getRzones() - 1; i++) {
847  if (rsi >= getRmax(i))
848  in = i + 1;
849  }
850  dx = 0.5 * t2;
851  dy = 0.5 * rsi * tan(alpha2);
852  dz = 0.5 * (getZoff(in) + rsi * getTanTheta(in));
853  x = rsi + dx;
854  DDTranslation r21(x, dy, dz);
855  DDTranslation r22(x, -dy, dz);
856 
857  solid = DDSolidFactory::box(DDName(name + "2", idNameSpace), dx, dy, dz);
858 #ifdef EDM_ML_DEBUG
859  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Box made of " << getDetMat()
860  << " of dimensions " << dx << ", " << dy << ", " << dz;
861 #endif
862  glog = DDLogicalPart(solid.ddname(), matter, solid);
863 
864  if (nAbs < 0) {
865  mother = constructMidLayer(laylog, name, rin, alpha1, cpv);
866  } else {
867  mother = laylog;
868  }
869  cpv.position(glog, mother, idOffset + 3, r21, DDRotation());
870  cpv.position(glog, mother, idOffset + 4, r22, rot);
871 #ifdef EDM_ML_DEBUG
872  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number " << idOffset + 3 << " positioned in "
873  << mother.name() << " at " << r21
874  << " with no rotation\nDDHCalBarrelAlgo: " << glog.name() << " Number " << idOffset + 4
875  << " positioned in " << mother.name() << " at " << r22 << " with " << rot;
876 #endif
877  //Constructin the plastics and scintillators inside
878  constructInsideDetectors(glog, nam0 + "2", id, dx, dy, dz, 2, cpv);
879 }
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 simBeamSpotPI::alpha, constructInsideLayers(), angle_units::operators::convertRadToDeg(), DDSplit(), MillePedeFileConverter_cfg::e, dqmdumpme::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(), nano_mu_digi_cff::sector, 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 #ifdef EDM_ML_DEBUG
669  int nsec = 2;
670 #endif
671  std::vector<double> pgonZ, pgonRmin, pgonRmax;
672  // index 0
673  pgonZ.emplace_back(0);
674  pgonRmin.emplace_back(rin);
675  pgonRmax.emplace_back(rout);
676  // index 1
677  pgonZ.emplace_back(zout);
678  pgonRmin.emplace_back(rin);
679  pgonRmax.emplace_back(rout);
680  if (in == out) {
681  if (in <= 3) {
682  //index 2
683  pgonZ.emplace_back(getZoff(in) + rout * getTanTheta(in));
684  pgonRmin.emplace_back(pgonRmax[1]);
685  pgonRmax.emplace_back(pgonRmax[1]);
686 #ifdef EDM_ML_DEBUG
687  nsec++;
688 #endif
689  }
690  } else {
691  if (in == 3) {
692  //redo index 1, add index 2
693  pgonZ[1] = (getZoff(out) + getRmax(out) * getTanTheta(out));
694  pgonZ.emplace_back(pgonZ[1] + deltaz);
695  pgonRmin.emplace_back(pgonRmin[1]);
696  pgonRmax.emplace_back(getRmax(in));
697  //index 3
698  pgonZ.emplace_back(getZoff(in) + getRmax(in) * getTanTheta(in));
699  pgonRmin.emplace_back(pgonRmin[2]);
700  pgonRmax.emplace_back(pgonRmax[2]);
701 #ifdef EDM_ML_DEBUG
702  nsec += 2;
703 #endif
704  } else {
705  //index 2
706  pgonZ.emplace_back(getZoff(in) + getRmax(in) * getTanTheta(in));
707  pgonRmin.emplace_back(getRmax(in));
708  pgonRmax.emplace_back(pgonRmax[1]);
709 #ifdef EDM_ML_DEBUG
710  nsec++;
711 #endif
712  if (in == 0) {
713  pgonZ.emplace_back(getZoff(out) + getRmax(in) * getTanTheta(out));
714  pgonRmin.emplace_back(pgonRmin[2]);
715  pgonRmax.emplace_back(pgonRmax[2]);
716 #ifdef EDM_ML_DEBUG
717  nsec++;
718 #endif
719  }
720  if (in <= 1) {
721  pgonZ.emplace_back(getZoff(out) + rout * getTanTheta(out));
722  pgonRmin.emplace_back(rout);
723  pgonRmax.emplace_back(rout);
724 #ifdef EDM_ML_DEBUG
725  nsec++;
726 #endif
727  }
728  }
729  }
730  //Solid & volume
731  DDSolid solid;
732  double alpha1 = alpha;
733  if (getLayerGap(i) > 1.e-6) {
734  double rmid = 0.5 * (rin + rout);
735  double width = rmid * tan(alpha) - getLayerGap(i);
736  alpha1 = atan(width / rmid);
737 #ifdef EDM_ML_DEBUG
738  edm::LogVerbatim("HCalGeom") << "\t"
739  << "Alpha_1 modified from " << convertRadToDeg(alpha) << " to "
740  << convertRadToDeg(alpha1) << " Rmid " << rmid << " Reduced width " << width;
741 #endif
742  }
743 #ifdef EDM_ML_DEBUG
744  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << name << " (Layer " << i << ") Polyhedra made of "
745  << getLayerMaterial(i) << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
746  << convertRadToDeg(alpha1) << " and with " << nsec << " sections";
747  for (unsigned int k = 0; k < pgonZ.size(); k++)
748  edm::LogVerbatim("HCalGeom") << "\t"
749  << "\t" << pgonZ[k] << "\t" << pgonRmin[k] << "\t" << pgonRmax[k];
750 #endif
751  solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
752  DDLogicalPart glog(DDName(name, idNameSpace), matter, solid);
753 
754  cpv.position(glog, sector, getLayerId(i), DDTranslation(0.0, 0.0, 0.0), DDRotation());
755 #ifdef EDM_ML_DEBUG
756  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " number " << getLayerId(i)
757  << " positioned in " << sector.name() << " at (0,0,0) with no rotation";
758 #endif
760  getLayerLabel(i),
761  getLayerId(i),
762  getLayerAbsorb(i),
763  rin,
764  getLayerD1(i),
765  alpha1,
766  getLayerD2(i),
767  getLayerAlpha(i),
768  getLayerT1(i),
769  getLayerT2(i),
770  cpv);
771  rin = rout;
772  }
773 }
Log< level::Info, true > LogVerbatim
double getLayerT1(unsigned i) const
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
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 958 of file DDHCalBarrelAlgo.cc.

References simBeamSpotPI::alpha, angle_units::operators::convertRadToDeg(), DDBase< N, C >::ddname(), DDSplit(), dqmdumpme::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().

959  {
960  DDSolid solid;
961  DDLogicalPart log, glog;
962  std::string name = nm + "Mid";
963  for (int k = 0; k < getAbsorberN(); k++) {
964  std::string namek = name + getAbsorbName(k);
965  double rsi = rin + getAbsorbD(k);
966  int in = 0;
967  for (int i = 0; i < getRzones() - 1; i++) {
968  if (rsi >= getRmax(i))
969  in = i + 1;
970  }
971  std::vector<double> pgonZ, pgonRmin, pgonRmax;
972  // index 0
973  pgonZ.emplace_back(0.0);
974  pgonRmin.emplace_back(rsi);
975  pgonRmax.emplace_back(rsi + getAbsorbT(k));
976  // index 1
977  pgonZ.emplace_back(getZoff(in) + rsi * getTanTheta(in));
978  pgonRmin.emplace_back(rsi);
979  pgonRmax.emplace_back(pgonRmax[0]);
980  // index 2
981  pgonZ.emplace_back(getZoff(in) + pgonRmax[0] * getTanTheta(in));
982  pgonRmin.emplace_back(pgonRmax[1]);
983  pgonRmax.emplace_back(pgonRmax[1]);
984  solid = DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, -alpha, 2 * alpha, pgonZ, pgonRmin, pgonRmax);
985 #ifdef EDM_ML_DEBUG
986  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getAbsorbMat(k)
987  << " with 1 sector from " << convertRadToDeg(-alpha) << " to "
988  << convertRadToDeg(alpha) << " and with " << pgonZ.size() << " sections";
989  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
990  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
991  << "\tRmax = " << pgonRmax[ii];
992 #endif
993 
995  DDMaterial matter(matName);
996  log = DDLogicalPart(solid.ddname(), matter, solid);
997 
998  cpv.position(log, laylog, 1, DDTranslation(), DDRotation());
999 #ifdef EDM_ML_DEBUG
1000  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << log.name() << " Number 1 positioned in " << laylog.name()
1001  << " at (0,0,0) with no rotation";
1002 #endif
1003  if (k == 0) {
1004  double rmin = pgonRmin[0];
1005  double rmax = pgonRmax[0];
1006  DDLogicalPart mother = log;
1007  for (int i = 0; i < 1; i++) {
1008  double alpha1 = atan(getMidAbsW(i) / rmin);
1009  std::string namek = name + getMidAbsName(i);
1010  solid =
1011  DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
1012 #ifdef EDM_ML_DEBUG
1013  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getMidAbsMat(i)
1014  << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
1015  << convertRadToDeg(alpha1) << " and with " << pgonZ.size() << " sections";
1016  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
1017  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
1018  << "\tRmax = " << pgonRmax[ii];
1019 #endif
1020 
1022  DDMaterial matter1(matNam1);
1023  log = DDLogicalPart(solid.ddname(), matter1, solid);
1024 
1025  cpv.position(log, mother, 1, DDTranslation(), DDRotation());
1026 #ifdef EDM_ML_DEBUG
1027  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << log.name() << " Number 1 positioned in "
1028  << mother.name() << " at (0,0,0) with no rotation";
1029 #endif
1030  mother = log;
1031  }
1032 
1033  // Now the layer with detectors
1034  double rmid = rmin + getMiddleD();
1035  pgonRmin[0] = rmid;
1036  pgonRmax[0] = rmax;
1037  pgonRmin[1] = rmid;
1038  pgonRmax[1] = rmax;
1039  pgonZ[1] = getZoff(in) + rmid * getTanTheta(in);
1040  pgonRmin[2] = rmax;
1041  pgonRmax[2] = rmax;
1042  pgonZ[2] = getZoff(in) + rmax * getTanTheta(in);
1043  double alpha1 = atan(getMiddleW() / rmin);
1044  solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
1045 #ifdef EDM_ML_DEBUG
1046  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getMiddleMat()
1047  << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
1048  << convertRadToDeg(alpha1) << " and with " << pgonZ.size() << " sections";
1049  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
1050  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
1051  << "\tRmax = " << pgonRmax[ii];
1052 #endif
1053 
1055  DDMaterial matter1(matNam1);
1056  glog = DDLogicalPart(solid.ddname(), matter1, solid);
1057 
1058  cpv.position(glog, mother, 1, DDTranslation(), DDRotation());
1059 #ifdef EDM_ML_DEBUG
1060  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number 1 positioned in " << mother.name()
1061  << " at (0,0,0) with no rotation";
1062 #endif
1063  // Now the remaining absorber layers
1064  for (int i = 1; i < getMidAbsorber(); i++) {
1065  namek = name + getMidAbsName(i);
1066  rmid = rmin + getMidAbsT(i);
1067  pgonRmin[0] = rmin;
1068  pgonRmax[0] = rmid;
1069  pgonRmin[1] = rmin;
1070  pgonRmax[1] = rmid;
1071  pgonZ[1] = getZoff(in) + rmin * getTanTheta(in);
1072  pgonRmin[2] = rmid;
1073  pgonRmax[2] = rmid;
1074  pgonZ[2] = getZoff(in) + rmid * getTanTheta(in);
1075  alpha1 = atan(getMidAbsW(i) / rmin);
1076  solid =
1077  DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
1078 #ifdef EDM_ML_DEBUG
1079  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getMidAbsMat(i)
1080  << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
1081  << convertRadToDeg(alpha1) << " and with " << pgonZ.size() << " sections";
1082  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
1083  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
1084  << "\tRmax = " << pgonRmax[ii];
1085 #endif
1086 
1088  DDMaterial matter2(matName2);
1089  log = DDLogicalPart(solid.ddname(), matter2, solid);
1090 
1091  cpv.position(log, mother, i, DDTranslation(), DDRotation());
1092 #ifdef EDM_ML_DEBUG
1093  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << log.name() << " Number " << i << " positioned in "
1094  << mother.name() << " at (0,0,0) with no "
1095  << "rotation";
1096 #endif
1097  mother = log;
1098  }
1099  }
1100  }
1101  return glog;
1102 }
double getMiddleD() const
Log< level::Info, true > LogVerbatim
double getMidAbsT(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)
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 881 of file DDHCalBarrelAlgo.cc.

References funct::abs(), simBeamSpotPI::alpha, angle_units::operators::convertRadToDeg(), DDBase< N, C >::ddname(), DDSplit(), dqmdumpme::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().

882  {
883  //Extra absorber layer
884  int k = abs(nAbs) - 1;
885  std::string namek = nm + "Side";
886  double rsi = rin + getSideD(k);
887  int in = 0;
888  for (int i = 0; i < getRzones() - 1; i++) {
889  if (rsi >= getRmax(i))
890  in = i + 1;
891  }
892  std::vector<double> pgonZ, pgonRmin, pgonRmax;
893  // index 0
894  pgonZ.emplace_back(0.0);
895  pgonRmin.emplace_back(rsi);
896  pgonRmax.emplace_back(rsi + getSideT(k));
897  // index 1
898  pgonZ.emplace_back(getZoff(in) + rsi * getTanTheta(in));
899  pgonRmin.emplace_back(rsi);
900  pgonRmax.emplace_back(pgonRmax[0]);
901  // index 2
902  pgonZ.emplace_back(getZoff(in) + pgonRmax[0] * getTanTheta(in));
903  pgonRmin.emplace_back(pgonRmax[1]);
904  pgonRmax.emplace_back(pgonRmax[1]);
905  DDSolid solid =
906  DDSolidFactory::polyhedra(DDName(namek, idNameSpace), 1, -alpha, 2 * alpha, pgonZ, pgonRmin, pgonRmax);
907 #ifdef EDM_ML_DEBUG
908  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of " << getSideMat(k)
909  << " with 1 sector from " << convertRadToDeg(-alpha) << " to " << convertRadToDeg(alpha)
910  << " and with " << pgonZ.size() << " sections";
911  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
912  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
913  << "\tRmax = " << pgonRmax[ii];
914 #endif
915 
917  DDMaterial matter(matName);
918  DDLogicalPart glog = DDLogicalPart(solid.ddname(), matter, solid);
919 
920  cpv.position(glog, laylog, 1, DDTranslation(), DDRotation());
921 #ifdef EDM_ML_DEBUG
922  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << glog.name() << " Number 1 positioned in " << laylog.name()
923  << " at (0,0,0) with no rotation";
924 #endif
925  if (nAbs < 0) {
926  DDLogicalPart mother = glog;
927  double rmid = pgonRmax[0];
928  for (int i = 0; i < getSideAbsorber(); i++) {
929  double alpha1 = atan(getSideAbsW(i) / rmid);
930  if (alpha1 > 0) {
931  std::string name = namek + getSideAbsName(i);
932  solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, -alpha1, 2 * alpha1, pgonZ, pgonRmin, pgonRmax);
933 #ifdef EDM_ML_DEBUG
934  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << solid.name() << " Polyhedra made of "
935  << getSideAbsMat(i) << " with 1 sector from " << convertRadToDeg(-alpha1) << " to "
936  << convertRadToDeg(alpha1) << " and with " << pgonZ.size() << " sections";
937  for (unsigned int ii = 0; ii < pgonZ.size(); ii++)
938  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[ii] << "\tRmin = " << pgonRmin[ii]
939  << "\tRmax = " << pgonRmax[ii];
940 #endif
941 
943  DDMaterial matter(matName);
944  DDLogicalPart log = DDLogicalPart(solid.ddname(), matter, solid);
945 
946  cpv.position(log, mother, 1, DDTranslation(), DDRotation());
947 #ifdef EDM_ML_DEBUG
948  edm::LogVerbatim("HCalGeom") << "DDHCalBarrelAlgo: " << log.name() << " Number 1 positioned in "
949  << mother.name() << " at (0,0,0) with no rotation";
950 #endif
951  mother = log;
952  }
953  }
954  }
955  return glog;
956 }
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
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().