CMS 3D CMS Logo

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

Public Member Functions

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

Protected Member Functions

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

Private Attributes

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

Detailed Description

Definition at line 29 of file DDHCalEndcapAlgo.cc.

Constructor & Destructor Documentation

◆ DDHCalEndcapAlgo()

DDHCalEndcapAlgo::DDHCalEndcapAlgo ( )

Definition at line 229 of file DDHCalEndcapAlgo.cc.

230  : modMat(0),
231  modType(0),
232  sectionModule(0),
233  layerN(0),
234  layerN0(0),
235  layerN1(0),
236  layerN2(0),
237  layerN3(0),
238  layerN4(0),
239  layerN5(0),
240  thick(0),
241  trimLeft(0),
242  trimRight(0),
243  zminBlock(0),
244  zmaxBlock(0),
245  rinBlock1(0),
246  routBlock1(0),
247  rinBlock2(0),
248  routBlock2(0),
249  layerType(0),
250  layerT(0),
251  scintT(0) {
252 #ifdef EDM_ML_DEBUG
253  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Creating an instance";
254 #endif
255 }
Log< level::Info, true > LogVerbatim
std::vector< int > layerN2
std::vector< int > modType
std::vector< double > zminBlock
std::vector< int > layerN0
std::vector< std::string > modMat
std::vector< double > routBlock1
std::vector< double > zmaxBlock
std::vector< double > routBlock2
std::vector< int > layerN1
std::vector< int > layerN4
std::vector< int > sectionModule
std::vector< double > rinBlock1
std::vector< int > layerN5
std::vector< int > layerType
std::vector< int > layerN
std::vector< double > rinBlock2
std::vector< double > trimRight
std::vector< int > layerN3
std::vector< double > thick
std::vector< double > scintT
std::vector< double > layerT
std::vector< double > trimLeft

◆ ~DDHCalEndcapAlgo()

DDHCalEndcapAlgo::~DDHCalEndcapAlgo ( )
override

Definition at line 257 of file DDHCalEndcapAlgo.cc.

257 {}

Member Function Documentation

◆ constructGeneralVolume()

void DDHCalEndcapAlgo::constructGeneralVolume ( DDCompactView cpv)
protected

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

Definition at line 555 of file DDHCalEndcapAlgo.cc.

References simBeamSpotPI::alpha, constructInsideSector(), angle_units::operators::convertRadToDeg(), DDrot(), DDSplit(), equipModule(), dqmdumpme::first, formatAsDegreesInInteger(), getAbsMat(), getAngBot(), getAngTop(), getDrEnd(), getDzShift(), getEndcaps(), getGenMat(), getNsectors(), getNsectortot(), getRinDip(), getRinKink(), getRotation(), getRout(), getRoutDip(), getSlope(), getZ1Beam(), getZEnd(), getZFront(), getZiBody(), getZiDip(), getZiKink(), getZiL0Body(), getZShift(), getZShiftHac2(), mps_fire::i, idName, idNameSpace, cuy::ii, Skims_PA_cff::name, DDBase< N, C >::name(), class-composition::parent, phi, DDSolidFactory::polyhedra(), DDCompactView::position(), makeMuonMisalignmentScenario::rot, rotation, rotHalf, rotns, edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, and funct::tan().

Referenced by execute().

555  {
556 #ifdef EDM_ML_DEBUG
557  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: General volume...";
558 #endif
559 
560  bool proto = true;
561  for (int i = 0; i < 3; i++)
562  if (equipModule(i) > 0)
563  proto = false;
564 
565  DDRotation rot;
566  if (DDSplit(getRotation()).first == "NULL")
567  rot = DDRotation();
568  else
570 
571 #ifdef EDM_ML_DEBUG
572  edm::LogVerbatim("HCalGeom") << " First " << DDSplit(getRotation()).first << " Second "
573  << DDSplit(getRotation()).second << " Rotation " << rot;
574 #endif
575 
576  DDTranslation r0(0, 0, getZShift());
577  double alpha = (1._pi) / getNsectors();
578  double dphi = getNsectortot() * (2._pi) / getNsectors();
579 
581  //vertical walls are allowed in SolidPolyhedra
582  double delz = 0;
583 
584  std::vector<double> pgonZ, pgonRmin, pgonRmax;
585  if (proto) {
586  double zf = getZiBody() + getZShiftHac2();
587  pgonZ.emplace_back(zf - getDzShift());
588  pgonRmin.emplace_back(zf * tan(getAngBot()));
589  pgonRmax.emplace_back((zf - getZ1Beam()) * getSlope());
590  } else {
591  pgonZ.emplace_back(getZFront() - getDzShift());
592  pgonRmin.emplace_back(getZFront() * tan(getAngTop()));
593  pgonRmax.emplace_back((getZFront() - getZ1Beam()) * getSlope());
594  pgonZ.emplace_back(getZiL0Body() - getDzShift());
595  pgonRmin.emplace_back(getZiL0Body() * tan(getAngTop()));
596  pgonRmax.emplace_back((getZiL0Body() - getZ1Beam()) * getSlope());
597  pgonZ.emplace_back(getZiL0Body() - getDzShift());
598  pgonRmin.emplace_back(getZiL0Body() * tan(getAngBot()));
599  pgonRmax.emplace_back((getZiL0Body() - getZ1Beam()) * getSlope());
600  }
601  pgonZ.emplace_back(getZiKink() - getDzShift());
602  pgonRmin.emplace_back(getRinKink());
603  pgonRmax.emplace_back(getRout());
604  pgonZ.emplace_back(getZiDip() - getDzShift());
605  pgonRmin.emplace_back(getRinDip());
606  pgonRmax.emplace_back(getRout());
607  pgonZ.emplace_back(getZiDip() - getDzShift() + delz);
608  pgonRmin.emplace_back(getRinDip());
609  pgonRmax.emplace_back(getRoutDip());
610  pgonZ.emplace_back(getZEnd() - getDzShift());
611  pgonRmin.emplace_back(getZEnd() * tan(getAngBot()));
612  pgonRmax.emplace_back(getRoutDip());
613  pgonZ.emplace_back(getZEnd());
614  pgonRmin.emplace_back(getZEnd() * tan(getAngBot()));
615  pgonRmax.emplace_back(getRoutDip());
616 
617  std::string name("Null");
618  DDSolid solid;
619  solid =
620  DDSolidFactory::polyhedra(DDName(idName, idNameSpace), getNsectortot(), -alpha, dphi, pgonZ, pgonRmin, pgonRmax);
621 #ifdef EDM_ML_DEBUG
622  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << DDName(idName, idNameSpace) << " Polyhedra made of "
623  << getGenMat() << " with " << getNsectortot() << " sectors from "
624  << convertRadToDeg(-alpha) << " to " << convertRadToDeg(-alpha + dphi) << " and with "
625  << pgonZ.size() << " sections";
626  for (unsigned int i = 0; i < pgonZ.size(); i++)
627  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[i] << "\tRmin = " << pgonRmin[i] << "\tRmax = " << pgonRmax[i];
628 #endif
629 
631  DDMaterial matter(matname);
632  DDLogicalPart genlogic(DDName(idName, idNameSpace), matter, solid);
633 
634  DDName parentName = parent().name();
635  cpv.position(DDName(idName, idNameSpace), parentName, 1, r0, rot);
636 
637 #ifdef EDM_ML_DEBUG
638  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << DDName(idName, idNameSpace) << " number 1 positioned in "
639  << parentName << " at " << r0 << " with " << rot;
640 #endif
641 
642  if (getEndcaps() != 1) {
644  cpv.position(DDName(idName, idNameSpace), parentName, 2, r0, rot);
645 
646 #ifdef EDM_ML_DEBUG
647  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << DDName(idName, idNameSpace) << " number 2 "
648  << "positioned in " << parentName << " at " << r0 << " with " << rot;
649 #endif
650  }
651 
652  //Forward half
653  name = idName + "Front";
654  std::vector<double> pgonZMod, pgonRminMod, pgonRmaxMod;
655  for (unsigned int i = 0; i < (pgonZ.size() - 1); i++) {
656  pgonZMod.emplace_back(pgonZ[i] + getDzShift());
657  pgonRminMod.emplace_back(pgonRmin[i]);
658  pgonRmaxMod.emplace_back(pgonRmax[i]);
659  }
661  DDName(name, idNameSpace), getNsectortot(), -alpha, dphi, pgonZMod, pgonRminMod, pgonRmaxMod);
662 
663 #ifdef EDM_ML_DEBUG
664  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << DDName(name, idNameSpace) << " Polyhedra made of "
665  << getGenMat() << " with " << getNsectortot() << " sectors from "
666  << convertRadToDeg(-alpha) << " to " << convertRadToDeg(-alpha + dphi) << " and with "
667  << pgonZMod.size() << " sections ";
668  for (unsigned int i = 0; i < pgonZMod.size(); i++)
669  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZMod[i] << "\tRmin = " << pgonRminMod[i]
670  << "\tRmax = " << pgonRmaxMod[i];
671 #endif
672 
673  DDLogicalPart genlogich(DDName(name, idNameSpace), matter, solid);
674 
675  cpv.position(genlogich, genlogic, 1, DDTranslation(0.0, 0.0, -getDzShift()), DDRotation());
676 
677 #ifdef EDM_ML_DEBUG
678  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << genlogich.name() << " number 1 positioned in "
679  << genlogic.name() << " at (0,0," << -getDzShift() << ") with no rotation";
680 #endif
681 
682  //Construct sector (from -alpha to +alpha)
683  name = idName + "Module";
684  solid =
685  DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, -alpha, 2 * alpha, pgonZMod, pgonRminMod, pgonRmaxMod);
686 #ifdef EDM_ML_DEBUG
687  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << DDName(name, idNameSpace) << " Polyhedra made of "
688  << getGenMat() << " with 1 sector from " << convertRadToDeg(-alpha) << " to "
689  << convertRadToDeg(alpha) << " and with " << pgonZMod.size() << " sections";
690  for (unsigned int i = 0; i < pgonZMod.size(); i++)
691  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZMod[i] << "\tRmin = " << pgonRminMod[i]
692  << "\tRmax = " << pgonRmaxMod[i];
693 #endif
694 
695  DDLogicalPart seclogic(DDName(name, idNameSpace), matter, solid);
696 
697  for (int ii = 0; ii < getNsectortot(); ii++) {
698  double phi = ii * 2 * alpha;
700  std::string rotstr("NULL");
701  if (phi != 0) {
702  rotstr = "R" + formatAsDegreesInInteger(phi);
703  rotation = DDRotation(DDName(rotstr, rotns));
704  if (!rotation) {
705 #ifdef EDM_ML_DEBUG
706  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Creating a new rotation " << rotstr << "\t 90,"
707  << convertRadToDeg(phi) << ", 90," << convertRadToDeg(phi + 90._deg) << ", 0, 0";
708 #endif
709  rotation = DDrot(DDName(rotstr, rotns), 90._deg, phi, 90._deg, (90._deg + phi), 0, 0);
710  } //if !rotation
711  } //if phi!=0
712 
713  cpv.position(seclogic, genlogich, ii + 1, DDTranslation(0.0, 0.0, 0.0), rotation);
714 
715 #ifdef EDM_ML_DEBUG
716  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << seclogic.name() << " number " << ii + 1 << " positioned in "
717  << genlogich.name() << " at (0,0,0) with " << rotation;
718 #endif
719  }
720 
721  //Construct the things inside the sector
722  constructInsideSector(seclogic, cpv);
723 
724  //Backward half
725  name = idName + "Back";
726  std::vector<double> pgonZBack, pgonRminBack, pgonRmaxBack;
727  pgonZBack.emplace_back(getZEnd() - getDzShift());
728  pgonRminBack.emplace_back(pgonZBack[0] * tan(getAngBot()) + getDrEnd());
729  pgonRmaxBack.emplace_back(getRoutDip());
730  pgonZBack.emplace_back(getZEnd());
731  pgonRminBack.emplace_back(pgonZBack[1] * tan(getAngBot()) + getDrEnd());
732  pgonRmaxBack.emplace_back(getRoutDip());
734  DDName(name, idNameSpace), getNsectortot(), -alpha, dphi, pgonZBack, pgonRminBack, pgonRmaxBack);
735 
736 #ifdef EDM_ML_DEBUG
737  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << DDName(name, idNameSpace) << " Polyhedra made of "
738  << getAbsMat() << " with " << getNsectortot() << " sectors from "
739  << convertRadToDeg(-alpha) << " to " << convertRadToDeg(-alpha + dphi) << " and with "
740  << pgonZBack.size() << " sections";
741  for (unsigned int i = 0; i < pgonZBack.size(); i++)
742  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZBack[i] << "\tRmin = " << pgonRminBack[i]
743  << "\tRmax = " << pgonRmaxBack[i];
744 #endif
745 
746  DDName absMatname(DDSplit(getAbsMat()).first, DDSplit(getAbsMat()).second);
747  DDMaterial absMatter(absMatname);
748  DDLogicalPart glog(DDName(name, idNameSpace), absMatter, solid);
749 
750  cpv.position(glog, genlogic, 1, DDTranslation(0.0, 0.0, 0.0), DDRotation());
751 
752 #ifdef EDM_ML_DEBUG
753  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << glog.name() << " number 1 positioned in " << genlogic.name()
754  << " at (0,0,0) with no rotation";
755 #endif
756 }
Log< level::Info, true > LogVerbatim
std::string idNameSpace
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
const std::string & getGenMat() 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 getDzShift() const
void constructInsideSector(const DDLogicalPart &sector, DDCompactView &cpv)
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
double getDrEnd() const
double getZEnd() const
double getRinKink() const
double getAngTop() const
double getRout() const
std::string formatAsDegreesInInteger(double radianVal)
Definition: DDTypes.cc:79
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
int getEndcaps() const
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
double getRinDip() const
U second(std::pair< T, U > const &p)
double getZShift() const
int equipModule(unsigned int i) const
double getZiBody() const
double getRoutDip() const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
double getZiL0Body() 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
ii
Definition: cuy.py:589
double getSlope() const
int getNsectortot() const
double getZiDip() const
double getZiKink() const
double getZShiftHac2() const
double getAngBot() const
const std::string & getRotation() const
int getNsectors() const
const std::string & getAbsMat() const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
double getZFront() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
double getZ1Beam() 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

