ATLAS Offline Software
TileRawCorrelatedNoise.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Tile includes
7 #include "TileEvent/TileDigits.h"
10 
11 // Atlas includes
12 // access all RawChannels inside container
13 #include "StoreGate/ReadHandle.h"
14 #include "StoreGate/WriteHandle.h"
18 
19 
20 
21 #include <memory>
22 
23 // #############################################################################
24 TileRawCorrelatedNoise::TileRawCorrelatedNoise(const std::string& name, ISvcLocator* pSvcLocator)
25  : AthAlgorithm(name, pSvcLocator)
26 {
27 // #############################################################################
28 
29  declareProperty("nRMSThreshold", m_nRMS_threshold = 2.);
30  declareProperty("AlphaMatrixFilePrefix", m_alphaMatrixFilePrefix = "AlphaMatrix");
31  declareProperty("MeanFilePrefix", m_meanFilePrefix = "Mean");
32  declareProperty("Sample3RMSFilePrefix", m_sample3RMSFilePrefix = "RMS");
33  declareProperty("UseMeanFiles", m_useMeanFiles = true);
34  declareProperty("PMTOrder", m_pmtOrder = false);
35 }
36 
37 // #############################################################################
39 // #############################################################################
40 
41 }
42 
43 // #############################################################################
45 // #############################################################################
46 
47  int PmtToChannelBarrel[48] = {
48  1, 2, 3, 4, 5, 6, 7, 8,
49  9, 10, 11, 12, 13, 14, 15, 16,
50  17, 18, 19, 20, 21, 22, 23, 24,
51  27, 26, 25, 30, 29, 28, 33, 32,
52  31, 36, 35, 34, 39, 38, 37, 42,
53  41, 40, 45, 44, 43, 48, 47, 46 };
54 
55  int PmtToChannelExtendedBarrel[48] = {
56  1, 2, 3, 4, 5, 6, 7, 8,
57  9, 10, 11, 12, 13, 14, 15, 16,
58  17, 18, 19, 20, 21, 22, 23, 24,
59  27, 26, 25, 31, 32, 28, 33, 29,
60  30, 36, 35, 34, 44, 38, 37, 43,
61  42, 41, 45, 39, 40, 48, 47, 46 };
62 
63  m_alphaMatrix = std::make_unique<AlphaMatrix>();
64 
65  // read alpha matrix
66  FILE* AlphaMatrixFile[4][64];
67  char Rosstr[10];
68  char buff[1000];
69  // Cycle over 4 partitions and 64 modules
70  for (int Ros = 1; Ros < 5; ++Ros) {
71  for (int Drawer = 0; Drawer < 64; ++Drawer) {
72  // open file which corresponds to AlphaMatrix[Ros][Drawer]
73  if (Ros == 1) sprintf(Rosstr, "LBA");
74  else if (Ros == 2) sprintf(Rosstr, "LBC");
75  else if (Ros == 3) sprintf(Rosstr, "EBA");
76  else sprintf(Rosstr, "EBC");
77 
78  sprintf(buff, "%s%s%02d.txt", m_alphaMatrixFilePrefix.c_str(), Rosstr, Drawer + 1);
79  std::string filestr(buff);
80  std::string file = PathResolver::find_file(buff, "DATAPATH");
81 // ATH_MSG_INFO( " buff=" << buff
82 // << " filestr=" << filestr.c_str()
83 // << " file=" << file.c_str() );
84  if (file.size() == 0) {
85  ATH_MSG_WARNING( "Could not find input file " << buff );
86  } else {
87  ATH_MSG_INFO( "Reading file " << file );
88  AlphaMatrixFile[Ros - 1][Drawer] = fopen(file.c_str(), "r");
89  }
90  if (AlphaMatrixFile[Ros - 1][Drawer] == NULL) {
91  ATH_MSG_ERROR( "Can't read input Alpha Matrix files." );
92  return StatusCode::FAILURE;
93  }
94  ATH_MSG_DEBUG( " **** Start of Alpha Matrix Read Out" );
95  FILE* alpha_file = AlphaMatrixFile[Ros - 1][Drawer];
96 // if(fgets(buff, sizeof(buff), alpha_file) != NULL) {
97 // ATH_MSG_DEBUG( "Matrix is being loaded: " << buff );
98 // }
99  // load tokens to be searched for in a string
100  const char* TOKENS = { " \t\n" };
101  // read Matrix
102  int dima = 48;
103  char* saveptr = nullptr;
104  for (int line = 0; line < dima; line++) {
105  if (fgets(buff, sizeof(buff), alpha_file) != NULL) {
106  ATH_MSG_DEBUG( "line " << line << " is " << buff );
107  for (int column = 0; column < dima; column++) {
108  // Check for comment lines
109  if (*buff == '!' || *buff == '*') continue;
110  // read value
111  double pippo = 0;
112  if (const char* word = strtok_r(column==0 ? buff : nullptr, TOKENS, &saveptr))
113  {
114  pippo = atof(word);
115  }
116 
117  ATH_MSG_VERBOSE ( "elem " << column << " is " << pippo );
118  int chline = line;
119  int chcolumn = column;
120  // read alpha matrix in pmt order but save it in channel order if m_pmtOrder is true
121  if (m_pmtOrder) {
122  if (Ros < 3) {
123  chline = PmtToChannelBarrel[line] - 1;
124  chcolumn = PmtToChannelBarrel[column] - 1;
125  } else {
126  chline = PmtToChannelExtendedBarrel[line] - 1;
127  chcolumn = PmtToChannelExtendedBarrel[column] - 1;
128  }
129  }
130  m_alphaMatrix->m[Ros - 1][Drawer][chline][chcolumn] = pippo;
131  }
132  }
133  }
134  fclose(alpha_file);
135  }
136  }
137 
138  if (m_useMeanFiles) {
139  // read mean
140  int nSamples = 7;
141  FILE* MeanFile[4][64];
142  // cicle over 4 partitions and 64 modules
143  for (int Ros = 1; Ros < 5; ++Ros) {
144  for (int Drawer = 0; Drawer < 64; ++Drawer) {
145  // open file which corresponds to Mean[Ros][Drawer]
146  if (Ros == 1)
147  sprintf(Rosstr, "LBA");
148  else if (Ros == 2)
149  sprintf(Rosstr, "LBC");
150  else if (Ros == 3)
151  sprintf(Rosstr, "EBA");
152  else
153  sprintf(Rosstr, "EBC");
154  sprintf(buff, "%s%s%02d.txt", m_meanFilePrefix.c_str(), Rosstr, Drawer + 1);
155  std::string filestr(buff);
156  std::string file = PathResolver::find_file(buff, "DATAPATH");
157  if (file.size() == 0) {
158  ATH_MSG_VERBOSE ( "Could not find input file " << buff );
159  } else {
160  ATH_MSG_INFO( "Reading file " << file );
161  MeanFile[Ros - 1][Drawer] = fopen(file.c_str(), "r");
162  }
163  if (MeanFile[Ros - 1][Drawer] == NULL) {
164  ATH_MSG_ERROR( "Can't read input Mean files." );
165  return StatusCode::FAILURE;
166  }
167 
168  ATH_MSG_DEBUG( " **** Start of Means Read Out" );
169  FILE* mean_file = MeanFile[Ros - 1][Drawer];
170  //if(fgets(buff, sizeof(buff), mean_file) != NULL) {
171  // if (lDebug)
172  // log << MSG::DEBUG << "Vector is being loaded: "<< buff << endmsg;
173  //}
174  // load tokens to be searched for in a string
175  const char* TOKENS = { " \t\n" };
176  // read Vector
177  int dima = 48;
178  char* saveptr = nullptr;
179  for (int line = 0; line < dima; line++) {
180  if (fgets(buff, sizeof(buff), mean_file) != NULL) {
181  ATH_MSG_DEBUG( "line " << line << " is " << buff );
182  for (int Sample = 0; Sample < nSamples; Sample++) {
183  // Check for comment lines
184  if (*buff == '!' || *buff == '*') continue;
185  // read value
186  double pippo = 0;
187  if (const char* word = strtok_r(Sample==0 ? buff : nullptr, TOKENS, &saveptr))
188  {
189  pippo = atof(word);
190  }
191 
192  ATH_MSG_VERBOSE ( "elem " << Sample << " is " << pippo );
193  int chline = line;
194  // read lines of mean matrix in pmt order but save it in channel order if m_pmtOrder is true
195  if (m_pmtOrder) {
196  if (Ros < 3) chline = PmtToChannelBarrel[line] - 1;
197  else chline = PmtToChannelExtendedBarrel[line] - 1;
198  }
199  m_meanSamples[Ros - 1][Drawer][chline][Sample] = pippo;
200  }
201  }
202  }
203  fclose(mean_file);
204  }
205  }
206  } else {
207  // Initialize mean
208  int nSamples = 7;
209  for (int Ros = 1; Ros < 5; ++Ros) {
210  for (int Drawer = 0; Drawer < 64; ++Drawer) {
211  for (int Channel = 0; Channel < 48; ++Channel) {
212  for (int Sample = 0; Sample < nSamples; ++Sample) {
213  //MeanSamples[Ros-1][Drawer][Channel][Sample]=50.;
214  m_meanSamples[Ros - 1][Drawer][Channel][Sample] = -1.;
215  }
216  }
217  }
218  }
219  }
220 
221  // read sample 3 RMS
222  FILE* Sample3RMSFile[4][64];
223  // cicle over 4 partitions and 64 modules
224  for (int Ros = 1; Ros < 5; ++Ros) {
225  for (int Drawer = 0; Drawer < 64; ++Drawer) {
226  // open file which corresponds to Sample3RMS[Ros][Drawer]
227  if (Ros == 1) sprintf(Rosstr, "LBA");
228  else if (Ros == 2) sprintf(Rosstr, "LBC");
229  else if (Ros == 3) sprintf(Rosstr, "EBA");
230  else sprintf(Rosstr, "EBC");
231 
232  sprintf(buff, "%s%s%02d.txt", m_sample3RMSFilePrefix.c_str(), Rosstr, Drawer + 1);
233  std::string filestr(buff);
234  std::string file = PathResolver::find_file(buff, "DATAPATH");
235  if (file.size() == 0) {
236  ATH_MSG_VERBOSE ( "Could not find input file " << buff );
237  } else {
238  ATH_MSG_INFO( "Reading file " << file );
239  Sample3RMSFile[Ros - 1][Drawer] = fopen(file.c_str(), "r");
240  }
241  if (Sample3RMSFile[Ros - 1][Drawer] == NULL) {
242  ATH_MSG_ERROR( "Can't read input sample 3 RMS files." );
243  return StatusCode::FAILURE;
244  }
245 
246  ATH_MSG_DEBUG( " **** Start of sample 3 RMS Read Out" );
247  FILE* rms_file = Sample3RMSFile[Ros - 1][Drawer];
248  //if(fgets(buff, sizeof(buff), rms_file) != NULL) {
249  // if (lDebug)
250  // log << MSG::DEBUG << "Vector is being loaded: "<< buff << endmsg;
251  //}
252  // load tokens to be searched for in a string
253  char* word;
254  const char* TOKENS = { " \t\n" };
255  // read Vector
256  int dima = 48;
257  for (int line = 0; line < dima; line++) {
258  if (fgets(buff, sizeof(buff), rms_file) != NULL) {
259  ATH_MSG_DEBUG( "line " << line << " is " << buff );
260  // Check for comment lines
261  if (*buff == '!' || *buff == '*') continue;
262  // read value
263  double pippo;
264  char* saveptr = nullptr;
265  if ((word = strtok_r(buff, TOKENS, &saveptr)) == NULL) pippo = 0;
266  else pippo = atof(word);
267  // read value
268  ATH_MSG_VERBOSE ( "elem is " << pippo );
269  int chline = line;
270  // read rms vector in pmt order but save it in channel order if m_pmtOrder is true
271  if (m_pmtOrder) {
272  if (Ros < 3) chline = PmtToChannelBarrel[line] - 1;
273  else chline = PmtToChannelExtendedBarrel[line] - 1;
274  }
275  m_sample3RMS[Ros - 1][Drawer][chline] = pippo;
276  }
277  }
278  fclose(rms_file);
279  }
280  }
281 
284 
285  if (!m_useMeanFiles) {
286  ATH_CHECK( m_tileToolNoiseSample.retrieve() );
287  }
288 
289  ATH_MSG_INFO( "Initialization completed successfully" );
290 
291  return StatusCode::SUCCESS;
292 }
293 
294 // #############################################################################
296 // #############################################################################
297 
298  const EventContext &ctx = Gaudi::Hive::currentContext();
299 
300  // get named TileDigitsContaner from TES
302 
303  ATH_MSG_DEBUG( "Got TileDigitsContainer '" << m_inputDigitsContainerKey.key() << "'" );
304 
305  const TileHWID* tileHWID;
306  CHECK( detStore()->retrieve(tileHWID, "TileHWID") );
307 
308  const TileDigits* OriginalDigits[4][64][48];
309 
310  // go through ALL TileDigits in container
311  SelectAllObject<TileDigitsContainer> selAll(inputDigitsContainer.cptr());
314 
315  // read digits
316  for (; digItr != lastDig; ++digItr) {
317  const HWIdentifier adc_HWID = (*digItr)->adc_HWID();
318  int Ros = tileHWID->ros(adc_HWID);
319  int Drawer = tileHWID->drawer(adc_HWID);
320  int Channel = tileHWID->channel(adc_HWID);
321  OriginalDigits[Ros - 1][Drawer][Channel] = (*digItr);
322 
323  if (!m_useMeanFiles) {
324  // read pedestal value and use it as mean
325  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(Ros, Drawer);
326  int adc = tileHWID->adc(adc_HWID);
327  double ped = m_tileToolNoiseSample->getPed(drawerIdx, Channel, adc, TileRawChannelUnit::ADCcounts, ctx);
328  int nSamples = 7;
329  for (int Sample = 0; Sample < nSamples; ++Sample) {
330  m_meanSamples[Ros - 1][Drawer][Channel][Sample] = ped;
331  }
332  }
333  }
334 
335  // prepare new samples
336  const int nSamples = 7;
337  float NewSamples[4][64][48][nSamples];
338  for (int Ros = 1; Ros < 5; ++Ros) {
339  for (int Drawer = 0; Drawer < 64; ++Drawer) {
340  for (int Channel = 0; Channel < 48; ++Channel) {
341  for (int Sample = 0; Sample < nSamples; ++Sample) {
342  NewSamples[Ros - 1][Drawer][Channel][Sample] =
343  ((OriginalDigits[Ros - 1][Drawer][Channel])->samples())[Sample];
344  }
345  }
346  }
347  }
348 
349  // apply method
350  for (int Ros = 1; Ros < 5; ++Ros) {
351  for (int Drawer = 0; Drawer < 64; ++Drawer) {
352  for (int Channel = 0; Channel < 48; ++Channel) {
353  if (OriginalDigits[Ros - 1][Drawer][Channel]) {
354  int nSamples = (OriginalDigits[Ros - 1][Drawer][Channel])->nsamples();
355  std::vector<float> digits(nSamples);
356  for (int jCh = 0; jCh < 48; ++jCh) {
357  if (OriginalDigits[Ros - 1][Drawer][jCh]) {
358  if (Channel != jCh
359  && fabs(((OriginalDigits[Ros - 1][Drawer][jCh])->samples())[3]
360  - m_meanSamples[Ros - 1][Drawer][jCh][3])
361  < m_nRMS_threshold * m_sample3RMS[Ros - 1][Drawer][jCh]) {
362 
363  for (int Sample = 0; Sample < nSamples; ++Sample)
364  NewSamples[Ros - 1][Drawer][Channel][Sample] =
365  NewSamples[Ros - 1][Drawer][Channel][Sample]
366  - m_alphaMatrix->m[Ros - 1][Drawer][Channel][jCh]
367  * (((OriginalDigits[Ros - 1][Drawer][jCh])->samples())[Sample]
368  - m_meanSamples[Ros - 1][Drawer][jCh][Sample]);
369  }
370  }
371  }
372  }
373  }
374  }
375  }
376 
377  // create new container
378  TileDigits* NewDigits[4][64][48];
379 
380  auto outputDigitsContainer = std::make_unique<TileMutableDigitsContainer>();
381  ATH_CHECK( outputDigitsContainer->status() );
382 
383  // fill new container
384  for (int Ros = 1; Ros < 5; ++Ros) {
385  for (int Drawer = 0; Drawer < 64; ++Drawer) {
386  for (int Channel = 0; Channel < 48; ++Channel) {
387  if (OriginalDigits[Ros - 1][Drawer][Channel]) {
388  int nSamples = (OriginalDigits[Ros - 1][Drawer][Channel])->nsamples();
389  std::vector<float> digits(nSamples);
390  for (int Sample = 0; Sample < nSamples; ++Sample) {
391  digits[Sample] = NewSamples[Ros - 1][Drawer][Channel][Sample];
392  }
393  NewDigits[Ros - 1][Drawer][Channel] = new TileDigits(
394  (OriginalDigits[Ros - 1][Drawer][Channel])->adc_HWID(), digits);
395  ATH_CHECK( outputDigitsContainer->push_back(NewDigits[Ros - 1][Drawer][Channel]) );
396  }
397  }
398  }
399  }
400 
402  ATH_CHECK( outputDigitsCnt.record(std::move(outputDigitsContainer)) );
403 
404 
405  ATH_MSG_DEBUG( "execute completed successfully" );
406 
407  return StatusCode::SUCCESS;
408 }
409 
410 // #############################################################################
412 // #############################################################################
413 
414  ATH_MSG_INFO( " finalize completed successfully" );
415 
416  return StatusCode::SUCCESS;
417 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
get_hdefs.buff
buff
Definition: get_hdefs.py:61
TileRawCorrelatedNoise::finalize
virtual StatusCode finalize()
Definition: TileRawCorrelatedNoise.cxx:411
checkFileSG.line
line
Definition: checkFileSG.py:75
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
SelectAllObjectMT::end
const_iterator end()
Definition: SelectAllObjectMT.h:131
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
Definition: PathResolver.cxx:251
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
LArBadChanBlobUtils::Channel
Identifier32::value_type Channel
Definition: LArBadChanBlobUtils.h:24
TileRawCorrelatedNoise::m_useMeanFiles
bool m_useMeanFiles
Definition: TileRawCorrelatedNoise.h:76
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TileRawCorrelatedNoise::m_sample3RMS
float m_sample3RMS[4][64][48]
Definition: TileRawCorrelatedNoise.h:74
DeMoUpdate.column
dictionary column
Definition: DeMoUpdate.py:1110
TileRawCorrelatedNoise.h
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
TileRawCorrelatedNoise::m_nRMS_threshold
float m_nRMS_threshold
Definition: TileRawCorrelatedNoise.h:61
TileRawCorrelatedNoise::m_meanFilePrefix
std::string m_meanFilePrefix
Definition: TileRawCorrelatedNoise.h:66
HWIdentifier
Definition: HWIdentifier.h:13
TileRawCorrelatedNoise::m_alphaMatrix
std::unique_ptr< AlphaMatrix > m_alphaMatrix
Definition: TileRawCorrelatedNoise.h:72
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
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
TileHWID::ros
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition: TileHWID.h:167
TileHWID
Helper class for TileCal online (hardware) identifiers.
Definition: TileHWID.h:49
WriteHandle.h
Handle class for recording to StoreGate.
TileHWID::adc
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition: TileHWID.h:193
SelectAllObjectMT::begin
const_iterator begin()
Definition: SelectAllObjectMT.h:115
SelectAllObjectMT
Definition: SelectAllObjectMT.h:11
TileHWID.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
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
TileRawCorrelatedNoise::m_sample3RMSFilePrefix
std::string m_sample3RMSFilePrefix
Definition: TileRawCorrelatedNoise.h:65
TileRawCorrelatedNoise::~TileRawCorrelatedNoise
virtual ~TileRawCorrelatedNoise()
Definition: TileRawCorrelatedNoise.cxx:38
file
TFile * file
Definition: tile_monitor.h:29
TileMutableDigitsContainer.h
Helper for holding non-const raw data prior to recording in SG.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
TileRawCorrelatedNoise::m_alphaMatrixFilePrefix
std::string m_alphaMatrixFilePrefix
Definition: TileRawCorrelatedNoise.h:64
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
SelectAllObjectMT::const_iterator
Definition: SelectAllObjectMT.h:22
AthAlgorithm
Definition: AthAlgorithm.h:47
TileRawCorrelatedNoise::m_outputDigitsContainerKey
SG::WriteHandleKey< TileDigitsContainer > m_outputDigitsContainerKey
Definition: TileRawCorrelatedNoise.h:56
CxxUtils::atof
double atof(std::string_view str)
Converts a string into a double / float.
Definition: Control/CxxUtils/Root/StringUtils.cxx:91
TileRawCorrelatedNoise::m_pmtOrder
bool m_pmtOrder
Definition: TileRawCorrelatedNoise.h:77
TileRawCorrelatedNoise::m_tileToolNoiseSample
ToolHandle< TileCondToolNoiseSample > m_tileToolNoiseSample
Definition: TileRawCorrelatedNoise.h:79
TileRawCorrelatedNoise::execute
virtual StatusCode execute()
Definition: TileRawCorrelatedNoise.cxx:295
PathResolver.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
TileDigits
Definition: TileDigits.h:30
TileRawCorrelatedNoise::initialize
virtual StatusCode initialize()
Definition: TileRawCorrelatedNoise.cxx:44
errorcheck.h
Helpers for checking error return status codes and reporting errors.
Example_ReadSampleNoise.ped
ped
Definition: Example_ReadSampleNoise.py:45
ReadOfcFromCool.nsamples
nsamples
Definition: ReadOfcFromCool.py:115
TileRawCorrelatedNoise::TileRawCorrelatedNoise
TileRawCorrelatedNoise(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TileRawCorrelatedNoise.cxx:24
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
TileRawCorrelatedNoise::m_inputDigitsContainerKey
SG::ReadHandleKey< TileDigitsContainer > m_inputDigitsContainerKey
Definition: TileRawCorrelatedNoise.h:52
TileHWID::drawer
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition: TileHWID.h:171
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TileRawCorrelatedNoise::m_meanSamples
float m_meanSamples[4][64][48][7]
Definition: TileRawCorrelatedNoise.h:73
LArDigits2NtupleDumper.nSamples
nSamples
Definition: LArDigits2NtupleDumper.py:70
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
SelectAllObject.h
ReadHandle.h
Handle class for reading from StoreGate.
TileDigits.h
TileRawChannelUnit::ADCcounts
@ ADCcounts
Definition: TileRawChannelUnit.h:17