ATLAS Offline Software
TRT_StrawAlignDbSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRT_CONDITIONSSERVICES_TRT_STRAWALIGNDBSVC_H
6 #define TRT_CONDITIONSSERVICES_TRT_STRAWALIGNDBSVC_H
7 
13 #include <vector>
16 #include "GaudiKernel/ToolHandle.h"
17 #include "StoreGate/DataHandle.h"
18 #include "InDetIdentifier/TRT_ID.h"
21 #include "StoreGate/StoreGateSvc.h"
22 #include "GaudiKernel/ServiceHandle.h"
23 
24 ATLAS_NO_CHECK_FILE_THREAD_SAFETY; // This class uses const_cast, regFcn (callback) and DataHandle. Legacy code
25 
27 namespace InDetDD {
28  class TRT_DetectorManager ;
29 }
30 
34 class TRT_StrawAlignDbSvc: public extends<AthService, ITRT_StrawAlignDbSvc>
35 {
36  public:
37 
39  TRT_StrawAlignDbSvc( const std::string& name, ISvcLocator* pSvcLocator );
40 
43 
45  virtual StatusCode initialize();
46 
48  virtual StatusCode finalize();
49 
50  // methods to access straw alignment data
51 
54 
55  // methods to set straw alignment data
56 
58  void setDx( const TRTCond::ExpandedIdentifier& id, float dx1, float dx2, float dxerr ) ;
59 
60  // methods for persistence
61 
63  StatusCode writeTextFile(const std::string& file) const;
64 
66  virtual StatusCode readTextFile(const std::string& file);
67  StatusCode readTextFile(StrawDxContainer* dxcontainer,
68  const std::string& file);
69 
72 
74  StatusCode registerObjects(std::string tag, int run1, int event1, int run2, int event2) const;
75 
76 
78  StrawDxContainer* getDxContainer() const ;
79  const StrawDxContainer* getConstDxContainer() const ;
80 
83 
85  float getDx1( const Identifier& id ) const ;
87  float getDx2( const Identifier& id ) const ;
89  float getDxErr( const Identifier& id ) const ;
91  void setDx( const Identifier& id, float dx1, float dx2, float dxerr ) ;
92 
93  private:
94 
96  std::string m_par_dxcontainerkey;
97  std::string m_par_strawtextfile;
99  const TRT_ID* m_trtid;
101 
102  // pointers to calibration data
104 
105  ToolHandle<IAthenaOutputStreamTool> m_streamer;
106 
107 };
108 
110 // inline methods
112 
113 inline TRT_StrawAlignDbSvc::StrawDxContainer* TRT_StrawAlignDbSvc::getDxContainer() const {
114  const StrawDxContainer* rc = getConstDxContainer();
115  return const_cast<StrawDxContainer*>(rc) ;
116 }
117 
118 inline const TRT_StrawAlignDbSvc::StrawDxContainer*
120 {
121  const StrawDxContainer* rc = nullptr;
122  if (m_dxcontainer.isValid())
123  rc = m_dxcontainer.cptr();
124  else {
125  if (m_detStore->retrieve (rc, m_par_dxcontainerkey).isFailure()) {
126  ATH_MSG_ERROR("Cannot retrieve " << m_par_dxcontainerkey);
127  }
128  }
129  return rc;
130  return const_cast<StrawDxContainer*>(rc) ;
131 }
132 
135 {
138  m_trtid->straw(id),level ) ;
139 }
140 
141 
142 inline void
143 TRT_StrawAlignDbSvc::setDx( const TRTCond::ExpandedIdentifier& id,float dx1, float dx2, float dxerr )
144 {
145  //std::cout << " Setting the dx1 to " << dx1 << " dx2 to " << dx2 << std::endl;
146  getDxContainer()->setDx( id, dx1, dx2, dxerr);
147 }
148 
149 inline float
151 {
153 }
154 
155 inline float
157 {
159 }
160 
161 inline float
163 {
165 }
166 
167 inline void
168 TRT_StrawAlignDbSvc::setDx( const Identifier& id,float dx1, float dx2, float dxerr )
169 {
170  setDx( trtcondid(id,TRTCond::ExpandedIdentifier::STRAW), dx1, dx2, dxerr) ;
171 }
172 
173 #endif // TRT_STRAWALIGNDBSVC_H
TRT_StrawAlignDbSvc::m_trtman
const InDetDD::TRT_DetectorManager * m_trtman
id helper
Definition: TRT_StrawAlignDbSvc.h:100
TRT_StrawAlignDbSvc::getConstDxContainer
const StrawDxContainer * getConstDxContainer() const
Definition: TRT_StrawAlignDbSvc.h:119
TRT_StrawAlignDbSvc::m_streamer
ToolHandle< IAthenaOutputStreamTool > m_streamer
persistifiable container
Definition: TRT_StrawAlignDbSvc.h:105
TRT_StrawAlignDbSvc::setDx
void setDx(const TRTCond::ExpandedIdentifier &id, float dx1, float dx2, float dxerr)
set endpoints for a TRTCond::ExpandedIdentifier
Definition: TRT_StrawAlignDbSvc.h:143
TRT_StrawAlignDbSvc::IOVCallBack
StatusCode IOVCallBack(IOVSVC_CALLBACK_ARGS)
IOV call back for dx objects. normally this doesn't do anything.
Definition: TRT_StrawAlignDbSvc.cxx:206
TRT_StrawAlignDbSvc::m_par_forcecallback
bool m_par_forcecallback
input text file
Definition: TRT_StrawAlignDbSvc.h:98
DataHandle::cptr
const_pointer_type cptr() const
safer explicit ptr accessor
IAthenaOutputStreamTool
This is a tool that allows streaming out of DataObjects. This has been factorized out from AthenaOutp...
Definition: IAthenaOutputStreamTool.h:69
TRT_ID.h
This is an Identifier helper class for the TRT subdetector. This class is a factory for creating comp...
IOVSVC_CALLBACK_ARGS
#define IOVSVC_CALLBACK_ARGS
short hand for IOVSvc call back argument list, to be used when no access to formal arguments is neede...
Definition: IOVSvcDefs.h:24
DataHandle.h
TRT_StrawAlignDbSvc::getDxErr
float getDxErr(const Identifier &id) const
get error on shift
Definition: TRT_StrawAlignDbSvc.h:162
TRT_StrawAlignDbSvc::readTextFile
virtual StatusCode readTextFile(const std::string &file)
read calibration from text file into TDS
Definition: TRT_StrawAlignDbSvc.cxx:124
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
TRT_StrawAlignDbSvc::writeTextFile
StatusCode writeTextFile(const std::string &file) const
write calibration constants to flat text file
Definition: TRT_StrawAlignDbSvc.cxx:89
TRT_StrawAlignDbSvc::TRT_StrawAlignDbSvc
TRT_StrawAlignDbSvc(const std::string &name, ISvcLocator *pSvcLocator)
constructor
Definition: TRT_StrawAlignDbSvc.cxx:27
ITRT_StrawAlignDbSvc.h
abstract interface to TRT straw alignment constants
TRT_ID::straw
int straw(const Identifier &id) const
Definition: TRT_ID.h:896
TRT_StrawAlignDbSvc::m_dxcontainer
const DataHandle< StrawDxContainer > m_dxcontainer
detector manager
Definition: TRT_StrawAlignDbSvc.h:103
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TRT_StrawAlignDbSvc::~TRT_StrawAlignDbSvc
virtual ~TRT_StrawAlignDbSvc()
destructor
TRT_StrawAlignDbSvc::registerObjects
StatusCode registerObjects(std::string tag, int run1, int event1, int run2, int event2) const
register calibration objects with the IoV service
Definition: TRT_StrawAlignDbSvc.cxx:186
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
maskDeadModules.run1
run1
Definition: maskDeadModules.py:40
TRT_StrawAlignDbSvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition: TRT_StrawAlignDbSvc.h:95
file
TFile * file
Definition: tile_monitor.h:29
DataHandle::isValid
bool isValid() const
RETRIEVES the DO to check it is valid and unlocked.
TRT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: TRT_ID.h:860
TRT_ID::straw_layer
int straw_layer(const Identifier &id) const
Definition: TRT_ID.h:887
TRT_ID::layer_or_wheel
int layer_or_wheel(const Identifier &id) const
Definition: TRT_ID.h:878
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
Definition: TRT_StrawAlignDbSvc.h:24
ReadCellNoiseFromCoolCompare.run2
run2
Definition: ReadCellNoiseFromCoolCompare.py:53
TRT_StrawAlignDbSvc::m_par_strawtextfile
std::string m_par_strawtextfile
folder name
Definition: TRT_StrawAlignDbSvc.h:97
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TRT_StrawAlignDbSvc::trtcondid
TRTCond::ExpandedIdentifier trtcondid(const Identifier &id, int level=TRTCond::ExpandedIdentifier::STRAW) const
create an TRTCond::ExpandedIdentifier from a TRTID identifier
Definition: TRT_StrawAlignDbSvc.h:134
TRTCond::ExpandedIdentifier::STRAW
@ STRAW
Definition: InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
DataHandle< StrawDxContainer >
TRT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: TRT_ID.h:869
TRT_ID
Definition: TRT_ID.h:82
InDetDD::TRT_DetectorManager
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
Definition: TRT_DetectorManager.h:63
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
TRT_StrawAlignDbSvc::getDxContainer
StrawDxContainer * getDxContainer() const
access to containers
Definition: TRT_StrawAlignDbSvc.h:113
TRT_StrawAlignDbSvc::streamOutObjects
StatusCode streamOutObjects() const
write the calibration objects to output, after cleaning
Definition: TRT_StrawAlignDbSvc.cxx:163
TRT_StrawAlignDbSvc::m_trtid
const TRT_ID * m_trtid
force callback to manager
Definition: TRT_StrawAlignDbSvc.h:99
TRT_StrawAlignDbSvc::getDx2
float getDx2(const Identifier &id) const
get shift far from electronics
Definition: TRT_StrawAlignDbSvc.h:156
AthService.h
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:23
TRT_StrawAlignDbSvc::finalize
virtual StatusCode finalize()
tool finalize
Definition: TRT_StrawAlignDbSvc.cxx:83
TRTCond::ExpandedIdentifier
Identifier for TRT detector elements in the conditions code.
Definition: InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:30
checker_macros.h
Define macros for attributes used to control the static checker.
TRT_StrawAlignDbSvc::getDx1
float getDx1(const Identifier &id) const
get shift near electronics
Definition: TRT_StrawAlignDbSvc.h:150
StoreGateSvc.h
StrawDxContainer.h
Class for storing/accessing trt endpoint corrections data.
TRT_StrawAlignDbSvc
Definition: TRT_StrawAlignDbSvc.h:35
TRT_StrawAlignDbSvc::initialize
virtual StatusCode initialize()
tool initialize
Definition: TRT_StrawAlignDbSvc.cxx:49
ServiceHandle< StoreGateSvc >
TRT_StrawAlignDbSvc::m_par_dxcontainerkey
std::string m_par_dxcontainerkey
Definition: TRT_StrawAlignDbSvc.h:96
Identifier
Definition: IdentifierFieldParser.cxx:14