ATLAS Offline Software
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 
7 AFPDBTester::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 
23  ATH_MSG_INFO( "m_key id: " << m_key.fullKey() );
25  ATH_MSG_INFO( "m_readKey id: " << m_readKey.fullKey() );
27  ATH_MSG_INFO( "m_rch_locshiftX id: " << m_rch_locshiftX.fullKey() );
29  ATH_MSG_INFO( "m_rch_globshiftX id: " << m_rch_globshiftX.fullKey() );
31  ATH_MSG_INFO( "m_rch_loctof id: " << m_rch_loctof.fullKey() );
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 
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 
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 
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 
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 
AFPDBTester::AFPDBTester
AFPDBTester(const std::string &name, ISvcLocator *pSvcLocator)
Definition: AFPDBTester.cxx:7
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
plotting.plot_kinematics.run_number
run_number
Definition: plot_kinematics.py:29
AFPDBTester::initialize
virtual StatusCode initialize() override
Definition: AFPDBTester.cxx:18
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
json
nlohmann::json json
Definition: HistogramDef.cxx:9
AFPDBTester::m_rch_loctof
SG::ReadCondHandleKey< CondAttrListCollection > m_rch_loctof
Definition: AFPDBTester.h:37
parse
std::map< std::string, std::string > parse(const std::string &list)
Definition: egammaLayerRecalibTool.cxx:1054
AFPDBTester::m_rch_locshiftX
SG::ReadCondHandleKey< CondAttrListCollection > m_rch_locshiftX
Definition: AFPDBTester.h:35
AFPDBTester::m_rch_vtxtof
SG::ReadCondHandleKey< CondAttrListCollection > m_rch_vtxtof
Definition: AFPDBTester.h:38
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
AFPDBTester::execute
virtual StatusCode execute() override
Definition: AFPDBTester.cxx:44
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AFPDBTester::m_rch_globshiftX
SG::ReadCondHandleKey< CondAttrListCollection > m_rch_globshiftX
Definition: AFPDBTester.h:36
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
AFPDBTester::m_readKey
SG::ReadCondHandleKey< AthenaAttributeList > m_readKey
Definition: AFPDBTester.h:39
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloLocalHadCoeff
Hold binned correction data for local hadronic calibration procedure.
Definition: CaloLocalHadCoeff.h:41
Muon::nsw::STGTPSegments::moduleIDBits::stationID
constexpr uint8_t stationID
Large or Small wedge.
Definition: NSWSTGTPDecodeBitmaps.h:155
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthenaAttributeList
An AttributeList represents a logical row of attributes in a metadata table. The name and type of eac...
Definition: PersistentDataModel/PersistentDataModel/AthenaAttributeList.h:45
AthAlgorithm
Definition: AthAlgorithm.h:47
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
AFPDBTester::m_key
SG::ReadCondHandleKey< CaloLocalHadCoeff > m_key
Definition: AFPDBTester.h:40
AFPDBTester::finalize
virtual StatusCode finalize() override
Definition: AFPDBTester.cxx:38
CondAttrListCollection::const_iterator
ChanAttrListMap::const_iterator const_iterator
Definition: CondAttrListCollection.h:63
AFPDBTester::~AFPDBTester
virtual ~AFPDBTester() override
Definition: AFPDBTester.cxx:13
test_pyathena.counter
counter
Definition: test_pyathena.py:15
AFPDBTester.h