◆ constructInsideModule()

void DDHCalEndcapAlgo::constructInsideModule ( const DDLogicalPart module,
int  mod,
DDCompactView cpv 
)
protected

Definition at line 1055 of file DDHCalEndcapAlgo.cc.

References simBeamSpotPI::alpha, constructScintLayer(), angle_units::operators::convertRadToDeg(), DDBase< N, C >::ddname(), DDSplit(), dqmdumpme::first, getAngBot(), getAngTop(), getDzStep(), getGenMat(), getLayer(), getLayerN(), getLayerName(), getLayerT(), getLayerType(), getModName(), getNsectors(), getPhi(), getPhiName(), getPlastMat(), getRotMat(), getRoutBlock2(), getScintT(), getSlope(), getThick(), getTrim(), getZ1Beam(), getZminBlock(), mps_fire::i, idNameSpace, idOffset, hcalRecHitTable_cff::iphi, nano_mu_digi_cff::layer, mod(), Skims_PA_cff::name, DDBase< N, C >::name(), parameterLayer(), phi, DDCompactView::position(), diffTwoXMLs::r1, diffTwoXMLs::r2, makeMuonMisalignmentScenario::rot, rotns, edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, funct::tan(), theta(), and DDSolidFactory::trap().

Referenced by constructInsideSector().

