ATLAS Offline Software
Loading...
Searching...
No Matches
GetDetectorPositions Class Reference

#include <GetDetectorPositions.h>

Inheritance diagram for GetDetectorPositions:
Collaboration diagram for GetDetectorPositions:

Public Member Functions

 GetDetectorPositions (const std::string &name, ISvcLocator *pSvcLocator)
 Authors: John Alison johnd.nosp@m.a@he.nosp@m.p.upe.nosp@m.nn.e.nosp@m.du
StatusCode initialize ()
 initialize
StatusCode execute ()
 execute
StatusCode finalize ()
 Finalize.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Public Attributes

 job = AlgSequence()
 name
 DetailLevel
 OutputLevel

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void writePixelPositions ()
 Functions to get the data.
void writeSCTPositions ()
 Writing the SCT Positions.
void writeTRTPositions ()
 Writing the TRT positions (depends on the level of detail)
void writeSimpleTRTPositions ()
 Writing the Simple (not all straws) TRT Positions.
void writeDetailedTRTPositions (bool doDoubleSampling=false)
 Writing the Detailed (all straws) TRT Positions.
void writeTRTPositions (Identifier const &trtId)
 Write the TRT Positions.
void writeTwoTRTPositions (Identifier const &trtId)
 Write the TRT Positions, sampling each straw twice Allows the wire-by-wire alignment to be debugged.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

unsigned int m_detailLevel
 Name of the Output file.
