ATLAS Offline Software
Loading...
Searching...
No Matches
InDetRawDataFakeCreator.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef SRC_INDETRAWDATAFAKECREATOR_H
6# define SRC_INDETRAWDATAFAKECREATOR_H
7
19
27
28
35#include "GaudiKernel/MsgStream.h"
36
37
39{
40public:
41
44
48 const PixelID* pixelId,
49 MsgStream& log);
50
54 const SCT_ID* sctId,
55 MsgStream& log);
56
60 const TRT_ID* trtId,
61 MsgStream& log);
62};
63
64
65
69
70
73 const PixelID* pixelId,
74 MsgStream& log)
75{
76
77 // create a new pixel RDO collection
80
81 IdContext cntx(pixelId->wafer_context());
82
83 // need the DE identifier
84 Identifier waferId = pixelId->wafer_id (hashId);
85 rdocoll->setIdentifier(waferId);
86
87 log << MSG::VERBOSE << "hash, id1, id2: "
88 << MSG::hex << (unsigned int)hashId << MSG::dec << " "
89 << MSG::hex << waferId << MSG::dec << " "
90 << MSG::hex << pixelId->wafer_id(hashId) << MSG::dec << " "
91 << pixelId->show_to_string(waferId) << " "
92 << pixelId->show_to_string(pixelId->wafer_id(hashId)) << " "
93 << endmsg;
94
95 int deltaPhi = pixelId->phi_index_max(waferId)/6;
96 int deltaEta = pixelId->eta_index_max(waferId)/6;
97 log << MSG::VERBOSE << "phi max, eta max, dphi, deta: "
98 << pixelId->phi_index_max(waferId) << " "
99 << pixelId->eta_index_max(waferId) << " "
100 << deltaPhi << " "
101 << deltaEta << " "
102 << endmsg;
103
104 int phi = deltaPhi;
105 // loop on 16 digits
106 for (int j = 0; j < 4; ++j, phi += deltaPhi) {
107 int eta = deltaEta;
108 for (int k = 0; k < 4; ++k, eta += deltaEta) {
109
110 Identifier id_readout = pixelId->pixel_id(waferId, phi, eta);
111 const unsigned int mo = (1 & 0x1F) << 27;
112 const unsigned int fe2 =(1 & 0xF) << 21;
113 const unsigned int row2=(1 & 0xFF) << 13;
114 const unsigned int col2=(1 & 0x1F) << 8;
115 const unsigned int tot =(5 & 0xFF);
116 unsigned int pixelWord = (mo|fe2|row2|col2|tot);
117
118 Pixel1RawData *rdo= new Pixel1RawData(id_readout, pixelWord);
119 if (rdo) {
120 rdocoll->push_back(rdo);
121
122 } else {
123 log << MSG::ERROR << "Could not create Pixel1RawData object !"
124 << endmsg;
125 }
126 // Print out contents of RDO
127 log << MSG::VERBOSE << "Created RDO: "
128 << pixelId->show_to_string(rdo->identify()) << " "
129 << MSG::hex << rdo->getWord() << endmsg;
130 }
131 }
132
133 return (rdocoll);
134}
135
138 const SCT_ID* sctId,
139 MsgStream& log)
140{
141 // create a new sct RDO collection
142 auto * rdocoll = new InDetRawDataCollection< SCT_RDORawData >(hashId);
143 IdContext cntx(sctId->wafer_context());
144 // need the DE identifier
145 Identifier waferId = sctId->wafer_id (hashId);
146 rdocoll->setIdentifier(waferId);
147 const int maxPossibleStrip = sctId->strip_max(waferId);
148 if (maxPossibleStrip<0) { //error condition, if waferId not found
149 delete rdocoll;
150 log << MSG::WARNING <<"waferId unknown in InDetRawDataFakeCreator::createSCT_RawDataColl"<<endmsg;
151 return nullptr;
152 }
153 int deltaStrip = maxPossibleStrip/6;
154 log << MSG::VERBOSE << "strip max, dstrip: "
155 << sctId->strip_max(waferId) << " "
156 << deltaStrip << " "
157 << endmsg;
158
159 int strip = deltaStrip;
160 // loop on 4 digits
161 for (int j = 0; j < 4; ++j, strip += deltaStrip) {
162
163 Identifier id_readout = sctId->strip_id(waferId, strip);
164 const unsigned int str =(strip) << 16;
165 const unsigned int group = 4;
166 unsigned int word= (group|str);
167
168 SCT1_RawData *rdo= new SCT1_RawData(id_readout, word);
169 if (rdo) {
170 rdocoll->push_back(rdo);
171
172 } else {
173 log << MSG::ERROR << "Could not create SCT1_RawData object !"
174 << endmsg;
175 }
176 // Print out contents of RDO
177 log << MSG::VERBOSE << "Created RDO: "
178 << sctId->show_to_string(rdo->identify()) << " "
179 << MSG::hex << rdo->getWord() << endmsg;
180 }
181
182 return (rdocoll);
183}
184
185
188 const TRT_ID* trtId,
189 MsgStream& log)
190{
191 // create a new trt RDO collection
194
195 IdContext cntx(trtId->straw_layer_context());
196
197 // need the DE identifier
198 Identifier strLayId = trtId->layer_id (hashId);
199 rdocoll->setIdentifier(strLayId);
200
201 int deltaStraw = trtId->straw_max(strLayId)/6;
202 log << MSG::VERBOSE << "straw max, dstraw: "
203 << trtId->straw_max(strLayId) << " "
204 << deltaStraw << " "
205 << endmsg;
206
207 int straw = deltaStraw;
208 // loop on 16 digits
209 for (int j = 0; j < 4; ++j, straw += deltaStraw) {
210
211 Identifier id_readout = trtId->straw_id(strLayId, straw);
212 unsigned int trtWord= (0xFFFFFFFF);
213
214 TRT_LoLumRawData *rdo= new TRT_LoLumRawData(id_readout, trtWord);
215 if (rdo) {
216 rdocoll->push_back(rdo);
217
218 } else {
219 log << MSG::ERROR << "Could not create TRT_LoLumRawData object !"
220 << endmsg;
221 }
222 // Print out contents of RDO
223 log << MSG::VERBOSE << "Created RDO: "
224 << trtId->show_to_string(rdo->identify()) << " "
225 << MSG::hex << rdo->getWord() << endmsg;
226 }
227 return (rdocoll);
228}
229
230
231
232#endif // SRC_INDETRAWDATAFAKECREATOR_H
233
Scalar eta() const
pseudorapidity method
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
Scalar phi() const
phi method
#define endmsg
This is an Identifier helper class for the Pixel subdetector.
This is an Identifier helper class for the SCT subdetector.
This is an Identifier helper class for the TRT subdetector.
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
value_type push_back(value_type pElem)
Add an element to the end of the collection.
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition IdContext.h:26
This is a "hash" representation of an Identifier.
void setIdentifier(Identifier id)
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.
InDetRawDataFakeCreator()
Default constructor.
const InDetRawDataCollection< TRT_RDORawData > * createTRT_RawDataColl(IdentifierHash hashId, const TRT_ID *trtId, MsgStream &log)
Create TRT_RawDataCollection.
virtual Identifier identify() const override final
unsigned int getWord() const
This is an Identifier helper class for the Pixel subdetector.
Definition PixelID.h:67
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
Definition PixelID.h:360
Identifier pixel_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int phi_index, int eta_index) const
For an individual pixel.
Definition PixelID.h:428
int eta_index_max(const Identifier &id) const
Definition PixelID.cxx:162
int phi_index_max(const Identifier &id) const
Definition PixelID.cxx:143
IdContext wafer_context() const
Definition PixelID.cxx:980
This is an Identifier helper class for the SCT subdetector.
Definition SCT_ID.h:68
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
Definition SCT_ID.h:459
int strip_max(const Identifier &id) const
Definition SCT_ID.cxx:188
IdContext wafer_context() const
Definition SCT_ID.cxx:772
Identifier strip_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side, int strip) const
For an individual strip.
Definition SCT_ID.h:530
This is an Identifier helper class for the TRT subdetector.
Definition TRT_ID.h:82
Identifier layer_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer) const
For an individual straw layer.
Definition TRT_ID.h:494
int straw_max(const Identifier &id) const
Definition TRT_ID.cxx:760
Identifier straw_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer, int straw) const
Three ways of getting id for a single straw:
Definition TRT_ID.h:575
IdContext straw_layer_context() const
straw_layer id
Definition TRT_ID.cxx:948