ATLAS Offline Software
LArCalibDigitsAccumulatorFreeGain.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include "CLHEP/Units/SystemOfUnits.h"
8 #include <cmath>
9 #include <cstdint>
10 
11 using CLHEP::ns;
12 
13 LArCalibDigitsAccumulatorFreeGain::LArCalibDigitsAccumulatorFreeGain (const std::string& name, ISvcLocator* pSvcLocator):
14  AthAlgorithm(name, pSvcLocator),
15  m_onlineHelper(nullptr),
16  m_delay(0),
17  m_isPulsed(false),
18  m_calibAccuDigitContainerName("LArAccumulatedCalibDigits"),
19  m_nStepTrigger(1),
20  m_delayScale(1*ns),
21  m_keepPulsed(false)
22 {
23  declareProperty("LArAccuCalibDigitContainerName",m_calibAccuDigitContainerName);
24  declareProperty("KeyList",m_keylist);
25  declareProperty("StepOfTriggers",m_nStepTrigger);
26  declareProperty("DelayScale",m_delayScale);
27  declareProperty("KeepOnlyPulsed",m_keepPulsed);
28 
29  m_delay=-1;
31 }
32 
33 
35 
36  StatusCode sc;
37 
38  // retrieve online ID helper
39  sc = detStore()->retrieve(m_onlineHelper, "LArOnlineID");
40  if (sc.isFailure()) {
41  ATH_MSG_ERROR( "Could not get LArOnlineID helper !" );
42  return StatusCode::FAILURE;
43  }
44 
46 
50 
51  return StatusCode::SUCCESS;
52 }
53 
54 
55 
57 {
58 
59  StatusCode sc;
60 
61  if ( m_event_counter < 100 || m_event_counter%100==0 )
62  ATH_MSG_INFO( "Processing event " << m_event_counter );
64 
66  const LArCalibLineMapping *clcabling {*clHdl};
67  if(!clcabling) {
68  ATH_MSG_WARNING( "Do not have calib line mapping !!!" );
69  return StatusCode::FAILURE;
70  }
71 
72  // pointer to input container
73  const LArCalibDigitContainer* calibDigitContainer=nullptr;
74 
75  // retrieve calibration settings
76  const LArCalibParams* calibParams;
77  sc=detStore()->retrieve(calibParams,"LArCalibParams");
78  if (sc.isFailure())
79  {ATH_MSG_ERROR( "Cannot load LArCalibParams from DetStore." );
80  return StatusCode::FAILURE;
81  }
82 
83  unsigned int sizeSteps = (m_nStepTrigger>1 ? (m_nStepTrigger+1):1);
84 
85  // retrieve input calibDigits
86 
87  //Loop over all containers that are to be processed (e.g. different gains)
88  for (const std::string& key : m_keylist) {
89 
90  sc=evtStore()->retrieve(calibDigitContainer,key);
91  if(sc.isFailure()) {
92  ATH_MSG_ERROR( "Can't retrieve LArCalibDigitContainer with key " << key << "from StoreGate." );
93  return StatusCode::SUCCESS;
94  }else{
95  ATH_MSG_DEBUG( "Retrieved LArCalibDigitContainer with key " << key << " from StoreGate." );
96  }
97 
98  // Loop over CalibDigitContainer
99 
100  if(calibDigitContainer->empty()) {
101  ATH_MSG_DEBUG( "LArCalibDigitContainer with key=" << key << " is empty " );
102  }else{
103  ATH_MSG_DEBUG( "LArCalibDigitContainer with key=" << key << " has size = " << calibDigitContainer->size() );
104  }
105 
106  // counter of triggers
107  std::vector<unsigned int> ntrigger, nTriggerPerStep, nStepTrigger, iStepTrigger;
108  // effective number of triggers: per channel
109  ntrigger.resize(calibDigitContainer->size(),0);
110  // asked number of triggers (from calib settings): per FEB
111  nTriggerPerStep.resize(m_onlineHelper->febHashMax(),0);
112  nStepTrigger.resize(m_onlineHelper->febHashMax(),0);
113  iStepTrigger.resize(m_onlineHelper->febHashMax(),0);
114 
115  // output container
116  LArAccumulatedCalibDigitContainer* larAccuCalibDigitContainerHG = new LArAccumulatedCalibDigitContainer();
117 
118  LArAccumulatedCalibDigitContainer* larAccuCalibDigitContainerMG = new LArAccumulatedCalibDigitContainer();
119 
120  LArAccumulatedCalibDigitContainer* larAccuCalibDigitContainerLG = new LArAccumulatedCalibDigitContainer();
121 
122  //Loop over all cells
123  for (const LArCalibDigit* digit : *calibDigitContainer) {
124 
125  if(m_keepPulsed && !digit->isPulsed()) continue;
126 
127  // identificators
128  HWIdentifier chid=digit->hardwareID();
129  const HWIdentifier febid=m_onlineHelper->feb_Id(chid);
130  const IdentifierHash febhash = m_onlineHelper->feb_Hash(febid);
131  const IdentifierHash hashid = m_onlineHelper->channel_Hash(chid);
132 
133  // BELOW: DIRTY HACK BECAUSE THERE SEEMS TO BE A BUG IN THE CABLINGSVC CONCERNING THE CALIBLINES.
134 
135  // get calibration settings
136  const std::vector<HWIdentifier>& calibLineID=clcabling->calibSlotLine(chid);
137  HWIdentifier calibModuleID;
138  if(!calibLineID.empty()){
139  calibModuleID=m_onlineHelper->calib_module_Id(calibLineID[0]);
140  nTriggerPerStep[febhash] = calibParams->NTrigger(calibModuleID);
141  ATH_MSG_DEBUG( "Ntrigger per step = " << nTriggerPerStep[febhash] );
142  if(nTriggerPerStep[febhash] > 1000) nTriggerPerStep[febhash]=100; // very dirty !!!
143  } else {
144  nTriggerPerStep[febhash] = 100; // very dirty !!
145  }
146 
147  // cell is pulsed ?
148  m_isPulsed = digit->isPulsed();
149 
150  //First cell to be processed, set delay
151  if (m_delay==-1) {
152  m_delay=digit->delay();
153  } else {
154  // next cells: should be the same delay
155  if (m_delay!=digit->delay()) {
156  ATH_MSG_DEBUG( "Delay is changing to " << digit->delay() << " from " << m_delay << ": book a new LArAccumulatedCalibDigitContainer" );
157  m_delay=digit->delay();
158  }
159  }
160 
161  CaloGain::CaloGain gain=digit->gain();
162  if (gain<0 || gain>CaloGain::LARNGAIN) {
163  ATH_MSG_ERROR( "Found not-matching gain number ("<< (int)gain <<")" );
164  delete larAccuCalibDigitContainerHG;
165  delete larAccuCalibDigitContainerMG;
166  delete larAccuCalibDigitContainerLG;
167  return StatusCode::FAILURE;
168  }
169 
170  /***************************** High Gain ***************************/
171  // object to be filled for each cell
172  LArAccumulated& cellAccumulatedHG = m_AccumulatedHG[hashid];
174  // trigger counter for each cell
175  cellAccumulatedHG.m_ntrigger++;
176  ATH_MSG_DEBUG( "HG chid = " << chid << ", trigger = " << cellAccumulatedHG.m_ntrigger << ", DAC = " << digit->DAC() );
177  // at first trigger, initialize vectors
178  unsigned int sizeSamples = digit->samples().size();
179  ATH_MSG_DEBUG( "sizeSteps = " << sizeSteps << ", # of samples = " << sizeSamples );
180  if(cellAccumulatedHG.m_ntrigger==1){
181  cellAccumulatedHG.m_sum.clear();
182  cellAccumulatedHG.m_sum2.clear();
183  cellAccumulatedHG.m_sum.resize(sizeSamples,0);
184  cellAccumulatedHG.m_sum2.resize(sizeSamples,0);
185  }
186  for(unsigned int j=0;j<sizeSamples;j++) {
187  cellAccumulatedHG.m_sum[j] += digit->samples()[j];
188  cellAccumulatedHG.m_sum2[j] += digit->samples()[j]*digit->samples()[j];
189  }
190  ATH_MSG_DEBUG( "Sum = " << cellAccumulatedHG.m_sum[2] );
191  ATH_MSG_DEBUG( "Sum2 = " << cellAccumulatedHG.m_sum2[2] );
192  } // end High Gain
193 
194  /***************************** Medium Gain ***************************/
195  // object to be filled for each cell
196  LArAccumulated& cellAccumulatedMG = m_AccumulatedMG[hashid];
198  // trigger counter for each cell
199  cellAccumulatedMG.m_ntrigger++;
200  ATH_MSG_DEBUG( "MG chid = " << chid << ", trigger = " << cellAccumulatedMG.m_ntrigger << ", DAC = " << digit->DAC() );
201  // at first trigger, initialize vectors
202  unsigned int sizeSamples = digit->samples().size();
203  ATH_MSG_DEBUG( "sizeSteps = " << sizeSteps << ", # of samples = " << sizeSamples );
204  if(cellAccumulatedMG.m_ntrigger==1){
205  cellAccumulatedMG.m_sum.clear();
206  cellAccumulatedMG.m_sum2.clear();
207  cellAccumulatedMG.m_sum.resize(sizeSamples,0);
208  cellAccumulatedMG.m_sum2.resize(sizeSamples,0);
209  }
210  for(unsigned int j=0;j<sizeSamples;j++){
211  cellAccumulatedMG.m_sum[j] += digit->samples()[j];
212  cellAccumulatedMG.m_sum2[j] += digit->samples()[j]*digit->samples()[j];
213  }
214  ATH_MSG_DEBUG( "Sum = " << cellAccumulatedMG.m_sum[2] );
215  ATH_MSG_DEBUG( "Sum2 = " << cellAccumulatedMG.m_sum2[2] );
216  } // end High Gain
217 
218  /***************************** Low Gain ***************************/
219  // object to be filled for each cell
220  LArAccumulated& cellAccumulatedLG = m_AccumulatedLG[hashid];
221  if (gain==CaloGain::LARLOWGAIN) {
222  if (chid==959628800) std::cout << "---> in loop LG - DAC = " << digit->DAC() << std::endl;
223  cellAccumulatedLG.m_ntrigger++;
224  unsigned int sizeSamples = digit->samples().size();
225  if(cellAccumulatedLG.m_ntrigger==1){
226  cellAccumulatedLG.m_sum.clear();
227  cellAccumulatedLG.m_sum2.clear();
228  cellAccumulatedLG.m_sum.resize(sizeSamples,0);
229  cellAccumulatedLG.m_sum2.resize(sizeSamples,0);
230  }
231  for(unsigned int j=0;j<sizeSamples;j++){
232  cellAccumulatedLG.m_sum[j] += digit->samples()[j];
233  cellAccumulatedLG.m_sum2[j] += digit->samples()[j]*digit->samples()[j];
234  }
235  ATH_MSG_DEBUG( "Sum = " << cellAccumulatedLG.m_sum[2] );
236  ATH_MSG_DEBUG( "Sum2 = " << cellAccumulatedLG.m_sum2[2] );
237  } // end High Gain
238 
239 
240  // when reached total number of triggers for this step, fill LArAccumulatedCalibDigit and reset number of triggers
241  if( (cellAccumulatedHG.m_ntrigger+cellAccumulatedMG.m_ntrigger+cellAccumulatedLG.m_ntrigger)==nTriggerPerStep[febhash]){
242  ATH_MSG_DEBUG( "filling LArAccumulatedCalibDigit " );
243  ATH_MSG_DEBUG( "chid = " << chid << ", gain = " << gain << ", DAC = " << digit->DAC() << ", isPulsed = " << m_isPulsed << ", delay = " << m_delay << ", trigPerStep = " << nTriggerPerStep[febhash] << ", istep = " << iStepTrigger[febhash] );
244  iStepTrigger[febhash]++;
245  unsigned int sizeSamples = digit->samples().size();
246 
247  if (cellAccumulatedHG.m_ntrigger>0) {
248  LArAccumulatedCalibDigit* accuCalibDigitHG;
249  std::vector < uint64_t > sampleSumHG;
250  std::vector < uint64_t > sample2SumHG;
251  sampleSumHG.resize(sizeSamples,0);
252  sample2SumHG.resize(sizeSamples,0);
253  accuCalibDigitHG = new LArAccumulatedCalibDigit(chid, gain, sampleSumHG, sample2SumHG, 0, (uint16_t)digit->DAC(), (uint16_t)m_delay, m_isPulsed, 0, 0);
254  accuCalibDigitHG->setAddSubStep(cellAccumulatedHG.m_sum,cellAccumulatedHG.m_sum2,cellAccumulatedHG.m_ntrigger);
255  larAccuCalibDigitContainerHG->push_back(accuCalibDigitHG);
256  }
257 
258  if (cellAccumulatedMG.m_ntrigger>0) {
259  LArAccumulatedCalibDigit* accuCalibDigitMG;
260  std::vector < uint64_t > sampleSumMG;
261  std::vector < uint64_t > sample2SumMG;
262  sampleSumMG.resize(sizeSamples,0);
263  sample2SumMG.resize(sizeSamples,0);
264  accuCalibDigitMG = new LArAccumulatedCalibDigit(chid, gain, sampleSumMG, sample2SumMG, 0, (uint16_t)digit->DAC(), (uint16_t)m_delay, m_isPulsed, 0, 0);
265  accuCalibDigitMG->setAddSubStep(cellAccumulatedMG.m_sum,cellAccumulatedMG.m_sum2,cellAccumulatedMG.m_ntrigger);
266  larAccuCalibDigitContainerMG->push_back(accuCalibDigitMG);
267  }
268 
269  if (cellAccumulatedLG.m_ntrigger>0) {
270  LArAccumulatedCalibDigit* accuCalibDigitLG;
271  std::vector < uint64_t > sampleSumLG;
272  std::vector < uint64_t > sample2SumLG;
273  sampleSumLG.resize(sizeSamples,0);
274  sample2SumLG.resize(sizeSamples,0);
275  accuCalibDigitLG = new LArAccumulatedCalibDigit(chid, gain, sampleSumLG, sample2SumLG, 0, (uint16_t)digit->DAC(), (uint16_t)m_delay, m_isPulsed, 0, 0);
276  accuCalibDigitLG->setAddSubStep(cellAccumulatedLG.m_sum,cellAccumulatedLG.m_sum2,cellAccumulatedLG.m_ntrigger);
277  larAccuCalibDigitContainerLG->push_back(accuCalibDigitLG);
278  }
279 
280  cellAccumulatedHG.m_ntrigger = 0;
281  cellAccumulatedMG.m_ntrigger = 0;
282  cellAccumulatedLG.m_ntrigger = 0;
283  }
284 
285 
286 
287  }// loop over cells in container
288 
289 
290  larAccuCalibDigitContainerHG->setDelayScale(m_delayScale);
291  larAccuCalibDigitContainerMG->setDelayScale(m_delayScale);
292  larAccuCalibDigitContainerLG->setDelayScale(m_delayScale);
293 
294  sc = evtStore()->record(larAccuCalibDigitContainerHG,"HIGH");
295  if (sc!=StatusCode::SUCCESS)
296  ATH_MSG_WARNING( "Unable to record LArAccumulatedCalibDigitContainer with key HIGH from DetectorStore. " );
297  else
298  ATH_MSG_DEBUG( "Recorded succesfully LArAccumulatedCalibDigitContainer with key HIGH" );
299  sc = evtStore()->setConst(larAccuCalibDigitContainerHG);
300  if (sc.isFailure()) {
301  ATH_MSG_ERROR( " Cannot lock LArAccumulatedCalibDigitContainerHG " );
302  delete larAccuCalibDigitContainerMG;
303  delete larAccuCalibDigitContainerLG;
304  return(StatusCode::FAILURE);
305  }
306 
307  sc = evtStore()->record(larAccuCalibDigitContainerMG,"MEDIUM");
308  if (sc!=StatusCode::SUCCESS)
309  ATH_MSG_WARNING( "Unable to record LArAccumulatedCalibDigitContainer with key MEDIUM from DetectorStore. " );
310  else
311  ATH_MSG_DEBUG( "Recorded succesfully LArAccumulatedCalibDigitContainer with key MEDIUM" );
312  sc = evtStore()->setConst(larAccuCalibDigitContainerMG);
313  if (sc.isFailure()) {
314  ATH_MSG_ERROR( " Cannot lock LArAccumulatedCalibDigitContainerMG " );
315  delete larAccuCalibDigitContainerLG;
316  return(StatusCode::FAILURE);
317  }
318 
319  sc = evtStore()->record(larAccuCalibDigitContainerLG,"LOW");
320  if (sc!=StatusCode::SUCCESS)
321  ATH_MSG_WARNING( "Unable to record LArAccumulatedCalibDigitContainer with key LOW from DetectorStore. " );
322  else
323  ATH_MSG_DEBUG( "Recorded succesfully LArAccumulatedCalibDigitContainer with key LOW" );
324  sc = evtStore()->setConst(larAccuCalibDigitContainerLG);
325  if (sc.isFailure()) {
326  ATH_MSG_ERROR( " Cannot lock LArAccumulatedCalibDigitContainerLG " );
327  return(StatusCode::FAILURE);
328  }
329  } // loop over key container
330  return StatusCode::SUCCESS;
331 }
332 
333 
LArCalibDigitsAccumulatorFreeGain::m_delayScale
double m_delayScale
Set delay scale.
Definition: LArCalibDigitsAccumulatorFreeGain.h:94
LArCalibDigitsAccumulatorFreeGain::m_isPulsed
bool m_isPulsed
Set wether a cell is pulsed or not.
Definition: LArCalibDigitsAccumulatorFreeGain.h:74
LArCalibDigitsAccumulatorFreeGain.h
LArAccumulatedCalibDigit
Data class for calibration ADC samples preprocessed by the DSP.
Definition: LArAccumulatedCalibDigit.h:42
LArCalibDigitsAccumulatorFreeGain::initialize
StatusCode initialize()
Definition: LArCalibDigitsAccumulatorFreeGain.cxx:34
LArOnlineID_Base::channel_Hash
IdentifierHash channel_Hash(HWIdentifier channelId) const
Create channel_hash from channel_Id.
Definition: LArOnlineID_Base.cxx:1636
LArAccumulatedCalibDigitContainer::setDelayScale
void setDelayScale(const double scale)
set the delay Scale
Definition: LArAccumulatedCalibDigitContainer.h:35
LArCalibDigitsAccumulatorFreeGain::m_event_counter
unsigned int m_event_counter
Event counter.
Definition: LArCalibDigitsAccumulatorFreeGain.h:116
LArOnlineID_Base::febHashMax
size_type febHashMax(void) const
define feb hash tables max size
Definition: LArOnlineID_Base.cxx:1896
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArCalibDigitsAccumulatorFreeGain::m_calibAccuDigitContainerName
std::string m_calibAccuDigitContainerName
LArAccumulatedCalibDigitContainer name.
Definition: LArCalibDigitsAccumulatorFreeGain.h:79
LArCalibParams::NTrigger
unsigned NTrigger(const HWIdentifier calibModuleID) const
Definition: LArCalibParams.cxx:211
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LArCalibLineMapping
Definition: LArCalibLineMapping.h:17
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArCalibParams
Definition: LArCalibParams.h:28
LArCalibDigitsAccumulatorFreeGain::LArAccumulated::m_ntrigger
unsigned int m_ntrigger
Definition: LArCalibDigitsAccumulatorFreeGain.h:56
LArCalibDigitsAccumulatorFreeGain::m_delay
int m_delay
Store delay.
Definition: LArCalibDigitsAccumulatorFreeGain.h:70
LArCalibDigitsAccumulatorFreeGain::m_AccumulatedLG
std::vector< LArAccumulated > m_AccumulatedLG
Definition: LArCalibDigitsAccumulatorFreeGain.h:111
LArOnlineID_Base::calib_module_Id
HWIdentifier calib_module_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Build calibration module identifier from fields.
Definition: LArOnlineID_Base.h:573
checkRpcDigits.digit
digit
Definition: checkRpcDigits.py:186
HWIdentifier
Definition: HWIdentifier.h:13
CaloGain::LARNGAIN
@ LARNGAIN
Definition: CaloGain.h:19
LArCalibDigitsAccumulatorFreeGain::LArAccumulated
Class of intermediate accumulations.
Definition: LArCalibDigitsAccumulatorFreeGain.h:54
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
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
LArCalibDigitContainer
Container class for LArCalibDigit.
Definition: LArCalibDigitContainer.h:19
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
LArCalibDigitsAccumulatorFreeGain::LArCalibDigitsAccumulatorFreeGain
LArCalibDigitsAccumulatorFreeGain(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LArCalibDigitsAccumulatorFreeGain.cxx:13
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
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
LArCalibDigitsAccumulatorFreeGain::LArAccumulated::m_sum
std::vector< uint64_t > m_sum
Definition: LArCalibDigitsAccumulatorFreeGain.h:57
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArCalibDigitsAccumulatorFreeGain::m_AccumulatedHG
std::vector< LArAccumulated > m_AccumulatedHG
Stores number of triggers per intermediate step.
Definition: LArCalibDigitsAccumulatorFreeGain.h:109
LArCalibDigitsAccumulatorFreeGain::m_AccumulatedMG
std::vector< LArAccumulated > m_AccumulatedMG
Definition: LArCalibDigitsAccumulatorFreeGain.h:110
AthAlgorithm
Definition: AthAlgorithm.h:47
LArOnlineID_Base::feb_Id
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
Definition: LArOnlineID_Base.cxx:1483
LArCalibDigitsAccumulatorFreeGain::execute
StatusCode execute()
Definition: LArCalibDigitsAccumulatorFreeGain.cxx:56
LArCalibDigitsAccumulatorFreeGain::m_keepPulsed
bool m_keepPulsed
Tells you wether you keep only pulsed cells or all cells.
Definition: LArCalibDigitsAccumulatorFreeGain.h:99
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArCalibDigit
Base class for LArDigits taken during calibration runs.
Definition: LArCalibDigit.h:29
LArOnlineID_Base::channelHashMax
size_type channelHashMax(void) const
Define channel hash tables max size.
Definition: LArOnlineID_Base.cxx:1901
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArCalibDigitsAccumulatorFreeGain::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition: LArCalibDigitsAccumulatorFreeGain.h:64
CaloGain::LARHIGHGAIN
@ LARHIGHGAIN
Definition: CaloGain.h:18
LArCalibDigitsAccumulatorFreeGain::LArAccumulated::m_sum2
std::vector< uint64_t > m_sum2
Definition: LArCalibDigitsAccumulatorFreeGain.h:58
LArCalibDigitsAccumulatorFreeGain::m_calibMapKey
SG::ReadCondHandleKey< LArCalibLineMapping > m_calibMapKey
Definition: LArCalibDigitsAccumulatorFreeGain.h:63
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
CaloGain::LARMEDIUMGAIN
@ LARMEDIUMGAIN
Definition: CaloGain.h:18
LArCalibDigitsAccumulatorFreeGain::m_keylist
std::vector< std::string > m_keylist
list of key for input digit container (=gain)
Definition: LArCalibDigitsAccumulatorFreeGain.h:84
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArAccumulatedCalibDigit::setAddSubStep
bool setAddSubStep(const std::vector< uint64_t > &sampleSum, const std::vector< uint64_t > &sample2Sum, const uint32_t nTriggerPerStep)
Sum up with another substep.
Definition: LArAccumulatedCalibDigit.cxx:112
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
LArCalibDigitsAccumulatorFreeGain::m_nStepTrigger
unsigned int m_nStepTrigger
Number of intermediate accumulations (JO property)
Definition: LArCalibDigitsAccumulatorFreeGain.h:89
CaloGain::LARLOWGAIN
@ LARLOWGAIN
Definition: CaloGain.h:18
IdentifierHash
Definition: IdentifierHash.h:38
LArAccumulatedCalibDigitContainer
Container class for LArAccumulatedCalibDigit.
Definition: LArAccumulatedCalibDigitContainer.h:25
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
LArOnlineID_Base::feb_Hash
IdentifierHash feb_Hash(HWIdentifier febId) const
Create feb hash identifiers from feb identifiers.
Definition: LArOnlineID_Base.cxx:1516
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37