bool m_doTRT
std::string m_outputFileName
std::ofstream m_outputFile
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollectionm_pixelDetEleCollKey {this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"}
 Pixel Data.
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollectionm_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
 SCT Data.
const PixelIDm_PixelHelper
 Tools.
const SCT_IDm_SCTHelper
const TRT_IDm_TRTHelper
const InDetDD::TRT_DetectorManagerm_TRTDetectorManager
int m_eventCount {-1}
 Counter.
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 34 of file GetDetectorPositions.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ GetDetectorPositions()

GetDetectorPositions::GetDetectorPositions ( const std::string & name,
ISvcLocator * pSvcLocator )

Authors: John Alison johnd.nosp@m.a@he.nosp@m.p.upe.nosp@m.nn.e.nosp@m.du

Date: 22 Aug 2008

Description: This algorithm loops over the Inner Detector elements and prints thier global positions to a text file Constructor ID Tools

Definition at line 40 of file GetDetectorPositions.cxx.

40 :
41 AthAlgorithm(name, pSvcLocator),
42 m_detailLevel(0),
43 m_doTRT(true),
44 m_outputFileName("IDgeometry.txt"),
45
47 m_PixelHelper(nullptr),
48 m_SCTHelper(nullptr),
49 m_TRTHelper(nullptr),
50 m_TRTDetectorManager(nullptr)
51
52{
53 declareProperty("OutputTextFile",m_outputFileName);
54 declareProperty("DetailLevel", m_detailLevel);
55 declareProperty("DoTRT", m_doTRT);
56}
Base class from which all concrete Athena algorithm classes should be derived.

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode GetDetectorPositions::execute ( )

execute

run only for one event

Definition at line 99 of file GetDetectorPositions.cxx.

99 {
100
101 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "execute() check global position" << endmsg;
102
103 //StatusCode sc = StatusCode::SUCCESS;
104 m_eventCount++;
105
107 if (m_eventCount!=0)
108 return StatusCode::SUCCESS;
109
110 std::cout << "========================================================================================" <<std::endl;
111 std::cout << "==================== Getting the Inner Detector Positions ==============================" <<std::endl;
112 std::cout << "========================================================================================" <<std::endl;
113
114 //Write pixel positions
115 writePixelPositions();
116
117 //Write SCT positions
118 writeSCTPositions();
119
120 //Write TRT positions
121 if(m_doTRT)
122 writeTRTPositions();
123
124 return StatusCode::SUCCESS;
125}
#define endmsg
MsgStream & msg
Definition testRead.cxx:32

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ finalize()

StatusCode GetDetectorPositions::finalize ( )

Finalize.

Close the file

Definition at line 128 of file GetDetectorPositions.cxx.

128 {
129 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "finalize()" << endmsg;
130
132 m_outputFile.close();
133
134 return StatusCode::SUCCESS;
135}

◆ initialize()

StatusCode GetDetectorPositions::initialize ( )

initialize

Retrieve TRT info

Retrieve SCT info

Retrieve Pixel info

Output text File

Definition at line 59 of file GetDetectorPositions.cxx.

59 {
60 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "initialize()" << endmsg;
61
63 if(m_doTRT){
64 if (detStore()->retrieve(m_TRTHelper, "TRT_ID").isFailure()) {
65 msg(MSG::FATAL) << "Could not get TRT ID helper" << endmsg;
66 return StatusCode::FAILURE;
67 }
68 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "got the TRT ID" << endmsg;
69
70 if ((detStore()->retrieve(m_TRTDetectorManager)).isFailure()) {
71 if(msgLvl(MSG::FATAL)) msg(MSG::FATAL) << "Problem retrieving TRT_DetectorManager" << endmsg;
72 return StatusCode::FAILURE;
73 }
74 }
75
77 if (detStore()->retrieve(m_SCTHelper, "SCT_ID").isFailure()) {
78 msg(MSG::FATAL) << "Could not get SCT ID helper" << endmsg;
79 return StatusCode::FAILURE;
80 }
81 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "got the SCT ID" << endmsg;
83
85 if (detStore()->retrieve(m_PixelHelper, "PixelID").isFailure()) {
86 msg(MSG::FATAL) << "Could not get Pixel ID helper" << endmsg;
87 return StatusCode::FAILURE;
88 }
89 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "got the Pixel ID" << endmsg;
91
93 m_outputFile.open((m_outputFileName).c_str());
94
95 return StatusCode::SUCCESS;
96}
#define ATH_CHECK
Evaluate an expression and check for errors.
const ServiceHandle< StoreGateSvc > & detStore() const
bool msgLvl(const MSG::Level lvl) const
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
Pixel Data.
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
SCT Data.
StatusCode initialize(bool used=true)
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg()

MsgStream & AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

◆ writeDetailedTRTPositions()

void GetDetectorPositions::writeDetailedTRTPositions ( bool doDoubleSampling = false)
private

Writing the Detailed (all straws) TRT Positions.

Definition at line 267 of file GetDetectorPositions.cxx.

267 {
268 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeDetailedTRTPositions()" << endmsg;
269
270 TRT_ID::const_expanded_id_iterator trtStrawIt = m_TRTHelper->straw_begin();
271 TRT_ID::const_expanded_id_iterator trtStrawItE = m_TRTHelper->straw_end();
272
273 for (; trtStrawIt != trtStrawItE; ++trtStrawIt) {
274 const ExpandedIdentifier& expId = (*trtStrawIt);
275
276 Identifier trtId = m_TRTHelper->straw_id(expId[2],
277 expId[3],
278 expId[4],
279 expId[5],
280 expId[6]);
281
282 if(doDoubleSampling)
283 writeTwoTRTPositions(trtId);
284 else
285 writeTRTPositions(trtId);
286 }
287
288 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "Leaving writeDetailedTRTPositions()" << endmsg;
289 return;
290}
MultiRange::const_identifier_factory const_expanded_id_iterator
Definition TRT_ID.h:88
const_expanded_id_iterator straw_begin() const
For straw ids, only expanded id iterators are available.
Definition TRT_ID.h:900
Identifier straw_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer, int straw) const
Three ways of getting id for a single straw:
Definition TRT_ID.h:575
const_expanded_id_iterator straw_end() const
Definition TRT_ID.h:908

◆ writePixelPositions()

void GetDetectorPositions::writePixelPositions ( )
private

Functions to get the data.

Writing the Pixel Positions.

Definition at line 138 of file GetDetectorPositions.cxx.

