ATLAS Offline Software
Loading...
Searching...
No Matches
PixelModuleDataStream.h File Reference

Stream insertion operator for PixelModuleData. More...

#include <iostream>
Include dependency graph for PixelModuleDataStream.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  SoshiFormat

Functions

std::ostream & operator<< (std::ostream &out, const PixelModuleData &c)
std::istream & operator>> (std::istream &in, PixelModuleData &c)
std::istream & operator>> (SoshiFormat &f, PixelModuleData &md)

Detailed Description

Stream insertion operator for PixelModuleData.

Author
Shaun Roe
Date
August, 2023

Definition in file PixelModuleDataStream.h.

Function Documentation

◆ operator<<()

std::ostream & operator<< ( std::ostream & out,
const PixelModuleData & c )

Definition at line 78 of file PixelModuleDataStream.cxx.

79 {
80 const std::string LF{"\n"};
81 //NB: in the following, vector variables are not followed by a linefeed;
82 // it's already in the vector stream insertion operator in anonymous namespace (above)
83 out<<"#defaultBarrelAnalogThreshold"<<LF;
84 out<<c.m_defaultBarrelAnalogThreshold;
85 out<<"#defaultEndcapAnalogThreshold"<<LF;
86 out<<c.m_defaultEndcapAnalogThreshold;
87 out<<"#defaultDBMAnalogThreshold"<<LF;
88 out<<c.m_defaultDBMAnalogThreshold;
89 //
90 out<<"#defaultBarrelAnalogThresholdSigma"<<LF;
91 out<<c.m_defaultBarrelAnalogThresholdSigma;
92 out<<"#defaultEndcapAnalogThresholdSigma"<<LF;
93 out<<c.m_defaultEndcapAnalogThresholdSigma;
94 out<<"#defaultDBMAnalogThresholdSigma"<<LF;
95 out<<c.m_defaultDBMAnalogThresholdSigma;
96 //
97 out<<"#defaultBarrelAnalogThresholdNoise"<<LF;
98 out<<c.m_defaultBarrelAnalogThresholdNoise;
99 out<<"#defaultEndcapAnalogThresholdNoise"<<LF;
100 out<<c.m_defaultEndcapAnalogThresholdNoise;
101 out<<"#defaultDBMAnalogThresholdNoise"<<LF;
102 out<<c.m_defaultDBMAnalogThresholdNoise;
103 //
104 out<<"#defaultBarrelInTimeThreshold"<<LF;
105 out<<c.m_defaultBarrelInTimeThreshold;
106 out<<"#defaultEndcapInTimeThreshold"<<LF;
107 out<<c.m_defaultEndcapInTimeThreshold;
108 out<<"#defaultDBMInTimeThreshold"<<LF;
109 out<<c.m_defaultDBMInTimeThreshold;
110 //
111 out<<"#barrelToTThreshold"<<LF;
112 out<<c.m_barrelToTThreshold;
113 out<<"#endcapToTThreshold"<<LF;
114 out<<c.m_endcapToTThreshold;
115 out<<"#DBMToTThreshold"<<LF;
116 out<<c.m_DBMToTThreshold;
117 //
118 out<<"#barrelCrossTalk"<<LF;
119 out<<c.m_barrelCrossTalk;
120 out<<"#endcapCrossTalk"<<LF;
121 out<<c.m_endcapCrossTalk;
122 out<<"#DBMCrossTalk"<<LF;
123 out<<c.m_DBMCrossTalk;
124 //
125 out<<"#barrelThermalNoise"<<LF;
126 out<<c.m_barrelThermalNoise;
127 out<<"#endcapThermalNoise"<<LF;
128 out<<c.m_endcapThermalNoise;
129 out<<"#DBMThermalNoise"<<LF;
130 out<<c.m_DBMThermalNoise;
131 //
132 out<<"#barrelNoiseOccupancy"<<LF;
133 out<<c.m_barrelNoiseOccupancy;
134 out<<"#endcapNoiseOccupancy"<<LF;
135 out<<c.m_endcapNoiseOccupancy;
136 out<<"#DBMNoiseOccupancy"<<LF;
137 out<<c.m_DBMNoiseOccupancy;
138 //
139 out<<"#barrelDisableProbability"<<LF;
140 out<<c.m_barrelDisableProbability;
141 out<<"#endcapDisableProbability"<<LF;
142 out<<c.m_endcapDisableProbability;
143 out<<"#DBMDisableProbability"<<LF;
144 out<<c.m_DBMDisableProbability;
145 //
146 out<<"#barrelNoiseShape"<<LF;
147 out<<c.m_barrelNoiseShape;
148 out<<"#endcapNoiseShape"<<LF;
149 out<<c.m_endcapNoiseShape;
150 out<<"#DBMNoiseShape"<<LF;
151 out<<c.m_DBMNoiseShape;
152 //
153 out<<"#FEI3BarrelLatency"<<LF;
154 out<<c.m_FEI3BarrelLatency;
155 out<<"#FEI3EndcapLatency"<<LF;
156 out<<c.m_FEI3EndcapLatency;
157 //
158 out<<"#FEI3BarrelTimingSimTune"<<LF;
159 out<<c.m_FEI3BarrelTimingSimTune;
160 out<<"#FEI3EndcapTimingSimTune"<<LF;
161 out<<c.m_FEI3EndcapTimingSimTune;
162
163 //
164 out<<"#paramA"<<LF;
165 out<<c.m_paramA<<LF;
166 out<<"#paramE"<<LF;
167 out<<c.m_paramE<<LF;
168 out<<"#paramC"<<LF;
169 out<<c.m_paramC<<LF;
170 out<<"#doLinearExtrapolation"<<LF;
171 out<<c.m_doLinearExtrapolation<<LF;
172 //
173 out<<"#biasVoltage"<<LF;
174 out<<c.m_biasVoltage<<LF;
175 //
176 out<<"#fluenceLayer"<<LF;
177 out<<c.m_fluenceLayer;
178 out<<"#radSimFluenceMapList"<<LF;
179 out<<c.m_radSimFluenceMapList;
180 //
181 out<<"#fluenceLayer3D"<<LF;
182 out<<c.m_fluenceLayer3D;
183 out<<"#radSimFluenceMapList3D"<<LF;
184 out<<c.m_radSimFluenceMapList3D;
185 //
186 out<<"#cablingMapToFile"<<LF;
187 out<<c.m_cablingMapToFile<<LF;
188 out<<"#cablingMapFileName"<<LF;
189 out<<c.m_cablingMapFileName;
190
191 return out;
192}

