ATLAS Offline Software
SCTCalibWriteTool.h
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 /*
8  * @file SCTCalibWriteTool.h
9  *
10  * @brief Header file for the SCTCalibWriteTool class
11  *
12  * @author Jose E. Garcia
13  **/
14 
15 #ifndef SCTCalibWriteTool_H
16 #define SCTCalibWriteTool_H
17 
18 // Athena includes
20 #include "AthenaKernel/IOVTime.h"
21 #include "AthenaKernel/IIOVDbSvc.h"
24 
27 
28 #include "CoralBase/AttributeListSpecification.h"
29 
30 // Gaudi includes
31 #include "GaudiKernel/IInterface.h"
32 #include "GaudiKernel/ToolHandle.h"
33 #include "GaudiKernel/ServiceHandle.h"
34 #include "GaudiKernel/StatusCode.h"
35 
36 //STL
37 #include <map>
38 #include <memory>
39 #include <mutex>
40 #include <string>
41 
42 //forward declarations
43 class IdentifierHash;
44 class Identifier;
45 class SCT_ID;
47 
51 class SCTCalibWriteTool : public AthAlgTool {
52 
53  public:
54  // Constructor
55  SCTCalibWriteTool(const std::string& type, const std::string& name, const IInterface* parent);
56 
57  // overloading functions
58  virtual StatusCode initialize() override;
59 
60  std::string
61  addDefect(const std::string& defectlist,const int defectBeginChannel,const int defectEndChannel) const;
62 
63  std::string
64  addNumber(const std::string& numStr,const unsigned long long number) const;
65 
66  std::string
67  createDefectString(const int defectBeginChannel,const int defectEndChannel) const;
68 
69  StatusCode createCondObjects ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
70  (const Identifier& wafer_id,
71  const SCT_ID* m_sctId,
72  const int samplesize,
73  const std::string& defectType,
74  const float threshold,
75  const std::string& defectList) const;
76 
77  StatusCode createListStrip ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
78  (const Identifier& wafer_id,
79  const SCT_ID* m_sctId,
80  const int samplesize,
81  const std::string& defectType,
82  const float threshold,
83  const std::string& defectList) const;
84 
85  StatusCode createListChip ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
86  (const Identifier& wafer_id,
87  const SCT_ID* m_sctId,
88  const int samplesize,
89  const std::string& defectType,
90  const float threshold,
91  const std::string& defectList) const;
92 
93  StatusCode createListEff ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
94  (const Identifier& wafer_id,
95  const SCT_ID* m_sctId,
96  const int samplesize,
97  const float eff) const;
98 
99  StatusCode createListNO ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
100  (const Identifier& wafer_id,
101  const SCT_ID* m_sctId,
102  const int samplesize,
103  const float noise_occ) const;
104 
105  StatusCode createListRawOccu ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
106  (const Identifier& wafer_id,
107  const SCT_ID* m_sctId,
108  const int samplesize,
109  const float raw_occu) const;
110 
111  StatusCode createListBSErr ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
112  (const Identifier& wafer_id,
113  const SCT_ID* m_sctId,
114  const int samplesize,
115  const std::string& errorList,
116  const std::string& probList) const ;
117 
118  StatusCode createListLA ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
119  (const Identifier& wafer_id,
120  const SCT_ID* m_sctId,
121  const int samplesize,
122  const int module,
123  const float lorentz,
124  const float err_lorentz,
125  const float chisq,
126  const float fitParam_a,
127  const float err_a,
128  const float fitParam_b,
129  const float err_b,
130  const float fitParam_sigma,
131  const float err_sigma,
132  const float MCW,
133  const float err_MCW) const;
134 
143 
144  private:
145  int stringToInt(const std::string& s) const;
146 
147  StatusCode streamOutCondObjects(const std::string& foldername);
149 
150  StatusCode registerCondObjects(const std::string& foldername,const std::string& tagname) const;
151  StatusCode recordAndStream(std::unique_ptr<CondAttrListCollection> pCollection,const std::string& foldername, bool& flag);
152  StatusCode registerCondObjectsWithErrMsg(const std::string& foldername,const std::string& tagname) const;
153 
154  coral::AttributeListSpecification* createBasicDbSpec(const bool capsFormat) const;
155  void setBasicValues(coral::AttributeList& attrList, const Identifier& wafer_id, const int samplesize,const SCT_ID* m_sctId, const bool capsFormat) const;
156  // small helper function
157  unsigned int computeIstrip4moncond(const Identifier& elementId) const;
158 
159  const CondAttrListCollection* getAttrListCollectionByFolder(const std::string&) const;
160 
161  // would it make sense to change the strings to properties?
162  // that would be a fairly simple fix
163  static const std::string s_separator;
164  static const std::string s_defectFolderName;
165  static const std::string s_deadStripFolderName;
166  static const std::string s_deadChipFolderName;
167  static const std::string s_effFolderName;
168  static const std::string s_noFolderName;
169  static const std::string s_RawOccuFolderName;
170  static const std::string s_BSErrFolderName;
171  static const std::string s_LAFolderName;
172 
173  // cache for the Collections, access by foldername
174  mutable std::mutex m_mutex{};
175  mutable std::map<const std::string, const CondAttrListCollection*> m_attrListCollectionMap ATLAS_THREAD_SAFE; // Guarded by m_mutex
176  std::unique_ptr<CondAttrListCollection> m_attrListColl;
177  std::unique_ptr<CondAttrListCollection> m_attrListColl_deadStrip;
178  std::unique_ptr<CondAttrListCollection> m_attrListColl_deadChip;
179  std::unique_ptr<CondAttrListCollection> m_attrListColl_eff;
180  std::unique_ptr<CondAttrListCollection> m_attrListColl_no;
181  std::unique_ptr<CondAttrListCollection> m_attrListColl_RawOccu;
182  std::unique_ptr<CondAttrListCollection> m_attrListColl_BSErr;
183  std::unique_ptr<CondAttrListCollection> m_attrListColl_LA;
184  BooleanProperty m_writeCondObjs{this, "WriteCondObjs", true};
185  BooleanProperty m_regIOV{this, "RegisterIOV", true};
186  BooleanProperty m_readWriteCool{this, "ReadWriteCool", true};
187  BooleanProperty m_twoStepWriteReg{this, "TwoStepWriteReg", false};
188  BooleanProperty m_manualiov{this, "ManualIOV", true};
189  IntegerProperty m_version{this, "Version", 0};
190  IntegerProperty m_beginRun{this, "BeginRun", IOVTime::MINRUN};
191  IntegerProperty m_endRun{this, "EndRun", IOVTime::MAXRUN};
192  StringProperty m_streamName{this, "StreamName", "SCTCalibStream"};
193  StringProperty m_tagID4NoisyStrips{this, "TagID4NoisyStrips", ""};
194  StringProperty m_tagID4DeadStrips{this, "TagID4DeadStrips", ""};
195  StringProperty m_tagID4DeadChips{this, "TagID4DeadChips", ""};
196  StringProperty m_tagID4Efficiency{this, "TagID4Efficiency", ""};
197  StringProperty m_tagID4NoiseOccupancy{this, "TagID4NoiseOccupancy", ""};
198  StringProperty m_tagID4RawOccupancy{this, "TagID4RawOccupancy", ""};
199  StringProperty m_tagID4BSErrors{this, "TagID4BSErrors", ""};
200  StringProperty m_tagID4LorentzAngle{this, "TagID4LorentzAngle", ""};
201 
203  ToolHandle<IAthenaOutputStreamTool> m_streamer{nullptr};
205 
206  bool m_defectRecorded{false};
207  bool m_deadStripRecorded{false};
208  bool m_deadChipRecorded{false};
209  bool m_effRecorded{false};
210  bool m_noRecorded{false};
211  bool m_RawOccuRecorded{false};
212  bool m_BSErrRecorded{false};
213  bool m_LARecorded{false};
214  const SCT_ID* m_pHelper{nullptr};
215 
216 };
217 
218 #endif // SCTCalibWriteTool.h
SCTCalibWriteTool::m_BSErrRecorded
bool m_BSErrRecorded
Definition: SCTCalibWriteTool.h:212
SCTCalibWriteTool::m_mutex
std::mutex m_mutex
Definition: SCTCalibWriteTool.h:174
SCTCalibWriteTool::m_effRecorded
bool m_effRecorded
Definition: SCTCalibWriteTool.h:209
SCTCalibWriteTool::m_RawOccuRecorded
bool m_RawOccuRecorded
Definition: SCTCalibWriteTool.h:211
SCTCalibWriteTool::m_regSvc
ServiceHandle< IIOVRegistrationSvc > m_regSvc
Definition: SCTCalibWriteTool.h:202
IOVTime::MAXRUN
static constexpr uint32_t MAXRUN
Definition: IOVTime.h:48
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
SCTCalibWriteTool::wrapUpLorentzAngle
StatusCode wrapUpLorentzAngle()
Definition: SCTCalibWriteTool.cxx:503
SCTCalibWriteTool::wrapUpBSErrors
StatusCode wrapUpBSErrors()
Definition: SCTCalibWriteTool.cxx:494
SCTCalibWriteTool::s_deadChipFolderName
static const std::string s_deadChipFolderName
Definition: SCTCalibWriteTool.h:166
SCTCalibWriteTool::m_IOVDbSvc
ServiceHandle< IIOVDbSvc > m_IOVDbSvc
Definition: SCTCalibWriteTool.h:204
SCTCalibWriteTool::createBasicDbSpec
coral::AttributeListSpecification * createBasicDbSpec(const bool capsFormat) const
Definition: SCTCalibWriteTool.cxx:634
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
SCTCalibWriteTool::m_attrListColl_RawOccu
std::unique_ptr< CondAttrListCollection > m_attrListColl_RawOccu
Definition: SCTCalibWriteTool.h:181
SCTCalibWriteTool
Tool to test writing conditions data and reading them back.
Definition: SCTCalibWriteTool.h:51
SCTCalibWriteTool::stringToInt
int stringToInt(const std::string &s) const
Definition: SCTCalibWriteTool.cxx:433
SCTCalibWriteTool::m_deadChipRecorded
bool m_deadChipRecorded
Definition: SCTCalibWriteTool.h:208
SCTCalibWriteTool::s_noFolderName
static const std::string s_noFolderName
Definition: SCTCalibWriteTool.h:168
SCTCalibWriteTool::m_tagID4Efficiency
StringProperty m_tagID4Efficiency
Definition: SCTCalibWriteTool.h:196
IAthenaOutputStreamTool
This is a tool that allows streaming out of DataObjects. This has been factorized out from AthenaOutp...
Definition: IAthenaOutputStreamTool.h:69
SCTCalibWriteTool::createDefectString
std::string createDefectString(const int defectBeginChannel, const int defectEndChannel) const
Definition: SCTCalibWriteTool.cxx:122
python.checkUPD1.foldername
foldername
Definition: checkUPD1.py:77
SCTCalibWriteTool::m_attrListColl_eff
std::unique_ptr< CondAttrListCollection > m_attrListColl_eff
Definition: SCTCalibWriteTool.h:179
SCTCalibWriteTool::m_beginRun
IntegerProperty m_beginRun
Definition: SCTCalibWriteTool.h:190
IIOVRegistrationSvc.h
This is an interface to a tool used to register conditions objects in the Interval of Validity (IOV) ...
SCTCalibWriteTool::setBasicValues
void setBasicValues(coral::AttributeList &attrList, const Identifier &wafer_id, const int samplesize, const SCT_ID *m_sctId, const bool capsFormat) const
Definition: SCTCalibWriteTool.cxx:648
SCTCalibWriteTool::m_pHelper
const SCT_ID * m_pHelper
Definition: SCTCalibWriteTool.h:214
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
SCTCalibWriteTool::m_attrListColl_no
std::unique_ptr< CondAttrListCollection > m_attrListColl_no
Definition: SCTCalibWriteTool.h:180
SCTCalibWriteTool::wrapUpNoiseOccupancy
StatusCode wrapUpNoiseOccupancy()
Definition: SCTCalibWriteTool.cxx:476
IIOVDbSvc.h
Abstract interface to IOVDbSvc to access IOVRange and tag information.
SCTCalibWriteTool::m_tagID4DeadStrips
StringProperty m_tagID4DeadStrips
Definition: SCTCalibWriteTool.h:194
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
SCTCalibWriteTool::wrapUpEfficiency
StatusCode wrapUpEfficiency()
Definition: SCTCalibWriteTool.cxx:467
SCTCalibWriteTool::ATLAS_NOT_THREAD_SAFE
StatusCode createCondObjects ATLAS_NOT_THREAD_SAFE(const Identifier &wafer_id, const SCT_ID *m_sctId, const int samplesize, const std::string &defectType, const float threshold, const std::string &defectList) const
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
SCTCalibWriteTool::m_attrListColl
std::unique_ptr< CondAttrListCollection > m_attrListColl
Definition: SCTCalibWriteTool.h:176
SCTCalibWriteTool::s_BSErrFolderName
static const std::string s_BSErrFolderName
Definition: SCTCalibWriteTool.h:170
IOVTime.h
Basic time unit for IOVSvc. Hold time as a combination of run and event numbers.
IOVTime::MINRUN
static constexpr uint32_t MINRUN
Definition: IOVTime.h:44
SCTCalibWriteTool::m_tagID4LorentzAngle
StringProperty m_tagID4LorentzAngle
Definition: SCTCalibWriteTool.h:200
IAthenaOutputStreamTool.h
Interface to an output stream tool.
SCTCalibWriteTool::m_tagID4NoisyStrips
StringProperty m_tagID4NoisyStrips
Definition: SCTCalibWriteTool.h:193
python.PyAthena.module
module
Definition: PyAthena.py:131
SCTCalibWriteTool::m_endRun
IntegerProperty m_endRun
Definition: SCTCalibWriteTool.h:191
SCTCalibWriteTool::m_streamer
ToolHandle< IAthenaOutputStreamTool > m_streamer
Definition: SCTCalibWriteTool.h:203
SCTCalibWriteTool::m_twoStepWriteReg
BooleanProperty m_twoStepWriteReg
Definition: SCTCalibWriteTool.h:187
SCTCalibWriteTool::m_tagID4DeadChips
StringProperty m_tagID4DeadChips
Definition: SCTCalibWriteTool.h:195
SCTCalibWriteTool::computeIstrip4moncond
unsigned int computeIstrip4moncond(const Identifier &elementId) const
Definition: SCTCalibWriteTool.cxx:90
SCTCalibWriteTool::m_defectRecorded
bool m_defectRecorded
Definition: SCTCalibWriteTool.h:206
SCTCalibWriteTool::addDefect
std::string addDefect(const std::string &defectlist, const int defectBeginChannel, const int defectEndChannel) const
Definition: SCTCalibWriteTool.cxx:103
SCTCalibWriteTool::m_regIOV
BooleanProperty m_regIOV
Definition: SCTCalibWriteTool.h:185
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
master.flag
bool flag
Definition: master.py:29
AthAlgTool.h
SCTCalibWriteTool::wrapUpDeadStrips
StatusCode wrapUpDeadStrips()
Definition: SCTCalibWriteTool.cxx:449
test_pyathena.parent
parent
Definition: test_pyathena.py:15
SCTCalibWriteTool::m_attrListColl_deadStrip
std::unique_ptr< CondAttrListCollection > m_attrListColl_deadStrip
Definition: SCTCalibWriteTool.h:177
SCTCalibWriteTool::s_separator
static const std::string s_separator
Definition: SCTCalibWriteTool.h:163
SCTCalibWriteTool::getAttrListCollectionByFolder
const CondAttrListCollection * getAttrListCollectionByFolder(const std::string &) const
Definition: SCTCalibWriteTool.cxx:413
InDetHierarchy.h
SCTCalibWriteTool::s_effFolderName
static const std::string s_effFolderName
Definition: SCTCalibWriteTool.h:167
SCTCalibWriteTool::wrapUpRawOccupancy
StatusCode wrapUpRawOccupancy()
Definition: SCTCalibWriteTool.cxx:485
SCTCalibWriteTool::streamOutCondObjectsWithErrMsg
StatusCode streamOutCondObjectsWithErrMsg(const std::string &foldername)
Definition: SCTCalibWriteTool.cxx:539
SCTCalibWriteTool::addNumber
std::string addNumber(const std::string &numStr, const unsigned long long number) const
Definition: SCTCalibWriteTool.cxx:136
SCTCalibWriteTool::m_tagID4RawOccupancy
StringProperty m_tagID4RawOccupancy
Definition: SCTCalibWriteTool.h:198
SCTCalibWriteTool::m_attrListColl_BSErr
std::unique_ptr< CondAttrListCollection > m_attrListColl_BSErr
Definition: SCTCalibWriteTool.h:182
SCTCalibWriteTool::initialize
virtual StatusCode initialize() override
Definition: SCTCalibWriteTool.cxx:56
python.selection.number
number
Definition: selection.py:20
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
SCTCalibWriteTool::m_LARecorded
bool m_LARecorded
Definition: SCTCalibWriteTool.h:213
SCTCalibWriteTool::recordAndStream
StatusCode recordAndStream(std::unique_ptr< CondAttrListCollection > pCollection, const std::string &foldername, bool &flag)
Definition: SCTCalibWriteTool.cxx:618
SCT_ID
Definition: SCT_ID.h:68
SCTCalibWriteTool::wrapUpNoisyChannel
StatusCode wrapUpNoisyChannel()
Definition: SCTCalibWriteTool.cxx:440
SCTCalibWriteTool::m_writeCondObjs
BooleanProperty m_writeCondObjs
Definition: SCTCalibWriteTool.h:184
SCTCalibWriteTool::ATLAS_THREAD_SAFE
std::map< const std::string, const CondAttrListCollection * > m_attrListCollectionMap ATLAS_THREAD_SAFE
Definition: SCTCalibWriteTool.h:175
SCTCalibWriteTool::registerCondObjects
StatusCode registerCondObjects(const std::string &foldername, const std::string &tagname) const
Definition: SCTCalibWriteTool.cxx:551
SCTCalibWriteTool::m_attrListColl_deadChip
std::unique_ptr< CondAttrListCollection > m_attrListColl_deadChip
Definition: SCTCalibWriteTool.h:178
SCTCalibWriteTool::m_version
IntegerProperty m_version
Definition: SCTCalibWriteTool.h:189
SCTCalibWriteTool::m_tagID4NoiseOccupancy
StringProperty m_tagID4NoiseOccupancy
Definition: SCTCalibWriteTool.h:197
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
tagname
Definition: tagname.h:29
SCTCalibWriteTool::s_LAFolderName
static const std::string s_LAFolderName
Definition: SCTCalibWriteTool.h:171
dqt_zlumi_alleff_HIST.eff
int eff
Definition: dqt_zlumi_alleff_HIST.py:113
SCTCalibWriteTool::m_noRecorded
bool m_noRecorded
Definition: SCTCalibWriteTool.h:210
SCTCalibWriteTool::SCTCalibWriteTool
SCTCalibWriteTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: SCTCalibWriteTool.cxx:45
SCTCalibWriteTool::registerCondObjectsWithErrMsg
StatusCode registerCondObjectsWithErrMsg(const std::string &foldername, const std::string &tagname) const
Definition: SCTCalibWriteTool.cxx:605
SCTCalibWriteTool::s_deadStripFolderName
static const std::string s_deadStripFolderName
Definition: SCTCalibWriteTool.h:165
AthAlgTool
Definition: AthAlgTool.h:26
SCTCalibWriteTool::wrapUpDeadChips
StatusCode wrapUpDeadChips()
Definition: SCTCalibWriteTool.cxx:458
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
SCTCalibWriteTool::m_streamName
StringProperty m_streamName
Definition: SCTCalibWriteTool.h:192
SCTCalibWriteTool::s_RawOccuFolderName
static const std::string s_RawOccuFolderName
Definition: SCTCalibWriteTool.h:169
SCTCalibWriteTool::m_tagID4BSErrors
StringProperty m_tagID4BSErrors
Definition: SCTCalibWriteTool.h:199
SCTCalibWriteTool::s_defectFolderName
static const std::string s_defectFolderName
Definition: SCTCalibWriteTool.h:164
SCTCalibWriteTool::m_readWriteCool
BooleanProperty m_readWriteCool
Definition: SCTCalibWriteTool.h:186
SCTCalibWriteTool::m_manualiov
BooleanProperty m_manualiov
Definition: SCTCalibWriteTool.h:188
SCTCalibWriteTool::streamOutCondObjects
StatusCode streamOutCondObjects(const std::string &foldername)
Definition: SCTCalibWriteTool.cxx:512
dumpTgcDigiThreshold.threshold
list threshold
Definition: dumpTgcDigiThreshold.py:34
SCTCalibWriteTool::m_deadStripRecorded
bool m_deadStripRecorded
Definition: SCTCalibWriteTool.h:207
ServiceHandle< IIOVRegistrationSvc >
SCTCalibWriteTool::m_attrListColl_LA
std::unique_ptr< CondAttrListCollection > m_attrListColl_LA
Definition: SCTCalibWriteTool.h:183
Identifier
Definition: IdentifierFieldParser.cxx:14