 |
ATLAS Offline Software
|
#include <AFP_GeoModelFactory.h>
|
void | defineMaterials () |
|
const AFP_GeoModelFactory & | operator= (const AFP_GeoModelFactory &right) |
|
| AFP_GeoModelFactory (const AFP_GeoModelFactory &right) |
|
GeoShape * | createSolidSIDPlate () |
|
void | addSiDetector (GeoPhysVol *pPhysMotherVol, const char *pszStationName, HepGeom::Transform3D &TransInMotherVolume) |
|
void | addRomanPot (GeoPhysVol *pPhysMotherVol, const char *pszStationName, HepGeom::Transform3D &TransInMotherVolume) |
|
void | initializeTDParameters () |
|
StatusCode | addTimingDetector (const char *pszStationName, GeoOpticalPhysVol *pPhysMotherVol, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer) |
|
void | addLQBarSegment (const char *pszStationName, const int nQuarticID, const int nLQBarID, AFPTOF_LBARDIMENSIONS &LQBarDims, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer) |
|
void | addSepRadLBar (const char *pszStationName, const int nQuarticID, const int nBarID, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer) |
|
HepGeom::Vector3D< double > | getBarShift (AFPTOF_LBARDIMENSIONS &LQBarDims, eLBarType eSpecType=ELBT_UNDEFINED) |
|
void | addHorizontalArm (const char *pszStationName, const int nQuarticID, const int nLQBarID, AFPTOF_LBARDIMENSIONS &LQBarDims, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &PartialTransInMotherVolume, GeoBorderSurfaceContainer *bsContainer) |
|
void | addSensor (const char *pszStationName, const int nQuarticID, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer) |
|
void | addLBarSensorSeparationWindow (const char *pszStationName, const int nQuarticID, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer) |
|
void | getLQBarDimensions (const int nRowID, const int nColID, AFPTOF_LBARDIMENSIONS *pLQBarDims) |
|
Definition at line 38 of file AFP_GeoModelFactory.h.
◆ AFP_GeoModelFactory() [1/2]
◆ ~AFP_GeoModelFactory()
AFP_GeoModelFactory::~AFP_GeoModelFactory |
( |
| ) |
|
◆ AFP_GeoModelFactory() [2/2]
◆ addHorizontalArm()
◆ addLBarSensorSeparationWindow()
Definition at line 210 of file AFP_GeoModelTD.cxx.
215 double fX1Pos_1, fX2Pos_1, fX1Pos_2, fX2Pos_2;
229 sprintf(szlabel,
"%s_Q%i_LogLBarSensorSeparationWindow",pszStationName,nQuarticID);
231 GeoLogVol* pLogWindow=
new GeoLogVol(szlabel,pSolWindow,
m_MapMaterials[
"Quartz"]);
233 sprintf(szlabel,
"%s_Q%i_LBarSensorSeparationWindow",pszStationName,nQuarticID);
234 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
236 pPhysMotherVolume->add(pPhysWindow);
237 sprintf(szlabel,
"%s_Q%i_WindowSurface",pszStationName,nQuarticID);
◆ addLQBarSegment()
◆ addRomanPot()
void AFP_GeoModelFactory::addRomanPot |
( |
GeoPhysVol * |
pPhysMotherVol, |
|
|
const char * |
pszStationName, |
|
|
HepGeom::Transform3D & |
TransInMotherVolume |
|
) |
| |
|
private |
Definition at line 60 of file AFP_GeoModelRP.cxx.
65 double fLength,fRMin,fRMax;
66 GeoShapeShift* pMoveCut;
72 fLength=fMainTubusSteelPartLength;
76 GeoTube* pSolTubus=
new GeoTube(fRMin, fRMax, 0.5*fLength);
77 sprintf(szLabel,
"%s_LogRPMainTubus",pszStationName);
78 GeoLogVol* pLogTubus=
new GeoLogVol(szLabel,pSolTubus,
m_MapMaterials[std::string(
"Steel_AFP")]);
79 sprintf(szLabel,
"%s_RPMainTubus",pszStationName);
80 GeoFullPhysVol* pPhysTubus=
new GeoFullPhysVol(pLogTubus);
81 pPhysMotherVol->add(
new GeoNameTag(szLabel));
83 pPhysMotherVol->add(pPhysTubus);
90 sprintf(szLabel,
"%s_LogRPMainTubusFloorPart",pszStationName);
91 pSolTubus=
new GeoTube(fRMin, fRMax, 0.5*fLength);
92 sprintf(szLabel,
"%s_LogRPMainTubusFloorPart",pszStationName);
93 pLogTubus=
new GeoLogVol(szLabel,pSolTubus,
m_MapMaterials[std::string(
"Steel_AFP")]);
94 pPhysTubus=
new GeoFullPhysVol(pLogTubus);
95 sprintf(szLabel,
"%s_RPMainTubusFloorPart",pszStationName);
96 pPhysMotherVol->add(
new GeoNameTag(szLabel));
98 pPhysMotherVol->add(pPhysTubus);
106 GeoTubs* pSolMass=
new GeoTubs(fRMin,fRMax,0.5*fLength,fPhi,fDPhi);
108 sprintf(szLabel,
"%s_LogRPMainTubusUMass",pszStationName);
109 pLogTubus=
new GeoLogVol(szLabel,pSolMass,
m_MapMaterials[std::string(
"Steel_AFP")]);
110 pPhysTubus=
new GeoFullPhysVol(pLogTubus);
111 sprintf(szLabel,
"%s_LogRPMainTubusUMass",pszStationName);
112 pPhysMotherVol->add(
new GeoNameTag(szLabel));
113 pPhysMotherVol->add(
new GeoTransform(
Amg::CLHEPTransformToEigen(TransRPot*HepGeom::TranslateX3D(0.5*fLength+0.5*fMainTubusSteelPartLength)*HepGeom::RotateY3D(90*
CLHEP::deg))));
114 pPhysMotherVol->add(pPhysTubus);
121 pSolMass=
new GeoTubs(fRMin,fRMax,0.5*fLength,fSPhi,fDPhi);
123 sprintf(szLabel,
"%s_LogRPMainTubusLMass",pszStationName);
124 pLogTubus=
new GeoLogVol(szLabel,pSolMass,
m_MapMaterials[std::string(
"Steel_AFP")]);
125 pPhysTubus=
new GeoFullPhysVol(pLogTubus);
126 sprintf(szLabel,
"%s_LogRPMainTubusLMass",pszStationName);
127 pPhysMotherVol->add(
new GeoNameTag(szLabel));
128 pPhysMotherVol->add(
new GeoTransform(
Amg::CLHEPTransformToEigen(TransRPot*HepGeom::TranslateX3D(0.5*fLength+0.5*fMainTubusSteelPartLength)*HepGeom::RotateY3D(90*
CLHEP::deg))));
129 pPhysMotherVol->add(pPhysTubus);
136 pSolTubus=
new GeoTube(fRMin, fRMax, 0.5*fLength);
144 pSolCut=
new GeoTrd(fTrdHXLength1,fTrdHXLength2,fTrdHYLength1,fTrdHYLength2,fTrdHZLength);
146 pMoveCut=
new GeoShapeShift(pSolCut, TransCut);
147 GeoShapeSubtraction* pSolFloor=
new GeoShapeSubtraction(pSolTubus, pMoveCut);
149 sprintf(szLabel,
"%s_LogRPFloorTubus",pszStationName);
150 pLogTubus=
new GeoLogVol(szLabel,pSolFloor,
m_MapMaterials[std::string(
"Beryllium_AFP")]);
151 pPhysTubus=
new GeoFullPhysVol(pLogTubus);
152 sprintf(szLabel,
"%s_RPFloorTubus",pszStationName);
153 pPhysMotherVol->add(
new GeoNameTag(szLabel));
155 pPhysMotherVol->add(pPhysTubus);
162 pSolTubus=
new GeoTube(fRMin, fRMax, 0.5*fLength);
163 sprintf(szLabel,
"%s_LogRPFlangeTubus",pszStationName);
164 pLogTubus=
new GeoLogVol(szLabel,pSolTubus,
m_MapMaterials[std::string(
"Steel_AFP")]);
165 pPhysTubus=
new GeoFullPhysVol(pLogTubus);
166 sprintf(szLabel,
"%s_RPFlangeTubus",pszStationName);
167 pPhysMotherVol->add(
new GeoNameTag(szLabel));
169 pPhysMotherVol->add(pPhysTubus);
◆ addSensor()
Definition at line 246 of file AFP_GeoModelTD.cxx.
251 double fX1Pos, fX2Pos;
268 nPixelID=10*(
i+1)+(j+1);
271 sprintf(szlabel,
"%s_Q%i_LogTDSensor[%i]",pszStationName,nQuarticID,nPixelID);
273 GeoLogVol* pLogSensor=
new GeoLogVol(szlabel,pSolSensor,
m_MapMaterials[
"SiliconPMT"]);
275 sprintf(szlabel,
"%s_Q%i_TDSensor[%i]",pszStationName,nQuarticID,nPixelID);
276 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
278 pPhysMotherVolume->add(pPhysSensor);
279 sprintf(szlabel,
"%s_Q%i_SensorSurface[%i]",pszStationName,nQuarticID,nPixelID);
◆ addSepRadLBar()
Definition at line 91 of file AFP_GeoModelTD.cxx.
93 double fX1Pos,fX2Pos,falpha,
fd;
94 HepGeom::Vector3D<double> vecA1, vecA2, vecX;
95 CLHEP::Hep3Vector vecCutShift;
97 GeoShapeShift* pMoveCut;
101 CLHEP::HepRotation Rot1,Rot2,Rot3;
123 vecA1=-
fd*
std::cos(falpha)*CLHEP::Hep3Vector(0.0,1.0,0.0);
124 vecA2=+0.5*
fd*std::sqrt(2.0)*(CLHEP::HepRotationZ(+(45*
CLHEP::deg-falpha))*CLHEP::Hep3Vector(0.0,1.0,0.0)).
unit();
127 Rot1.rotateZ(-falpha);
132 pSolVolume=
new GeoShapeSubtraction(pSolVolume, pMoveCut);
135 sprintf(szlabel,
"%s_Q%i_LogLGuide[%i]",pszStationName,nQuarticID,nBarID);
136 GeoLogVol* pLogLGuide=
new GeoLogVol(szlabel,pSolVolume,
m_MapMaterials[std::string(
"Quartz")]);
138 sprintf(szlabel,
"%s_Q%i_LGuide[%i]",pszStationName,nQuarticID,nBarID);
139 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
141 pPhysMotherVolume->add(pPhysLGuide);
142 sprintf(szlabel,
"%s_Q%i_LGuideSurface[%i]",pszStationName,nQuarticID,nBarID);
147 double fElbowXDim=fRadYDim;
148 TotTransform=TransInMotherVolume*HepGeom::Translate3D( fX1Pos-0.5*BarDims.
fLGuideWidth+0.5*fElbowXDim+fTaperOffset,
151 pSolVolume=
new GeoBox(0.5*fElbowXDim,0.5*fRadYDim,0.5*BarDims.
fLBarThickness);
155 vecA1=-
fd*
std::cos(falpha)*CLHEP::Hep3Vector(0.0,1.0,0.0);
156 vecA2=+0.5*
fd*std::sqrt(2.0)*(CLHEP::HepRotationZ(+(45*
CLHEP::deg-falpha))*CLHEP::Hep3Vector(0.0,1.0,0.0)).
unit();
158 vecCutShift=CLHEP::Hep3Vector(-0.5*fElbowXDim,0.5*fRadYDim,0.0)+CLHEP::Hep3Vector(vecX);
159 Rot2.rotateZ(-falpha);
164 pSolVolume=
new GeoShapeSubtraction(pSolVolume, pMoveCut);
166 sprintf(szlabel,
"%s_Q%i_LogRadiator[%i]",pszStationName,nQuarticID,nBarID);
167 GeoLogVol* pLogRadiator=
new GeoLogVol(szlabel,pSolVolume,
m_MapMaterials[std::string(
"Quartz")]);
169 sprintf(szlabel,
"%s_Q%i_Radiator[%i]",pszStationName,nQuarticID,nBarID);
170 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
172 pPhysMotherVolume->add(pPhysRadiator);
173 sprintf(szlabel,
"%s_Q%i_RadiatorElbowSurface[%i]",pszStationName,nQuarticID,nBarID);
178 TotTransform=TransInMotherVolume*HepGeom::Translate3D( fX1Pos-0.5*BarDims.
fLGuideWidth+fElbowXDim+fTaperOffset+0.5*fRadLength,
181 pSolVolume=
new GeoBox(0.5*fRadLength,0.5*fRadYDim,0.5*BarDims.
fLBarThickness);
186 vecA1 = -
fd*
std::cos(falpha)*CLHEP::Hep3Vector(1.0,0.0,0.0);
187 vecA2 = 0.5*
fd*std::sqrt(2.0)*(CLHEP::HepRotationY(-(45*
CLHEP::deg-falpha))*CLHEP::Hep3Vector(1.0,0.0,0.0)).
unit();
188 vecX = vecA1 + vecA2;
189 vecCutShift = CLHEP::Hep3Vector(0.5*fRadLength,0.0,0.5*BarDims.
fLBarThickness) + CLHEP::Hep3Vector(vecX);
190 Rot3.rotateY(falpha);
192 pSolAux=
new GeoBox(0.5*
fd,0.5*fRadYDim+
SLIMCUT,0.5*
fd);
195 pSolVolume=
new GeoShapeSubtraction(pSolVolume, pMoveCut);
198 sprintf(szlabel,
"%s_Q%i_LogRadiator[%i]",pszStationName,nQuarticID,nBarID);
199 pLogRadiator=
new GeoLogVol(szlabel,pSolVolume,
m_MapMaterials[std::string(
"Quartz")]);
201 sprintf(szlabel,
"%s_Q%i_Radiator[%i]",pszStationName,nQuarticID,nBarID);
202 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
204 pPhysMotherVolume->add(pPhysRadiator);
205 sprintf(szlabel,
"%s_Q%i_RadiatorSurface[%i]",pszStationName,nQuarticID,nBarID);
◆ addSiDetector()
void AFP_GeoModelFactory::addSiDetector |
( |
GeoPhysVol * |
pPhysMotherVol, |
|
|
const char * |
pszStationName, |
|
|
HepGeom::Transform3D & |
TransInMotherVolume |
|
) |
| |
|
private |
Definition at line 41 of file AFP_GeoModelSID.cxx.
44 GeoLogVol* pLogElement=
nullptr;
45 GeoFullPhysVol* pPhysElement;
56 szLabel =
std::format(
"{}_LogSIDVacuumSensor[{}]",pszStationName,nSpecVacSensorID);
57 GeoLogVol* pLogSIDVacuumSensor=
new GeoLogVol(szLabel,pSolidSIDVacuumSensor,
m_MapMaterials[std::string(
"std::Vacuum")]);
58 GeoFullPhysVol* pPhysSIDVacuumSensor=
new GeoFullPhysVol(pLogSIDVacuumSensor);
59 szLabel =
std::format(
"{}_SIDVacuumSensor[{}]",pszStationName,nSpecVacSensorID);
60 pPhysMotherVol->add(
new GeoNameTag(szLabel));
62 pPhysMotherVol->add(pPhysSIDVacuumSensor);
68 szLabel =
std::format(
"{}_LogSIDPlate[{}]",pszStationName,
i);
69 pLogElement=
new GeoLogVol(szLabel,pSolidSIDPlate,
m_MapMaterials[std::string(
"CE7")]);
70 pPhysElement=
new GeoFullPhysVol(pLogElement);
71 szLabel =
std::format(
"{}_SIDPlate[{}]",pszStationName,
i);
72 pPhysMotherVol->add(
new GeoNameTag(szLabel));
74 pPhysMotherVol->add(pPhysElement);
78 szLabel =
std::format(
"{}_LogSIDChip[{}]",pszStationName,
i);
79 pLogElement=
new GeoLogVol(szLabel,pSolidFEI4Chip,
m_MapMaterials[std::string(
"CE7")]);
80 pPhysElement=
new GeoFullPhysVol(pLogElement);
81 szLabel =
std::format(
"{}_SIDChip[{}]",pszStationName,
i);
82 pPhysMotherVol->add(
new GeoNameTag(szLabel));
84 pPhysMotherVol->add(pPhysElement);
87 szLabel =
std::format(
"{}_LogSIDSensor[{}]",pszStationName,
i);
88 pLogElement=
new GeoLogVol(szLabel,pSolidSIDSensor,
m_MapMaterials[std::string(
"Silicon")]);
89 pPhysElement=
new GeoFullPhysVol(pLogElement);
90 szLabel =
std::format(
"{}_SIDSensor[{}]",pszStationName,
i);
91 pPhysMotherVol->add(
new GeoNameTag(szLabel));
93 pPhysMotherVol->add(pPhysElement);
98 szLabel =
std::format(
"{}_LogSIDVacuumSensor[{}]",pszStationName,
i);
99 GeoLogVol* pLogSIDVacuumSensor=
new GeoLogVol(szLabel,pSolidSIDVacuumSensor,
m_MapMaterials[std::string(
"std::Vacuum")]);
100 GeoFullPhysVol* pPhysSIDVacuumSensor=
new GeoFullPhysVol(pLogSIDVacuumSensor);
102 szLabel =
std::format(
"{}_SIDVacuumSensor[{}]",pszStationName,
i);
103 pPhysMotherVol->add(
new GeoNameTag(szLabel));
105 pPhysMotherVol->add(pPhysSIDVacuumSensor);
◆ addTimingDetector()
Definition at line 58 of file AFP_GeoModelTD.cxx.
61 double fXShift,fYShift,fZShift;
77 nPixelID=10*(
i+1)+(j+1);
78 addSepRadLBar(pszStationName,1,nPixelID,pPhysMotherVol,TofTransform,bsContainer);
86 addSensor(pszStationName,1,pPhysMotherVol,TofTransform,bsContainer);
88 return StatusCode::SUCCESS;
◆ create()
void AFP_GeoModelFactory::create |
( |
GeoPhysVol * |
world | ) |
|
|
virtual |
Definition at line 216 of file AFP_GeoModelFactory.cxx.
236 const GeoLogVol* pLogLongEnv =
new GeoLogVol(
"AFP00_LogStationEnv", pBoxLongEnv,
m_MapMaterials[std::string(
"OpticalVacuum")]);
238 sprintf(szLabel,
"AFP00_StationEnv");
240 world->add(
new GeoNameTag(szLabel));
241 world->add(pPhysLongEnv);
261 const GeoLogVol* pLogShortEnv =
new GeoLogVol(
"AFP01_LogStationEnv", pBoxShortEnv,
m_MapMaterials[std::string(
"std::Vacuum")]);
262 GeoPhysVol* pPhysShortEnv =
new GeoPhysVol(pLogShortEnv);
263 sprintf(szLabel,
"AFP01_StationEnv");
265 world->add(
new GeoNameTag(szLabel));
266 world->add(pPhysShortEnv);
271 addRomanPot(pPhysShortEnv,
"AFP01",PosElementInEnv);
282 const GeoLogVol* pLogShortEnv1 =
new GeoLogVol(
"AFP02_LogStationEnv", pBoxShortEnv1,
m_MapMaterials[std::string(
"std::Vacuum")]);
283 GeoPhysVol* pPhysShortEnv1 =
new GeoPhysVol(pLogShortEnv1);
284 sprintf(szLabel,
"AFP02_StationEnv");
286 world->add(
new GeoNameTag(szLabel));
287 world->add(pPhysShortEnv1);
292 addRomanPot(pPhysShortEnv1,
"AFP02",PosElementInEnv);
303 const GeoLogVol* pLogLongEnv1 =
new GeoLogVol(
"AFP03_LogStationEnv", pBoxLongEnv1,
m_MapMaterials[std::string(
"OpticalVacuum")]);
305 sprintf(szLabel,
"AFP03_StationEnv");
307 world->add(
new GeoNameTag(szLabel));
308 world->add(pPhysLongEnv1);
313 addRomanPot( pPhysLongEnv1,
"AFP03",PosElementInEnv);
329 if (SCode.isFailure()){
◆ createSolidSIDPlate()
GeoShape * AFP_GeoModelFactory::createSolidSIDPlate |
( |
| ) |
|
|
private |
Definition at line 111 of file AFP_GeoModelSID.cxx.
125 HepGeom::Vector3D<double> vecL=(
fd/std::sqrt(2.0))*(HepGeom::RotateZ3D(-fgamma)*HepGeom::Vector3D<double>(1.0,0.0,0.0));
127 HepGeom::Vector3D<double> vecX=vecL-vecB;
131 GeoShapeSubtraction* pShape1=
new GeoShapeSubtraction(pMainPlate, pShiftCut);
134 vecL=(
fd/std::sqrt(2.0))*(HepGeom::RotateZ3D(+fgamma)*HepGeom::Vector3D<double>(1.0,0.0,0.0));
139 GeoShapeSubtraction* pShape2=
new GeoShapeSubtraction(pShape1, pShiftCut);
145 GeoShapeSubtraction* pShape3=
new GeoShapeSubtraction(pShape2, pShiftCut);
◆ defineMaterials()
void AFP_GeoModelFactory::defineMaterials |
( |
| ) |
|
|
private |
Definition at line 55 of file AFP_GeoModelFactory.cxx.
58 const double fWl2E=1239.85;
63 if (StatusCode::SUCCESS !=
m_pDetectorStore->retrieve(materialManager, std::string(
"MATERIALS")))
68 double aH,aC,aN,aSi,aP,aS,aCr,aMn,aFe,aNi,aMo,aAl,aO,Atot;
69 const GeoElement*
H = materialManager->
getElement(
"Hydrogen");
70 const GeoElement*
C = materialManager->
getElement(
"Carbon");
71 const GeoElement*
N = materialManager->
getElement(
"Nitrogen");
72 const GeoElement* Si = materialManager->
getElement(
"Silicon");
73 const GeoElement*
P = materialManager->
getElement(
"Phosphorus");
74 const GeoElement*
S = materialManager->
getElement(
"Sulfur");
75 const GeoElement* Cr = materialManager->
getElement(
"Chromium");
76 const GeoElement* Mn = materialManager->
getElement(
"Manganese");
77 const GeoElement* Fe = materialManager->
getElement(
"Iron");
78 const GeoElement* Ni = materialManager->
getElement(
"Nickel");
79 const GeoElement* Mo = materialManager->
getElement(
"Molybdenum");
80 const GeoElement* Al = materialManager->
getElement(
"Aluminium");
81 const GeoElement*
O = materialManager->
getElement(
"Oxygen");
82 const GeoElement* Be = materialManager->
getElement(
"Beryllium");
85 matName =
"std::Vacuum";
86 const GeoMaterial *vacuum = materialManager->
getMaterial(matName);
90 matName =
"OpticalVacuum";
92 pMatOptVacuum->add(
const_cast<GeoElement*
> (
H), 1);
94 double RefractiveIndexOptVac[2] = {1.0, 1.0};
98 pMPT->
AddProperty(
"RINDEX", PhotonEnergyOptVac, RefractiveIndexOptVac , 2);
99 pMPT->
AddProperty(
"ABSLENGTH", PhotonEnergyOptVac, AbsorptionOptVac, 2);
101 pMatOptVacuum->lock();
106 GeoMaterial *steel=
new GeoMaterial(matName, 8*
g/
cm3);
118 Atot=aFe+aC+aMn+aSi+aP+aS+aCr+aMo+aNi+aN;
120 steel->add(
const_cast<GeoElement*
> (Fe),aFe/Atot);
121 steel->add(
const_cast<GeoElement*
> (
C), aC/Atot);
122 steel->add(
const_cast<GeoElement*
> (Mn),aMn/Atot);
123 steel->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
124 steel->add(
const_cast<GeoElement*
> (
P), aP/Atot);
125 steel->add(
const_cast<GeoElement*
> (
S), aS/Atot);
126 steel->add(
const_cast<GeoElement*
> (Cr),aCr/Atot);
127 steel->add(
const_cast<GeoElement*
> (Mo),aMo/Atot);
128 steel->add(
const_cast<GeoElement*
> (Ni),aNi/Atot);
129 steel->add(
const_cast<GeoElement*
> (
N), aN/Atot);
135 GeoMaterial *pMatCE7=
new GeoMaterial(matName, 2.4*
g/
cm3);
136 aSi=0.70*Si->getA()/(
g/
mole);
137 aAl=0.30*Al->getA()/(
g/
mole);
139 pMatCE7->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
140 pMatCE7->add(
const_cast<GeoElement*
> (Al),aAl/Atot);
147 aSi=1.0*Si->getA()/(
g/
mole);
148 aO=2.0*
O->getA()/(
g/
mole);
150 pMatQuartz->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
151 pMatQuartz->add(
const_cast<GeoElement*
> (O),aO/Atot);
154 const int nEntriesCnt1=12;
155 double arrEnergy1[nEntriesCnt1] = { 750.0*
nm, 700.0*
nm, 650.0*
nm, 600.0*
nm, 550.0*
nm, 500.0*
nm, 450.0*
nm, 400.0*
nm, 350.0*
nm, 300.0*
nm, 250.0*
nm, 200.0*
nm };
156 double arrQuartzRefIndex[nEntriesCnt1] = { 1.450, 1.455, 1.456, 1.458, 1.460, 1.462, 1.465, 1.470, 1.475, 1.488, 1.510, 1.541 };
157 double arrQuartzAbsLength[nEntriesCnt1] = { 130.0*
cm, 130.0*
cm, 130.0*
cm, 130.0*
cm, 128.0*
cm, 125.0*
cm, 122.0*
cm, 120.0*
cm, 111.0*
cm, 104.0*
cm, 95.0*
cm, 83.3*
cm };
158 for(
i=0;
i<nEntriesCnt1;
i++) arrEnergy1[
i]=(fWl2E/(arrEnergy1[
i]/
nm))*
eV;
161 pMPT->
AddProperty(
"RINDEX", arrEnergy1, arrQuartzRefIndex, nEntriesCnt1);
162 pMPT->
AddProperty(
"ABSLENGTH", arrEnergy1, arrQuartzAbsLength, nEntriesCnt1);
168 matName=
"SiliconPMT";
170 aSi=1.0*Si->getA()/(
g/
mole);
171 pMatSiliconPMT->add(
const_cast<GeoElement*
> (Si),1.0);
173 const int nEntriesCnt2=2;
174 double arrEnergy2[nEntriesCnt2] = { 2800.0*
nm, 190.0*
nm };
175 double arrSiliconRefIndex[nEntriesCnt2] = { 4.0, 4.0 };
176 double arrSiliconAbsLength[nEntriesCnt2] = { 0.00001*
m, 0.00001*
m };
177 for(
i=0;
i<nEntriesCnt2;
i++) arrEnergy2[
i]=(fWl2E/(arrEnergy2[
i]/
nm))*
eV;
180 pMPT->
AddProperty(
"RINDEX", arrEnergy2, arrSiliconRefIndex, nEntriesCnt2);
181 pMPT->
AddProperty(
"ABSLENGTH", arrEnergy2, arrSiliconAbsLength, nEntriesCnt2);
183 pMatSiliconPMT->lock();
189 GeoMaterial *pMatSilicon=
new GeoMaterial(matName, 2.3290*
g/
cm3);
190 aSi=1.0*Si->getA()/(
g/
mole);
191 pMatSilicon->add(
const_cast<GeoElement*
> (Si),1.0);
197 GeoMaterial *pMatWater=
new GeoMaterial(matName, 1.0*
g/
cm3);
198 aH=0.11*Si->getA()/(
g/
mole);
199 aO=0.89*Al->getA()/(
g/
mole);
201 pMatWater->add(
const_cast<GeoElement*
> (
H),aH/Atot);
202 pMatWater->add(
const_cast<GeoElement*
> (O),aO/Atot);
207 matName=
"Beryllium_AFP";
210 pMaterialBe->add(
const_cast<GeoElement*
> (Be), 1);
◆ getBarShift()
◆ getDetectorManager()
◆ getLQBarDimensions()
◆ initializeTDParameters()
void AFP_GeoModelFactory::initializeTDParameters |
( |
| ) |
|
|
private |
Definition at line 45 of file AFP_GeoModelTD.cxx.
53 double pfReflectivity1[2]={ 0.9, 0.9};
54 pMPT->
AddProperty(
"REFLECTIVITY",pfEnergy1,pfReflectivity1,2);
◆ operator=()
◆ updatePositions()
◆ m_addSeparationWindow
const bool AFP_GeoModelFactory::m_addSeparationWindow {} |
|
private |
◆ m_CfgParams
◆ m_MapMaterials
std::map<std::string, GeoRef<const GeoMaterial> > AFP_GeoModelFactory::m_MapMaterials |
|
private |
◆ m_MapShape
std::map<std::string,const GeoShape*> AFP_GeoModelFactory::m_MapShape |
|
private |
◆ m_pDetectorManager
◆ m_pDetectorStore
◆ m_pGeometry
◆ m_pOpticalSurface
◆ m_pReflectionOptSurface
The documentation for this class was generated from the following files:
Ensure that the extensions for the Vector3D are properly loaded.
#define RPOT_MAINTUBUS_LENGTH
std::vector< double > vecChipYLength
#define RPOT_MAINTUBUS_BPTHICKNESS
#define RPOT_MAINTUBUS_THICKNESS
GeoIntrusivePtr< GeoOpticalSurface > m_pReflectionOptSurface
void AddProperty(const char *key, double *PhotonMomenta, double *PropertyValues, int NumEntries)
std::map< eAFPStation, AFP_SIDCONFIGURATION > sidcfg
int getSIDPlatesCnt(const eAFPStation eStation) const
#define RPOT_FLOOR_WNDTHICKNESS
StatusCode addTimingDetector(const char *pszStationName, GeoOpticalPhysVol *pPhysMotherVol, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
void addRomanPot(GeoPhysVol *pPhysMotherVol, const char *pszStationName, HepGeom::Transform3D &TransInMotherVolume)
#define RPOT_FLANGE_OUTERRADIUS
GeoIntrusivePtr< GeoOpticalSurface > m_pOpticalSurface
static constexpr double ToF_SeparationWindowThickness
void getCfgParams(AFP_CONFIGURATION *pCfgParams) const
virtual const GeoElement * getElement(const std::string &name)=0
static constexpr double ToF_SensorThickness
void SetMaterialPropertiesTable(GeoMaterialPropertiesTable *MPT)
static constexpr double Stat_GlobalVacuumSensorThickness
void addSepRadLBar(const char *pszStationName, const int nQuarticID, const int nBarID, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
GeoShape * createSolidSIDPlate()
AFP_CONFIGURATION m_CfgParams
IMessageSvc * getMessageSvc(bool quiet=false)
static constexpr double ToF_Sensor2BarDist
HepGeom::Transform3D getStationTransform(const char *pszStationName) const
static constexpr double ToF_TrainsCnt
static constexpr double SiT_Plate_CutEdge_thickness
AFP_GeoModelManager * m_pDetectorManager
void addLBarSensorSeparationWindow(const char *pszStationName, const int nQuarticID, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
AFP_Geometry * m_pGeometry
static constexpr double SiT_Plate_Window_length_y
#define RPOT_FLOOR_WNDWIDTH
static constexpr double SiT_Plate_CutEdge_length_y
HepGeom::Transform3D getSIDTransform(const eSIDTransformType eType, const char *pszStationName, const int nPlateID) const
static constexpr int Stat_GlobalVacuumSensorID
void addTreeTop(const PVLink &)
::StatusCode StatusCode
StatusCode definition for legacy code.
static constexpr double SiT_Plate_CutEdge_length_x
std::map< eAFPStation, AFP_TDCONFIGURATION > tdcfg
static constexpr double SiT_Chip_thickness
void addSensor(const char *pszStationName, const int nQuarticID, GeoOpticalPhysVol *pPhysMotherVolume, HepGeom::Transform3D &TransInMotherVolume, GeoBorderSurfaceContainer *bsContainer)
Eigen::Affine3d Transform3D
HepGeom::Transform3D getStationElementTransform(const char *pszStationName, eStationElement eElement, const int nPlateID=-1) const
static constexpr double SiT_Plate_Main_length_x
static constexpr double SiT_Plate_Window_thickness
Ensure that the extensions for the Vector3D are properly loaded.
eAFPStation parseStationName(const char *pszStationName) const
static constexpr double ToF_SeparationWindowDiameter
void getPixelLocalPosition(const eAFPStation eStation, const int nPixelID, double *pfX1Pos, double *pfX2Pos) const
std::map< int, AFPTOF_TRAININFO > mapTrainInfo
static constexpr double SiT_Plate_Window_y
void initializeTDParameters()
std::vector< double > vecChipXLength
#define RPOT_MAINTUBUS_FLOORPARTLENGTH
#define RPOT_FLOOR_WNDFACET
StoreGateSvc * m_pDetectorStore
static constexpr double SiT_Plate_Main_length_y
static constexpr double ToF_ColumnsCnt
const bool m_addSeparationWindow
#define RPOT_FLOOR_THICKNESS
std::map< int, AFPTOF_LBARDIMENSIONS > mapBarDims
static constexpr double SiT_Plate_Window_x
std::vector< GeoBorderSurface > GeoBorderSurfaceContainer
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
static constexpr double SiT_Pixel_thickness
static constexpr double SiT_Plate_Main_thickness
static constexpr double SiT_Plate_Window_length_x
virtual const GeoMaterial * getMaterial(const std::string &name)=0
This class holds one or more material managers and makes them storeable, under StoreGate.
static constexpr double SiT_Pixel_length_toty
#define RPOT_FLANGE_THICKNESS
static constexpr double SiT_Pixel_length_totx
#define RPOT_MAINTUBUS_INNERRADIUS
void addSiDetector(GeoPhysVol *pPhysMotherVol, const char *pszStationName, HepGeom::Transform3D &TransInMotherVolume)
std::map< std::string, GeoRef< const GeoMaterial > > m_MapMaterials
#define RPOT_MAINTUBUS_WNDTHICKNESS