◆ operator>>() [1/2]

std::istream & operator>> ( SoshiFormat & f,
PixelModuleData & md )

Definition at line 406 of file PixelModuleDataStream.cxx.

406 {
407 std::istream *i = f.m_is;
408 std::string sline;
409 std::vector<std::string> lBuffer;
410 std::string multiline = "";
411 std::vector<std::string> mapsPath_list;
412 std::vector<std::string> mapsPath_list3D;
413 while (getline(*i,sline)) {
414 if (!sline.empty()) {
415 if (sline.find("//")==std::string::npos) {
416 if (sline.find("{{")!=std::string::npos && sline.find("}")!=std::string::npos) {
417 multiline = sline;
418 }
419 else if (sline.find("{")!=std::string::npos && sline.find("}}")!=std::string::npos) {
420 multiline += sline;
421 lBuffer.push_back(multiline);
422 }
423 else if (sline.find("{")!=std::string::npos && sline.find("}")!=std::string::npos) {
424 multiline += sline;
425 lBuffer.push_back(sline);
426 }
427 else if (sline.find("{")!=std::string::npos) {
428 multiline = sline;
429 }
430 else if (sline.find("}")!=std::string::npos) {
431 multiline += sline;
432 lBuffer.push_back(multiline);
433 }
434 else {
435 multiline += sline;
436 }
437 }
438 }
439 }
440
441 md.setBarrelToTThreshold(getParameter<int>("BarrelToTThreshold", lBuffer));
442 md.setFEI3BarrelLatency(getParameter<int>("FEI3BarrelLatency", lBuffer));
443 std::vector<bool> ignoreBoolVec;
444 ignoreBoolVec = getParameter<bool>("FEI3BarrelHitDuplication", lBuffer);
445 auto ignoreIntVec = getParameter<int>("FEI3BarrelSmallHitToT", lBuffer);
446 md.setFEI3BarrelTimingSimTune(getParameter<int>("FEI3BarrelTimingSimTune", lBuffer));
447 md.setBarrelCrossTalk(getParameter<double>("BarrelCrossTalk", lBuffer));
448 md.setBarrelNoiseOccupancy(getParameter<double>("BarrelNoiseOccupancy", lBuffer));
449
450 md.setBarrelDisableProbability(getParameter<double>("BarrelDisableProbability", lBuffer));
451 std::vector<double> ignoreDoubleVec{};
452 ignoreDoubleVec = getParameter<double>("BarrelLorentzAngleCorr", lBuffer);
453
454 md.setEndcapToTThreshold(getParameter<int>("EndcapToTThreshold", lBuffer));
455 md.setFEI3EndcapLatency(getParameter<int>("FEI3EndcapLatency", lBuffer));
456
457 ignoreBoolVec = getParameter<bool>("FEI3EndcapHitDuplication", lBuffer);
458 ignoreIntVec = getParameter<int>("FEI3EndcapSmallHitToT", lBuffer);
459
460 md.setFEI3EndcapTimingSimTune(getParameter<int>("FEI3EndcapTimingSimTune", lBuffer));
461 md.setEndcapCrossTalk(getParameter<double>("EndcapCrossTalk", lBuffer));
462 md.setEndcapNoiseOccupancy(getParameter<double>("EndcapNoiseOccupancy", lBuffer));
463 md.setEndcapDisableProbability(getParameter<double>("EndcapDisableProbability", lBuffer));
464 ignoreDoubleVec = getParameter<double>("EndcapLorentzAngleCorr", lBuffer);
465
466 md.setEndcapNoiseShape({getParameter<float>("PixelNoiseShape", lBuffer),
467 getParameter<float>("PixelNoiseShape", lBuffer),
468 getParameter<float>("PixelNoiseShape", lBuffer)});
469
470 md.setBLayerTimingIndex(getParameter<float>("BLayerTimingIndex", lBuffer));
471 md.setBLayerTimingProbability(getParameter<float>("BLayerTimingProbability", lBuffer));
472
473 md.setLayer1TimingIndex(getParameter<float>("Layer1TimingIndex", lBuffer));
474 md.setLayer1TimingProbability(getParameter<float>("Layer1TimingProbability", lBuffer));
475
476 md.setLayer2TimingIndex(getParameter<float>("Layer2TimingIndex", lBuffer));
477 md.setLayer2TimingProbability(getParameter<float>("Layer2TimingProbability", lBuffer));
478
479 md.setEndcap1TimingIndex(getParameter<float>("Endcap1TimingIndex", lBuffer));
480 md.setEndcap1TimingProbability(getParameter<float>("Endcap1TimingProbability", lBuffer));
481
482 md.setEndcap2TimingIndex(getParameter<float>("Endcap2TimingIndex", lBuffer));
483 md.setEndcap2TimingProbability(getParameter<float>("Endcap2TimingProbability", lBuffer));
484
485 md.setEndcap3TimingIndex(getParameter<float>("Endcap3TimingIndex", lBuffer));
486 md.setEndcap3TimingProbability(getParameter<float>("Endcap3TimingProbability", lBuffer));
487
488 // Radiation damage simulation
489 md.setFluenceLayer(getParameter<double>("BarrelFluence", lBuffer));
490 std::vector<std::string> barrelFluenceFile = getParameterString("BarrelRadiationFile", lBuffer);
491 for (const auto & fluence : barrelFluenceFile) {
492 mapsPath_list.push_back(PathResolverFindCalibFile(fluence));
493 }
494
495 if (f.run1) { // RUN1
496 md.setBarrelNoiseShape({getParameter<float>("BLayerNoiseShape", lBuffer),
497 getParameter<float>("PixelNoiseShape", lBuffer),
498 getParameter<float>("PixelNoiseShape", lBuffer)});
499 } else { // RUN2
500 md.setDBMToTThreshold(getParameter<int>("DBMToTThreshold", lBuffer));
501 md.setDBMCrossTalk(getParameter<double>("DBMCrossTalk", lBuffer));
502 md.setDBMNoiseOccupancy(getParameter<double>("DBMNoiseOccupancy", lBuffer));
503 md.setDBMDisableProbability(getParameter<double>("DBMDisableProbability", lBuffer));
504
505 md.setBarrelNoiseShape({getParameter<float>("IBLNoiseShape", lBuffer),
506 getParameter<float>("BLayerNoiseShape", lBuffer),
507 getParameter<float>("PixelNoiseShape", lBuffer),
508 getParameter<float>("PixelNoiseShape", lBuffer)});
509
510 md.setDBMNoiseShape({getParameter<float>("IBLNoiseShape", lBuffer),
511 getParameter<float>("IBLNoiseShape", lBuffer),
512 getParameter<float>("IBLNoiseShape", lBuffer)});
513
514 // Radiation damage simulation for 3D sensor
515 md.setFluenceLayer3D(getParameter<double>("3DFluence", lBuffer));
516 std::vector<std::string> barrel3DFluenceFile = getParameterString("3DRadiationFile", lBuffer);
517 for (const auto & fluence3D : barrel3DFluenceFile) {
518 mapsPath_list3D.push_back(PathResolverFindCalibFile(fluence3D));
519 }
520 }
521 md.setRadSimFluenceMapList(mapsPath_list);
522 md.setRadSimFluenceMapList3D(mapsPath_list3D);
523 return *i;
524
525}
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
void setBarrelNoiseOccupancy(const std::vector< double > &barrelNoiseOccupancy)
void setLayer2TimingIndex(const std::vector< float > &Layer2TimingIndex)
void setRadSimFluenceMapList3D(const std::vector< std::string > &radSimFluenceMapList3D)
void setBarrelNoiseShape(const std::vector< std::vector< float > > &barrelNoiseShape)
void setLayer1TimingIndex(const std::vector< float > &Layer1TimingIndex)
void setEndcapCrossTalk(const std::vector< double > &endcapCrossTalk)
void setEndcapNoiseShape(const std::vector< std::vector< float > > &endcapNoiseShape)
void setEndcap2TimingIndex(const std::vector< float > &Endcap2TimingIndex)
void setRadSimFluenceMapList(const std::vector< std::string > &radSimFluenceMapList)
void setFEI3BarrelLatency(const std::vector< int > &FEI3BarrelLatency)
void setLayer1TimingProbability(const std::vector< float > &Layer1TimingProbability)
void setDBMToTThreshold(const std::vector< int > &DBMToTThreshold)
void setEndcap1TimingIndex(const std::vector< float > &Endcap1TimingIndex)
void setBarrelCrossTalk(const std::vector< double > &barrelCrossTalk)
void setFluenceLayer3D(const std::vector< double > &fluenceLayer)
void setFEI3BarrelTimingSimTune(const std::vector< int > &FEI3BarrelTimingSimTune)
void setFluenceLayer(const std::vector< double > &fluenceLayer)
void setBLayerTimingIndex(const std::vector< float > &BLayerTimingIndex)
void setEndcap2TimingProbability(const std::vector< float > &Endcap2TimingProbability)
void setDBMNoiseOccupancy(const std::vector< double > &DBMNoiseOccupancy)
void setEndcap3TimingProbability(const std::vector< float > &Endcap3TimingProbability)
void setEndcapToTThreshold(const std::vector< int > &endcapToTThreshold)
void setEndcap3TimingIndex(const std::vector< float > &Endcap3TimingIndex)
void setEndcapNoiseOccupancy(const std::vector< double > &endcapNoiseOccupancy)
void setFEI3EndcapLatency(const std::vector< int > &FEI3EndcapLatency)
void setFEI3EndcapTimingSimTune(const std::vector< int > &FEI3EndcapTimingSimTune)
void setDBMCrossTalk(const std::vector< double > &DBMCrossTalk)
void setEndcapDisableProbability(const std::vector< double > &endcapDisableProbability)
void setLayer2TimingProbability(const std::vector< float > &Layer2TimingProbability)
void setEndcap1TimingProbability(const std::vector< float > &Endcap1TimingProbability)
void setBarrelDisableProbability(const std::vector< double > &barrelDisableProbability)
void setBLayerTimingProbability(const std::vector< float > &BLayerTimingProbability)
void setDBMDisableProbability(const std::vector< double > &DBMDisableProbability)
void setBarrelToTThreshold(const std::vector< int > &barrelToTThreshold)
void setDBMNoiseShape(const std::vector< std::vector< float > > &DBMNoiseShape)
std::vector< std::string > getParameterString(const std::string &varName, const std::vector< std::string > &buffer)
std::vector< T > getParameter(const std::string &varName, const std::vector< std::string > &buffer)

