ATLAS Offline Software
ForDetEnvelopeFactory.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8 #include "GeoModelKernel/GeoMaterial.h"
9 #include "GeoModelKernel/GeoTube.h"
10 #include "GeoModelKernel/GeoLogVol.h"
11 #include "GeoModelKernel/GeoNameTag.h"
12 #include "GeoModelKernel/GeoPhysVol.h"
13 #include "GeoModelKernel/GeoShapeShift.h"
14 #include "GeoModelKernel/GeoShapeUnion.h"
15 
16 #include "StoreGate/StoreGateSvc.h"
17 #include "GaudiKernel/SystemOfUnits.h"
18 
19 #include <vector>
20 
21 
23  : m_detectorManager(0),
24  m_materialManager(0),
25  m_detectorStore(detStore)
26 {
27 }
28 
30 {
31 }
32 
33 void ForDetEnvelopeFactory::create(GeoPhysVol *world)
34 {
35  if (StatusCode::SUCCESS != m_detectorStore->retrieve(m_materialManager, std::string("MATERIALS"))) {
36  return;
37  }
38 
39  // Get the materials
40  const GeoMaterial* air = m_materialManager->getMaterial("std::Air");
41 
42  // Build boolean shape: union of two tubes
43  const GeoTube* tube1 = new GeoTube(0.,2000.*Gaudi::Units::mm,188750.*Gaudi::Units::mm);
44  GeoTube* tube2 = new GeoTube(0.,2000.*Gaudi::Units::mm,188750.*Gaudi::Units::mm);
45  GeoTrf::TranslateZ3D xfRelativeA(211250.*Gaudi::Units::mm);
46  GeoTrf::TranslateZ3D xfRelativeC(-211250.*Gaudi::Units::mm);
47 
48  const GeoShapeShift& envShape1 = (*tube1)<<xfRelativeA;
49  const GeoShapeUnion& envShape = envShape1.add((*tube2)<<xfRelativeC);
50 
51  GeoLogVol* lvEnv = new GeoLogVol("ForDetEnvelope",&envShape,air);
52  GeoPhysVol* pvEnv = new GeoPhysVol(lvEnv);
53 
54  GeoNameTag *tag = new GeoNameTag("ForDetEnvelope");
55  world->add(tag);
56  world->add(pvEnv);
57 
60 }
61 
62 
64 {
65  return m_detectorManager;
66 }
67 
ForDetEnvelopeFactory::ForDetEnvelopeFactory
ForDetEnvelopeFactory(StoreGateSvc *pDetStore)
Definition: ForDetEnvelopeFactory.cxx:22
ForDetEnvelopeManager
Definition: ForDetEnvelopeManager.h:14
ForDetEnvelopeFactory::m_detectorManager
ForDetEnvelopeManager * m_detectorManager
Definition: ForDetEnvelopeFactory.h:38
ForDetEnvelopeFactory::getDetectorManager
virtual const ForDetEnvelopeManager * getDetectorManager() const override
Definition: ForDetEnvelopeFactory.cxx:63
ForDetEnvelopeFactory::m_detectorStore
StoreGateSvc * m_detectorStore
Definition: ForDetEnvelopeFactory.h:41
StoreGateSvc::retrieve
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
ForDetEnvelopeFactory::m_materialManager
StoredMaterialManager * m_materialManager
Definition: ForDetEnvelopeFactory.h:40
ForDetEnvelopeFactory::create
virtual void create(GeoPhysVol *world) override
Definition: ForDetEnvelopeFactory.cxx:33
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
ForDetEnvelopeManager::addTreeTop
void addTreeTop(PVLink)
Definition: ForDetEnvelopeManager.cxx:26
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
StoredMaterialManager.h
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
ForDetEnvelopeFactory.h
StoredMaterialManager::getMaterial
virtual const GeoMaterial * getMaterial(const std::string &name)=0
ForDetEnvelopeFactory::~ForDetEnvelopeFactory
~ForDetEnvelopeFactory()
Definition: ForDetEnvelopeFactory.cxx:29
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
StoreGateSvc.h