1055  {
1056 #ifdef EDM_ML_DEBUG
1057  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: \t\tInside module ..." << mod;
1058 #endif
1059 
1061  //Pointers to the Rotation Matrices and to the Materials
1062  std::string rotstr = getRotMat();
1063  DDRotation rot(DDName(rotstr, rotns));
1065  DDMaterial matter(matName);
1067  DDMaterial matplastic(plasName);
1068 
1069  double alpha = (1._pi) / getNsectors();
1070  double zi = getZminBlock(mod);
1071 
1072  for (int i = 0; i < getLayerN(mod); i++) {
1073  std::string name;
1074  DDSolid solid;
1075  DDLogicalPart glog, plog;
1076  int layer = getLayer(mod, i);
1077  double zo = zi + 0.5 * getDzStep();
1078 
1079  for (int iphi = 0; iphi < getPhi(); iphi++) {
1080  double ziAir = zo - getThick(mod);
1081  double rinF, rinB;
1082  if (layer == 1) {
1083  rinF = ziAir * tan(getAngTop());
1084  rinB = zo * tan(getAngTop());
1085  } else {
1086  rinF = ziAir * tan(getAngBot());
1087  rinB = zo * tan(getAngBot());
1088  }
1089  double routF = (ziAir - getZ1Beam()) * getSlope();
1090  double routB = (zo - getZ1Beam()) * getSlope();
1091  if (routF > getRoutBlock2(mod))
1092  routF = getRoutBlock2(mod);
1093  if (routB > getRoutBlock2(mod))
1094  routB = getRoutBlock2(mod);
1095 
1096 #ifdef EDM_ML_DEBUG
1097  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Layer " << i << " Phi " << iphi << " Front " << ziAir << ", "
1098  << rinF << ", " << routF << " Back " << zo << ", " << rinB << ", " << routB;
1099 #endif
1100 
1101  double yh1, bl1, tl1, yh2, bl2, tl2, theta, phi, alp;
1102  double xpos, ypos, zpos;
1104  iphi, rinF, routF, rinB, routB, ziAir, zo, yh1, bl1, tl1, yh2, bl2, tl2, alp, theta, phi, xpos, ypos, zpos);
1105 
1106  name = module.name().name() + getLayerName(layer) + getPhiName(iphi) + "Air";
1107  solid = DDSolidFactory::trap(
1108  DDName(name, idNameSpace), 0.5 * getThick(mod), theta, phi, yh1, bl1, tl1, alp, yh2, bl2, tl2, alp);
1109 
1110 #ifdef EDM_ML_DEBUG
1111  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << solid.name() << " Trap made of " << getGenMat()
1112  << " of dimensions " << 0.5 * getThick(mod) << ", " << convertRadToDeg(theta) << ", "
1113  << convertRadToDeg(phi) << ", " << yh1 << ", " << bl1 << ", " << tl1 << ", "
1114  << convertRadToDeg(alp) << ", " << yh2 << ", " << bl2 << ", " << tl2 << ", "
1115  << convertRadToDeg(alp);
1116 #endif
1117 
1118  glog = DDLogicalPart(solid.ddname(), matter, solid);
1119 
1120  DDTranslation r1(xpos, ypos, zpos);
1121  cpv.position(glog, module, layer + 1, r1, rot);
1122 
1123 #ifdef EDM_ML_DEBUG
1124  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << glog.name() << " number " << layer + 1
1125  << " positioned in " << module.name() << " at " << r1 << " with " << rot;
1126 #endif
1127 
1128  //Now the plastic with scintillators
1129  double yh = 0.5 * (routF - rinB) - getTrim(mod, iphi);
1130  double bl = 0.5 * rinB * tan(alpha) - getTrim(mod, iphi);
1131  double tl = 0.5 * routF * tan(alpha) - getTrim(mod, iphi);
1132  name = module.name().name() + getLayerName(layer) + getPhiName(iphi);
1133  solid = DDSolidFactory::trap(
1134  DDName(name, idNameSpace), 0.5 * getLayerT(layer), 0, 0, yh, bl, tl, alp, yh, bl, tl, alp);
1135 
1136 #ifdef EDM_ML_DEBUG
1137  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << solid.name() << " Trap made of " << getPlastMat()
1138  << " of dimensions " << 0.5 * getLayerT(layer) << ", 0, 0, " << yh << ", " << bl
1139  << ", " << tl << ", " << convertRadToDeg(alp) << ", " << yh << ", " << bl << ", "
1140  << tl << ", " << convertRadToDeg(alp);
1141 #endif
1142 
1143  plog = DDLogicalPart(solid.ddname(), matplastic, solid);
1144 
1145  ypos = 0.5 * (routF + rinB) - xpos;
1146  DDTranslation r2(0., ypos, 0.);
1147  cpv.position(plog, glog, idOffset + layer + 1, r2, DDRotation());
1148 
1149 #ifdef EDM_ML_DEBUG
1150  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << plog.name() << " number " << idOffset + layer + 1
1151  << " positioned in " << glog.name() << " at " << r2 << " with no rotation";
1152 #endif
1153 
1154  //Constructin the scintillators inside
1155  int copyNo = layer * 10 + getLayerType(layer);
1157  constructScintLayer(plog, getScintT(layer), yh, bl, tl, alp, name, copyNo, cpv);
1158  zo += 0.5 * getDzStep();
1159  } // End of loop over phi indices
1160  zi = zo - 0.5 * getDzStep();
1161  } // End of loop on layers
1162 }
Log< level::Info, true > LogVerbatim
double getThick(unsigned int i) const
std::string idNameSpace
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
int getLayerType(unsigned int i) const
const std::string & getGenMat() const
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
int getLayer(unsigned int i, unsigned int j) const
double getAngTop() const
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
U second(std::pair< T, U > const &p)
double getZminBlock(unsigned i) const
void constructScintLayer(const DDLogicalPart &glog, double pDz, double yh, double bl, double tl, double alp, const std::string &name, int id, DDCompactView &cpv)
int getLayerN(unsigned int i) const
const std::string & getPhiName(unsigned int i) const
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 trap(const DDName &name, double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
Definition: DDSolid.cc:609
const N & name() const
Definition: DDBase.h:59
double getSlope() const
double getTrim(unsigned int i, unsigned int j) const
const N & ddname() const
Definition: DDBase.h:61
const std::string & getRotMat() const
double getLayerT(unsigned int i) const
double getScintT(unsigned int i) const
double getAngBot() const
const std::string & getModName(unsigned int i) const
double getDzStep() const
void parameterLayer(int iphi, double rinF, double routF, double rinB, double routB, double zi, double zo, double &yh1, double &bl1, double &tl1, double &yh2, double &bl2, double &tl2, double &alp, double &theta, double &phi, double &xpos, double &ypos, double &zcpv)
int getNsectors() const
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
double getRoutBlock2(unsigned i) const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
Geom::Theta< T > theta() const
const std::string & getLayerName(unsigned int i) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
double getZ1Beam() const
const std::string & getPlastMat() const

◆ constructInsideModule0()

void DDHCalEndcapAlgo::constructInsideModule0 ( const DDLogicalPart module,
int  mod,
DDCompactView cpv 
)
protected

Definition at line 948 of file DDHCalEndcapAlgo.cc.

References constructScintLayer(), angle_units::operators::convertRadToDeg(), DDBase< N, C >::ddname(), DDSplit(), fact, dqmdumpme::first, getAbsMat(), getAngBot(), getAngTop(), getDzStep(), getLayer(), getLayerName(), getLayerT(), getLayerType(), getModName(), getPhi(), getPhiName(), getPlastMat(), getRotMat(), getScintT(), getSlope(), getThick(), getTolAbs(), getZ1Beam(), getZminBlock(), idNameSpace, idOffset, hcalRecHitTable_cff::iphi, nano_mu_digi_cff::layer, mod(), Skims_PA_cff::name, DDBase< N, C >::name(), parameterLayer(), parameterLayer0(), phi, DDCompactView::position(), diffTwoXMLs::r1, diffTwoXMLs::r2, makeMuonMisalignmentScenario::rot, rotns, edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, funct::tan(), theta(), and DDSolidFactory::trap().

Referenced by constructInsideSector().

948  {
949 #ifdef EDM_ML_DEBUG
950  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: \t\tInside module0 ..." << mod;
951 #endif
952 
954  //Pointers to the Rotation Matrices and to the Materials
955  std::string rotstr = getRotMat();
956  DDRotation rot(DDName(rotstr, rotns));
958  DDMaterial matabsorbr(matName);
960  DDMaterial matplastic(plasName);
961 
962  int layer = getLayer(mod, 0);
963  int layer0 = getLayer(mod, 1);
965  double xpos, ypos, zpos;
966  DDSolid solid;
967  DDLogicalPart glog, plog;
968  for (int iphi = 0; iphi < getPhi(); iphi++) {
969  double yh, bl, tl, alp;
970  parameterLayer0(mod, layer, iphi, yh, bl, tl, alp, xpos, ypos, zpos);
971  name = module.name().name() + getLayerName(layer) + getPhiName(iphi);
972  solid =
973  DDSolidFactory::trap(DDName(name, idNameSpace), 0.5 * getLayerT(layer), 0, 0, yh, bl, tl, alp, yh, bl, tl, alp);
974 
975 #ifdef EDM_ML_DEBUG
976  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << solid.name() << " Trap made of " << getPlastMat()
977  << " of dimensions " << 0.5 * getLayerT(layer) << ", 0, 0, " << yh << ", " << bl
978  << ", " << tl << ", " << convertRadToDeg(alp) << ", " << yh << ", " << bl << ", " << tl
979  << ", " << convertRadToDeg(alp);
980 #endif
981 
982  glog = DDLogicalPart(solid.ddname(), matplastic, solid);
983 
984  DDTranslation r1(xpos, ypos, zpos);
985  cpv.position(glog, module, idOffset + layer + 1, r1, rot);
986 
987 #ifdef EDM_ML_DEBUG
988  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << glog.name() << " number " << idOffset + layer + 1
989  << " positioned in " << module.name() << " at " << r1 << " with " << rot;
990 #endif
991 
992  //Now construct the layer of scintillator inside this
993  int copyNo = layer0 * 10 + getLayerType(layer);
995  constructScintLayer(glog, getScintT(layer), yh, bl, tl, alp, name, copyNo, cpv);
996  }
997 
998  //Now the absorber layer
999  double zi = getZminBlock(mod) + getLayerT(layer);
1000  double zo = zi + 0.5 * getDzStep();
1001  double rinF, routF, rinB, routB;
1002  if (mod == 0) {
1003  rinF = zi * tan(getAngTop());
1004  routF = (zi - getZ1Beam()) * getSlope();
1005  rinB = zo * tan(getAngTop());
1006  routB = (zo - getZ1Beam()) * getSlope();
1007  } else {
1008  rinF = zi * tan(getAngBot());
1009  routF = zi * tan(getAngTop());
1010  rinB = zo * tan(getAngBot());
1011  routB = zo * tan(getAngTop());
1012  }
1013 
1014 #ifdef EDM_ML_DEBUG
1015  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Module " << mod << " Front " << zi << ", " << rinF << ", " << routF
1016  << " Back " << zo << ", " << rinB << ", " << routB;
1017 #endif
1018 
1019  double yh1, bl1, tl1, yh2, bl2, tl2, theta, phi, alp;
1020  parameterLayer(0, rinF, routF, rinB, routB, zi, zo, yh1, bl1, tl1, yh2, bl2, tl2, alp, theta, phi, xpos, ypos, zpos);
1021  double fact = getTolAbs();
1022 
1023 #ifdef EDM_ML_DEBUG
1024  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Trim " << fact << " Param " << yh1 << ", " << bl1 << ", " << tl1
1025  << ", " << yh2 << ", " << bl2 << ", " << tl2;
1026 #endif
1027 
1028  bl1 -= fact;
1029  tl1 -= fact;
1030  bl2 -= fact;
1031  tl2 -= fact;
1032 
1033  name = module.name().name() + "Absorber";
1034  solid = DDSolidFactory::trap(
1035  DDName(name, idNameSpace), 0.5 * getThick(mod), theta, phi, yh1, bl1, tl1, alp, yh2, bl2, tl2, alp);
1036 #ifdef EDM_ML_DEBUG
1037  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << solid.name() << " Trap made of " << getAbsMat()
1038  << " of dimensions " << 0.5 * getThick(mod) << ", " << convertRadToDeg(theta) << ", "
1039  << convertRadToDeg(phi) << ", " << yh1 << ", " << bl1 << ", " << tl1 << ", "
1040  << convertRadToDeg(alp) << ", " << yh2 << ", " << bl2 << ", " << tl2 << ", "
1041  << convertRadToDeg(alp);
1042 #endif
1043 
1044  glog = DDLogicalPart(solid.ddname(), matabsorbr, solid);
1045 
1046  DDTranslation r2(xpos, ypos, zpos);
1047  cpv.position(glog, module, 1, r2, rot);
1048 
1049 #ifdef EDM_ML_DEBUG
1050  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << glog.name() << " number 1 positioned in " << module.name()
1051  << " at " << r2 << " with " << rot;
1052 #endif
1053 }
Log< level::Info, true > LogVerbatim
double getThick(unsigned int i) const
std::string idNameSpace
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
int getLayerType(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
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
int getLayer(unsigned int i, unsigned int j) const
double getAngTop() const
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
U second(std::pair< T, U > const &p)
void parameterLayer0(int mod, int layer, int iphi, double &yh, double &bl, double &tl, double &alp, double &xpos, double &ypos, double &zcpv)
double getZminBlock(unsigned i) const
void constructScintLayer(const DDLogicalPart &glog, double pDz, double yh, double bl, double tl, double alp, const std::string &name, int id, DDCompactView &cpv)
const std::string & getPhiName(unsigned int i) const
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 trap(const DDName &name, double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
Definition: DDSolid.cc:609
const N & name() const
Definition: DDBase.h:59
double getSlope() const
const double fact
const N & ddname() const
Definition: DDBase.h:61
const std::string & getRotMat() const
double getTolAbs() const
double getLayerT(unsigned int i) const
double getScintT(unsigned int i) const
double getAngBot() const
const std::string & getModName(unsigned int i) const
double getDzStep() const
void parameterLayer(int iphi, double rinF, double routF, double rinB, double routB, double zi, double zo, double &yh1, double &bl1, double &tl1, double &yh2, double &bl2, double &tl2, double &alp, double &theta, double &phi, double &xpos, double &ypos, double &zcpv)
const std::string & getAbsMat() const
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
Geom::Theta< T > theta() const
const std::string & getLayerName(unsigned int i) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
double getZ1Beam() const
const std::string & getPlastMat() const

◆ constructInsideSector()

void DDHCalEndcapAlgo::constructInsideSector ( const DDLogicalPart sector,
DDCompactView cpv 
)
protected

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

Definition at line 758 of file DDHCalEndcapAlgo.cc.

References simBeamSpotPI::alpha, constructInsideModule(), constructInsideModule0(), angle_units::operators::convertRadToDeg(), DDSplit(), equipModule(), dqmdumpme::first, getAngBot(), getModMat(), getModName(), getModType(), getModules(), getNsectors(), getRinBlock1(), getRinBlock2(), getRinDip(), getRinKink(), getRout(), getRoutBlock1(), getRoutBlock2(), getRoutDip(), getSectionModule(), getSlope(), getZ1Beam(), getZiDip(), getZiKink(), getZmaxBlock(), getZminBlock(), getZShiftHac2(), mps_fire::i, idName, idNameSpace, dqmdumpme::k, Skims_PA_cff::name, DDBase< N, C >::name(), DDSolidFactory::polyhedra(), DDCompactView::position(), edm::second(), nano_mu_digi_cff::sector, AlCaHLTBitMon_QueryRunRegistry::string, and funct::tan().

Referenced by constructGeneralVolume().

758  {
759 #ifdef EDM_ML_DEBUG
760  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Modules (" << getModules() << ") ...";
761 #endif
762 
763  double alpha = (1._pi) / getNsectors();
764 
765  for (int i = 0; i < getModules(); i++) {
768  DDMaterial matter(matname);
769 
770  if (equipModule(i) > 0) {
771  int nsec = getSectionModule(i);
772 
774  //vertical walls are allowed in SolidPolyhedra
775  double deltaz = 0;
776 
777  std::vector<double> pgonZ, pgonRmin, pgonRmax;
778  if (nsec == 3) {
779  double zf = getZminBlock(i) + getZShiftHac2();
780  pgonZ.emplace_back(zf);
781  pgonRmin.emplace_back(zf * tan(getAngBot()));
782  pgonRmax.emplace_back((zf - getZ1Beam()) * getSlope());
783  pgonZ.emplace_back(getZiKink());
784  pgonRmin.emplace_back(getRinKink());
785  pgonRmax.emplace_back(getRout());
786  } else {
787  pgonZ.emplace_back(getZminBlock(i));
788  pgonRmin.emplace_back(getRinBlock1(i));
789  pgonRmax.emplace_back(getRoutBlock1(i));
790  }
791  if (nsec == 4) {
792  pgonZ.emplace_back(getZiDip());
793  pgonRmin.emplace_back(getRinDip());
794  pgonRmax.emplace_back(getRout());
795  pgonZ.emplace_back(pgonZ[1] + deltaz);
796  pgonRmin.emplace_back(pgonRmin[1]);
797  pgonRmax.emplace_back(getRoutDip());
798  }
799  pgonZ.emplace_back(getZmaxBlock(i));
800  pgonRmin.emplace_back(getRinBlock2(i));
801  pgonRmax.emplace_back(getRoutBlock2(i));
802 
803  //Solid & volume
804  DDSolid solid;
805  solid = DDSolidFactory::polyhedra(DDName(name, idNameSpace), 1, -alpha, 2 * alpha, pgonZ, pgonRmin, pgonRmax);
806 
807 #ifdef EDM_ML_DEBUG
808  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << DDName(name, idNameSpace) << " Polyhedra made of "
809  << getModMat(i) << " with 1 sector from " << convertRadToDeg(-alpha) << " to "
810  << convertRadToDeg(alpha) << " and with " << nsec << " sections";
811  for (unsigned int k = 0; k < pgonZ.size(); k++)
812  edm::LogVerbatim("HCalGeom") << "\t\tZ = " << pgonZ[k] << "\tRmin = " << pgonRmin[k]
813  << "\tRmax = " << pgonRmax[k];
814 #endif
815 
816  DDLogicalPart glog(DDName(name, idNameSpace), matter, solid);
817 
818  cpv.position(glog, sector, i + 1, DDTranslation(0.0, 0.0, 0.0), DDRotation());
819 
820 #ifdef EDM_ML_DEBUG
821  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << glog.name() << " number " << i + 1 << " positioned in "
822  << sector.name() << " at (0,0,0) with no rotation";
823 #endif
824 
825  if (getModType(i) == 0)
826  constructInsideModule0(glog, i, cpv);
827  else
828  constructInsideModule(glog, i, cpv);
829  }
830  }
831 }
Log< level::Info, true > LogVerbatim
std::string idNameSpace
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
int getSectionModule(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
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
void constructInsideModule(const DDLogicalPart &module, int mod, DDCompactView &cpv)
double getRinKink() const
const std::string & getModMat(unsigned int i) const
double getRout() const
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
double getRinDip() const
U second(std::pair< T, U > const &p)
int equipModule(unsigned int i) const
double getZminBlock(unsigned i) const
double getZmaxBlock(unsigned i) const
double getRoutDip() const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
double getRinBlock2(unsigned i) const
double getSlope() const
double getRoutBlock1(unsigned i) const
double getRinBlock1(unsigned i) const
void constructInsideModule0(const DDLogicalPart &module, int mod, DDCompactView &cpv)
double getZiDip() const
double getZiKink() const
double getZShiftHac2() const
double getAngBot() const
const std::string & getModName(unsigned int i) const
int getNsectors() const
int getModules() const
int getModType(unsigned int i) const
double getRoutBlock2(unsigned 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 getZ1Beam() 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

◆ constructScintLayer()

void DDHCalEndcapAlgo::constructScintLayer ( const DDLogicalPart glog,
double  pDz,
double  yh,
double  bl,
double  tl,
double  alp,
const std::string &  name,
int  id,
DDCompactView cpv 
)
protected

Definition at line 1164 of file DDHCalEndcapAlgo.cc.

References angle_units::operators::convertRadToDeg(), DDBase< N, C >::ddname(), DDSplit(), hgcalTestNeighbor_cfi::detector, PVValHelper::dz, dqmdumpme::first, getScintMat(), idName, idNameSpace, Skims_PA_cff::name, DDCompactView::position(), edm::second(), AlCaHLTBitMon_QueryRunRegistry::string, and DDSolidFactory::trap().

Referenced by constructInsideModule(), and constructInsideModule0().

1172  {
1174  DDMaterial matter(matname);
1175  std::string name = idName + "Scintillator" + nm;
1176 
1177  DDSolid solid = DDSolidFactory::trap(DDName(name, idNameSpace), 0.5 * dz, 0, 0, yh, bl, tl, alp, yh, bl, tl, alp);
1178 
1179 #ifdef EDM_ML_DEBUG
1180  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << DDName(name, idNameSpace) << " Trap made of " << getScintMat()
1181  << " of dimensions " << 0.5 * dz << ", 0, 0, " << yh << ", " << bl << ", " << tl << ", "
1182  << convertRadToDeg(alp) << ", " << yh << ", " << bl << ", " << tl << ", "
1183  << convertRadToDeg(alp);
1184 #endif
1185 
1186  DDLogicalPart glog(solid.ddname(), matter, solid);
1187 
1188  cpv.position(glog, detector, id, DDTranslation(0, 0, 0), DDRotation());
1189 
1190 #ifdef EDM_ML_DEBUG
1191  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << glog.name() << " number " << id << " positioned in "
1192  << detector.name() << " at (0,0,0) with no rotation";
1193 #endif
1194 }
Log< level::Info, true > LogVerbatim
std::string idNameSpace
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
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
U second(std::pair< T, U > const &p)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
static DDSolid trap(const DDName &name, double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
Definition: DDSolid.cc:609
const N & name() const
Definition: DDBase.h:59
const N & ddname() const
Definition: DDBase.h:61
const std::string & getScintMat() 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

◆ equipModule()

int DDHCalEndcapAlgo::equipModule ( unsigned int  i) const
inline

Definition at line 41 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructGeneralVolume(), and constructInsideSector().

41 { return eModule[i]; }
std::vector< int > eModule

◆ execute()

void DDHCalEndcapAlgo::execute ( DDCompactView cpv)
override

Definition at line 541 of file DDHCalEndcapAlgo.cc.

References constructGeneralVolume().

541  {
542 #ifdef EDM_ML_DEBUG
543  edm::LogVerbatim("HCalGeom") << "==>> Constructing DDHCalEndcapAlgo...";
544 #endif
545 
547 
548 #ifdef EDM_ML_DEBUG
549  edm::LogVerbatim("HCalGeom") << "<<== End of DDHCalEndcapAlgo construction ...";
550 #endif
551 }
Log< level::Info, true > LogVerbatim
void constructGeneralVolume(DDCompactView &cpv)

◆ getAbsMat()

const std::string& DDHCalEndcapAlgo::getAbsMat ( ) const
inline

Definition at line 69 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideModule0().

69 { return absMat; }

◆ getAngBot()

double DDHCalEndcapAlgo::getAngBot ( ) const
inline

◆ getAngGap()

double DDHCalEndcapAlgo::getAngGap ( ) const
inline

Definition at line 66 of file DDHCalEndcapAlgo.cc.

66 { return angGap; }

◆ getAngTop()

double DDHCalEndcapAlgo::getAngTop ( ) const
inline

◆ getDrEnd()

double DDHCalEndcapAlgo::getDrEnd ( ) const
inline

Definition at line 63 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume().

63 { return drEnd; }

◆ getDzShift()

double DDHCalEndcapAlgo::getDzShift ( ) const
inline

Definition at line 55 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume().

55 { return dzShift; }

◆ getDzStep()

double DDHCalEndcapAlgo::getDzStep ( ) const
inline

Definition at line 54 of file DDHCalEndcapAlgo.cc.

Referenced by constructInsideModule(), and constructInsideModule0().

54 { return dzStep; }

◆ getEndcaps()

int DDHCalEndcapAlgo::getEndcaps ( ) const
inline

Definition at line 40 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume().

40 { return nEndcap; }

◆ getGenMat()

const std::string& DDHCalEndcapAlgo::getGenMat ( ) const
inline

Definition at line 36 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideModule().

36 { return genMaterial; }
std::string genMaterial

◆ getHeboxDepth()

double DDHCalEndcapAlgo::getHeboxDepth ( ) const
inline

Definition at line 62 of file DDHCalEndcapAlgo.cc.

62 { return heboxDepth; }

◆ getLayer()

int DDHCalEndcapAlgo::getLayer ( unsigned int  i,
unsigned int  j 
) const

Definition at line 259 of file DDHCalEndcapAlgo.cc.

References mps_fire::i, dqmiolumiharvest::j, layerN0, layerN1, layerN2, layerN3, layerN4, and layerN5.

Referenced by constructInsideModule(), and constructInsideModule0().

259  {
260  switch (i) {
261  case 0:
262  return layerN0[j];
263  break;
264 
265  case 1:
266  return layerN1[j];
267  break;
268 
269  case 2:
270  return layerN2[j];
271  break;
272 
273  case 3:
274  return layerN3[j];
275  break;
276 
277  case 4:
278  return layerN4[j];
279  break;
280 
281  case 5:
282  return layerN5[j];
283  break;
284 
285  default:
286  return 0;
287  }
288 }
std::vector< int > layerN2
std::vector< int > layerN0
std::vector< int > layerN1
std::vector< int > layerN4
std::vector< int > layerN5
std::vector< int > layerN3

◆ getLayerN()

int DDHCalEndcapAlgo::getLayerN ( unsigned int  i) const
inline

Definition at line 75 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideModule().

75 { return layerN[i]; }
std::vector< int > layerN

◆ getLayerName()

const std::string& DDHCalEndcapAlgo::getLayerName ( unsigned int  i) const
inline

Definition at line 89 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideModule(), and constructInsideModule0().

89 { return layerName[i]; }
std::vector< std::string > layerName

◆ getLayers()

int DDHCalEndcapAlgo::getLayers ( ) const
inline

Definition at line 88 of file DDHCalEndcapAlgo.cc.

References hgcalTBTopologyTester_cfi::layers.

88 { return layers; }

◆ getLayerT()

double DDHCalEndcapAlgo::getLayerT ( unsigned int  i) const
inline

Definition at line 91 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

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

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

◆ getLayerType()

int DDHCalEndcapAlgo::getLayerType ( unsigned int  i) const
inline

Definition at line 90 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideModule(), and constructInsideModule0().

90 { return layerType[i]; }
std::vector< int > layerType

◆ getModMat()

const std::string& DDHCalEndcapAlgo::getModMat ( unsigned int  i) const
inline

Definition at line 72 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

72 { return modMat[i]; }
std::vector< std::string > modMat

◆ getModName()

const std::string& DDHCalEndcapAlgo::getModName ( unsigned int  i) const
inline

Definition at line 71 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

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

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

◆ getModType()

int DDHCalEndcapAlgo::getModType ( unsigned int  i) const
inline

Definition at line 73 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

73 { return modType[i]; }
std::vector< int > modType

◆ getModules()

int DDHCalEndcapAlgo::getModules ( ) const
inline

Definition at line 70 of file DDHCalEndcapAlgo.cc.

References LogMessageMonitor_cff::modules.

Referenced by constructInsideSector().

70 { return modules; }

◆ getNsectors()

int DDHCalEndcapAlgo::getNsectors ( ) const
inline

◆ getNsectortot()

int DDHCalEndcapAlgo::getNsectortot ( ) const
inline

Definition at line 39 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume().

39 { return nsectortot; }

◆ getPhi()

int DDHCalEndcapAlgo::getPhi ( ) const
inline

Definition at line 86 of file DDHCalEndcapAlgo.cc.

Referenced by constructInsideModule(), and constructInsideModule0().

86 { return phiSections; }

◆ getPhiName()

const std::string& DDHCalEndcapAlgo::getPhiName ( unsigned int  i) const
inline

Definition at line 87 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideModule(), and constructInsideModule0().

87 { return phiName[i]; }
std::vector< std::string > phiName

◆ getPlastMat()

const std::string& DDHCalEndcapAlgo::getPlastMat ( ) const
inline

Definition at line 93 of file DDHCalEndcapAlgo.cc.

Referenced by constructInsideModule(), and constructInsideModule0().

93 { return plastMat; }

◆ getRinBlock1()

double DDHCalEndcapAlgo::getRinBlock1 ( unsigned  i) const
inline

Definition at line 81 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

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

◆ getRinBlock2()

double DDHCalEndcapAlgo::getRinBlock2 ( unsigned  i) const
inline

Definition at line 82 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

82 { return rinBlock2[i]; }
std::vector< double > rinBlock2

◆ getRinDip()

double DDHCalEndcapAlgo::getRinDip ( ) const
inline

Definition at line 60 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideSector().

60 { return riDip; }

◆ getRinKink()

double DDHCalEndcapAlgo::getRinKink ( ) const
inline

Definition at line 59 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideSector().

59 { return riKink; }

◆ getRotation()

const std::string& DDHCalEndcapAlgo::getRotation ( ) const
inline

Definition at line 37 of file DDHCalEndcapAlgo.cc.

References idealTransformation::rotation.

Referenced by constructGeneralVolume().

37 { return rotation; }

◆ getRotMat()

const std::string& DDHCalEndcapAlgo::getRotMat ( ) const
inline

Definition at line 95 of file DDHCalEndcapAlgo.cc.

Referenced by constructInsideModule(), and constructInsideModule0().

95 { return rotmat; }

◆ getRout()

double DDHCalEndcapAlgo::getRout ( ) const
inline

Definition at line 58 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideSector().

58 { return rout; }

◆ getRoutBlock1()

double DDHCalEndcapAlgo::getRoutBlock1 ( unsigned  i) const
inline

Definition at line 83 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

83 { return routBlock1[i]; }
std::vector< double > routBlock1

◆ getRoutBlock2()

double DDHCalEndcapAlgo::getRoutBlock2 ( unsigned  i) const
inline

Definition at line 84 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideModule(), and constructInsideSector().

84 { return routBlock2[i]; }
std::vector< double > routBlock2

◆ getRoutDip()

double DDHCalEndcapAlgo::getRoutDip ( ) const
inline

Definition at line 61 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideSector().

61 { return roDip; }

◆ getScintMat()

const std::string& DDHCalEndcapAlgo::getScintMat ( ) const
inline

Definition at line 94 of file DDHCalEndcapAlgo.cc.

Referenced by constructScintLayer().

94 { return scintMat; }

◆ getScintT()

double DDHCalEndcapAlgo::getScintT ( unsigned int  i) const
inline

Definition at line 92 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideModule(), and constructInsideModule0().

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

◆ getSectionModule()

int DDHCalEndcapAlgo::getSectionModule ( unsigned  i) const
inline

Definition at line 74 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector().

74 { return sectionModule[i]; }
std::vector< int > sectionModule

◆ getSlope()

double DDHCalEndcapAlgo::getSlope ( ) const
inline

◆ getThick()

double DDHCalEndcapAlgo::getThick ( unsigned int  i) const
inline

Definition at line 77 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideModule(), and constructInsideModule0().

77 { return thick[i]; }
std::vector< double > thick

◆ getTolAbs()

double DDHCalEndcapAlgo::getTolAbs ( ) const
inline

Definition at line 97 of file DDHCalEndcapAlgo.cc.

Referenced by constructInsideModule0().

97 { return tolAbs; }

◆ getTolPos()

double DDHCalEndcapAlgo::getTolPos ( ) const
inline

Definition at line 96 of file DDHCalEndcapAlgo.cc.

96 { return tolPos; }

◆ getTrim()

double DDHCalEndcapAlgo::getTrim ( unsigned int  i,
unsigned int  j 
) const

Definition at line 290 of file DDHCalEndcapAlgo.cc.

References mps_fire::i, dqmiolumiharvest::j, trimLeft, and trimRight.

Referenced by constructInsideModule(), and parameterLayer0().

290  {
291  if (j == 0)
292  return trimLeft[i];
293  else
294  return trimRight[j];
295 }
std::vector< double > trimRight
std::vector< double > trimLeft

◆ getZ0Beam()

double DDHCalEndcapAlgo::getZ0Beam ( ) const
inline

Definition at line 51 of file DDHCalEndcapAlgo.cc.

51 { return z0Beam; }

◆ getZ1Beam()

double DDHCalEndcapAlgo::getZ1Beam ( ) const
inline

◆ getZEnd()

double DDHCalEndcapAlgo::getZEnd ( ) const
inline

Definition at line 45 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume().

45 { return zEnd; }

◆ getZFront()

double DDHCalEndcapAlgo::getZFront ( ) const
inline

Definition at line 44 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume().

44 { return zFront; }

◆ getZiBody()

double DDHCalEndcapAlgo::getZiBody ( ) const
inline

Definition at line 48 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume().

48 { return ziBody; }

◆ getZiDip()

double DDHCalEndcapAlgo::getZiDip ( ) const
inline

Definition at line 53 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideSector().

53 { return ziDip; }

◆ getZiKink()

double DDHCalEndcapAlgo::getZiKink ( ) const
inline

Definition at line 50 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideSector().

50 { return ziKink; }

◆ getZiL0Body()

double DDHCalEndcapAlgo::getZiL0Body ( ) const
inline

Definition at line 49 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume().

49 { return ziL0Body; }

◆ getZiL0Nose()

double DDHCalEndcapAlgo::getZiL0Nose ( ) const
inline

Definition at line 47 of file DDHCalEndcapAlgo.cc.

47 { return ziL0Nose; }

◆ getZiNose()

double DDHCalEndcapAlgo::getZiNose ( ) const
inline

Definition at line 46 of file DDHCalEndcapAlgo.cc.

46 { return ziNose; }

◆ getZmaxBlock()

double DDHCalEndcapAlgo::getZmaxBlock ( unsigned  i) const
inline

Definition at line 80 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

Referenced by constructInsideSector(), and parameterLayer0().

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

◆ getZminBlock()

double DDHCalEndcapAlgo::getZminBlock ( unsigned  i) const
inline

Definition at line 79 of file DDHCalEndcapAlgo.cc.

References mps_fire::i.

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

79 { return zminBlock[i]; }
std::vector< double > zminBlock

◆ getZShift()

double DDHCalEndcapAlgo::getZShift ( ) const
inline

Definition at line 42 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume().

42 { return zShift; }

◆ getZShiftHac2()

double DDHCalEndcapAlgo::getZShiftHac2 ( ) const
inline

Definition at line 56 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and constructInsideSector().

56 { return zShiftHac2; }

◆ initialize()

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

Definition at line 297 of file DDHCalEndcapAlgo.cc.

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

301  {
302  genMaterial = sArgs["MaterialName"];
303  rotation = sArgs["Rotation"];
304  nsectors = int(nArgs["Sector"]);
305  nsectortot = int(nArgs["SectorTot"]);
306  nEndcap = int(nArgs["Endcap"]);
307  rotHalf = sArgs["RotHalf"];
308  rotns = sArgs["RotNameSpace"];
309  zShift = nArgs["ZShift"];
310 
311  zFront = nArgs["ZFront"];
312  zEnd = nArgs["ZEnd"];
313  ziNose = nArgs["ZiNose"];
314  ziL0Nose = nArgs["ZiL0Nose"];
315  ziBody = nArgs["ZiBody"];
316  ziL0Body = nArgs["ZiL0Body"];
317  z0Beam = nArgs["Z0Beam"];
318  ziDip = nArgs["ZiDip"];
319  dzStep = nArgs["DzStep"];
320  zShiftHac2 = nArgs["ZShiftHac2"];
321  double gap = nArgs["Gap"];
322  double z1 = nArgs["Z1"];
323  double r1 = nArgs["R1"];
324  rout = nArgs["Rout"];
325  heboxDepth = nArgs["HEboxDepth"];
326  drEnd = nArgs["DrEnd"];
327  double etamin = nArgs["Etamin"];
328  angBot = nArgs["AngBot"];
329  angGap = nArgs["AngGap"];
330 
331 #ifdef EDM_ML_DEBUG
332  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: General material " << genMaterial << "\tSectors " << nsectors
333  << ", " << nsectortot << "\tEndcaps " << nEndcap << "\tRotation matrix for half "
334  << rotns << ":" << rotHalf << "\n\tzFront " << zFront << " zEnd " << zEnd << " ziNose "
335  << ziNose << " ziL0Nose " << ziL0Nose << " ziBody " << ziBody << " ziL0Body " << ziL0Body
336  << " z0Beam " << z0Beam << " ziDip " << ziDip << " dzStep " << dzStep << " Gap " << gap
337  << " z1 " << z1 << "\n\tr1 " << r1 << " rout " << rout << " HeboxDepth " << heboxDepth
338  << " drEnd " << drEnd << "\tetamin " << etamin << " Bottom angle " << angBot
339  << " Gap angle " << angGap << " Z-Shift " << zShift << " " << zShiftHac2;
340 #endif
341 
342  //Derived quantities
343  angTop = 2.0 * atan(exp(-etamin));
344  slope = tan(angGap);
345  z1Beam = z1 - r1 / slope;
346  ziKink = z1Beam + rout / slope;
347  riKink = ziKink * tan(angBot);
348  riDip = ziDip * tan(angBot);
349  roDip = rout - heboxDepth;
350  dzShift = (z1Beam - z0Beam) - gap / sin(angGap);
351 
352 #ifdef EDM_ML_DEBUG
353  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: angTop " << convertRadToDeg(angTop) << "\tSlope " << slope
354  << "\tDzShift " << dzShift << "\n\tz1Beam " << z1Beam << "\tziKink" << ziKink
355  << "\triKink " << riKink << "\triDip " << riDip << "\n\troDip " << roDip << "\tRotation "
356  << rotation;
357 #endif
358 
360  //Modules
361  absMat = sArgs["AbsMat"];
362  modules = int(nArgs["Modules"]);
363 
364 #ifdef EDM_ML_DEBUG
365  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Number of modules " << modules << " and absorber material "
366  << absMat;
367 #endif
368 
369  modName = vsArgs["ModuleName"];
370  modMat = vsArgs["ModuleMat"];
371  modType = dbl_to_int(vArgs["ModuleType"]);
372  sectionModule = dbl_to_int(vArgs["SectionModule"]);
373  thick = vArgs["ModuleThick"];
374  trimLeft = vArgs["TrimLeft"];
375  trimRight = vArgs["TrimRight"];
376  eModule = dbl_to_int(vArgs["EquipModule"]);
377  layerN = dbl_to_int(vArgs["LayerN"]);
378  layerN0 = dbl_to_int(vArgs["LayerN0"]);
379  layerN1 = dbl_to_int(vArgs["LayerN1"]);
380  layerN2 = dbl_to_int(vArgs["LayerN2"]);
381  layerN3 = dbl_to_int(vArgs["LayerN3"]);
382  layerN4 = dbl_to_int(vArgs["LayerN4"]);
383  layerN5 = dbl_to_int(vArgs["LayerN5"]);
384 
385 #ifdef EDM_ML_DEBUG
386  for (int i = 0; i < modules; i++) {
387  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: " << modName[i] << " type " << modType[i] << " Sections "
388  << sectionModule[i] << " thickness of absorber/air " << thick[i] << " trim "
389  << trimLeft[i] << ", " << trimRight[i] << " equip module " << eModule[i] << " with "
390  << layerN[i] << " layers";
391  if (i == 0) {
392  for (int j = 0; j < layerN[i]; j++) {
393  edm::LogVerbatim("HCalGeom") << "\t " << layerN0[j] << "/" << layerN0[j + 1];
394  }
395  } else if (i == 1) {
396  for (int j = 0; j < layerN[i]; j++) {
397  edm::LogVerbatim("HCalGeom") << "\t " << layerN1[j] << "/" << layerN1[j + 1];
398  }
399  } else if (i == 2) {
400  for (int j = 0; j < layerN[i]; j++) {
401  edm::LogVerbatim("HCalGeom") << "\t " << layerN2[j];
402  }
403  } else if (i == 3) {
404  for (int j = 0; j < layerN[i]; j++) {
405  edm::LogVerbatim("HCalGeom") << "\t " << layerN3[j];
406  }
407  } else if (i == 4) {
408  for (int j = 0; j < layerN[i]; j++) {
409  edm::LogVerbatim("HCalGeom") << "\t " << layerN4[j];
410  }
411  } else if (i == 5) {
412  for (int j = 0; j < layerN[i]; j++) {
413  edm::LogVerbatim("HCalGeom") << "\t " << layerN5[j];
414  }
415  }
416  }
417 #endif
418 
420  //Layers
421  phiSections = int(nArgs["PhiSections"]);
422  phiName = vsArgs["PhiName"];
423  layers = int(nArgs["Layers"]);
424  layerName = vsArgs["LayerName"];
425  layerType = dbl_to_int(vArgs["LayerType"]);
426  layerT = vArgs["LayerT"];
427  scintT = vArgs["ScintT"];
428  scintMat = sArgs["ScintMat"];
429  plastMat = sArgs["PlastMat"];
430  rotmat = sArgs["RotMat"];
431 
432 #ifdef EDM_ML_DEBUG
433  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Phi Sections " << phiSections;
434  for (int i = 0; i < phiSections; i++)
435  edm::LogVerbatim("HCalGeom") << "\tName[" << i << "] : " << phiName[i];
436  edm::LogVerbatim("HCalGeom") << "\tPlastic: " << plastMat << "\tScintillator: " << scintMat << "\tRotation matrix "
437  << rotns << ":" << rotmat << "\n\tNumber of layers " << layers;
438  for (int i = 0; i < layers; i++) {
439  edm::LogVerbatim("HCalGeom") << "\t" << layerName[i] << "\tType " << layerType[i] << "\tThickness " << layerT[i]
440  << "\tScint.Thick " << scintT[i];
441  }
442 #endif
443 
445  // Derive bounding of the modules
446  int module = 0;
447  // Layer 0 (Nose)
448  if (modules > 0) {
449  zminBlock.emplace_back(ziL0Nose);
450  zmaxBlock.emplace_back(zminBlock[module] + layerT[0] + 0.5 * dzStep);
451  rinBlock1.emplace_back(zminBlock[module] * tan(angTop));
452  rinBlock2.emplace_back(zmaxBlock[module] * tan(angTop));
453  routBlock1.emplace_back((zminBlock[module] - z1Beam) * slope);
454  routBlock2.emplace_back((zmaxBlock[module] - z1Beam) * slope);
455  module++;
456  }
457 
458  // Layer 0 (Body)
459  if (modules > 1) {
460  zminBlock.emplace_back(ziL0Body);
461  zmaxBlock.emplace_back(zminBlock[module] + layerT[0] + 0.5 * dzStep);
462  rinBlock1.emplace_back(zminBlock[module] * tan(angBot));
463  rinBlock2.emplace_back(zmaxBlock[module] * tan(angBot));
464  routBlock1.emplace_back(zminBlock[module] * tan(angTop));
465  routBlock2.emplace_back(zmaxBlock[module] * tan(angTop));
466  module++;
467  }
468 
469  // Hac1
470  if (modules > 2) {
471  zminBlock.emplace_back(ziNose);
472  zmaxBlock.emplace_back(ziBody);
473  rinBlock1.emplace_back(zminBlock[module] * tan(angTop));
474  rinBlock2.emplace_back(zmaxBlock[module] * tan(angTop));
475  routBlock1.emplace_back((zminBlock[module] - z1Beam) * slope);
476  routBlock2.emplace_back((zmaxBlock[module] - z1Beam) * slope);
477  module++;
478  }
479 
480  // Hac2
481  if (modules > 3) {
482  zminBlock.emplace_back(ziBody);
483  zmaxBlock.emplace_back(zminBlock[module] + layerN[3] * dzStep);
484  rinBlock1.emplace_back(zminBlock[module] * tan(angBot));
485  rinBlock2.emplace_back(zmaxBlock[module] * tan(angBot));
486  routBlock1.emplace_back((zmaxBlock[module - 1] - z1Beam) * slope);
487  routBlock2.emplace_back(rout);
488  module++;
489  }
490 
491  // Hac3
492  if (modules > 4) {
493  zminBlock.emplace_back(zmaxBlock[module - 1]);
494  zmaxBlock.emplace_back(zminBlock[module] + layerN[4] * dzStep);
495  rinBlock1.emplace_back(zminBlock[module] * tan(angBot));
496  rinBlock2.emplace_back(zmaxBlock[module] * tan(angBot));
497  routBlock1.emplace_back(rout);
498  routBlock2.emplace_back(rout);
499  module++;
500  }
501 
502  // Hac4
503  if (modules > 5) {
504  zminBlock.emplace_back(zmaxBlock[module - 1]);
505  zmaxBlock.emplace_back(zminBlock[module] + layerN[5] * dzStep);
506  rinBlock1.emplace_back(zminBlock[module] * tan(angBot));
507  rinBlock2.emplace_back(zmaxBlock[module] * tan(angBot));
508  routBlock1.emplace_back(rout);
509  routBlock2.emplace_back(roDip);
510  module++;
511  }
512 
513 #ifdef EDM_ML_DEBUG
514  for (int i = 0; i < module; i++)
515  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Module " << i << "\tZ/Rin/Rout " << zminBlock[i] << ", "
516  << zmaxBlock[i] << "/ " << rinBlock1[i] << ", " << rinBlock2[i] << "/ "
517  << routBlock1[i] << ", " << routBlock2[i];
518 #endif
519 
520  idName = sArgs["MotherName"];
522  idOffset = int(nArgs["IdOffset"]);
523 
524 #ifdef EDM_ML_DEBUG
525  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Parent " << parent().name() << " idName " << idName
526  << " NameSpace " << idNameSpace << " Offset " << idOffset;
527 #endif
528 
529  tolPos = nArgs["TolPos"];
530  tolAbs = nArgs["TolAbs"];
531 
532 #ifdef EDM_ML_DEBUG
533  edm::LogVerbatim("HCalGeom") << "DDHCalEndcapAlgo: Tolerances - Positioning " << tolPos << " Absorber " << tolAbs;
534 #endif
535 }
Log< level::Info, true > LogVerbatim
std::vector< int > layerN2
std::vector< int > modType
std::string idNameSpace
std::vector< double > zminBlock
std::vector< int > layerN0
std::vector< std::string > modMat
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
std::vector< double > routBlock1
static std::string & ns()
std::vector< double > zmaxBlock
std::vector< double > routBlock2
std::vector< std::string > layerName
std::vector< int > layerN1
std::vector< int > layerN4
std::vector< int > sectionModule
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
std::vector< double > rinBlock1
std::vector< std::string > modName
std::vector< int > layerN5
std::vector< int > eModule
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< int > layerType
std::vector< int > layerN
std::vector< double > rinBlock2
std::vector< double > trimRight
std::vector< int > layerN3
std::vector< std::string > phiName
std::string genMaterial
std::vector< double > thick
std::vector< double > scintT
std::vector< double > layerT
std::vector< double > trimLeft

◆ parameterLayer()

void DDHCalEndcapAlgo::parameterLayer ( int  iphi,
double  rinF,
double  routF,
double  rinB,
double  routB,
double  zi,
double  zo,
double &  yh1,
double &  bl1,
double &  tl1,
double &  yh2,
double &  bl2,
double &  tl2,
double &  alp,
double &  theta,
double &  phi,
double &  xpos,
double &  ypos,
double &  zcpv 
)
protected

Definition at line 890 of file DDHCalEndcapAlgo.cc.

References simBeamSpotPI::alpha, angle_units::operators::convertRadToDeg(), PVValHelper::dx, PVValHelper::dy, getNsectors(), hcalRecHitTable_cff::iphi, phi, alignCSCRings::r, mathSSE::sqrt(), funct::tan(), and theta().

Referenced by constructInsideModule(), and constructInsideModule0().

908  {
909  //Given rin, rout compute parameters of the trapezoid and
910  //position of the trapezoid for a standrd layer
911  double alpha = (1._pi) / getNsectors();
912 
913 #ifdef EDM_ML_DEBUG
914  edm::LogVerbatim("HCalGeom") << "Input " << iphi << " Front " << rinF << " " << routF << " " << zi << " Back " << rinB
915  << " " << routB << " " << zo << " Alpha " << convertRadToDeg(alpha);
916 #endif
917 
918  yh1 = 0.5 * (routF - rinB);
919  bl1 = 0.5 * rinB * tan(alpha);
920  tl1 = 0.5 * routF * tan(alpha);
921  yh2 = 0.5 * (routF - rinB);
922  bl2 = 0.5 * rinB * tan(alpha);
923  tl2 = 0.5 * routF * tan(alpha);
924  double dx = 0.25 * (bl2 + tl2 - bl1 - tl1);
925  double dy = 0.5 * (rinB + routF - rinB - routF);
926  xpos = 0.25 * (rinB + routF + rinB + routF);
927  ypos = 0.25 * (bl2 + tl2 + bl1 + tl1);
928  zpos = 0.5 * (zi + zo);
929  alp = atan(0.5 * tan(alpha));
930  // ypos-= getTolPos();
931  if (iphi == 0) {
932  ypos = -ypos;
933  } else {
934  alp = -alp;
935  dx = -dx;
936  }
937  double r = sqrt(dx * dx + dy * dy);
938  theta = atan(r / (zo - zi));
939  phi = atan2(dy, dx);
940 
941 #ifdef EDM_ML_DEBUG
942  edm::LogVerbatim("HCalGeom") << "Output Dimensions " << yh1 << " " << bl1 << " " << tl1 << " " << yh2 << " " << bl2
943  << " " << tl2 << " " << convertRadToDeg(alp) << " " << convertRadToDeg(theta) << " "
944  << convertRadToDeg(phi) << " Position " << xpos << " " << ypos << " " << zpos;
945 #endif
946 }
Log< level::Info, true > LogVerbatim
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
T sqrt(T t)
Definition: SSEVec.h:19
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
int getNsectors() const
Geom::Theta< T > theta() const

◆ parameterLayer0()

void DDHCalEndcapAlgo::parameterLayer0 ( int  mod,
int  layer,
int  iphi,
double &  yh,
double &  bl,
double &  tl,
double &  alp,
double &  xpos,
double &  ypos,
double &  zcpv 
)
protected

Definition at line 833 of file DDHCalEndcapAlgo.cc.

References simBeamSpotPI::alpha, angle_units::operators::convertRadToDeg(), getAngBot(), getAngTop(), getLayerT(), getNsectors(), getSlope(), getTrim(), getZ1Beam(), getZmaxBlock(), getZminBlock(), hcalRecHitTable_cff::iphi, nano_mu_digi_cff::layer, mod(), rout, and funct::tan().

Referenced by constructInsideModule0().

842  {
843  //Given module and layer number compute parameters of trapezoid
844  //and positioning parameters
845  double alpha = (1._pi) / getNsectors();
846 
847 #ifdef EDM_ML_DEBUG
848  edm::LogVerbatim("HCalGeom") << "Input " << iphi << " " << layer << " " << iphi << " Alpha "
850 #endif
851 
852  double zi, zo;
853  if (iphi == 0) {
854  zi = getZminBlock(mod);
855  zo = zi + getLayerT(layer);
856  } else {
857  zo = getZmaxBlock(mod);
858  zi = zo - getLayerT(layer);
859  }
860  double rin, rout;
861  if (mod == 0) {
862  rin = zo * tan(getAngTop());
863  rout = (zi - getZ1Beam()) * getSlope();
864  } else {
865  rin = zo * tan(getAngBot());
866  rout = zi * tan(getAngTop());
867  }
868  yh = 0.5 * (rout - rin);
869  bl = 0.5 * rin * tan(alpha);
870  tl = 0.5 * rout * tan(alpha);
871  xpos = 0.5 * (rin + rout);
872  ypos = 0.5 * (bl + tl);
873  zpos = 0.5 * (zi + zo);
874  yh -= getTrim(mod, iphi);
875  bl -= getTrim(mod, iphi);
876  tl -= getTrim(mod, iphi);
877  alp = atan(0.5 * tan(alpha));
878  if (iphi == 0) {
879  ypos = -ypos;
880  } else {
881  alp = -alp;
882  }
883 
884 #ifdef EDM_ML_DEBUG
885  edm::LogVerbatim("HCalGeom") << "Output Dimensions " << yh << " " << bl << " " << tl << " " << convertRadToDeg(alp)
886  << " Position " << xpos << " " << ypos << " " << zpos;
887 #endif
888 }
Log< level::Info, true > LogVerbatim
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
double getAngTop() const
double getZminBlock(unsigned i) const
double getZmaxBlock(unsigned i) const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
double getSlope() const
double getTrim(unsigned int i, unsigned int j) const
double getLayerT(unsigned int i) const
double getAngBot() const
int getNsectors() const
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
double getZ1Beam() const

Member Data Documentation

◆ absMat

std::string DDHCalEndcapAlgo::absMat
private

Definition at line 188 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ angBot

double DDHCalEndcapAlgo::angBot
private

Definition at line 184 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ angGap

double DDHCalEndcapAlgo::angGap
private

Definition at line 185 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ angTop

double DDHCalEndcapAlgo::angTop
private

Definition at line 183 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ drEnd

double DDHCalEndcapAlgo::drEnd
private

Definition at line 181 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ dzShift

double DDHCalEndcapAlgo::dzShift
private

Definition at line 173 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ dzStep

double DDHCalEndcapAlgo::dzStep
private

Definition at line 172 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ eModule

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

Definition at line 156 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ genMaterial

std::string DDHCalEndcapAlgo::genMaterial
private

Definition at line 152 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ heboxDepth

double DDHCalEndcapAlgo::heboxDepth
private

Definition at line 180 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ idName

std::string DDHCalEndcapAlgo::idName
private

◆ idNameSpace

std::string DDHCalEndcapAlgo::idNameSpace
private

◆ idOffset

int DDHCalEndcapAlgo::idOffset
private

Definition at line 224 of file DDHCalEndcapAlgo.cc.

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

◆ layerN

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

Definition at line 194 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ layerN0

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

Definition at line 195 of file DDHCalEndcapAlgo.cc.

Referenced by getLayer(), and initialize().

◆ layerN1

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

Definition at line 196 of file DDHCalEndcapAlgo.cc.

Referenced by getLayer(), and initialize().

◆ layerN2

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

Definition at line 197 of file DDHCalEndcapAlgo.cc.

Referenced by getLayer(), and initialize().

◆ layerN3

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

Definition at line 198 of file DDHCalEndcapAlgo.cc.

Referenced by getLayer(), and initialize().

◆ layerN4

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

Definition at line 199 of file DDHCalEndcapAlgo.cc.

Referenced by getLayer(), and initialize().

◆ layerN5

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

Definition at line 200 of file DDHCalEndcapAlgo.cc.

Referenced by getLayer(), and initialize().

◆ layerName

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

Definition at line 214 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ layers

int DDHCalEndcapAlgo::layers
private

Definition at line 213 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ layerT

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

Definition at line 216 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ layerType

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

Definition at line 215 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ modMat

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

Definition at line 191 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ modName

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

Definition at line 190 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ modType

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

Definition at line 192 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ modules

int DDHCalEndcapAlgo::modules
private

Definition at line 189 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ nEndcap

int DDHCalEndcapAlgo::nEndcap
private

Definition at line 155 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ nsectors

int DDHCalEndcapAlgo::nsectors
private

Definition at line 153 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ nsectortot

int DDHCalEndcapAlgo::nsectortot
private

Definition at line 154 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ phiName

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

Definition at line 212 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ phiSections

int DDHCalEndcapAlgo::phiSections
private

Definition at line 211 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ plastMat

std::string DDHCalEndcapAlgo::plastMat
private

Definition at line 218 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ riDip

double DDHCalEndcapAlgo::riDip
private

Definition at line 178 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ riKink

double DDHCalEndcapAlgo::riKink
private

Definition at line 177 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ rinBlock1

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

Definition at line 206 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ rinBlock2

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

Definition at line 208 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ roDip

double DDHCalEndcapAlgo::roDip
private

Definition at line 179 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ rotation

std::string DDHCalEndcapAlgo::rotation
private

Definition at line 159 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and initialize().

◆ rotHalf

std::string DDHCalEndcapAlgo::rotHalf
private

Definition at line 157 of file DDHCalEndcapAlgo.cc.

Referenced by constructGeneralVolume(), and initialize().

◆ rotmat

std::string DDHCalEndcapAlgo::rotmat
private

Definition at line 220 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ rotns

std::string DDHCalEndcapAlgo::rotns
private

◆ rout

double DDHCalEndcapAlgo::rout
private

Definition at line 176 of file DDHCalEndcapAlgo.cc.

Referenced by initialize(), and parameterLayer0().

◆ routBlock1

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

Definition at line 207 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ routBlock2

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

Definition at line 209 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ scintMat

std::string DDHCalEndcapAlgo::scintMat
private

Definition at line 219 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ scintT

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

Definition at line 217 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ sectionModule

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

Definition at line 193 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ slope

double DDHCalEndcapAlgo::slope
private

Definition at line 186 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ thick

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

Definition at line 201 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ tolAbs

double DDHCalEndcapAlgo::tolAbs
private

Definition at line 226 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ tolPos

double DDHCalEndcapAlgo::tolPos
private

Definition at line 226 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ trimLeft

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

Definition at line 202 of file DDHCalEndcapAlgo.cc.

Referenced by getTrim(), and initialize().

◆ trimRight

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

Definition at line 203 of file DDHCalEndcapAlgo.cc.

Referenced by getTrim(), and initialize().

◆ z0Beam

double DDHCalEndcapAlgo::z0Beam
private

Definition at line 169 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ z1Beam

double DDHCalEndcapAlgo::z1Beam
private

Definition at line 170 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ zEnd

double DDHCalEndcapAlgo::zEnd
private

Definition at line 163 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ zFront

double DDHCalEndcapAlgo::zFront
private

Definition at line 162 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ ziBody

double DDHCalEndcapAlgo::ziBody
private

Definition at line 166 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ ziDip

double DDHCalEndcapAlgo::ziDip
private

Definition at line 171 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ ziKink

double DDHCalEndcapAlgo::ziKink
private

Definition at line 168 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ ziL0Body

double DDHCalEndcapAlgo::ziL0Body
private

Definition at line 167 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ ziL0Nose

double DDHCalEndcapAlgo::ziL0Nose
private

Definition at line 165 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ ziNose

double DDHCalEndcapAlgo::ziNose
private

Definition at line 164 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ zmaxBlock

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

Definition at line 205 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ zminBlock

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

Definition at line 204 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ zShift

double DDHCalEndcapAlgo::zShift
private

Definition at line 160 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().

◆ zShiftHac2

double DDHCalEndcapAlgo::zShiftHac2
private

Definition at line 174 of file DDHCalEndcapAlgo.cc.

Referenced by initialize().