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"
47 inline double sqr(
double x) {
return x*
x;}
53 GeoModelIO::ReadGeoModel* sqliteReader,
54 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
55 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
110 double safety = generalParameters->
safety();
166 const GeoShapeShift & moduleEnvelope = (*moduleEnvelopeShape << GeoTrf::TranslateZ3D(
m_moduleShift) );
180 GeoFullPhysVol *
module=
nullptr;
198 double positionZ =
m_sensor->sensorOffset();
207 GeoAlignableTransform *bottomTransform
208 =
new GeoAlignableTransform(
GeoTrf::Transform3D(vecB*rotB)*GeoTrf::TranslateZ3D(positionZ));
211 id.setSide(bottomSideNumber);
213 module->add(
new GeoIdentifierTag(600+bottomSideNumber));
214 module->add(bottomTransform);
215 GeoVPhysVol * bottomSensorPV =
m_sensor->build(
id);
216 module->add(bottomSensorPV);
228 positionX=-positionX;
235 GeoAlignableTransform *topTransform
236 =
new GeoAlignableTransform(
GeoTrf::Transform3D(vecT*rotT)*GeoTrf::TranslateZ3D(positionZ));
239 id.setSide(topSideNumber);
241 module->add(
new GeoIdentifierTag(600+topSideNumber));
242 module->add(topTransform);
243 GeoVPhysVol * topSensorPV =
m_sensor->build(
id);
257 id.setSide(bottomSideNumber);
265 id.setSide(topSideNumber);