◆ operator>>() [2/2]

std::istream & operator>> ( std::istream & in,
PixelModuleData & c )

Definition at line 196 of file PixelModuleDataStream.cxx.

196 {
197 [[maybe_unused]] std::vector<float> ignoreFloatVec;
198 [[maybe_unused]] std::vector<double> ignoreDoubleVec;
199 [[maybe_unused]] std::vector<double> ignoreIntVec;
200 [[maybe_unused]] std::vector<bool> ignoreBoolVec;
201 [[maybe_unused]] float ignoreFloat{};
202 [[maybe_unused]] bool ignoreBool{};
203 [[maybe_unused]] double ignoreDouble{};
204 [[maybe_unused]] int ignoreInt{};
205 [[maybe_unused]] std::string ignoreString{};
206 std::istream::sentry s(in);
207 if (s){
208 //this is rather unforgiving, and should only be used with the format given by the ostream
209 //insertion operator
210 std::string label;
211 in.ignore(100, '\n');
212 in>>ignoreDouble;
213 in.ignore(100,'\n');
214 in>>ignoreIntVec;
215 in.ignore(100,'\n');
216 in>>ignoreIntVec;
217 in.ignore(100,'\n');
218 in>>ignoreIntVec;
219 in.ignore(100,'\n');
220 in>>ignoreDoubleVec;
221 in.ignore(100,'\n');
222 in>>ignoreDoubleVec;
223 in.ignore(100,'\n');
224 in>>ignoreDoubleVec;
225 //
226 in.ignore(100,'\n');
227 in>>ignoreDoubleVec;
228 in.ignore(100,'\n');
229 in>>ignoreDoubleVec;
230 in.ignore(100,'\n');
231 in>>ignoreDoubleVec;
232 //
233 in.ignore(100,'\n');
234 in>>c.m_defaultBarrelAnalogThreshold;
235 in.ignore(100,'\n');
236 in>>c.m_defaultEndcapAnalogThreshold;
237 in.ignore(100,'\n');
238 in>>c.m_defaultDBMAnalogThreshold;
239 //
240 in.ignore(100,'\n');
241 in>>c.m_defaultBarrelAnalogThresholdSigma;
242 in.ignore(100,'\n');
243 in>>c.m_defaultEndcapAnalogThresholdSigma;
244 in.ignore(100,'\n');
245 in>>c.m_defaultDBMAnalogThresholdSigma;
246 //
247 in.ignore(100,'\n');
248 in>>c.m_defaultBarrelAnalogThresholdNoise;
249 in.ignore(100,'\n');
250 in>>c.m_defaultEndcapAnalogThresholdNoise;
251 in.ignore(100,'\n');
252 in>>c.m_defaultDBMAnalogThresholdNoise;
253 //
254 in.ignore(100,'\n');
255 in>>c.m_defaultBarrelInTimeThreshold;
256 in.ignore(100,'\n');
257 in>>c.m_defaultEndcapInTimeThreshold;
258 in.ignore(100,'\n');
259 in>>c.m_defaultDBMInTimeThreshold;
260 //
261 in.ignore(100,'\n');
262 in>>c.m_barrelToTThreshold;
263 in.ignore(100,'\n');
264 in>>c.m_endcapToTThreshold;
265 in.ignore(100,'\n');
266 in>>c.m_DBMToTThreshold;
267 //
268 in.ignore(100,'\n');
269 in>>c.m_barrelCrossTalk;
270 in.ignore(100,'\n');
271 in>>c.m_endcapCrossTalk;
272 in.ignore(100,'\n');
273 in>>c.m_DBMCrossTalk;
274 //
275 in.ignore(100,'\n');
276 in>>c.m_barrelThermalNoise;
277 in.ignore(100,'\n');
278 in>>c.m_endcapThermalNoise;
279 in.ignore(100,'\n');
280 in>>c.m_DBMThermalNoise;
281 //
282 in.ignore(100,'\n');
283 in>>c.m_barrelNoiseOccupancy;
284 in.ignore(100,'\n');
285 in>>c.m_endcapNoiseOccupancy;
286 in.ignore(100,'\n');
287 in>>c.m_DBMNoiseOccupancy;
288 //
289 in.ignore(100,'\n');
290 in>>c.m_barrelDisableProbability;
291 in.ignore(100,'\n');
292 in>>c.m_endcapDisableProbability;
293 in.ignore(100,'\n');
294 in>>c.m_DBMDisableProbability;
295 //
296 in.ignore(100,'\n');
297 in>>c.m_barrelNoiseShape;
298 in.ignore(100,'\n');
299 in>>c.m_endcapNoiseShape;
300 in.ignore(100,'\n');
301 in>>c.m_DBMNoiseShape;
302 //
303 in.ignore(100,'\n');
304 in>>c.m_FEI3BarrelLatency;
305 in.ignore(100,'\n');
306 in>>c.m_FEI3EndcapLatency;
307 //
308 in.ignore(100,'\n');
309 in>>ignoreBoolVec;
310 in.ignore(100,'\n');
311 in>>ignoreBoolVec;
312 //
313 in.ignore(100,'\n');
314 in>>ignoreIntVec;
315 in.ignore(100,'\n');
316 in>>ignoreIntVec;
317 //
318 in.ignore(100,'\n');
319 in>>c.m_FEI3BarrelTimingSimTune;
320 in.ignore(100,'\n');
321 in>>c.m_FEI3EndcapTimingSimTune;
322 //
323 in.ignore(100,'\n');
324 in>>ignoreIntVec;
325 in.ignore(100,'\n');
326 in>>ignoreIntVec;
327 //something magic about having to stream to a string at this point,
328 //instead of using 'ignore'
329 in>>label;
330 in>>ignoreFloat;
331 in>>label;
332 in>>ignoreBool;
333
334 in>>label;
335 in>>ignoreDoubleVec;
336 //
337 in>>label;
338 in>>c.m_paramA;
339 in>>label;
340 in>>c.m_paramE;
341 in>>label;
342 in>>c.m_paramC;
343 in>>label;
344 in>>c.m_doLinearExtrapolation;
345 //
346 in>>label;
347
348 in>>ignoreDoubleVec;
349 in>>label;
350 in>>ignoreDoubleVec;
351 //
352 in>>label;
353 in>>c.m_biasVoltage;
354 in>>label;
355 in>>ignoreFloat;
356 //
357 in>>label;
358 in>>ignoreFloatVec;
359 in>>label;
360 in>>ignoreFloatVec;
361
362 in>>label;
363 in>>ignoreFloatVec;
364 //
365 in>>label;
366 in>>c.m_fluenceLayer;
367 in>>label;
368 in>>c.m_radSimFluenceMapList;
369 //
370 in>>label;
371 in>>c.m_fluenceLayer3D;
372 in>>label;
373 in>>c.m_radSimFluenceMapList3D;
374 //
375 in>>label;
376 in>>c.m_cablingMapToFile;
377 in>>label;
378 in>>c.m_cablingMapFileName;
379 //
380 in>>label;
381 in>>ignoreInt;
382 in>>label;
383 in>>ignoreInt;
384 in>>label;
385 in>>ignoreDouble;
386 in>>label;
387 in>>ignoreDouble;
388 in>>label;
389 in>>ignoreDouble;
390 in>>label;
391 in>>ignoreDouble;
392 in>>label;
393 in>>ignoreDouble;
394 in>>label;
395 in>>ignoreDouble;
396 in>>label;
397 in>>ignoreDouble;
398 in>>label;
399 in>>ignoreBool;
400 in>>label;
401 in>>ignoreString;
402 }
403 return in;
404}
std::string label(const std::string &format, int i)
Definition label.h:19