ATLAS Offline Software
Loading...
Searching...
No Matches
InDetRawDataFakeReader.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
16
17// Silicon trackers includes
19
21
22//InDetRawData includes
29
30// #include "InDetRawData/InDetRawDataContainer.h"
31// #include "InDetRawData/InDetRawDataCollection.h"
32// #include "InDetRawData/Pixel1RawData.h"
33// #include "InDetRawData/InDetRawDataCLASS_DEF.h"
34// #include "InDetRawData/PixelRDORawData.h"
35// #include "InDetRawUtils/PixelHid2RESrcID.h"
36
37// Id includes
41//#include "InDetDetDescr/InDet_DetDescrManager.h"
42
43// test includes
45
46#include <map>
47
48// Constructor with parameters:
50 ISvcLocator *pSvcLocator) :
51 AthAlgorithm(name,pSvcLocator),
52 m_pixelId(nullptr),
53 m_sctId(nullptr),
54 m_trtId(nullptr)
55
56{}
57
58// Initialize method:
60{
61 ATH_MSG_INFO("InDetRawDataFakeReader::initialize()" );
62
63 ATH_CHECK( detStore()->retrieve(m_pixelId, "PixelID") );
64 ATH_CHECK( detStore()->retrieve(m_sctId, "SCT_ID") );
65 ATH_CHECK( detStore()->retrieve(m_trtId, "TRT_ID") );
66
67 return StatusCode::SUCCESS;
68}
69
70// Execute method:
72{
73 ATH_MSG_DEBUG("InDetRawDataFakeReader::execute()" );
74
78 return StatusCode::SUCCESS;
79}
80
82{
83 ATH_MSG_DEBUG("InDetRawDataFakeReader::checkPixel()" );
84
85 const PixelRDO_Container* pixCont = nullptr;
86 ATH_CHECK( evtStore()->retrieve(pixCont,"PixelRDOs") );
87
88 // loop on all RDO collections read in and check them
89 int nmatch = 0;
90 bool error = false;
92 IdContext cntx = m_pixelId->wafer_context();
93
94 ATH_MSG_DEBUG("PixelRDO_Container size "
95 << pixCont->size() << " " );
96
97 // Check for non-zero length of container
98 if (pixCont->begin() == pixCont->end()) {
99 ATH_MSG_ERROR("Container '" << "PixelRDOs" << "' is EMPTY !" );
100 return StatusCode::FAILURE;
101 }
102
103
104
105 // loop on all rdo collections.
106// for(; rdoCollectionsBegin!=rdoCollectionsEnd; ++rdoCollectionsBegin) {
107
108 for(PixelRDO_Container::const_iterator it=pixCont->begin() ;
109 it!=pixCont->end() ; ++it) {
110
111 const InDetRawDataCollection<PixelRDORawData>* RDO_Collection(&(**it));
112// const InDetRawDataCollection<Pixel1RawData>* RDO_Collection(&(*rdoCollectionsBegin.cptr()));
113
114 ATH_MSG_DEBUG("Read RDO collection: size, ids "
115 << RDO_Collection->size() << " "
116 << m_pixelId->show_to_string(RDO_Collection->identify(), &cntx) << " "
117 << MSG::hex << (unsigned int)RDO_Collection->identifyHash() << MSG::dec );
118
119 // create a new pixel RDO collection
120 MsgStream log(msgSvc(), name());
122 creator.createPixelRawDataColl(RDO_Collection->identifyHash(), m_pixelId, msg());
123
124 ATH_MSG_DEBUG("Test RDO collection: size, ids "
125 << rdocoll->size() << " "
126 << m_pixelId->show_to_string(rdocoll->identify(), &cntx) << " "
127 << MSG::hex << (unsigned int)rdocoll->identifyHash() << MSG::dec );
128
129
130 // Use one of the specific clustering AlgTools to make clusters
131 //typedef InDetRawDataCollection<Pixel1RawData> RDO1_Collection_type;
132 typedef InDetRawDataCollection<PixelRDORawData> RDO_Collection_type;
133
134 // loop on all RDOs
135// RDO1_Collection_type::const_iterator nextRDO = RDO_Collection->begin();
136// RDO1_Collection_type::const_iterator lastRDO = RDO_Collection->end();
137 RDO_Collection_type::const_iterator nextRDO = RDO_Collection->begin();
138 RDO_Collection_type::const_iterator lastRDO = RDO_Collection->end();
139 RDO_Collection_type::const_iterator nextRDO1 = rdocoll->begin();
140 RDO_Collection_type::const_iterator lastRDO1 = rdocoll->end();
141 for(; nextRDO!=lastRDO && nextRDO1!=lastRDO1 ; ++nextRDO, ++nextRDO1) {
142 // Look for match
143 if (((*nextRDO)->identify() != (*nextRDO1)->identify()) ||
144 ((*nextRDO)->getWord() != (*nextRDO1)->getWord())) {
145
146 ATH_MSG_ERROR("RDO's do NOT match: ids, word "
147 << m_pixelId->show_to_string((*nextRDO)->identify()) << " "
148 << m_pixelId->show_to_string((*nextRDO1)->identify()) << " "
149 << MSG::hex << (*nextRDO)->getWord() << " "
150 << MSG::hex << (*nextRDO1)->getWord() << " "
151 );
152 error = true;
153 }
154 else {
155 nmatch++;
156 }
157 }
158 ATH_MSG_DEBUG("Matching RDOs " << nmatch );
159
160 delete rdocoll;
161 }
162
163 // print out pixel element links
164
165 // Retrieve the element link vector
166 const PixelRDOElemLinkVec* linkVec = nullptr;
167 ATH_CHECK( evtStore()->retrieve(linkVec, "PixelRDOELs") );
168
169 ATH_MSG_DEBUG("PixelRDOElemLinkVec found with "
170 << linkVec->pixelRDOs().size()
171 << " RDOs " );
172 for(unsigned int i = 0; i < linkVec->pixelRDOs().size(); ++i) {
173 // Print out rdos from element link
174 PixelRDOElemLinkVec::elem_type rdo = linkVec->pixelRDOs()[i];
175 const PixelRDORawData* ncrdo = *rdo;
176 ATH_MSG_DEBUG("RDO ID=" << m_pixelId->show_to_string((*rdo)->identify())
177 << "RDO ToT=" << ncrdo->getToT() );
178 }
179
180
181 if (error) {
182 ATH_MSG_INFO("ERROR reading and checking Pixel RDO collections " );
183 }
184 else {
185 ATH_MSG_INFO("Successfully read and checked Pixel RDO collections " );
186 }
187
188 return StatusCode::SUCCESS;
189}
190
192{
193 ATH_MSG_DEBUG("InDetRawDataFakeReader::execute()" );
194
195 const SCT_RDO_Container* sctCont = nullptr;
196 ATH_CHECK( evtStore()->retrieve(sctCont,"SCT_RDOs") );
197
198 // loop on all RDO collections read in and check them
199 int nmatch = 0;
200 bool error = false;
202 IdContext cntx = m_sctId->wafer_context();
203
204 ATH_MSG_DEBUG("SCT_RDO_Container size "
205 << sctCont->size() << " " );
206
207 // Check for non-zero length of container
208 if (sctCont->begin() == sctCont->end()) {
209 ATH_MSG_ERROR("Container '" << "SCT_RDOs" << "' is EMPTY !" );
210 return StatusCode::FAILURE;
211 }
212
213 for(SCT_RDO_Container::const_iterator it=sctCont->begin() ;
214 it!=sctCont->end() ; ++it) {
215
216 const InDetRawDataCollection<SCT_RDORawData>* RDO_Collection(&(**it));
217
218 ATH_MSG_DEBUG("Read RDO collection: size, ids "
219 << RDO_Collection->size() << " "
220 << m_sctId->show_to_string(RDO_Collection->identify(), &cntx) << " "
221 << MSG::hex << (unsigned int)RDO_Collection->identifyHash() << MSG::dec );
222
223 // create a new sct RDO collection
224 MsgStream log(msgSvc(), name());
226 creator.createSCT_RawDataColl(RDO_Collection->identifyHash(), m_sctId, msg());
227
228 ATH_MSG_DEBUG("Test RDO collection: size, ids "
229 << rdocoll->size() << " "
230 << m_sctId->show_to_string(rdocoll->identify(), &cntx) << " "
231 << MSG::hex << (unsigned int)rdocoll->identifyHash() << MSG::dec );
232
233
234 // Use one of the specific clustering AlgTools to make clusters
235 typedef InDetRawDataCollection<SCT_RDORawData> RDO_Collection_type;
236
237 // loop on all RDOs
238 RDO_Collection_type::const_iterator nextRDO = RDO_Collection->begin();
239 RDO_Collection_type::const_iterator lastRDO = RDO_Collection->end();
240 RDO_Collection_type::const_iterator nextRDO1 = rdocoll->begin();
241 RDO_Collection_type::const_iterator lastRDO1 = rdocoll->end();
242 for(; nextRDO!=lastRDO && nextRDO1!=lastRDO1 ; ++nextRDO, ++nextRDO1) {
243 // Look for match
244 if (((*nextRDO)->identify() != (*nextRDO1)->identify()) ||
245 ((*nextRDO)->getGroupSize() != (*nextRDO1)->getGroupSize())) {
246
247 ATH_MSG_ERROR("RDO's do NOT match: ids, group, strip "
248 << m_sctId->show_to_string((*nextRDO)->identify()) << " "
249 << m_sctId->show_to_string((*nextRDO1)->identify()) << " "
250 << MSG::hex
251 << (*nextRDO)->getGroupSize() << " "
252 << (*nextRDO1)->getGroupSize() << " "
253 << MSG::dec
254 );
255 error = true;
256 }
257 else {
258 nmatch++;
259 }
260 }
261 ATH_MSG_DEBUG("Matching RDOs " << nmatch );
262
263 delete rdocoll;
264 }
265
266 if (error) {
267 ATH_MSG_INFO("ERROR reading and checking SCT RDO collections " );
268 }
269 else {
270 ATH_MSG_INFO("Successfully read and checked SCT RDO collections " );
271 }
272
273 return StatusCode::SUCCESS;
274}
275
277{
278 ATH_MSG_DEBUG("InDetRawDataFakeReader::execute()" );
279
280 const TRT_RDO_Container* trtCont = nullptr;
281 ATH_CHECK( evtStore()->retrieve(trtCont,"TRT_RDOs") );
282
283 // loop on all RDO collections read in and check them
284 int nmatch = 0;
285 bool error = false;
287 IdContext cntx = m_trtId->straw_layer_context();
288
289 ATH_MSG_DEBUG("TRT_RDO_Container size "
290 << trtCont->size() << " " );
291
292 // Check for non-zero length of container
293 if (trtCont->begin() == trtCont->end()) {
294 ATH_MSG_ERROR("Container '" << "TRT_RDOs"
295 << "' is EMPTY !" );
296 return StatusCode::FAILURE;
297 }
298
299 for(TRT_RDO_Container::const_iterator it=trtCont->begin() ;
300 it!=trtCont->end() ; ++it) {
301
302 const InDetRawDataCollection<TRT_RDORawData>* RDO_Collection(&(**it));
303
304 ATH_MSG_DEBUG("Read RDO collection: size, ids "
305 << RDO_Collection->size() << " "
306 << m_trtId->show_to_string(RDO_Collection->identify(), &cntx) << " "
307 << MSG::hex << (unsigned int)RDO_Collection->identifyHash() << MSG::dec );
308
309 // create a new trt RDO collection
310 MsgStream log(msgSvc(), name());
312 creator.createTRT_RawDataColl(RDO_Collection->identifyHash(), m_trtId, msg());
313
314 ATH_MSG_DEBUG("Test RDO collection: size, ids "
315 << rdocoll->size() << " "
316 << m_trtId->show_to_string(rdocoll->identify(), &cntx) << " "
317 << MSG::hex << (unsigned int)rdocoll->identifyHash() << MSG::dec );
318
319
320 // Use one of the specific clustering AlgTools to make clusters
321 typedef InDetRawDataCollection<TRT_RDORawData> RDO_Collection_type;
322
323 // loop on all RDOs
324 RDO_Collection_type::const_iterator nextRDO = RDO_Collection->begin();
325 RDO_Collection_type::const_iterator lastRDO = RDO_Collection->end();
326 RDO_Collection_type::const_iterator nextRDO1 = rdocoll->begin();
327 RDO_Collection_type::const_iterator lastRDO1 = rdocoll->end();
328 for(; nextRDO!=lastRDO && nextRDO1!=lastRDO1 ; ++nextRDO, ++nextRDO1) {
329 // Look for match
330 if (((*nextRDO)->identify() != (*nextRDO1)->identify()) ||
331 ((*nextRDO)->highLevel() != (*nextRDO1)->highLevel()) ||
332 ((*nextRDO)->timeOverThreshold() != (*nextRDO1)->timeOverThreshold()) ||
333 ((*nextRDO)->driftTimeBin() != (*nextRDO1)->driftTimeBin())) {
334
335 ATH_MSG_ERROR("RDO's do NOT match: ids, highlvl, TOT, drift "
336 << m_trtId->show_to_string((*nextRDO)->identify()) << " "
337 << m_trtId->show_to_string((*nextRDO1)->identify()) << " "
338 << MSG::hex
339 << (*nextRDO)->highLevel() << " "
340 << (*nextRDO1)->highLevel() << " "
341 << (*nextRDO)->timeOverThreshold() << " "
342 << (*nextRDO1)->timeOverThreshold() << " "
343 << (*nextRDO)->driftTimeBin() << " "
344 << (*nextRDO1)->driftTimeBin() << " "
345 << MSG::dec
346 );
347 error = true;
348 }
349 else {
350 nmatch++;
351 }
352 }
353 ATH_MSG_DEBUG("Matching RDOs " << nmatch );
354
355 delete rdocoll;
356 }
357
358 if (error) {
359 ATH_MSG_INFO("ERROR reading and checking TRT RDO collections " );
360 }
361 else {
362 ATH_MSG_INFO("Successfully read and checked TRT RDO collections " );
363 }
364
365 return StatusCode::SUCCESS;
366}
367
368
369
370
371// Finalize method:
373{
374 ATH_MSG_INFO("InDetRawDataFakeReader::finalize()" );
375 return StatusCode::SUCCESS;
376}
377
#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)
Class which encapsulates the creation of an InDetRawDataCollection.
Test Algorithm for POOL I/O, reads InDetRawData from transient store.
This is an Identifier helper class for the Pixel subdetector.
Class definition for PixelRDOElemLinkVec.
InDetRawDataContainer< InDetRawDataCollection< PixelRDORawData > > PixelRDO_Container
This is an Identifier helper class for the SCT subdetector.
InDetRawDataContainer< InDetRawDataCollection< SCT_RDORawData > > SCT_RDO_Container
This is an Identifier helper class for the TRT subdetector.
InDetRawDataContainer< InDetRawDataCollection< TRT_RDORawData > > TRT_RDO_Container
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
const ServiceHandle< StoreGateSvc > & detStore() const
MsgStream & msg() const
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition IdContext.h:26
const_iterator end() const
return const_iterator for end of container
size_t size() const
Duplicate of fullSize for backwards compatability.
const_iterator begin() const
return const_iterator for first entry
virtual Identifier identify() const override final
virtual IdentifierHash identifyHash() const override final
Class which encapsulates the creation of an InDetRawDataCollection.
const InDetRawDataCollection< PixelRDORawData > * createPixelRawDataColl(IdentifierHash hashId, const PixelID *pixelId, MsgStream &log)
Create PixelRawDataCollection.
const InDetRawDataCollection< SCT_RDORawData > * createSCT_RawDataColl(IdentifierHash hashId, const SCT_ID *sctId, MsgStream &log)
Create SCT_RawDataCollection.
const InDetRawDataCollection< TRT_RDORawData > * createTRT_RawDataColl(IdentifierHash hashId, const TRT_ID *trtId, MsgStream &log)
Create TRT_RawDataCollection.
InDetRawDataFakeReader()
Avoid use of default constructor.
virtual StatusCode execute()
Algorithm execute once per event.
StatusCode checkPixel() const
Compare objects read with newly created ones.
const TRT_ID * m_trtId
IDhelper for creating objects.
const SCT_ID * m_sctId
IDhelper for creating objects.
StatusCode checkTRT() const
Compare objects read with newly created ones.
virtual StatusCode initialize()
Algorithm initialize at begin of job.
StatusCode checkSCT() const
Compare objects read with newly created ones.
virtual StatusCode finalize()
Algorithm finalize at end of job.
const PixelID * m_pixelId
IDhelper for creating objects.
vector containing element links to pixel RDOs
const std::vector< elem_type > & pixelRDOs() const
ElementLink< cont_type > elem_type
virtual int getToT() const =0