Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ZdcRecNoiseTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /*
6  * ZdcRecNoiseTool.cxx
7  *
8  * Pedestal calculation and retrieval from file or DB.
9  * Also used to study noise performance of the electronics
10  * Created on: Feb 18, 2010
11  * Author: leite
12  */
13 
14 
15 
16 #include <iostream>
17 #include <fstream>
18 
19 #include <numeric>
20 #include <algorithm>
21 #include <vector>
22 #include <map>
23 
24 
25 #include "GaudiKernel/IInterface.h"
26 #include "GaudiKernel/MsgStream.h"
27 
28 #include "ZdcEvent/ZdcDigits.h"
30 #include "ZdcRec/ZdcRecNoiseTool.h"
31 
32 
33 
34 //==================================================================================================
35 const InterfaceID& ZdcRecNoiseTool::interfaceID()
36 {
37  return IID_IZdcRecNoiseTool;
38 
39 }
40 //==================================================================================================
41 
42 //==================================================================================================
44  const std::string& name,
45  const IInterface* parent) :
46 
48 
49 {
50  //Declare properties here...
51 
52  declareInterface<ZdcRecNoiseTool>(this);
53 
54  declareProperty("PedestalsDirectory", m_pedestalDir = "/afs/cern.ch/user/l/leite/public/ZdcData/Pedestals",
55  "Pedestal files directory");
56  declareProperty("PedestalsFile", m_pedestalFile = "zdc_pedestal_0000.data",
57  "Pedestal file name");
58 
59 }
60 //==================================================================================================
61 
62 //==================================================================================================
64 {
65 }
66 //==================================================================================================
67 
68 //==================================================================================================
70 {
71  m_pedestalData = std::make_unique<ZdcDigitsCollection>();
72 
73  int nsamples = 0;
74  int i = 0;
75  unsigned int id;
76 
77  //Read the file name as passed to the tool for the pedestals
78  std::string str = m_pedestalDir + m_pedestalFile;
79  std::ifstream infile;
80 
81  infile.open(str.data(), std::ifstream::in);
82  if (infile.fail()) {
83  msg(MSG::ERROR) << "ZDC ---> No pedestal file available - aborting ";
84  return 0;
85  }
86  else {
87  infile >> nsamples;
88  std::vector<int> fadc00(nsamples);
89  std::vector<int> fadc01(nsamples);
90  std::vector<int> fadc10(nsamples);
91  std::vector<int> fadc11(nsamples);
92  int sz = sizeof(int)*nsamples;
93  i = 0;
94  while (infile.good()) {
95  infile.read ((char *)&id,sizeof(id));
96  infile.read ((char *)&fadc00[0],sz);
97  infile.read ((char *)&fadc01[0],sz);
98  infile.read ((char *)&fadc10[0],sz);
99  infile.read ((char *)&fadc11[0],sz);
100 
101  ZdcDigits* digits_p = new ZdcDigits(Identifier(id));
102  digits_p->set_digits_gain0_delay0(fadc00);
103  digits_p->set_digits_gain0_delay1(fadc01);
104  digits_p->set_digits_gain1_delay0(fadc10);
105  digits_p->set_digits_gain1_delay0(fadc11);
106  m_pedestalData->push_back(digits_p);
107  i++;
108  }
109  msg(MSG::INFO) << "ZDC ---> Read " << i << " pedestal channels from file" ;
110  }
111 return i;
112 }
113 //==================================================================================================
114 
115 //==================================================================================================
117 {
118  //remove this
119  m_pedestalData = std::make_unique<ZdcDigitsCollection>();
120 
121  int nsamples = 0;
122  int i = 0;
123  unsigned int id;
124 
125  //Read the file name as passed to the tool for the pedestals
126  std::string str = m_pedestalDir + m_pedestalFile;
127  std::ofstream outfile;
128 
129  //TODO: First check if it exists, never overwrites
130  //TODO: Check if size of pedestal collection is ok
131 
132  outfile.open(str.data(), std::ofstream::out);
133  if (outfile.fail()) {
134  msg(MSG::ERROR) << "ZDC ---> Cannot create Pedestal File - aborting ";
135  return 0;
136  }
137  else {
138  std::vector<int> fadc00(nsamples);
139  std::vector<int> fadc01(nsamples);
140  std::vector<int> fadc10(nsamples);
141  std::vector<int> fadc11(nsamples);
142  outfile << nsamples;
143  int sz = sizeof(int)*nsamples;
144 
145  for (const ZdcDigits* p : *m_pedestalData) {
146  id = p->identify().get_identifier32().get_compact();
147  outfile.write((char *)&id, sizeof(id));
148 
149  fadc00 = p->get_digits_gain0_delay0();
150  fadc01 = p->get_digits_gain0_delay1();
151  fadc10 = p->get_digits_gain1_delay0();
152  fadc11 = p->get_digits_gain1_delay1();
153  outfile.write ((char *)&fadc00, sz);
154  outfile.write ((char *)&fadc01, sz);
155  outfile.write ((char *)&fadc10, sz);
156  outfile.write ((char *)&fadc11, sz);
157  i++;
158  }
159  }
160  return i;
161 }
162 
163 
164 
165 //==================================================================================================
166 //==================================================================================================
168 {
169  msg(MSG::INFO) << "Initializing " << name() << endmsg;
170 
171  //Get the pedestal information for the channels.
172  //For now, this is a file; later on it will be moved to a database
173 
174 
175  return StatusCode::SUCCESS;
176 }
177 //==================================================================================================
178 
179 //==================================================================================================
181 {
182  msg(MSG::INFO) << "Finalizing " << name() << endmsg;
183  return StatusCode::SUCCESS;
184 }
185 //==================================================================================================
ZdcRecNoiseTool::~ZdcRecNoiseTool
virtual ~ZdcRecNoiseTool()
Definition: ZdcRecNoiseTool.cxx:63
fitman.sz
sz
Definition: fitman.py:527
run.infile
string infile
Definition: run.py:13
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
ZdcDigits
Definition: ZdcDigits.h:28
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
ZdcRecNoiseTool::initialize
virtual StatusCode initialize()
Definition: ZdcRecNoiseTool.cxx:167
ZdcDigitsCollection.h
ZdcRecNoiseTool::m_pedestalData
std::unique_ptr< ZdcDigitsCollection > m_pedestalData
Definition: ZdcRecNoiseTool.h:57
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
lumiFormat.i
int i
Definition: lumiFormat.py:85
ZdcRecNoiseTool::ZdcRecNoiseTool
ZdcRecNoiseTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: ZdcRecNoiseTool.cxx:43
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
python.LArMinBiasAlgConfig.int
int
Definition: LArMinBiasAlgConfig.py:59
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ZdcDigits::set_digits_gain1_delay0
void set_digits_gain1_delay0(const std::vector< int > &v)
Definition: ZdcDigits.cxx:134
ZdcRecNoiseTool::readPedestals
int readPedestals()
Definition: ZdcRecNoiseTool.cxx:69
ZdcRecNoiseTool::interfaceID
static const InterfaceID & interfaceID()
Definition: ZdcRecNoiseTool.cxx:35
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
ZdcDigits.h
ZdcDigits::set_digits_gain0_delay1
void set_digits_gain0_delay1(const std::vector< int > &v)
Definition: ZdcDigits.cxx:129
ReadOfcFromCool.nsamples
nsamples
Definition: ReadOfcFromCool.py:115
ZdcRecNoiseTool::m_pedestalFile
std::string m_pedestalFile
Definition: ZdcRecNoiseTool.h:55
ZdcRecNoiseTool.h
ZdcRecNoiseTool::writePedestals
int writePedestals()
Definition: ZdcRecNoiseTool.cxx:116
ZdcDigits::set_digits_gain0_delay0
void set_digits_gain0_delay0(const std::vector< int > &v)
Definition: ZdcDigits.cxx:124
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
ZdcRecNoiseTool::finalize
virtual StatusCode finalize()
Definition: ZdcRecNoiseTool.cxx:180
str
Definition: BTagTrackIpAccessor.cxx:11
AthAlgTool
Definition: AthAlgTool.h:26
PrepareReferenceFile.outfile
outfile
Definition: PrepareReferenceFile.py:42
ZdcRecNoiseTool::m_pedestalDir
std::string m_pedestalDir
Definition: ZdcRecNoiseTool.h:54
Identifier
Definition: IdentifierFieldParser.cxx:14