ATLAS Offline Software
Loading...
Searching...
No Matches
AFPDBTester.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7AFPDBTester::AFPDBTester(const std::string& name, ISvcLocator* pSvcLocator) :
8 AthAlgorithm(name, pSvcLocator), m_key("EMFracClassify")
9{
10 ATH_MSG_DEBUG("in the constructor of AFPDBTester");
11}
12
14{
15 ATH_MSG_DEBUG("in the destructor of AFPDBTester");
16}
17
19{
20 ATH_MSG_DEBUG("in the initialize of AFPDBTester, hello there");
21
22 ATH_CHECK( m_key.initialize() );
23 ATH_MSG_INFO( "m_key id: " << m_key.fullKey() );
24 ATH_CHECK( m_readKey.initialize() );
25 ATH_MSG_INFO( "m_readKey id: " << m_readKey.fullKey() );
26 ATH_CHECK( m_rch_locshiftX.initialize() );
27 ATH_MSG_INFO( "m_rch_locshiftX id: " << m_rch_locshiftX.fullKey() );
28 ATH_CHECK( m_rch_globshiftX.initialize() );
29 ATH_MSG_INFO( "m_rch_globshiftX id: " << m_rch_globshiftX.fullKey() );
30 ATH_CHECK( m_rch_loctof.initialize() );
31 ATH_MSG_INFO( "m_rch_loctof id: " << m_rch_loctof.fullKey() );
32 ATH_CHECK( m_rch_vtxtof.initialize() );
33 ATH_MSG_INFO( "m_rch_vtxtof id: " << m_rch_vtxtof.fullKey() );
34
35 return StatusCode::SUCCESS;
36}
37
39{
40 ATH_MSG_DEBUG("in the finalize of AFPDBTester, bye bye");
41 return StatusCode::SUCCESS;
42}
43
45{
46 const EventContext& ctx = Gaudi::Hive::currentContext();
47 EventIDBase t( getContext().eventID() );
48
49// check if calo conditions can be loaded
50 ATH_MSG_INFO("execute: "<<getContext().eventID().event_number()<<" , before CaloLocalHadCoeff");
52 const CaloLocalHadCoeff* condObject = *rch;
53 if(condObject==nullptr) {
54 ATH_MSG_ERROR("Unable to access conditions object CaloLocalHadCoeff");
55 return StatusCode::FAILURE;
56 }
57
58// check if beamspot conditions can be loaded
59 ATH_MSG_INFO("execute: "<<getContext().eventID().event_number()<<" , before beam pos");
61 const AthenaAttributeList* raw { *readHandle };
62 if ( raw == nullptr )
63 {
64 ATH_MSG_ERROR("Beam Spot data for key " << m_readKey.fullKey() << " not found");
65 return StatusCode::FAILURE;
66 }
67 float beamposX { (*raw)["posX"].data<float>() };
68 ATH_MSG_INFO("execute: "<<getContext().eventID().event_number()<<" , beam pos X = "<<beamposX);
69
70// load local AFP alignment and print out something
71 ATH_MSG_INFO("execute: "<<getContext().eventID().event_number()<<" , before loc shiftX");
73 const CondAttrListCollection* attrLocList { *ch_locshiftX };
74 if ( attrLocList == nullptr )
75 {
76 ATH_MSG_ERROR("local shiftX data for key " << m_rch_locshiftX.fullKey() << " not found");
77 return StatusCode::FAILURE;
78 }
79
80 int counter=1;
82 for (itr = attrLocList->begin(); itr != attrLocList->end(); ++itr) {
83 if(counter>1) ATH_MSG_INFO("there should be only one real channel in /FWD/AFP/Align/Local, this is real channel nr. "<<counter);
84
85 const coral::AttributeList &atr = itr->second;
86 std::string data = *(static_cast<const std::string *>((atr["data"]).addressOfData()));
87
88 nlohmann::json jsondata = nlohmann::json::parse(data);
89 int nchannels=jsondata["nchannels"];
90 nlohmann::json channeldata=jsondata["data"];
91 for(auto& chan : channeldata.items())
92 {
93 // channels are ordered alphabetically: 0,1,10,...,15,2,3,...,9
94 ATH_MSG_INFO("reading channel nr. "<<chan.key());
95 nlohmann::json aligndata=chan.value();
96
97 std::string channel=chan.key();
98 int layerID=aligndata["layerID"];
99 float shiftX=aligndata["shiftX"];
100
101 ATH_MSG_INFO("execute: run "<<getContext().eventID().run_number()<<", lb "<<getContext().eventID().lumi_block()<<", evnt "<<getContext().eventID().event_number()<<", channel "<<channel<<"/"<<nchannels<<", layerID "<<layerID<<", shiftX = "<<shiftX);
102 }
103
104 ++counter;
105 }
106
107
108// load global AFP alignment and print out something else
109 ATH_MSG_INFO("test: "<<getContext().eventID().event_number()<<" , before glob shiftX");
111 const CondAttrListCollection* attrGlobList { *ch_globshiftX };
112 if ( attrGlobList == nullptr )
113 {
114 ATH_MSG_ERROR("global shiftX data for key " << m_rch_globshiftX.fullKey() << " not found");
115 return StatusCode::FAILURE;
116 }
117
118 counter=1;
120 for (itr2 = attrGlobList->begin(); itr2 != attrGlobList->end(); ++itr2) {
121 if(counter>1) ATH_MSG_INFO("there should be only one real channel in /FWD/AFP/Align/Global, this is real channel nr. "<<counter);
122
123 const coral::AttributeList &atr = itr2->second;
124 std::string data = *(static_cast<const std::string *>((atr["data"]).addressOfData()));
125
126 nlohmann::json jsondata = nlohmann::json::parse(data);
127 int nchannels=jsondata["nchannels"];
128 nlohmann::json channeldata=jsondata["data"];
129 for(auto& chan : channeldata.items())
130 {
131 // channels are ordered alphabetically: 0,1,10,...,15,2,3,...,9
132 ATH_MSG_INFO("reading channel nr. "<<chan.key());
133 nlohmann::json aligndata=chan.value();
134
135 std::string channel=chan.key();
136 std::string alignType=aligndata["alignType"];
137 float shiftX=aligndata["shiftX"];
138
139 ATH_MSG_INFO("execute: run "<<getContext().eventID().run_number()<<", lb "<<getContext().eventID().lumi_block()<<", evnt "<<getContext().eventID().event_number()<<", channel "<<channel<<"/"<<nchannels<<", alignType "<<alignType<<", shiftX = "<<shiftX);
140 }
141
142 ++counter;
143 }
144
145
146// load local AFP ToF parameters and print out something
147 ATH_MSG_INFO("execute: "<<getContext().eventID().event_number()<<" , before loc tof");
149 const CondAttrListCollection* attrLocToFList { *ch_loctof };
150 if ( attrLocToFList == nullptr )
151 {
152 ATH_MSG_ERROR("local ToF data for key " << m_rch_loctof.fullKey() << " not found");
153 return StatusCode::FAILURE;
154 }
155
156 counter=1;
158 for (itr3 = attrLocToFList->begin(); itr3 != attrLocToFList->end(); ++itr3) {
159 if(counter>1) ATH_MSG_INFO("there should be only one real channel in /FWD/AFP/ToFParameters/Local, this is real channel nr. "<<counter);
160
161 const coral::AttributeList &atr = itr3->second;
162 std::string data = *(static_cast<const std::string *>((atr["data"]).addressOfData()));
163
164 nlohmann::json jsondata = nlohmann::json::parse(data);
165 int nchannels=jsondata["nchannels"];
166 nlohmann::json channeldata=jsondata["data"];
167 for(auto& chan : channeldata.items())
168 {
169 // channels are ordered alphabetically: 0,1,10,...,19,2,20,21,...29,3,30,31,4,...,9
170 ATH_MSG_INFO("reading channel nr. "<<chan.key());
171 nlohmann::json paramdata=chan.value();
172
173 std::string channel=chan.key();
174 int trainID=paramdata["trainID"];
175 float barWeight=paramdata["barWeight"];
176
177 ATH_MSG_INFO("execute: run "<<getContext().eventID().run_number()<<", lb "<<getContext().eventID().lumi_block()<<", evnt "<<getContext().eventID().event_number()<<", channel "<<channel<<"/"<<nchannels<<", trainID "<<trainID<<", barWeight = "<<barWeight);
178 }
179
180 ++counter;
181 }
182
183// load vertex AFP ToF parameters and print out something
184 ATH_MSG_INFO("execute: "<<getContext().eventID().event_number()<<" , before vtx tof");
186 const CondAttrListCollection* attrVtxToFList { *ch_vtxtof };
187 if ( attrVtxToFList == nullptr )
188 {
189 ATH_MSG_ERROR("vertex ToF data for key " << m_rch_vtxtof.fullKey() << " not found");
190 return StatusCode::FAILURE;
191 }
192
193 counter=1;
195 for (itr4 = attrVtxToFList->begin(); itr4 != attrVtxToFList->end(); ++itr4) {
196 if(counter>1) ATH_MSG_INFO("there should be only one real channel in /FWD/AFP/ToFParameters/Vertex, this is real channel nr. "<<counter);
197
198 const coral::AttributeList &atr = itr4->second;
199 std::string data = *(static_cast<const std::string *>((atr["data"]).addressOfData()));
200
201 nlohmann::json jsondata = nlohmann::json::parse(data);
202 int nchannels=jsondata["nchannels"];
203 nlohmann::json channeldata=jsondata["data"];
204 for(auto& chan : channeldata.items())
205 {
206 // channels are ordered alphabetically: 0,1
207 ATH_MSG_INFO("reading channel nr. "<<chan.key());
208 nlohmann::json paramdata=chan.value();
209
210 std::string channel=chan.key();
211 int stationID=paramdata["stationID"];
212 float timeGlobalOffset=paramdata["timeGlobalOffset"];
213 std::vector<float> trainEdge=paramdata["trainEdge"];
214
215 ATH_MSG_INFO("execute: run "<<getContext().eventID().run_number()<<", lb "<<getContext().eventID().lumi_block()<<", evnt "<<getContext().eventID().event_number()<<", channel "<<channel<<"/"<<nchannels<<", stationID "<<stationID<<", timeGlobalOffset = "<<timeGlobalOffset<<", trainEdge = ("<<trainEdge.at(0)<<", "<<trainEdge.at(1)<<", ... "<<trainEdge.at(4)<<")");
216 }
217
218 ++counter;
219 }
220
221 return StatusCode::SUCCESS;
222}
223
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
AFPDBTester(const std::string &name, ISvcLocator *pSvcLocator)
SG::ReadCondHandleKey< CaloLocalHadCoeff > m_key
Definition AFPDBTester.h:40
SG::ReadCondHandleKey< CondAttrListCollection > m_rch_globshiftX
Definition AFPDBTester.h:36
SG::ReadCondHandleKey< AthenaAttributeList > m_readKey
Definition AFPDBTester.h:39
virtual StatusCode execute() override
SG::ReadCondHandleKey< CondAttrListCollection > m_rch_locshiftX
Definition AFPDBTester.h:35
virtual ~AFPDBTester() override
SG::ReadCondHandleKey< CondAttrListCollection > m_rch_loctof
Definition AFPDBTester.h:37
virtual StatusCode finalize() override
virtual StatusCode initialize() override
SG::ReadCondHandleKey< CondAttrListCollection > m_rch_vtxtof
Definition AFPDBTester.h:38
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
An AttributeList represents a logical row of attributes in a metadata table.
Hold binned correction data for local hadronic calibration procedure.
This class is a collection of AttributeLists where each one is associated with a channel number.
const_iterator end() const
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
ChanAttrListMap::const_iterator const_iterator