138 {
139 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writePixelPositions()" << endmsg;
140
141 SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> pixelDetEleHandle(m_pixelDetEleCollKey);
142 const InDetDD::SiDetectorElementCollection* elements{*pixelDetEleHandle};
143 if (not pixelDetEleHandle.isValid() or elements==nullptr) {
144 ATH_MSG_ERROR(m_pixelDetEleCollKey.fullKey() << " is not available.");
145 return;
146 }
147 //Loop over pixel elements
148 for (const InDetDD::SiDetectorElement* si_hit: *elements) {
149 Amg::Vector3D p3d = si_hit->center();
150
151 const IdentifierHash wafer_hash = si_hit->identifyHash();
152 const Identifier wafer_id = m_SCTHelper->wafer_id(wafer_hash);
153
154 int pix_barrel_ec = m_PixelHelper->barrel_ec(wafer_id);
155 int pix_layer_disk= m_PixelHelper->layer_disk(wafer_id);
156 int pix_phi_module= m_PixelHelper->phi_module(wafer_id);
157 int pix_eta_module = m_PixelHelper->eta_module(wafer_id);
158 int nPixPhi = m_PixelHelper->phi_index_max(wafer_id)+1;
159 int nPixEta = m_PixelHelper->eta_index_max(wafer_id)+1;
160 float pix_x = p3d.x();
161 float pix_y = p3d.y();
162 float pix_z = p3d.z();
163
164 m_outputFile << 1 << " "
165 << pix_barrel_ec << " "
166 << pix_layer_disk << " "
167 << pix_phi_module << " "
168 << pix_eta_module << " "
169 << pix_x << " "
170 << pix_y << " "
171 << pix_z << " "
172 << nPixPhi << " "
173 << nPixEta << " "
174 << std::endl;
175 }
176
177 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "Leaving writePixelPositions()" << endmsg;
178 return;
179}
const PixelID * m_PixelHelper
Tools.
Class to hold the SiDetectorElement objects to be put in the detector store.
int layer_disk(const Identifier &id) const
Definition PixelID.h:607
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition PixelID.h:600
int eta_module(const Identifier &id) const
Definition PixelID.h:632
int eta_index_max(const Identifier &id) const
Definition PixelID.cxx:162
int phi_index_max(const Identifier &id) const
Definition PixelID.cxx:143
int phi_module(const Identifier &id) const
Definition PixelID.h:625
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
Definition SCT_ID.h:459
Eigen::Matrix< double, 3, 1 > Vector3D

◆ writeSCTPositions()

void GetDetectorPositions::writeSCTPositions ( )
private

Writing the SCT Positions.

Definition at line 182 of file GetDetectorPositions.cxx.

182 {
183 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeSCTPositions()" << endmsg;
184
185 SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> sctDetEleHandle(m_SCTDetEleCollKey);
186 const InDetDD::SiDetectorElementCollection* elements{*sctDetEleHandle};
187 if (not sctDetEleHandle.isValid() or elements==nullptr) {
188 ATH_MSG_ERROR(m_SCTDetEleCollKey.fullKey() << " is not available.");
189 return;
190 }
191 //Loop over SCT elements
192 for (const InDetDD::SiDetectorElement* si_hit: *elements) {
193 Amg::Vector3D p3d = si_hit->center();
194
195 const IdentifierHash wafer_hash = si_hit->identifyHash();
196 const Identifier wafer_id = m_SCTHelper->wafer_id(wafer_hash);
197
198 int sct_barrel_ec = m_SCTHelper->barrel_ec(wafer_id);
199 int sct_layer_disk= m_SCTHelper->layer_disk(wafer_id);
200 int sct_phi_module= m_SCTHelper->phi_module(wafer_id);
201 int sct_eta_module = m_SCTHelper->eta_module(wafer_id);
202 int nStrips = m_SCTHelper->strip_max(wafer_id)+1;
203 float sct_x = p3d.x();
204 float sct_y = p3d.y();
205 float sct_z = p3d.z();
206
207 m_outputFile << 2 << " "
208 << sct_barrel_ec << " "
209 << sct_layer_disk << " "
210 << sct_phi_module << " "
211 << sct_eta_module << " "
212 << sct_x << " "
213 << sct_y << " "
214 << sct_z << " "
215 << nStrips << " "
216 << std::endl;
217 }
218
219 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "Leaving writeSCTPositions()" << endmsg;
220 return;
221}
int layer_disk(const Identifier &id) const
Definition SCT_ID.h:687
int strip_max(const Identifier &id) const
Definition SCT_ID.cxx:188
int phi_module(const Identifier &id) const
Definition SCT_ID.h:693
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition SCT_ID.h:681
int eta_module(const Identifier &id) const
Definition SCT_ID.h:699
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)

◆ writeSimpleTRTPositions()

