|
ATLAS Offline Software
|
Go to the documentation of this file.
12 #ifndef LARGEOENDCAP_EMECACCORDIONCONSTRUCTION_H
13 #define LARGEOENDCAP_EMECACCORDIONCONSTRUCTION_H
18 #include "GeoModelKernel/GeoDefinitions.h"
24 class GeoXmlInpManager;
58 double& llip1,
double& ylip1,
59 double& llip2,
double& ylip2)
const;
61 double& llip1,
double& ylip1,
62 double& llip2,
double& ylip2)
const;
64 double rmin,
double rmax,
double zdel,
67 double zmax,
double rmax)
const;
69 double zmax,
double rmax,
76 double pz1,
double pr1min,
double pr1max,
77 double pz2,
double pr2min,
double pr2max)
const;
83 double innerLipLength2,
double innerLipPosition2);
85 double outerLipLength2,
double outerLipPosition2);
129 "01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
130 "11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21"
std::array< GeoPhysVol *, s_innerNoBlades > m_innerLead
~EMECAccordionConstruction()=default
std::string m_nameSuffix[s_outerNoBlades]
void getOuterAbsorberData(double &wmin, double &wmax, double &llip1, double &ylip1, double &llip2, double &ylip2) const
GeoShape * constructBlade(int icase, const GeoThreeVector corners[8], double xscale, double pz1, double pr1min, double pr1max, double pz2, double pr2min, double pr2max) const
std::array< double, s_outerNoBlades+1 > m_outerWheelRmax
std::array< double, 2 > m_outerWheelRminIncrement
void setOuterWheel(GeoFullPhysVol *outerWheel)
double m_outerLeadThickness
std::array< GeoPhysVol *, s_outerNoBlades > m_outerLead
void getInnerAbsorberData(double &wmin, double &wmax, double &llip1, double &ylip1, double &llip2, double &ylip2) const
std::array< GeoThreeVector, s_outerNoBlades > m_outerAbsorberOffset
const GeoMaterial * m_materialGlue
double m_innerGlueThickness
void placeOuterAccordion(int outerNoSectors, bool makeSlices, bool makeSectors)
Eigen::Matrix< double, 2, 1 > Vector2D
void constructInnerBlades(const GeoThreeVector innerCorners[8], const GeoThreeVector innerElectrodeCorners[8])
void constructOuterWheelStructure(bool makeSlices=true)
GeoThreeVector IntersectionPoint(const GeoThreeVector &p1, const GeoThreeVector &p2, const CutPlane &plane) const
std::array< GeoPhysVol *, s_innerNoBlades > m_innerElectrode
std::array< GeoPhysVol *, s_outerNoBlades > m_outerAbsorber
const GeoMaterial * m_materialLead
const GeoMaterial * m_materialLiquidArgon
GeoFullPhysVol * m_innerWheel
double m_outerHalfWaveWidth
void constructInnerLips(double innerLipLength1, double innerLipPosition1, double innerLipLength2, double innerLipPosition2)
CutPlane getBottomCutPlane(double zmin, double rmin, double zmax, double rmax) const
double m_outerSteelThickness
std::array< GeoPhysVol *, s_innerNoBlades > m_innerSlice
std::array< GeoPhysVol *, s_innerNoBlades > m_innerGlue
std::array< double, 2 > m_rMaxInner
std::array< double, 2 > m_outerWheelRmaxIncrement
double m_innerAbsorberThickness
double m_innerLeadThickness
void setOuterWheelSlices()
std::array< GeoThreeVector, s_outerNoBlades > m_outerSliceOffset
std::array< double, 3 > m_rMaxOuter
void getBladeCorners(double wmin, double wmax, double thickness, double rmin, double rmax, double zdel, GeoThreeVector corners[8]) const
double m_outerQuaterWaveWidth
std::string m_nameOuterWheel
std::string m_nameElectrode
Class for construction of EMEC internal structure.
std::array< double, s_innerNoBlades+1 > m_innerWheelRmin
double m_innerHalfWaveWidth
std::array< GeoPhysVol *, s_innerNoBlades > m_innerSector
void placeInnerGlueAndLead()
std::array< GeoThreeVector, s_outerNoBlades > m_outerElectrodeOffset
void constructOuterBlades(const GeoThreeVector outerCorners[8], const GeoThreeVector outerElectrodeCorners[8])
void constructInnerSlices()
double m_outerElectrodeThickness
void placeInnerSlices(bool makeSlices)
double m_innerWheelRmaxIncrement
GeoFullPhysVol * m_outerWheel
std::array< double, 2 > m_rMinInner
void setInnerWheel(GeoFullPhysVol *innerWheel)
std::array< double, 2 > m_zWheelInner
std::array< GeoThreeVector, s_innerNoBlades > m_innerElectrodeOffset
static constexpr int s_outerNoBlades
void placeInnerAccordion(int innerNoSectors, bool makeSlices, bool makeSectors)
GeoTrf::Vector2D GeoTwoVector
std::array< GeoThreeVector, s_innerNoBlades > m_innerAbsorberOffset
std::string m_nameInnerWheel
double m_outerGlueThickness
EMECAccordionConstruction()=default
void setMaterial(const std::string &name, const GeoMaterial *material)
std::string m_nameAbsorber
double m_outerAbsorberThickness
CutPlane getTopCutPlane(double zmin, double rmin, double zmax, double rmax, const GeoThreeVector corners[8]) const
std::array< GeoPhysVol *, s_outerNoBlades > m_outerGlue
std::array< double, s_outerNoBlades+1 > m_outerWheelRmin
Eigen::Matrix< double, 3, 1 > Vector3D
GeoTrf::Vector3D GeoThreeVector
double m_innerQuaterWaveWidth
void constructOuterLips(double outerLipLength1, double outerLipPosition1, double outerLipLength2, double outerLipPosition2)
std::array< double, 3 > m_rMinOuter
std::array< double, s_outerNoBlades+1 > m_outerWheelZ
std::array< GeoPhysVol *, s_innerNoBlades > m_innerAbsorber
static constexpr int s_innerNoBlades
std::array< GeoPhysVol *, s_outerNoBlades > m_outerSector
std::array< GeoThreeVector, s_innerNoBlades > m_innerSliceOffset
void placeOuterGlueAndLead()
const GeoMaterial * m_materialKapton
std::array< double, 3 > m_zWheelOuter
std::array< GeoPhysVol *, s_outerNoBlades > m_outerElectrode
std::array< GeoPhysVol *, s_outerNoBlades > m_outerSlice
void constructInnerWheelStructure(bool makeSlices=true)
std::array< double, s_innerNoBlades+1 > m_innerWheelRmax
double m_outerWaveZoneWidth
double m_innerWaveZoneWidth
void setInnerWheelSlices()
const GeoMaterial * m_materialSteel
void setWheelParameters()
double m_innerSteelThickness
double m_innerWheelRminIncrement
void constructOuterSlices()
void placeOuterSlices(bool makeSlices)
std::array< double, s_innerNoBlades+1 > m_innerWheelZ
double m_innerElectrodeThickness