ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetDetDescr
ITkStripCabling
src
ITkStripCablingAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
13
14
//package includes
15
#include "
ITkStripCablingAlg.h
"
16
17
//indet includes
18
#include "
InDetIdentifier/SCT_ID.h
"
19
20
//Athena includes
21
#include "Identifier/Identifier.h"
22
#include "
Identifier/IdentifierHash.h
"
23
#include "
PathResolver/PathResolver.h
"
24
25
// Gaudi include
26
#include "GaudiKernel/EventIDRange.h"
27
28
//STL
29
#include <iostream>
30
#include <fstream>
31
32
33
34
// Constructor
35
ITkStripCablingAlg::ITkStripCablingAlg
(
const
std::string& name, ISvcLocator* pSvcLocator):
36
AthCondAlgorithm
(name, pSvcLocator)
37
{}
38
39
//
40
StatusCode
41
ITkStripCablingAlg::initialize
() {
42
m_configFilePath
=
PathResolverFindCalibFile
(
m_source
);
43
if
(
m_configFilePath
.empty()){
44
ATH_MSG_ERROR
(
"Failed to find Calibration file: "
<<
m_source
);
45
return
StatusCode::FAILURE;
46
}
47
ATH_MSG_INFO
(
"Reading ITk Strip cabling file from "
<<
m_configFilePath
);
48
// ITkStripID
49
ATH_CHECK
(
detStore
()->retrieve(
m_idHelper
,
"SCT_ID"
));
50
// Write Cond Handle
51
ATH_CHECK
(
m_writeKey
.initialize());
52
53
return
StatusCode::SUCCESS;
54
}
55
56
57
//
58
StatusCode
59
ITkStripCablingAlg::execute
(
const
EventContext& ctx)
const
{
60
// Write Cond Handle
61
SG::WriteCondHandle<ITkStripCablingData>
writeHandle =
SG::makeHandle
(
m_writeKey
, ctx);
62
if
(writeHandle.
isValid
()) {
63
ATH_MSG_DEBUG
(
"CondHandle "
<< writeHandle.
fullKey
() <<
" is already valid."
64
<<
". In theory this should not be called, but may happen"
65
<<
" if multiple concurrent events are being processed out of order."
);
66
return
StatusCode::SUCCESS;
67
}
68
69
// Construct the output Cond Object and fill it in
70
std::unique_ptr<ITkStripCablingData> pCabling = std::make_unique<ITkStripCablingData>();
71
auto
inputFile = std::ifstream(
m_configFilePath
);
72
if
(not inputFile.good()){
73
ATH_MSG_ERROR
(
"The itk cabling file "
<<
m_configFilePath
<<
" could not be opened."
);
74
return
StatusCode::FAILURE;
75
}
76
inputFile>>*pCabling;
77
ATH_MSG_DEBUG
(
"Cabling file size: "
<< pCabling->size());
78
const
int
numEntries = pCabling->size();
79
ATH_MSG_DEBUG
(numEntries <<
" entries were made to the identifier map."
);
80
81
// Define validity of the output cond object and record it
82
const
EventIDBase start{EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, 0, 0, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
83
const
EventIDBase stop{EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, EventIDBase::UNDEFNUM-1, EventIDBase::UNDEFNUM-1, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
84
const
EventIDRange rangeW{start, stop};
85
if
(writeHandle.
record
(rangeW, std::move(pCabling)).isFailure()) {
86
ATH_MSG_FATAL
(
"Could not record ITkStripCablingData "
<< writeHandle.
key
()
87
<<
" with EventRange "
<< rangeW
88
<<
" into Conditions Store"
);
89
return
StatusCode::FAILURE;
90
}
91
ATH_MSG_VERBOSE
(
"recorded new conditions data object "
<< writeHandle.
key
() <<
" with range "
<< rangeW <<
" into Conditions Store"
);
92
return
(numEntries==0) ? (StatusCode::FAILURE) : (StatusCode::SUCCESS);
93
}
94
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
ITkStripCablingAlg.h
Fills an ITkStripCablingData object and records it in Storegate (based on ITkPixelCabling package).
IdentifierHash.h
PathResolver.h
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition
PathResolver.cxx:325
SCT_ID.h
This is an Identifier helper class for the SCT subdetector.
AthCommonAlgorithm< Gaudi::Algorithm >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
AthCondAlgorithm
Base class for conditions algorithms.
Definition
AthCondAlgorithm.h:22
ITkStripCablingAlg::m_source
StringProperty m_source
Definition
ITkStripCablingAlg.h:46
ITkStripCablingAlg::m_idHelper
const SCT_ID * m_idHelper
Definition
ITkStripCablingAlg.h:49
ITkStripCablingAlg::ITkStripCablingAlg
ITkStripCablingAlg(const std::string &name, ISvcLocator *svc)
Definition
ITkStripCablingAlg.cxx:35
ITkStripCablingAlg::m_configFilePath
std::string m_configFilePath
Definition
ITkStripCablingAlg.h:47
ITkStripCablingAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition
ITkStripCablingAlg.cxx:59
ITkStripCablingAlg::m_writeKey
SG::WriteCondHandleKey< ITkStripCablingData > m_writeKey
Definition
ITkStripCablingAlg.h:48
ITkStripCablingAlg::initialize
virtual StatusCode initialize() override
Definition
ITkStripCablingAlg.cxx:41
SG::WriteCondHandle
Definition
WriteCondHandle.h:26
SG::WriteCondHandle::key
const std::string & key() const
Definition
WriteCondHandle.h:44
SG::WriteCondHandle::record
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
Definition
WriteCondHandle.h:161
SG::WriteCondHandle::isValid
bool isValid() const
Definition
WriteCondHandle.h:252
SG::WriteCondHandle::fullKey
const DataObjID & fullKey() const
Definition
WriteCondHandle.h:45
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition
ReadCondHandle.h:269
Generated on
for ATLAS Offline Software by
1.17.0