ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
LArGeo::LArDetectorFactoryTBEC Class Reference

#include <LArDetectorFactoryTBEC.h>

Inheritance diagram for LArGeo::LArDetectorFactoryTBEC:
Collaboration diagram for LArGeo::LArDetectorFactoryTBEC:

Public Member Functions

 LArDetectorFactoryTBEC ()
 
virtual ~LArDetectorFactoryTBEC ()
 
virtual void create (GeoPhysVol *world)
 
virtual const LArDetectorManagergetDetectorManager () const
 
void setECVisLimit (int maxCell)
 

Private Member Functions

const LArDetectorFactoryTBECoperator= (const LArDetectorFactoryTBEC &right)
 
 LArDetectorFactoryTBEC (const LArDetectorFactoryTBEC &right)
 

Private Attributes

LArDetectorManagerm_detectorManager
 
int m_ecVisLimit
 

Detailed Description

Definition at line 13 of file LArDetectorFactoryTBEC.h.

Constructor & Destructor Documentation

◆ LArDetectorFactoryTBEC() [1/2]

LArGeo::LArDetectorFactoryTBEC::LArDetectorFactoryTBEC ( )

Definition at line 37 of file LArDetectorFactoryTBEC.cxx.

38  : m_detectorManager(nullptr),
39  m_ecVisLimit(-1)
40 {}

◆ ~LArDetectorFactoryTBEC()

LArGeo::LArDetectorFactoryTBEC::~LArDetectorFactoryTBEC ( )
virtualdefault

◆ LArDetectorFactoryTBEC() [2/2]

LArGeo::LArDetectorFactoryTBEC::LArDetectorFactoryTBEC ( const LArDetectorFactoryTBEC right)
private

Member Function Documentation

◆ create()

void LArGeo::LArDetectorFactoryTBEC::create ( GeoPhysVol *  world)
virtual

Definition at line 48 of file LArDetectorFactoryTBEC.cxx.

