7 #include "GeoModelKernel/GeoElement.h"
8 #include "GeoModelKernel/GeoBox.h"
9 #include "GeoModelKernel/GeoTube.h"
10 #include "GeoModelKernel/GeoLogVol.h"
11 #include "GeoModelKernel/GeoNameTag.h"
12 #include "GeoModelKernel/GeoPhysVol.h"
13 #include "GeoModelKernel/GeoFullPhysVol.h"
14 #include "GeoModelKernel/GeoIdentifierTag.h"
15 #include "GeoModelKernel/GeoAlignableTransform.h"
16 #include "GeoModelKernel/GeoDefinitions.h"
17 #include "GeoModelKernel/Units.h"
18 #include "GaudiKernel/SystemOfUnits.h"
21 #include "GeoModelKernel/GeoMaterial.h"
25 #include "CLHEP/Geometry/Transform3D.h"
40 LogStream << MSG::ERROR <<
"execute: Could not retrieve StoredMaterialManager object from the detector store" <<
endmsg;
44 const GeoMaterial *OpAir = materialManager->
getMaterial(
"ZDC::opticalAir" );
45 const GeoMaterial *OpSilica = materialManager->
getMaterial(
"ZDC::opticalSilica");
46 const GeoMaterial *copper = materialManager->
getMaterial(
"std::Copper" );
47 const GeoMaterial *aluminum = materialManager->
getMaterial(
"std::Aluminium" );
51 const float width = 88.0;
52 const float height = 180.0;
53 const float channelSide = 11.0;
54 const float pitch = 2.0*channelSide;
55 const float faceDepth = 10.0;
56 const float alPlateDepth = 14.5;
57 const float innerPlateDepth = 25.5;
58 const float rodDia = 10.0;
59 const float depth = 2.0 *(faceDepth + alPlateDepth + innerPlateDepth);
66 GeoLogVol *Cu_Body_Logical =
new GeoLogVol(
"BRAN_Cu_Body_Logical" , Cu_Body , copper );
67 GeoLogVol *Al_Plate_Logical =
new GeoLogVol(
"BRAN_Al_Plate_Logical" , Al_Plate , aluminum);
68 GeoLogVol *Air_Channel_Logical =
new GeoLogVol(
"BRAN_Air_Channel_Logical" , Air_Channel , OpAir );
69 GeoLogVol *Silica_Rod_Logical =
new GeoLogVol(
"BRAN_Rod_Logical" , Silica_Rod , OpSilica);
72 GeoFullPhysVol *Cu_Body_Physical =
new GeoFullPhysVol(Cu_Body_Logical);
79 char airName[64], rodName[64], aluName[64];
80 sprintf(airName,
"ZDC::BRAN_Air %s", airID.
getString().c_str());
81 sprintf(aluName,
"ZDC::BRAN_Alu %s", aluID.
getString().c_str());
82 sprintf(rodName,
"ZDC::BRAN_Rod %s", rodID.
getString().c_str());
85 GeoFullPhysVol *Air_Channel_Pyisical =
new GeoFullPhysVol(Air_Channel_Logical);
86 Air_Channel_Pyisical->add(
new GeoNameTag(rodName));
88 Air_Channel_Pyisical->add(
new GeoAlignableTransform(GeoTrf::RotateX3D(90 *
Gaudi::Units::deg)));
89 Air_Channel_Pyisical->add(
new GeoFullPhysVol(Silica_Rod_Logical));
91 GeoFullPhysVol *Al_Plate_Physical =
new GeoFullPhysVol(Al_Plate_Logical);
104 Cu_Body_Physical->add(
new GeoNameTag(airName));
106 Cu_Body_Physical->add(
new GeoAlignableTransform(GeoTrf::TranslateX3D(
i * channelSide *
Gaudi::Units::mm)));
107 Cu_Body_Physical->add(Air_Channel_Pyisical);
112 Cu_Body_Physical->add(
new GeoNameTag(aluName));
114 Cu_Body_Physical->add(
new GeoAlignableTransform(GeoTrf::TranslateZ3D(
i * (innerPlateDepth + alPlateDepth * 0.5) *
Gaudi::Units::mm)));
115 Cu_Body_Physical->add(Al_Plate_Physical);
117 for(
int j : {-1,0,1}){
121 Cu_Body_Physical->add(
new GeoNameTag(airName));
123 Cu_Body_Physical->add(
new GeoAlignableTransform(GeoTrf::Translate3D( j * pitch *
Gaudi::Units::mm, 0.0,
i * (innerPlateDepth - channelSide) *
Gaudi::Units::mm )));
124 Cu_Body_Physical->add(Air_Channel_Pyisical);
131 sprintf(volName,
"Zdc::BRAN_Mod %s",
id.getString().c_str());
132 mother->add(
new GeoNameTag(volName));
133 mother->add(
new GeoIdentifierTag(
id.get_identifier32().get_compact()));
135 mother->add(Cu_Body_Physical);