ATLAS Offline Software
InDetRawDataFakeReader.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
17 // Silicon trackers includes
18 #include "InDetRawDataFakeReader.h"
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
39 #include "InDetIdentifier/SCT_ID.h"
40 #include "InDetIdentifier/TRT_ID.h"
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 
75  ATH_CHECK( checkPixel() );
76  ATH_CHECK( checkSCT() );
77  ATH_CHECK( checkTRT() );
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;
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 
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  // Retrive 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;
201  InDetRawDataFakeCreator creator;
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;
286  InDetRawDataFakeCreator creator;
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 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
InDetRawDataFakeCreator
Class which encapsulates the creation of an InDetRawDataCollection.
Definition: InDetRawDataFakeCreator.h:41
InDetRawDataFakeReader::m_sctId
const SCT_ID * m_sctId
IDhelper for creating objects.
Definition: InDetRawDataFakeReader.h:86
SCT_ID.h
This is an Identifier helper class for the SCT subdetector. This class is a factory for creating comp...
TRT_RDO_Container.h
InDetRawDataFakeReader::checkPixel
StatusCode checkPixel() const
Compare objects read with newly created ones.
Definition: InDetRawDataFakeReader.cxx:81
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
InDetRawDataFakeReader::m_trtId
const TRT_ID * m_trtId
IDhelper for creating objects.
Definition: InDetRawDataFakeReader.h:89
TRT_RDO_Collection.h
InDetRawDataCollection::identify
virtual Identifier identify() const override final
skel.it
it
Definition: skel.GENtoEVGEN.py:423
TRT_ID.h
This is an Identifier helper class for the TRT subdetector. This class is a factory for creating comp...
IdentifiableContainerMT::size
size_t size() const
Duplicate of fullSize for backwards compatability.
Definition: IdentifiableContainerMT.h:209
InDetRawDataContainer
Definition: InDetRawDataContainer.h:27
InDetRawDataFakeReader::execute
virtual StatusCode execute()
Algorithm execute once per event.
Definition: InDetRawDataFakeReader.cxx:71
InDetRawDataFakeReader.h
Test Algorithm for POOL I/O, reads InDetRawData from transient store.
InDetRawDataFakeReader::checkTRT
StatusCode checkTRT() const
Compare objects read with newly created ones.
Definition: InDetRawDataFakeReader.cxx:276
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
InDetRawDataCollection::identifyHash
virtual IdentifierHash identifyHash() const override final
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
PixelRDOElemLinkVec
vector containing element links to pixel RDOs
Definition: PixelRDOElemLinkVec.h:40
InDetRawDataFakeReader::m_pixelId
const PixelID * m_pixelId
IDhelper for creating objects.
Definition: InDetRawDataFakeReader.h:83
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
SCT_RDO_Container.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
InDetRawDataFakeReader::InDetRawDataFakeReader
InDetRawDataFakeReader()
Avoid use of default constructor.
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
lumiFormat.i
int i
Definition: lumiFormat.py:92
PixelRDO_Collection.h
InDetRawDataFakeReader::checkSCT
StatusCode checkSCT() const
Compare objects read with newly created ones.
Definition: InDetRawDataFakeReader.cxx:191
TRT_ID::straw_layer_context
IdContext straw_layer_context(void) const
straw_layer id
Definition: TRT_ID.h:713
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
InDetRawDataFakeCreator::createSCT_RawDataColl
const InDetRawDataCollection< SCT_RDORawData > * createSCT_RawDataColl(IdentifierHash hashId, const SCT_ID *sctId, MsgStream &log)
Create SCT_RawDataCollection.
Definition: InDetRawDataFakeCreator.h:141
InDetRawDataCollection
Definition: InDetRawDataCollection.h:31
InDetRawDataFakeCreator::createTRT_RawDataColl
const InDetRawDataCollection< TRT_RDORawData > * createTRT_RawDataColl(IdentifierHash hashId, const TRT_ID *trtId, MsgStream &log)
Create TRT_RawDataCollection.
Definition: InDetRawDataFakeCreator.h:189
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IdentifiableContainerMT::end
const_iterator end() const
return const_iterator for end of container
Definition: IdentifiableContainerMT.h:242
SCT_ID::wafer_context
IdContext wafer_context(void) const
Definition: SCT_ID.h:705
PixelRDORawData::getToT
virtual int getToT() const =0
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:82
IdentifiableContainerMT::begin
const_iterator begin() const
return const_iterator for first entry
Definition: IdentifiableContainerMT.h:236
PixelRDOElemLinkVec.h
Class definition for PixelRDOElemLinkVec.
AthAlgorithm
Definition: AthAlgorithm.h:47
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
SCT_RDO_Collection.h
PixelRDO_Container.h
DataVector< RawDataT >::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
AtlasDetectorID::show_to_string
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
Definition: AtlasDetectorID.cxx:574
PixelID::wafer_context
IdContext wafer_context(void) const
Definition: PixelID.h:590
InDetRawDataFakeReader::finalize
virtual StatusCode finalize()
Algorithm finalize at end of job.
Definition: InDetRawDataFakeReader.cxx:372
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
PixelRDORawData
Definition: PixelRDORawData.h:23
InDetRawDataFakeCreator.h
Class which encapsulates the creation of an InDetRawDataCollection.
PixelRDOElemLinkVec::pixelRDOs
const std::vector< elem_type > & pixelRDOs() const
Definition: PixelRDOElemLinkVec.h:79
error
Definition: IImpactPoint3dEstimator.h:70
IdContext
class IdContext
Definition: IdContext.h:34
DataVector< RawDataT >::size
size_type size() const noexcept
Returns the number of elements in the collection.
InDetRawDataFakeCreator::createPixelRawDataColl
const InDetRawDataCollection< PixelRDORawData > * createPixelRawDataColl(IdentifierHash hashId, const PixelID *pixelId, MsgStream &log)
Create PixelRawDataCollection.
Definition: InDetRawDataFakeCreator.h:76
DataVector< RawDataT >::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
InDetRawDataFakeReader::initialize
virtual StatusCode initialize()
Algorithm initialize at begin of job.
Definition: InDetRawDataFakeReader.cxx:59