void GetDetectorPositions::writeSimpleTRTPositions ( )
private

Writing the Simple (not all straws) TRT Positions.

Definition at line 251 of file GetDetectorPositions.cxx.

251 {
252 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeSimpleTRTPositions()" << endmsg;
253
254 //Loop over TRT elements
255 std::vector<Identifier>::const_iterator trtStrawLayIt = m_TRTHelper->straw_layer_begin();
256 std::vector<Identifier>::const_iterator trtStrawLayItE = m_TRTHelper->straw_layer_end();
257
258 for(; trtStrawLayIt != trtStrawLayItE; ++trtStrawLayIt ) {
259 writeTRTPositions(*trtStrawLayIt);
260 }
261
262 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeTRTPositions()" << endmsg;
263 return;
264}
const_id_iterator straw_layer_end() const
Definition TRT_ID.h:892
const_id_iterator straw_layer_begin() const
Iterators over full set of straw_layer ids. Straw_layer ids are sorted.
Definition TRT_ID.h:884

◆ writeTRTPositions() [1/2]

void GetDetectorPositions::writeTRTPositions ( )
private

Writing the TRT positions (depends on the level of detail)

Definition at line 224 of file GetDetectorPositions.cxx.

224 {
225 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeTRTPositions()" << endmsg;
226
227 //Write TRT positions
228 switch(m_detailLevel) {
229
230 case 0 :
231 // Only sample each 32nd in phi
232 writeSimpleTRTPositions();
233 break;
234
235 case 1 :
236 // Sample each straw
237 writeDetailedTRTPositions();
238 break;
239
240 case 2 :
241 // Sample each straw twice
242 writeDetailedTRTPositions(true);
243 break;
244 }
245
246 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeTRTPositions()" << endmsg;
247 return;
248}

◆ writeTRTPositions() [2/2]

void GetDetectorPositions::writeTRTPositions ( Identifier const & trtId)
private

Write the TRT Positions.

Definition at line 293 of file GetDetectorPositions.cxx.

293 {
294 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeTRTPositions()" << endmsg;
295
296 const Amg::Vector3D &p3d = m_TRTDetectorManager->getElement( trtId )->center(trtId);
297
298
299 int trt_barrel_ec = m_TRTHelper->barrel_ec(trtId);
300 int trt_layer_or_wheel = m_TRTHelper->layer_or_wheel(trtId);
301 int trt_phi_module = m_TRTHelper->phi_module(trtId);
302 int trt_straw_layer = m_TRTHelper->straw_layer(trtId);
303 int trt_straw = m_TRTHelper->straw(trtId);
304 float trt_x = p3d.x();
305 float trt_y = p3d.y();
306 float trt_z = p3d.z();
307
308 m_outputFile << 3 << " "
309 << trt_barrel_ec << " "
310 << trt_layer_or_wheel << " "
311 << trt_phi_module << " "
312 << trt_straw_layer << " ";
313
314 if(m_detailLevel)
315 m_outputFile << trt_straw << " ";
316
317 m_outputFile << trt_x << " "
318 << trt_y << " "
319 << trt_z << " "
320 << std::endl;
321
322 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "Leaving writeTRTPositions()" << endmsg;
323 return;
324}
virtual const Amg::Vector3D & center() const override final
Element Surface: center of a straw layer.
const TRT_BaseElement * getElement(Identifier id) const
Access Elements Generically---------------------------------------------—.
int phi_module(const Identifier &id) const
Definition TRT_ID.h:806
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition TRT_ID.h:797
int layer_or_wheel(const Identifier &id) const
Definition TRT_ID.h:815
int straw(const Identifier &id) const
Definition TRT_ID.h:833
int straw_layer(const Identifier &id) const
Definition TRT_ID.h:824

◆ writeTwoTRTPositions()

void GetDetectorPositions::writeTwoTRTPositions ( Identifier const & trtId)
private

Write the TRT Positions, sampling each straw twice Allows the wire-by-wire alignment to be debugged.

Definition at line 331 of file GetDetectorPositions.cxx.

331 {
332 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeTwoTRTPositions()" << endmsg;
333
334 int trt_barrel_ec = m_TRTHelper->barrel_ec(trtId);
335 int trt_layer_or_wheel = m_TRTHelper->layer_or_wheel(trtId);
336 int trt_phi_module = m_TRTHelper->phi_module(trtId);
337 int trt_straw_layer = m_TRTHelper->straw_layer(trtId);
338 int trt_straw = m_TRTHelper->straw(trtId);
339
340 // We sample the straw position at two places
341 Amg::Vector3D posZSample(0,0,100);
342 Amg::Vector3D firstSampling = m_TRTDetectorManager->getElement( trtId )->strawTransform(trt_straw) * posZSample;
343 float first_X = firstSampling.x();
344 float first_Y = firstSampling.y();
345 float first_Z = firstSampling.z();
346
347 Amg::Vector3D negZSample(0,0,-100);
348 Amg::Vector3D secondSampling = m_TRTDetectorManager->getElement( trtId )->strawTransform(trt_straw) * negZSample;
349 float second_X = secondSampling.x();
350 float second_Y = secondSampling.y();
351 float second_Z = secondSampling.z();
352
353 m_outputFile << 3 << " "
354 << trt_barrel_ec << " "
355 << trt_layer_or_wheel << " "
356 << trt_phi_module << " "
357 << trt_straw_layer << " "
358 << trt_straw << " "
359 << first_X << " "
360 << first_Y << " "
361 << first_Z << " "
362 << std::endl;
363
364 m_outputFile << 3 << " "
365 << trt_barrel_ec << " "
366 << trt_layer_or_wheel << " "
367 << trt_phi_module << " "
368 << trt_straw_layer << " "
369 << trt_straw << " "
370 << second_X << " "
371 << second_Y << " "
372 << second_Z << " "
373 << std::endl;
374
375
376 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "Leaving writeTRTPositions()" << endmsg;
377 return;
378}
const Amg::Transform3D & strawTransform(unsigned int straw) const
Straw transform - fast access in array, in Tracking frame: Amg.

Member Data Documentation

◆ DetailLevel

GetDetectorPositions.DetailLevel

Definition at line 12 of file GetDetectorPositions.py.

◆ job

GetDetectorPositions.job = AlgSequence()

Definition at line 7 of file GetDetectorPositions.py.

◆ m_detailLevel

unsigned int GetDetectorPositions::m_detailLevel
private

Name of the Output file.

Definition at line 55 of file GetDetectorPositions.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doTRT

bool GetDetectorPositions::m_doTRT
private

Definition at line 56 of file GetDetectorPositions.h.

◆ m_eventCount

int GetDetectorPositions::m_eventCount {-1}
private

Counter.

Definition at line 75 of file GetDetectorPositions.h.

75{-1};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_outputFile

std::ofstream GetDetectorPositions::m_outputFile
private

Definition at line 58 of file GetDetectorPositions.h.

◆ m_outputFileName

std::string GetDetectorPositions::m_outputFileName
private

Definition at line 57 of file GetDetectorPositions.h.

◆ m_pixelDetEleCollKey

SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> GetDetectorPositions::m_pixelDetEleCollKey {this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"}
private

Pixel Data.

Definition at line 61 of file GetDetectorPositions.h.

61{this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"};

◆ m_PixelHelper

const PixelID* GetDetectorPositions::m_PixelHelper
private

Tools.

Definition at line 67 of file GetDetectorPositions.h.

◆ m_SCTDetEleCollKey

SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> GetDetectorPositions::m_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
private

SCT Data.

Definition at line 64 of file GetDetectorPositions.h.

64{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};

◆ m_SCTHelper

const SCT_ID* GetDetectorPositions::m_SCTHelper
private

Definition at line 69 of file GetDetectorPositions.h.

◆ m_TRTDetectorManager

const InDetDD::TRT_DetectorManager* GetDetectorPositions::m_TRTDetectorManager
private

Definition at line 72 of file GetDetectorPositions.h.

◆ m_TRTHelper

const TRT_ID* GetDetectorPositions::m_TRTHelper
private

Definition at line 71 of file GetDetectorPositions.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ name

GetDetectorPositions.name

Definition at line 11 of file GetDetectorPositions.py.

◆ OutputLevel

GetDetectorPositions.OutputLevel

Definition at line 17 of file GetDetectorPositions.py.


The documentation for this class was generated from the following files: