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 (const EventContext &ctx)
 execute
StatusCode finalize ()
 Finalize.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
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

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
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
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
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 33 of file GetDetectorPositions.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::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 41 of file GetDetectorPositions.cxx.

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

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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< Gaudi::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< Gaudi::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 ( const EventContext & ctx)
virtual

execute

run only for one event

Implements AthAlgorithm.

Definition at line 100 of file GetDetectorPositions.cxx.

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

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::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 & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode GetDetectorPositions::finalize ( )

Finalize.

Close the file

Definition at line 129 of file GetDetectorPositions.cxx.

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

◆ initialize()

StatusCode GetDetectorPositions::initialize ( )

initialize

Retrieve TRT info

Retrieve SCT info

Retrieve Pixel info

Output text File

Definition at line 60 of file GetDetectorPositions.cxx.

60 {
61 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "initialize()" << endmsg;
62
64 if(m_doTRT){
65 if (detStore()->retrieve(m_TRTHelper, "TRT_ID").isFailure()) {
66 msg(MSG::FATAL) << "Could not get TRT ID helper" << endmsg;
67 return StatusCode::FAILURE;
68 }
69 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "got the TRT ID" << endmsg;
70
71 if ((detStore()->retrieve(m_TRTDetectorManager)).isFailure()) {
72 if(msgLvl(MSG::FATAL)) msg(MSG::FATAL) << "Problem retrieving TRT_DetectorManager" << endmsg;
73 return StatusCode::FAILURE;
74 }
75 }
76
78 if (detStore()->retrieve(m_SCTHelper, "SCT_ID").isFailure()) {
79 msg(MSG::FATAL) << "Could not get SCT ID helper" << endmsg;
80 return StatusCode::FAILURE;
81 }
82 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "got the SCT ID" << endmsg;
84
86 if (detStore()->retrieve(m_PixelHelper, "PixelID").isFailure()) {
87 msg(MSG::FATAL) << "Could not get Pixel ID helper" << endmsg;
88 return StatusCode::FAILURE;
89 }
90 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "got the Pixel ID" << endmsg;
92
94 m_outputFile.open((m_outputFileName).c_str());
95
96 return StatusCode::SUCCESS;
97}
#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)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::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.

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 47 of file AthAlgorithm.h.

47{ return false; }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::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< Gaudi::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< Gaudi::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< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::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< Gaudi::Algorithm > >.

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

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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 }

◆ writeDetailedTRTPositions()

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

Writing the Detailed (all straws) TRT Positions.

Definition at line 268 of file GetDetectorPositions.cxx.

268 {
269 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeDetailedTRTPositions()" << endmsg;
270
271 TRT_ID::const_expanded_id_iterator trtStrawIt = m_TRTHelper->straw_begin();
272 TRT_ID::const_expanded_id_iterator trtStrawItE = m_TRTHelper->straw_end();
273
274 for (; trtStrawIt != trtStrawItE; ++trtStrawIt) {
275 const ExpandedIdentifier& expId = (*trtStrawIt);
276
277 Identifier trtId = m_TRTHelper->straw_id(expId[2],
278 expId[3],
279 expId[4],
280 expId[5],
281 expId[6]);
282
283 if(doDoubleSampling)
284 writeTwoTRTPositions(trtId);
285 else
286 writeTRTPositions(trtId);
287 }
288
289 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "Leaving writeDetailedTRTPositions()" << endmsg;
290 return;
291}
MultiRange::const_identifier_factory const_expanded_id_iterator
Definition TRT_ID.h:90
const_expanded_id_iterator straw_begin() const
For straw ids, only expanded id iterators are available.
Definition TRT_ID.h:895
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:583
const_expanded_id_iterator straw_end() const
Definition TRT_ID.h:903

◆ writePixelPositions()

void GetDetectorPositions::writePixelPositions ( )
private

Functions to get the data.

Writing the Pixel Positions.

Definition at line 139 of file GetDetectorPositions.cxx.