49 {
50 
51  // V.N : Patch LAr materials ??? is this needed?
52  VDetectorParameters::SetInstance(std::make_unique<LArGeo::RAL>());
53 
54  EMECDetectorManager *emecDetectorManager = new EMECDetectorManager();
55 
56 
57  // Get access to the material manager:
58 
59  ISvcLocator *svcLocator = Gaudi::svcLocator();
60  IMessageSvc * msgSvc;
61  if (svcLocator->service("MessageSvc", msgSvc, true )==StatusCode::FAILURE) {
62  throw std::runtime_error("Error in LAr::DetectorFactor, cannot access MessageSvc");
63  }
64 
65  MsgStream log(msgSvc, "LAr::DetectorFactory");
66 
67  log << "++++++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
68  log << "+ +" << std::endl;
69  log << "+ HELLO from LAr::DetectorFactoryTBEC +" << std::endl;
70  log << "+ +" << std::endl;
71  log << "+++++++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
72 
73 
75  if (svcLocator->service("DetectorStore", detStore, false )==StatusCode::FAILURE) {
76  throw std::runtime_error("Error in LArDetectorFactoryTBEC, cannot access DetectorStore");
77  }
78 
79  // V.N : Patch LAr materials
80  LArMaterialManager lArMaterialManager(detStore);
81  lArMaterialManager.buildMaterials();
82 
83  LArDetectorConstructionTBEC CryostatConstructionTB;
84  CryostatConstructionTB.setECVisLimit(m_ecVisLimit);
85 
86  PVLink Envelope = nullptr;
87 
88  Envelope = CryostatConstructionTB.GetEnvelope();
89 
90  a_container->add(new GeoNameTag("LAr"));
91  a_container->add(Envelope);
92 
93  double startPhi = M_PI/2-M_PI/8 - 2*M_PI/768/2;
94  double endPhi = M_PI/2+M_PI/8 - 2*M_PI/768/2;
95 
96  StoredPhysVol *sEmecOuterWheel;
97  if (StatusCode::SUCCESS==detStore->retrieve(sEmecOuterWheel, "EMEC_OUTER_WHEEL_POS" )) {
98  GeoIntrusivePtr<GeoFullPhysVol>emecEnvelope= sEmecOuterWheel->getPhysVol();
99 
100 
101  // Outer Wheel Sampling 1 Region 0:
102  {
103  CellBinning phiBinning(startPhi,endPhi,8,12);
104  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,1,0,0,phiBinning);
105  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
106  emecDetectorManager->addDetectorRegion(region);
107  }
108 
109  // Outer Wheel Sampling 1 Region 1:
110  {
111  CellBinning phiBinning(startPhi,endPhi,8,12);
112  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,1,1,0,phiBinning);
113  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
114  emecDetectorManager->addDetectorRegion(region);
115  }
116  // Outer Wheel Sampling 1 Region 2:
117  {
118  CellBinning phiBinning(startPhi,endPhi,8,12);
119  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,1,2,0,phiBinning);
120  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
121  emecDetectorManager->addDetectorRegion(region);
122  }
123  // Outer Wheel Sampling 1 Region 3:
124  {
125  CellBinning phiBinning(startPhi,endPhi,8,12);
126  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,1,3,0,phiBinning);
127  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
128  emecDetectorManager->addDetectorRegion(region);
129  }
130  // Outer Wheel Sampling 1 Region 4:
131  {
132  CellBinning phiBinning(startPhi,endPhi,8,12);
133  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,1,4,0,phiBinning);
134  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
135  emecDetectorManager->addDetectorRegion(region);
136  }
137  // Outer Wheel Sampling 1 Region 5:
138  {
139  CellBinning phiBinning(startPhi,endPhi,8,12);
140  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,1,5,0,phiBinning);
141  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
142  emecDetectorManager->addDetectorRegion(region);
143  }
144  // Outer Wheel Sampling 2 Region 0:
145  {
146  CellBinning phiBinning(startPhi,endPhi,32,48);
147  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,2,0,0,phiBinning);
148  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
149  emecDetectorManager->addDetectorRegion(region);
150  }
151  // Outer Wheel Sampling 2 Region 1:
152  {
153  CellBinning phiBinning(startPhi,endPhi,32,48);
154  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,2,1,0,phiBinning);
155  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
156  emecDetectorManager->addDetectorRegion(region);
157  }
158  // Outer Wheel Sampling 3 Region 0:
159  {
160  CellBinning phiBinning(startPhi,endPhi,32,48);
161  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,3,0,0,phiBinning);
162  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
163  emecDetectorManager->addDetectorRegion(region);
164  }
165  }
166  StoredPhysVol *sEmecInnerWheel;
167  if (StatusCode::SUCCESS==detStore->retrieve(sEmecInnerWheel, "EMEC_INNER_WHEEL_POS" )) {
168  GeoIntrusivePtr<GeoFullPhysVol>emecEnvelope= sEmecInnerWheel->getPhysVol();
169  // Inner Wheel Sampling 1 Region 0:
170  {
171  CellBinning phiBinning(startPhi,endPhi,8,12);
172  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,1,0,1,phiBinning);
173  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
174  emecDetectorManager->addDetectorRegion(region);
175  }
176  // Inner Wheel Sampling 2 Region 0:
177 
178  {
179  CellBinning phiBinning(startPhi,endPhi,8,12);
180  EMECDetDescr *detDescr = new EMECDetDescr(emecDetectorManager,2,0,1,phiBinning);
181  EMECDetectorRegion *region = new EMECDetectorRegion(emecEnvelope,detDescr,EMECDetectorRegion::POS);
182  emecDetectorManager->addDetectorRegion(region);
183  }
184  }
185 
186 
187  StoredPhysVol *sPresamplerEnvelope;
188  if (StatusCode::SUCCESS==detStore->retrieve(sPresamplerEnvelope, "PRESAMPLER_EC_POS" )) {
189  GeoIntrusivePtr<GeoFullPhysVol> PresamplerEnvelope=sPresamplerEnvelope->getPhysVol();
190  CellBinning presamplerPhiBinning(startPhi,endPhi,8,12);
191  EMECDetDescr *presamplerDetDescr = new EMECDetDescr(emecDetectorManager,0,0,0,presamplerPhiBinning);
192  EMECDetectorRegion *presamplerRegion = new EMECDetectorRegion(PresamplerEnvelope,presamplerDetDescr,EMECDetectorRegion::POS);
193  emecDetectorManager->addDetectorRegion(presamplerRegion);
194  }
195  detStore->record(emecDetectorManager,emecDetectorManager->getName()).ignore();
196  m_detectorManager = new LArDetectorManager(nullptr,emecDetectorManager,nullptr,nullptr);
198 
199 }

◆ getDetectorManager()

const LArDetectorManager * LArGeo::LArDetectorFactoryTBEC::getDetectorManager ( ) const
virtual

Definition at line 202 of file LArDetectorFactoryTBEC.cxx.

203 {
204  return m_detectorManager;
205 }

◆ operator=()

const LArDetectorFactoryTBEC& LArGeo::LArDetectorFactoryTBEC::operator= ( const LArDetectorFactoryTBEC right)
private

◆ setECVisLimit()

void LArGeo::LArDetectorFactoryTBEC::setECVisLimit ( int  maxCell)
inline

Definition at line 32 of file LArDetectorFactoryTBEC.h.

Member Data Documentation

◆ m_detectorManager

LArDetectorManager* LArGeo::LArDetectorFactoryTBEC::m_detectorManager
private

Definition at line 41 of file LArDetectorFactoryTBEC.h.

◆ m_ecVisLimit

int LArGeo::LArDetectorFactoryTBEC::m_ecVisLimit
private

Definition at line 42 of file LArDetectorFactoryTBEC.h.


The documentation for this class was generated from the following files:
Envelope
Definition: IDetectorGeometryTool.h:17
EMECDetectorManager::addDetectorRegion
void addDetectorRegion(const EMECDetectorRegion *region)
Add a new HEC Detector Region.
Definition: EMECDetectorManager.cxx:128
LArGeo::VDetectorParameters::SetInstance
static void SetInstance(std::unique_ptr< VDetectorParameters >)
Definition: VDetectorParameters.cxx:24
EMECDetectorManager
A manager class providing access to readout geometry information for the electromagnetic endcap calor...
Definition: EMECDetectorManager.h:31
EMECDetectorRegion::POS
@ POS
Definition: EMECDetectorRegion.h:33
M_PI
#define M_PI
Definition: ActiveFraction.h:11
EMECDetectorRegion
Definition: EMECDetectorRegion.h:30
EMECDetDescr
Descriptor for regions of the electromagnetic endcap calorimeter.
Definition: EMECDetDescr.h:27
StoredPhysVol
Definition: StoredPhysVol.h:27
LArGeo::LArDetectorFactoryTBEC::m_ecVisLimit
int m_ecVisLimit
Definition: LArDetectorFactoryTBEC.h:42
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
StoredPhysVol::getPhysVol
GeoFullPhysVol * getPhysVol()
Destructor.
Definition: StoredPhysVol.cxx:20
LArMaterialManager
Definition: LArMaterialManager.h:36
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
LArGeo::LArDetectorFactoryTBEC::m_detectorManager
LArDetectorManager * m_detectorManager
Definition: LArDetectorFactoryTBEC.h:41
LArDetectorManager
Stored in storegate. Provides access to EMB, EMEC, HEC and FCAL Detector Managers....
Definition: LArDetectorManager.h:26
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
maxCell
#define maxCell
LArDetectorManager::addTreeTop
void addTreeTop(PVConstLink treeTop)
Add a Tree Top.
Definition: LArDetectorManager.cxx:31