ATLAS Offline Software
TRT_AlignDbSvc.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_ALIGNDBSVC_H
6 #define TRT_ALIGNDBSVC_H
7 
26 #include "GaudiKernel/ToolHandle.h"
27 #include "StoreGate/DataHandle.h"
31 #include "GaudiKernel/ServiceHandle.h"
32 #include "StoreGate/StoreGateSvc.h"
33 #include <vector>
34 ATLAS_NO_CHECK_FILE_THREAD_SAFETY; // This class uses const_cast. Legacy code
35 
36 namespace InDetDD {
37  class TRT_DetectorManager ;
38 }
40 class TRT_ID ;
41 
45 class TRT_AlignDbSvc: public AthService, virtual public ITRT_AlignDbSvc
46 {
47  public:
48 
50  TRT_AlignDbSvc( const std::string& name, ISvcLocator* pSvcLocator );
51 
53  virtual ~TRT_AlignDbSvc();
54 
56  virtual StatusCode initialize();
57 
59  virtual StatusCode finalize();
60 
61  // TOOL METHODS
63  virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvIf ) ;
64 
67 
69  StatusCode writeAlignTextFile(const std::string & file) const;
70  StatusCode writeStrawAlignTextFile(const std::string & file) const;
71  StatusCode writeGlobalFolderFile(const std::string & file) const;
72 
74  StatusCode readAlignTextFile(const std::string & file);
75 
78 
80  StatusCode registerAlignObjects(const std::string & tag, int run1, int event1, int run2, int event2) const;
81 
84 
87 
89  const Amg::Transform3D getAlignmentTransform(const Identifier& ident, unsigned int level) const;
90  const Amg::Transform3D* getAlignmentTransformPtr(const Identifier& ident, unsigned int level) const;
91 
94 
95  private:
96 
99 
102 
105 
109 
113 
116 
119 
122 
124  AlignableTransform* getTransPtr(const std::string& key) const;
125 
127  const AlignableTransform* cgetTransPtr(const std::string& key) const;
128 
130  static int getRingForStrawLayer(int strawlayer) ;
131 
133  bool isOldKey(const std::string& input) const;
134 
136  static std::string prefixtag(const std::string& key) ;
137 
139  static std::string intToString(int input) ;
140 
142  static void printTransform(const std::string& thisName, const Amg::Transform3D& transform) ;
143 
145  void printCondObjects() const ;
146 
149 
153 
156 
158  std::string findkey(const Identifier& ident, const std::string& type) const;
159 
162  const TRT_ID* m_trtid;
164  std::string m_alignroot;
165  std::string m_alignString;
166  std::string m_par_alitextfile;
167  std::vector<std::string> m_alignobjs;
168  std::vector<int> m_alignchans;
170  ToolHandle<IAthenaOutputStreamTool> m_streamer;
171  mutable std::vector<Amg::Transform3D*> m_amgTransformCache;
172 
173  std::string m_alignDBprefix; // Not very elegant hack to make more modular for DB modifications
174 
176  bool m_forceUserDBConfig; // DB folder scheme is auto-config now; This allows user override
177 };
178 
179 inline StatusCode TRT_AlignDbSvc::queryInterface( const InterfaceID& riid, void** ppvIf )
180 {
181  if ( riid == ITRT_AlignDbSvc::interfaceID() ) {
182  *ppvIf = dynamic_cast<ITRT_AlignDbSvc*>(this);
183  addRef();
184  return StatusCode::SUCCESS;
185  }
186  return AthService::queryInterface( riid, ppvIf );
187 }
188 
189 #endif
TRT_AlignDbSvc::m_forceUserDBConfig
bool m_forceUserDBConfig
Definition: TRT_AlignDbSvc.h:176
TRT_AlignDbSvc::setAlignTransformL2
StatusCode setAlignTransformL2(Identifier ident, Amg::Transform3D trans)
set Level 2 AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:771
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
Definition: TRT_AlignDbSvc.h:34
TRT_AlignDbSvc::m_amgTransformCache
std::vector< Amg::Transform3D * > m_amgTransformCache
Definition: TRT_AlignDbSvc.h:171
TRT_AlignDbSvc::tweakAlignTransformL2
StatusCode tweakAlignTransformL2(Identifier ident, const Amg::Transform3D &trans)
tweak Level 2 AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:1000
TRT_AlignDbSvc::m_alignchans
std::vector< int > m_alignchans
channels
Definition: TRT_AlignDbSvc.h:168
TRT_AlignDbSvc::getTransPtr
AlignableTransform * getTransPtr(const std::string &key) const
get AlignableTransform pointer for an object key
Definition: TRT_AlignDbSvc.cxx:1397
TRT_AlignDbSvc::findkey
std::string findkey(const Identifier &ident, const std::string &type) const
Return the object key for a given identifier and data type.
Definition: TRT_AlignDbSvc.cxx:1169
TRT_AlignDbSvc::tweakAlignTransform
StatusCode tweakAlignTransform(Identifier ident, Amg::Transform3D trans, unsigned int level)
tweak AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:897
CondMultChanCollection
A CondMultChanCollection is a template class which can hold a collection of T* objects which are inte...
Definition: CondMultChanCollection.h:52
TRT_AlignDbSvc::getRingForStrawLayer
static int getRingForStrawLayer(int strawlayer)
Returns the ring for a given strawLayer.
Definition: TRT_AlignDbSvc.cxx:1433
ITRT_AlignDbSvc::interfaceID
static const InterfaceID & interfaceID()
access to interfaceID
Definition: ITRT_AlignDbSvc.h:64
TRT_AlignDbSvc::writeGlobalFolderFile
StatusCode writeGlobalFolderFile(const std::string &file) const
Definition: TRT_AlignDbSvc.cxx:1479
TRT_AlignDbSvc::queryInterface
virtual StatusCode queryInterface(const InterfaceID &riid, void **ppvIf)
access to interfaceID
Definition: TRT_AlignDbSvc.h:179
IAthenaOutputStreamTool
This is a tool that allows streaming out of DataObjects. This has been factorized out from AthenaOutp...
Definition: IAthenaOutputStreamTool.h:70
TRT_AlignDbSvc::m_trtman
const InDetDD::TRT_DetectorManager * m_trtman
detector manager
Definition: TRT_AlignDbSvc.h:163
TRT_AlignDbSvc::m_par_alitextfile
std::string m_par_alitextfile
input text file
Definition: TRT_AlignDbSvc.h:166
TRT_AlignDbSvc::getAlignmentTransformL1Ptr
const Amg::Transform3D * getAlignmentTransformL1Ptr(Identifier const &ident) const
get Level L1 Transform for an identifier
Definition: TRT_AlignDbSvc.cxx:633
ITRT_AlignDbSvc
Definition: ITRT_AlignDbSvc.h:29
TRT_AlignDbSvc::m_alignobjs
std::vector< std::string > m_alignobjs
folder names
Definition: TRT_AlignDbSvc.h:167
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
TRT_AlignDbSvc::cgetTransPtr
const AlignableTransform * cgetTransPtr(const std::string &key) const
get const AlignableTransform pointer for an object key
Definition: TRT_AlignDbSvc.cxx:1403
DataHandle.h
TRT_AlignDbSvc::setAlignTransform
StatusCode setAlignTransform(Identifier ident, Amg::Transform3D trans, unsigned int level)
set AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:696
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
TRT_AlignDbSvc::TRT_AlignDbSvc
TRT_AlignDbSvc(const std::string &name, ISvcLocator *pSvcLocator)
constructor
Definition: TRT_AlignDbSvc.cxx:37
TRT_AlignDbSvc::IOVCallBack
StatusCode IOVCallBack(IOVSVC_CALLBACK_ARGS)
Call back function for alignment folders.
Definition: TRT_AlignDbSvc.cxx:202
TRT_AlignDbSvc::createAlignObjectsWhichDoNotAlreadyExist
StatusCode createAlignObjectsWhichDoNotAlreadyExist()
Create an empty set of AlignableTransforms for the transforms which are not created by XXXXXXX from t...
Definition: TRT_AlignDbSvc.cxx:1338
TRT_AlignDbSvc::getAlignmentTransformPtr
const Amg::Transform3D * getAlignmentTransformPtr(const Identifier &ident, unsigned int level) const
get Level L2 Transform for an identifier
Definition: TRT_AlignDbSvc.cxx:619
ITRT_StrawAlignDbSvc.h
abstract interface to TRT straw alignment constants
TRT_AlignDbSvc::m_streamer
ToolHandle< IAthenaOutputStreamTool > m_streamer
OutputStreamTool.
Definition: TRT_AlignDbSvc.h:170
TRT_AlignDbSvc::readAlignTextFile
StatusCode readAlignTextFile(const std::string &file)
read AlignableTransforms from text file into TDS
Definition: TRT_AlignDbSvc.cxx:370
TRT_AlignDbSvc::~TRT_AlignDbSvc
virtual ~TRT_AlignDbSvc()
destructor
Definition: TRT_AlignDbSvc.cxx:63
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
AlignableTransformContainer.h
AthService
Definition: AthService.h:32
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
file
TFile * file
Definition: tile_monitor.h:29
TRT_AlignDbSvc::getContainer
const AlignableTransformContainer * getContainer() const
Return the container.
Definition: TRT_AlignDbSvc.cxx:1621
TRT_AlignDbSvc::createAlignObjects
StatusCode createAlignObjects() const
Create an empty set of AlignableTransforms for the GeoModel setup.
Definition: TRT_AlignDbSvc.cxx:1305
TRT_AlignDbSvc::m_alignString
std::string m_alignString
alignment string searched for
Definition: TRT_AlignDbSvc.h:165
TRT_AlignDbSvc::getAlignmentTransformL1
const Amg::Transform3D getAlignmentTransformL1(Identifier const &ident) const
get Level 1 AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:573
TRT_AlignDbSvc::setAlignTransformL3
StatusCode setAlignTransformL3(Identifier ident, Amg::Transform3D trans)
set Level 3 AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:820
TRT_AlignDbSvc::m_dynamicDB
bool m_dynamicDB
Definition: TRT_AlignDbSvc.h:175
TRT_AlignDbSvc::streamOutAlignObjects
StatusCode streamOutAlignObjects() const
write the alignment objects to output
Definition: TRT_AlignDbSvc.cxx:510
TRT_AlignDbSvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition: TRT_AlignDbSvc.h:160
TRT_AlignDbSvc::setAlignTransformL1
StatusCode setAlignTransformL1(Identifier ident, const Amg::Transform3D &trans)
set Level 1 AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:722
AlignableTransform
Definition: AlignableTransform.h:24
ReadCellNoiseFromCoolCompare.run2
run2
Definition: ReadCellNoiseFromCoolCompare.py:53
TRT_AlignDbSvc::printCondObjects
void printCondObjects() const
Output the conditions objects currently in memory.
Definition: TRT_AlignDbSvc.cxx:1375
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TRT_AlignDbSvc::writeStrawAlignTextFile
StatusCode writeStrawAlignTextFile(const std::string &file) const
Definition: TRT_AlignDbSvc.cxx:358
TRT_AlignDbSvc::m_alignroot
std::string m_alignroot
root alignment folder
Definition: TRT_AlignDbSvc.h:164
TRT_AlignDbSvc::initialize
virtual StatusCode initialize()
tool initialize
Definition: TRT_AlignDbSvc.cxx:68
DataHandle
an iterator over instances of a given type in StoreGateSvc. It d-casts and caches locally the pointed...
Definition: DataHandle.h:42
TRT::Hit::ident
@ ident
Definition: HitInfo.h:77
TRT_AlignDbSvc::finalize
virtual StatusCode finalize()
tool finalize
Definition: TRT_AlignDbSvc.cxx:192
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
TRT_AlignDbSvc::m_alignDBprefix
std::string m_alignDBprefix
Definition: TRT_AlignDbSvc.h:173
TRT_AlignDbSvc::tweakAlignTransformL3
StatusCode tweakAlignTransformL3(Identifier ident, Amg::Transform3D trans)
tweak Level 3 AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:1039
TRT_AlignDbSvc::getAlignmentTransformL2
const Amg::Transform3D getAlignmentTransformL2(Identifier const &ident) const
get Level 2 AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:588
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TRT_AlignDbSvc::tweakGlobalFolder
StatusCode tweakGlobalFolder(Identifier ident, const Amg::Transform3D &trans)
tweak L1 DB for global folders for an identifier
Definition: TRT_AlignDbSvc.cxx:1528
AthService.h
TRT_AlignDbSvc::getAlignmentTransformL2Ptr
const Amg::Transform3D * getAlignmentTransformL2Ptr(Identifier const &ident) const
get Level L2 Transform for an identifier
Definition: TRT_AlignDbSvc.cxx:656
TRT_AlignDbSvc::m_trtStrawAlignDbSvc
ServiceHandle< ITRT_StrawAlignDbSvc > m_trtStrawAlignDbSvc
Definition: TRT_AlignDbSvc.h:161
TRT_AlignDbSvc::tweakAlignTransformL1
StatusCode tweakAlignTransformL1(Identifier ident, const Amg::Transform3D &trans)
tweak Level 1 AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:951
TRT_AlignDbSvc::intToString
static std::string intToString(int input)
Convert from an int to a string.
Definition: TRT_AlignDbSvc.cxx:1463
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
ITRT_AlignDbSvc.h
abstract interface to Service to manage TRT alignment conditions
TRT_AlignDbSvc::m_trtid
const TRT_ID * m_trtid
trt id helper
Definition: TRT_AlignDbSvc.h:162
TRT_AlignDbSvc::printTransform
static void printTransform(const std::string &thisName, const Amg::Transform3D &transform)
Output the transform to the cout, for debugging.
Definition: TRT_AlignDbSvc.cxx:1470
TRT_AlignDbSvc::getAlignmentTransform
const Amg::Transform3D getAlignmentTransform(const Identifier &ident, unsigned int level) const
get AlignableTransform for an identifier
Definition: TRT_AlignDbSvc.cxx:559
TRT_AlignDbSvc::isOldKey
bool isOldKey(const std::string &input) const
Returns the true if the input key is from the old endcap scheme.
Definition: TRT_AlignDbSvc.cxx:1440
TRT_AlignDbSvc::m_aligncontainerhandle
const DataHandle< AlignableTransformContainer > m_aligncontainerhandle
Definition: TRT_AlignDbSvc.h:169
checker_macros.h
Define macros for attributes used to control the static checker.
TRT_AlignDbSvc
Definition: TRT_AlignDbSvc.h:46
StoreGateSvc.h
TRT_AlignDbSvc::registerAlignObjects
StatusCode registerAlignObjects(const std::string &tag, int run1, int event1, int run2, int event2) const
register alignment objects with the IoV service
Definition: TRT_AlignDbSvc.cxx:536
TRT_AlignDbSvc::writeAlignTextFile
StatusCode writeAlignTextFile(const std::string &file) const
write AlignableTransforms to flat text file
Definition: TRT_AlignDbSvc.cxx:236
ServiceHandle< StoreGateSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
TRT_AlignDbSvc::prefixtag
static std::string prefixtag(const std::string &key)
Return the prefix tag for a given calibration folder.
Definition: TRT_AlignDbSvc.cxx:1240