29 #include "GeoModelRead/ReadGeoModel.h"
30 #include "GeoModelKernel/GeoTrd.h"
31 #include "GeoModelKernel/GeoShapeShift.h"
32 #include "GeoModelKernel/GeoShape.h"
33 #include "GeoModelKernel/GeoLogVol.h"
34 #include "GeoModelKernel/GeoPhysVol.h"
35 #include "GeoModelKernel/GeoFullPhysVol.h"
36 #include "GeoModelKernel/GeoNameTag.h"
37 #include "GeoModelKernel/GeoIdentifierTag.h"
38 #include "GeoModelKernel/GeoTransform.h"
39 #include "GeoModelKernel/GeoAlignableTransform.h"
40 #include "GeoModelKernel/GeoMaterial.h"
41 #include "GeoModelKernel/GeoDefinitions.h"
42 #include "GaudiKernel/SystemOfUnits.h"
48 inline double sqr(
double x) {
return x*
x;}
54 GeoModelIO::ReadGeoModel* sqliteReader,
55 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
56 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
111 double safety = generalParameters->
safety();
167 const GeoShapeShift & moduleEnvelope = (*moduleEnvelopeShape << GeoTrf::TranslateZ3D(
m_moduleShift) );
181 GeoFullPhysVol *
module=
nullptr;
199 double positionZ =
m_sensor->sensorOffset();
208 GeoAlignableTransform *bottomTransform
209 =
new GeoAlignableTransform(
GeoTrf::Transform3D(vecB*rotB)*GeoTrf::TranslateZ3D(positionZ));
212 id.setSide(bottomSideNumber);
214 module->add(
new GeoIdentifierTag(600+bottomSideNumber));
215 module->add(bottomTransform);
216 GeoVPhysVol * bottomSensorPV =
m_sensor->build(
id);
217 module->add(bottomSensorPV);
229 positionX=-positionX;
236 GeoAlignableTransform *topTransform
237 =
new GeoAlignableTransform(
GeoTrf::Transform3D(vecT*rotT)*GeoTrf::TranslateZ3D(positionZ));
240 id.setSide(topSideNumber);
242 module->add(
new GeoIdentifierTag(600+topSideNumber));
243 module->add(topTransform);
244 GeoVPhysVol * topSensorPV =
m_sensor->build(
id);
258 id.setSide(bottomSideNumber);
266 id.setSide(topSideNumber);