139 {
140 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writePixelPositions()" << endmsg;
141
142 SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> pixelDetEleHandle(m_pixelDetEleCollKey);
143 const InDetDD::SiDetectorElementCollection* elements{*pixelDetEleHandle};
144 if (not pixelDetEleHandle.isValid() or elements==nullptr) {
145 ATH_MSG_ERROR(m_pixelDetEleCollKey.fullKey() << " is not available.");
146 return;
147 }
148 //Loop over pixel elements
149 for (const InDetDD::SiDetectorElement* si_hit: *elements) {
150 Amg::Vector3D p3d = si_hit->center();
151
152 const IdentifierHash wafer_hash = si_hit->identifyHash();
153 const Identifier wafer_id = m_SCTHelper->wafer_id(wafer_hash);
154
155 int pix_barrel_ec = m_PixelHelper->barrel_ec(wafer_id);
156 int pix_layer_disk= m_PixelHelper->layer_disk(wafer_id);
157 int pix_phi_module= m_PixelHelper->phi_module(wafer_id);
158 int pix_eta_module = m_PixelHelper->eta_module(wafer_id);
159 int nPixPhi = m_PixelHelper->phi_index_max(wafer_id)+1;
160 int nPixEta = m_PixelHelper->eta_index_max(wafer_id)+1;
161 float pix_x = p3d.x();
162 float pix_y = p3d.y();
163 float pix_z = p3d.z();
164
165 m_outputFile << 1 << " "
166 << pix_barrel_ec << " "
167 << pix_layer_disk << " "
168 << pix_phi_module << " "
169 << pix_eta_module << " "
170 << pix_x << " "
171 << pix_y << " "
172 << pix_z << " "
173 << nPixPhi << " "
174 << nPixEta << " "
175 << std::endl;
176 }
177
178 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "Leaving writePixelPositions()" << endmsg;
179 return;
180}
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:602
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0).
Definition PixelID.h:595
int eta_module(const Identifier &id) const
Definition PixelID.h:627
int eta_index_max(const Identifier &id) const
Definition PixelID.cxx:163
int phi_index_max(const Identifier &id) const
Definition PixelID.cxx:144
int phi_module(const Identifier &id) const
Definition PixelID.h:620
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 183 of file GetDetectorPositions.cxx.

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

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

◆ writeTRTPositions() [1/2]

void GetDetectorPositions::writeTRTPositions ( )
private

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

Definition at line 225 of file GetDetectorPositions.cxx.

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

◆ writeTRTPositions() [2/2]

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

Write the TRT Positions.

Definition at line 294 of file GetDetectorPositions.cxx.

294 {
295 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "In writeTRTPositions()" << endmsg;
296
297 const Amg::Vector3D &p3d = m_TRTDetectorManager->getElement( trtId )->center(trtId);
298
299
300 int trt_barrel_ec = m_TRTHelper->barrel_ec(trtId);
301 int trt_layer_or_wheel = m_TRTHelper->layer_or_wheel(trtId);
302 int trt_phi_module = m_TRTHelper->phi_module(trtId);
303 int trt_straw_layer = m_TRTHelper->straw_layer(trtId);
304 int trt_straw = m_TRTHelper->straw(trtId);
305 float trt_x = p3d.x();
306 float trt_y = p3d.y();
307 float trt_z = p3d.z();
308
309 m_outputFile << 3 << " "
310 << trt_barrel_ec << " "
311 << trt_layer_or_wheel << " "
312 << trt_phi_module << " "
313 << trt_straw_layer << " ";
314
315 if(m_detailLevel)
316 m_outputFile << trt_straw << " ";
317
318 m_outputFile << trt_x << " "
319 << trt_y << " "
320 << trt_z << " "
321 << std::endl;
322
323 if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << "Leaving writeTRTPositions()" << endmsg;
324 return;
325}
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:801
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0).
Definition TRT_ID.h:792
int layer_or_wheel(const Identifier &id) const
Definition TRT_ID.h:810
int straw(const Identifier &id) const
Definition TRT_ID.h:828
int straw_layer(const Identifier &id) const
Definition TRT_ID.h:819

◆ 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 332 of file GetDetectorPositions.cxx.

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

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::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 55 of file GetDetectorPositions.h.

◆ m_eventCount

int GetDetectorPositions::m_eventCount {-1}
private

Counter.

Definition at line 74 of file GetDetectorPositions.h.

74{-1};

◆ m_evtStore

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

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_outputFile

std::ofstream GetDetectorPositions::m_outputFile
private

Definition at line 57 of file GetDetectorPositions.h.

◆ m_outputFileName

std::string GetDetectorPositions::m_outputFileName
private

Definition at line 56 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 60 of file GetDetectorPositions.h.

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

◆ m_PixelHelper

const PixelID* GetDetectorPositions::m_PixelHelper
private

Tools.

Definition at line 66 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 63 of file GetDetectorPositions.h.

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

◆ m_SCTHelper

const SCT_ID* GetDetectorPositions::m_SCTHelper
private

Definition at line 68 of file GetDetectorPositions.h.

◆ m_TRTDetectorManager

const InDetDD::TRT_DetectorManager* GetDetectorPositions::m_TRTDetectorManager
private

Definition at line 71 of file GetDetectorPositions.h.

◆ m_TRTHelper

const TRT_ID* GetDetectorPositions::m_TRTHelper
private

Definition at line 70 of file GetDetectorPositions.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::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: