|
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 29 of file AFP_GeoModelFactory.h.
◆ AFP_GeoModelFactory() [1/2]
◆ ~AFP_GeoModelFactory()
AFP_GeoModelFactory::~AFP_GeoModelFactory |
( |
| ) |
|
◆ AFP_GeoModelFactory() [2/2]
◆ addHorizontalArm()
◆ addLBarSensorSeparationWindow()
Definition at line 214 of file AFP_GeoModelTD.cxx.
219 double fX1Pos_1, fX2Pos_1, fX1Pos_2, fX2Pos_2;
233 sprintf(szlabel,
"%s_Q%i_LogLBarSensorSeparationWindow",pszStationName,nQuarticID);
235 GeoLogVol* pLogWindow=
new GeoLogVol(szlabel,pSolWindow,
m_MapMaterials[
"Quartz"]);
237 sprintf(szlabel,
"%s_Q%i_LBarSensorSeparationWindow",pszStationName,nQuarticID);
238 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
240 pPhysMotherVolume->add(pPhysWindow);
241 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 250 of file AFP_GeoModelTD.cxx.
255 double fX1Pos, fX2Pos;
272 nPixelID=10*(
i+1)+(j+1);
275 sprintf(szlabel,
"%s_Q%i_LogTDSensor[%i]",pszStationName,nQuarticID,nPixelID);
277 GeoLogVol* pLogSensor=
new GeoLogVol(szlabel,pSolSensor,
m_MapMaterials[
"SiliconPMT"]);
279 sprintf(szlabel,
"%s_Q%i_TDSensor[%i]",pszStationName,nQuarticID,nPixelID);
280 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
282 pPhysMotherVolume->add(pPhysSensor);
283 sprintf(szlabel,
"%s_Q%i_SensorSurface[%i]",pszStationName,nQuarticID,nPixelID);
◆ addSepRadLBar()
Definition at line 95 of file AFP_GeoModelTD.cxx.
97 double fX1Pos,fX2Pos,falpha,
fd;
98 HepGeom::Vector3D<double> vecA1, vecA2, vecX;
99 CLHEP::Hep3Vector vecCutShift;
101 GeoShapeShift* pMoveCut;
105 CLHEP::HepRotation Rot1,Rot2,Rot3;
127 vecA1=-
fd*
std::cos(falpha)*CLHEP::Hep3Vector(0.0,1.0,0.0);
128 vecA2=+0.5*
fd*std::sqrt(2.0)*(CLHEP::HepRotationZ(+(45*
CLHEP::deg-falpha))*CLHEP::Hep3Vector(0.0,1.0,0.0)).
unit();
131 Rot1.rotateZ(-falpha);
136 pSolVolume=
new GeoShapeSubtraction(pSolVolume, pMoveCut);
139 sprintf(szlabel,
"%s_Q%i_LogLGuide[%i]",pszStationName,nQuarticID,nBarID);
140 GeoLogVol* pLogLGuide=
new GeoLogVol(szlabel,pSolVolume,
m_MapMaterials[std::string(
"Quartz")]);
142 sprintf(szlabel,
"%s_Q%i_LGuide[%i]",pszStationName,nQuarticID,nBarID);
143 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
145 pPhysMotherVolume->add(pPhysLGuide);
146 sprintf(szlabel,
"%s_Q%i_LGuideSurface[%i]",pszStationName,nQuarticID,nBarID);
151 double fElbowXDim=fRadYDim;
152 TotTransform=TransInMotherVolume*HepGeom::Translate3D( fX1Pos-0.5*BarDims.
fLGuideWidth+0.5*fElbowXDim+fTaperOffset,
155 pSolVolume=
new GeoBox(0.5*fElbowXDim,0.5*fRadYDim,0.5*BarDims.
fLBarThickness);
159 vecA1=-
fd*
std::cos(falpha)*CLHEP::Hep3Vector(0.0,1.0,0.0);
160 vecA2=+0.5*
fd*std::sqrt(2.0)*(CLHEP::HepRotationZ(+(45*
CLHEP::deg-falpha))*CLHEP::Hep3Vector(0.0,1.0,0.0)).
unit();
162 vecCutShift=CLHEP::Hep3Vector(-0.5*fElbowXDim,0.5*fRadYDim,0.0)+CLHEP::Hep3Vector(vecX);
163 Rot2.rotateZ(-falpha);
168 pSolVolume=
new GeoShapeSubtraction(pSolVolume, pMoveCut);
170 sprintf(szlabel,
"%s_Q%i_LogRadiator[%i]",pszStationName,nQuarticID,nBarID);
171 GeoLogVol* pLogRadiator=
new GeoLogVol(szlabel,pSolVolume,
m_MapMaterials[std::string(
"Quartz")]);
173 sprintf(szlabel,
"%s_Q%i_Radiator[%i]",pszStationName,nQuarticID,nBarID);
174 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
176 pPhysMotherVolume->add(pPhysRadiator);
177 sprintf(szlabel,
"%s_Q%i_RadiatorElbowSurface[%i]",pszStationName,nQuarticID,nBarID);
182 TotTransform=TransInMotherVolume*HepGeom::Translate3D( fX1Pos-0.5*BarDims.
fLGuideWidth+fElbowXDim+fTaperOffset+0.5*fRadLength,
185 pSolVolume=
new GeoBox(0.5*fRadLength,0.5*fRadYDim,0.5*BarDims.
fLBarThickness);
190 vecA1 = -
fd*
std::cos(falpha)*CLHEP::Hep3Vector(1.0,0.0,0.0);
191 vecA2 = 0.5*
fd*std::sqrt(2.0)*(CLHEP::HepRotationY(-(45*
CLHEP::deg-falpha))*CLHEP::Hep3Vector(1.0,0.0,0.0)).
unit();
192 vecX = vecA1 + vecA2;
193 vecCutShift = CLHEP::Hep3Vector(0.5*fRadLength,0.0,0.5*BarDims.
fLBarThickness) + CLHEP::Hep3Vector(vecX);
194 Rot3.rotateY(falpha);
196 pSolAux=
new GeoBox(0.5*
fd,0.5*fRadYDim+
SLIMCUT,0.5*
fd);
199 pSolVolume=
new GeoShapeSubtraction(pSolVolume, pMoveCut);
202 sprintf(szlabel,
"%s_Q%i_LogRadiator[%i]",pszStationName,nQuarticID,nBarID);
203 pLogRadiator=
new GeoLogVol(szlabel,pSolVolume,
m_MapMaterials[std::string(
"Quartz")]);
205 sprintf(szlabel,
"%s_Q%i_Radiator[%i]",pszStationName,nQuarticID,nBarID);
206 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
208 pPhysMotherVolume->add(pPhysRadiator);
209 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 42 of file AFP_GeoModelSID.cxx.
45 GeoLogVol* pLogElement=
nullptr;
46 GeoFullPhysVol* pPhysElement;
57 sprintf(szLabel,
"%s_LogSIDVacuumSensor[%i]",pszStationName,nSpecVacSensorID);
58 GeoLogVol* pLogSIDVacuumSensor=
new GeoLogVol(szLabel,pSolidSIDVacuumSensor,
m_MapMaterials[std::string(
"std::Vacuum")]);
59 GeoFullPhysVol* pPhysSIDVacuumSensor=
new GeoFullPhysVol(pLogSIDVacuumSensor);
60 sprintf(szLabel,
"%s_SIDVacuumSensor[%i]",pszStationName,nSpecVacSensorID);
61 pPhysMotherVol->add(
new GeoNameTag(szLabel));
63 pPhysMotherVol->add(pPhysSIDVacuumSensor);
69 sprintf(szLabel,
"%s_LogSIDPlate[%i]",pszStationName,
i);
70 pLogElement=
new GeoLogVol(szLabel,pSolidSIDPlate,
m_MapMaterials[std::string(
"CE7")]);
71 pPhysElement=
new GeoFullPhysVol(pLogElement);
72 sprintf(szLabel,
"%s_SIDPlate[%i]",pszStationName,
i);
73 pPhysMotherVol->add(
new GeoNameTag(szLabel));
75 pPhysMotherVol->add(pPhysElement);
79 sprintf(szLabel,
"%s_LogSIDChip[%i]",pszStationName,
i);
80 pLogElement=
new GeoLogVol(szLabel,pSolidFEI4Chip,
m_MapMaterials[std::string(
"CE7")]);
81 pPhysElement=
new GeoFullPhysVol(pLogElement);
82 sprintf(szLabel,
"%s_SIDChip[%i]",pszStationName,
i);
83 pPhysMotherVol->add(
new GeoNameTag(szLabel));
85 pPhysMotherVol->add(pPhysElement);
88 sprintf(szLabel,
"%s_LogSIDSensor[%i]",pszStationName,
i);
89 pLogElement=
new GeoLogVol(szLabel,pSolidSIDSensor,
m_MapMaterials[std::string(
"Silicon")]);
90 pPhysElement=
new GeoFullPhysVol(pLogElement);
91 sprintf(szLabel,
"%s_SIDSensor[%i]",pszStationName,
i);
92 pPhysMotherVol->add(
new GeoNameTag(szLabel));
94 pPhysMotherVol->add(pPhysElement);
99 sprintf(szLabel,
"%s_LogSIDVacuumSensor[%i]",pszStationName,
i);
100 GeoLogVol* pLogSIDVacuumSensor=
new GeoLogVol(szLabel,pSolidSIDVacuumSensor,
m_MapMaterials[std::string(
"std::Vacuum")]);
101 GeoFullPhysVol* pPhysSIDVacuumSensor=
new GeoFullPhysVol(pLogSIDVacuumSensor);
103 sprintf(szLabel,
"%s_SIDVacuumSensor[%i]",pszStationName,
i);
104 pPhysMotherVol->add(
new GeoNameTag(szLabel));
106 pPhysMotherVol->add(pPhysSIDVacuumSensor);
◆ addTimingDetector()
Definition at line 62 of file AFP_GeoModelTD.cxx.
65 double fXShift,fYShift,fZShift;
81 nPixelID=10*(
i+1)+(j+1);
82 addSepRadLBar(pszStationName,1,nPixelID,pPhysMotherVol,TofTransform,bsContainer);
90 addSensor(pszStationName,1,pPhysMotherVol,TofTransform,bsContainer);
92 return StatusCode::SUCCESS;
◆ create()
void AFP_GeoModelFactory::create |
( |
GeoPhysVol * |
world | ) |
|
|
virtual |
Definition at line 220 of file AFP_GeoModelFactory.cxx.
240 const GeoLogVol* pLogLongEnv =
new GeoLogVol(
"AFP00_LogStationEnv", pBoxLongEnv,
m_MapMaterials[std::string(
"OpticalVacuum")]);
242 sprintf(szLabel,
"AFP00_StationEnv");
244 world->add(
new GeoNameTag(szLabel));
245 world->add(pPhysLongEnv);
265 const GeoLogVol* pLogShortEnv =
new GeoLogVol(
"AFP01_LogStationEnv", pBoxShortEnv,
m_MapMaterials[std::string(
"std::Vacuum")]);
266 GeoPhysVol* pPhysShortEnv =
new GeoPhysVol(pLogShortEnv);
267 sprintf(szLabel,
"AFP01_StationEnv");
269 world->add(
new GeoNameTag(szLabel));
270 world->add(pPhysShortEnv);
275 addRomanPot(pPhysShortEnv,
"AFP01",PosElementInEnv);
286 const GeoLogVol* pLogShortEnv1 =
new GeoLogVol(
"AFP02_LogStationEnv", pBoxShortEnv1,
m_MapMaterials[std::string(
"std::Vacuum")]);
287 GeoPhysVol* pPhysShortEnv1 =
new GeoPhysVol(pLogShortEnv1);
288 sprintf(szLabel,
"AFP02_StationEnv");
290 world->add(
new GeoNameTag(szLabel));
291 world->add(pPhysShortEnv1);
296 addRomanPot(pPhysShortEnv1,
"AFP02",PosElementInEnv);
307 const GeoLogVol* pLogLongEnv1 =
new GeoLogVol(
"AFP03_LogStationEnv", pBoxLongEnv1,
m_MapMaterials[std::string(
"OpticalVacuum")]);
309 sprintf(szLabel,
"AFP03_StationEnv");
311 world->add(
new GeoNameTag(szLabel));
312 world->add(pPhysLongEnv1);
317 addRomanPot( pPhysLongEnv1,
"AFP03",PosElementInEnv);
333 if (SCode.isFailure()){
◆ createSolidSIDPlate()
GeoShape * AFP_GeoModelFactory::createSolidSIDPlate |
( |
| ) |
|
|
private |
Definition at line 112 of file AFP_GeoModelSID.cxx.
126 HepGeom::Vector3D<double> vecL=(
fd/std::sqrt(2.0))*(HepGeom::RotateZ3D(-fgamma)*HepGeom::Vector3D<double>(1.0,0.0,0.0));
128 HepGeom::Vector3D<double> vecX=vecL-vecB;
132 GeoShapeSubtraction* pShape1=
new GeoShapeSubtraction(pMainPlate, pShiftCut);
135 vecL=(
fd/std::sqrt(2.0))*(HepGeom::RotateZ3D(+fgamma)*HepGeom::Vector3D<double>(1.0,0.0,0.0));
140 GeoShapeSubtraction* pShape2=
new GeoShapeSubtraction(pShape1, pShiftCut);
146 GeoShapeSubtraction* pShape3=
new GeoShapeSubtraction(pShape2, pShiftCut);
◆ defineMaterials()
void AFP_GeoModelFactory::defineMaterials |
( |
| ) |
|
|
private |
Definition at line 59 of file AFP_GeoModelFactory.cxx.
62 const double fWl2E=1239.85;
67 if (StatusCode::SUCCESS !=
m_pDetectorStore->retrieve(materialManager, std::string(
"MATERIALS")))
72 double aH,aC,aN,aSi,aP,aS,aCr,aMn,aFe,aNi,aMo,aAl,aO,Atot;
73 const GeoElement*
H = materialManager->
getElement(
"Hydrogen");
74 const GeoElement*
C = materialManager->
getElement(
"Carbon");
75 const GeoElement*
N = materialManager->
getElement(
"Nitrogen");
76 const GeoElement* Si = materialManager->
getElement(
"Silicon");
77 const GeoElement*
P = materialManager->
getElement(
"Phosphorus");
78 const GeoElement*
S = materialManager->
getElement(
"Sulfur");
79 const GeoElement* Cr = materialManager->
getElement(
"Chromium");
80 const GeoElement* Mn = materialManager->
getElement(
"Manganese");
81 const GeoElement* Fe = materialManager->
getElement(
"Iron");
82 const GeoElement* Ni = materialManager->
getElement(
"Nickel");
83 const GeoElement* Mo = materialManager->
getElement(
"Molybdenum");
84 const GeoElement* Al = materialManager->
getElement(
"Aluminium");
85 const GeoElement*
O = materialManager->
getElement(
"Oxygen");
86 const GeoElement* Be = materialManager->
getElement(
"Beryllium");
89 matName =
"std::Vacuum";
90 const GeoMaterial *vacuum = materialManager->
getMaterial(matName);
94 matName =
"OpticalVacuum";
96 pMatOptVacuum->add(
const_cast<GeoElement*
> (
H), 1);
98 double RefractiveIndexOptVac[2] = {1.0, 1.0};
102 pMPT->
AddProperty(
"RINDEX", PhotonEnergyOptVac, RefractiveIndexOptVac , 2);
103 pMPT->
AddProperty(
"ABSLENGTH", PhotonEnergyOptVac, AbsorptionOptVac, 2);
105 pMatOptVacuum->lock();
110 GeoMaterial *steel=
new GeoMaterial(matName, 8*
g/
cm3);
122 Atot=aFe+aC+aMn+aSi+aP+aS+aCr+aMo+aNi+aN;
124 steel->add(
const_cast<GeoElement*
> (Fe),aFe/Atot);
125 steel->add(
const_cast<GeoElement*
> (
C), aC/Atot);
126 steel->add(
const_cast<GeoElement*
> (Mn),aMn/Atot);
127 steel->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
128 steel->add(
const_cast<GeoElement*
> (
P), aP/Atot);
129 steel->add(
const_cast<GeoElement*
> (
S), aS/Atot);
130 steel->add(
const_cast<GeoElement*
> (Cr),aCr/Atot);
131 steel->add(
const_cast<GeoElement*
> (Mo),aMo/Atot);
132 steel->add(
const_cast<GeoElement*
> (Ni),aNi/Atot);
133 steel->add(
const_cast<GeoElement*
> (
N), aN/Atot);
139 GeoMaterial *pMatCE7=
new GeoMaterial(matName, 2.4*
g/
cm3);
140 aSi=0.70*Si->getA()/(
g/
mole);
141 aAl=0.30*Al->getA()/(
g/
mole);
143 pMatCE7->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
144 pMatCE7->add(
const_cast<GeoElement*
> (Al),aAl/Atot);
151 aSi=1.0*Si->getA()/(
g/
mole);
152 aO=2.0*
O->getA()/(
g/
mole);
154 pMatQuartz->add(
const_cast<GeoElement*
> (Si),aSi/Atot);
155 pMatQuartz->add(
const_cast<GeoElement*
> (O),aO/Atot);
158 const int nEntriesCnt1=12;
159 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 };
160 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 };
161 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 };
162 for(
i=0;
i<nEntriesCnt1;
i++) arrEnergy1[
i]=(fWl2E/(arrEnergy1[
i]/
nm))*
eV;
165 pMPT->
AddProperty(
"RINDEX", arrEnergy1, arrQuartzRefIndex, nEntriesCnt1);
166 pMPT->
AddProperty(
"ABSLENGTH", arrEnergy1, arrQuartzAbsLength, nEntriesCnt1);
172 matName=
"SiliconPMT";
174 aSi=1.0*Si->getA()/(
g/
mole);
175 pMatSiliconPMT->add(
const_cast<GeoElement*
> (Si),1.0);
177 const int nEntriesCnt2=2;
178 double arrEnergy2[nEntriesCnt2] = { 2800.0*
nm, 190.0*
nm };
179 double arrSiliconRefIndex[nEntriesCnt2] = { 4.0, 4.0 };
180 double arrSiliconAbsLength[nEntriesCnt2] = { 0.00001*
m, 0.00001*
m };
181 for(
i=0;
i<nEntriesCnt2;
i++) arrEnergy2[
i]=(fWl2E/(arrEnergy2[
i]/
nm))*
eV;
184 pMPT->
AddProperty(
"RINDEX", arrEnergy2, arrSiliconRefIndex, nEntriesCnt2);
185 pMPT->
AddProperty(
"ABSLENGTH", arrEnergy2, arrSiliconAbsLength, nEntriesCnt2);
187 pMatSiliconPMT->lock();
193 GeoMaterial *pMatSilicon=
new GeoMaterial(matName, 2.3290*
g/
cm3);
194 aSi=1.0*Si->getA()/(
g/
mole);
195 pMatSilicon->add(
const_cast<GeoElement*
> (Si),1.0);
201 GeoMaterial *pMatWater=
new GeoMaterial(matName, 1.0*
g/
cm3);
202 aH=0.11*Si->getA()/(
g/
mole);
203 aO=0.89*Al->getA()/(
g/
mole);
205 pMatWater->add(
const_cast<GeoElement*
> (
H),aH/Atot);
206 pMatWater->add(
const_cast<GeoElement*
> (O),aO/Atot);
211 matName=
"Beryllium_AFP";
214 pMaterialBe->add(
const_cast<GeoElement*
> (Be), 1);
◆ getBarShift()
◆ getDetectorManager()
◆ getLQBarDimensions()
◆ initializeTDParameters()
void AFP_GeoModelFactory::initializeTDParameters |
( |
| ) |
|
|
private |
Definition at line 49 of file AFP_GeoModelTD.cxx.
57 double pfReflectivity1[2]={ 0.9, 0.9};
58 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
void SetMaterialPropertiesTable(GeoMaterialPropertiesTable *mpt)
#define RPOT_MAINTUBUS_BPTHICKNESS
#define RPOT_MAINTUBUS_THICKNESS
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
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
GeoOpticalSurface * m_pOpticalSurface
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
GeoOpticalSurface * m_pReflectionOptSurface
#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