ATLAS Offline Software
TRT_StrawAlignDbSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRT_STRAWALIGNDBSVC_H
6 #define TRT_STRAWALIGNDBSVC_H
7 
12 #include <vector>
15 #include "GaudiKernel/ToolHandle.h"
16 #include "StoreGate/DataHandle.h"
17 #include "InDetIdentifier/TRT_ID.h"
20 #include "StoreGate/StoreGateSvc.h"
21 #include "GaudiKernel/ServiceHandle.h"
22 
23 ATLAS_NO_CHECK_FILE_THREAD_SAFETY; // This class uses const_cast, regFcn (callback) and DataHandle. Legacy code
24 
26 namespace InDetDD {
27  class TRT_DetectorManager ;
28 }
29 
34 {
35  public:
36 
38  TRT_StrawAlignDbSvc( const std::string& name, ISvcLocator* pSvcLocator );
39 
42 
44  virtual StatusCode initialize();
45 
47  virtual StatusCode finalize();
48 
50  virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvIf ) ;
51 
52  // methods to access straw alignment data
53 
56 
57  // methods to set straw alignment data
58 
60  void setDx( const TRTCond::ExpandedIdentifier& id, float dx1, float dx2, float dxerr ) ;
61 
62  // methods for persistence
63 
65  StatusCode writeTextFile(const std::string& file) const;
66 
68  virtual StatusCode readTextFile(const std::string& file);
70  const std::string& file);
71 
74 
76  StatusCode registerObjects(std::string tag, int run1, int event1, int run2, int event2) const;
77 
78 
81  const StrawDxContainer* getConstDxContainer() const ;
82 
85 
87  float getDx1( const Identifier& id ) const ;
89  float getDx2( const Identifier& id ) const ;
91  float getDxErr( const Identifier& id ) const ;
93  void setDx( const Identifier& id, float dx1, float dx2, float dxerr ) ;
94 
95  private:
96 
98  std::string m_par_dxcontainerkey;
99  std::string m_par_strawtextfile;
101  const TRT_ID* m_trtid;
103 
104  // pointers to calibration data
106 
107  ToolHandle<IAthenaOutputStreamTool> m_streamer;
108 
109 };
110 
112 // inline methods
114 
117  return const_cast<StrawDxContainer*>(rc) ;
118 }
119 
122 {
123  const StrawDxContainer* rc = nullptr;
124  if (m_dxcontainer.isValid())
125  rc = m_dxcontainer.cptr();
126  else {
127  if (m_detStore->retrieve (rc, m_par_dxcontainerkey).isFailure()) {
128  ATH_MSG_ERROR("Cannot retrieve " << m_par_dxcontainerkey);
129  }
130  }
131  return rc;
132  return const_cast<StrawDxContainer*>(rc) ;
133 }
134 
137 {
140  m_trtid->straw(id),level ) ;
141 }
142 
143 
144 inline void
145 TRT_StrawAlignDbSvc::setDx( const TRTCond::ExpandedIdentifier& id,float dx1, float dx2, float dxerr )
146 {
147  //std::cout << " Setting the dx1 to " << dx1 << " dx2 to " << dx2 << std::endl;
148  getDxContainer()->setDx( id, dx1, dx2, dxerr);
149 }
150 
151 inline float
153 {
155 }
156 
157 inline float
159 {
161 }
162 
163 inline float
165 {
167 }
168 
169 inline void
170 TRT_StrawAlignDbSvc::setDx( const Identifier& id,float dx1, float dx2, float dxerr )
171 {
172  setDx( trtcondid(id,TRTCond::ExpandedIdentifier::STRAW), dx1, dx2, dxerr) ;
173 }
174 
175 inline StatusCode TRT_StrawAlignDbSvc::queryInterface( const InterfaceID& riid, void** ppvIf )
176 {
177  if ( riid == ITRT_StrawAlignDbSvc::interfaceID() ) {
178  *ppvIf = dynamic_cast<ITRT_StrawAlignDbSvc*>(this);
179  addRef();
180  return StatusCode::SUCCESS;
181  }
182  return AthService::queryInterface( riid, ppvIf );
183 }
184 
185 #endif // TRT_STRAWALIGNDBSVC_H
TRT_StrawAlignDbSvc::m_trtman
const InDetDD::TRT_DetectorManager * m_trtman
id helper
Definition: TRT_StrawAlignDbSvc.h:102
TRT_StrawAlignDbSvc::getConstDxContainer
const StrawDxContainer * getConstDxContainer() const
Definition: TRT_StrawAlignDbSvc.h:121
TRT_StrawAlignDbSvc::m_streamer
ToolHandle< IAthenaOutputStreamTool > m_streamer
persistifiable container
Definition: TRT_StrawAlignDbSvc.h:107
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:145
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
ITRT_StrawAlignDbSvc::interfaceID
static const InterfaceID & interfaceID()
Definition: ITRT_StrawAlignDbSvc.h:54
TRT_StrawAlignDbSvc::m_par_forcecallback
bool m_par_forcecallback
input text file
Definition: TRT_StrawAlignDbSvc.h:100
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:70
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:164
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:902
TRT_StrawAlignDbSvc::m_dxcontainer
const DataHandle< StrawDxContainer > m_dxcontainer
detector manager
Definition: TRT_StrawAlignDbSvc.h:105
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
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
maskDeadModules.run1
run1
Definition: maskDeadModules.py:40
AthService
Definition: AthService.h:32
TRT_StrawAlignDbSvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition: TRT_StrawAlignDbSvc.h:97
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:866
TRT_ID::straw_layer
int straw_layer(const Identifier &id) const
Definition: TRT_ID.h:893
TRT_ID::layer_or_wheel
int layer_or_wheel(const Identifier &id) const
Definition: TRT_ID.h:884
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
Definition: TRT_StrawAlignDbSvc.h:23
ReadCellNoiseFromCoolCompare.run2
run2
Definition: ReadCellNoiseFromCoolCompare.py:53
TRT_StrawAlignDbSvc::m_par_strawtextfile
std::string m_par_strawtextfile
folder name
Definition: TRT_StrawAlignDbSvc.h:99
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
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:136
TRTCond::ExpandedIdentifier::STRAW
@ STRAW
Definition: InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
TRTCond::StrawDxContainer
Definition: StrawDxContainer.h:109
DataHandle< StrawDxContainer >
TRTCond::StrawDxContainerTemplate::getDx1
float getDx1(const ExpandedIdentifier &id) const
access to unpacked dx
Definition: StrawDxContainer.h:61
TRT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: TRT_ID.h:875
TRT_ID
Definition: TRT_ID.h:84
InDetDD::TRT_DetectorManager
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
Definition: TRT_DetectorManager.h:69
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
TRT_StrawAlignDbSvc::getDxContainer
StrawDxContainer * getDxContainer() const
access to containers
Definition: TRT_StrawAlignDbSvc.h:115
TRT_StrawAlignDbSvc::streamOutObjects
StatusCode streamOutObjects() const
write the calibration objects to output, after cleaning
Definition: TRT_StrawAlignDbSvc.cxx:163
TRTCond::StrawDxContainerTemplate::getDxErr
float getDxErr(const ExpandedIdentifier &id) const
access to unpacked dx error
Definition: StrawDxContainer.h:70
TRT_StrawAlignDbSvc::queryInterface
virtual StatusCode queryInterface(const InterfaceID &riid, void **ppvIf)
access to interfaceID
Definition: TRT_StrawAlignDbSvc.h:175
ITRT_StrawAlignDbSvc
Definition: ITRT_StrawAlignDbSvc.h:31
TRT_StrawAlignDbSvc::m_trtid
const TRT_ID * m_trtid
force callback to manager
Definition: TRT_StrawAlignDbSvc.h:101
TRT_StrawAlignDbSvc::getDx2
float getDx2(const Identifier &id) const
get shift far from electronics
Definition: TRT_StrawAlignDbSvc.h:158
AthService.h
TRTCond::StrawDxContainerTemplate::setDx
void setDx(const ExpandedIdentifier &id, float dx1, float dx2, float dxerr)
set dx
Definition: StrawDxContainer.h:76
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
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:152
StoreGateSvc.h
StrawDxContainer.h
Class for storing/accessing trt endpoint corrections data.
TRTCond::StrawDxContainerTemplate::getDx2
float getDx2(const ExpandedIdentifier &id) const
Definition: StrawDxContainer.h:65
TRT_StrawAlignDbSvc
Definition: TRT_StrawAlignDbSvc.h:34
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:98