ATLAS Offline Software
LArCalibDigitsAccumulator.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "CLHEP/Units/SystemOfUnits.h"
10 #include <cmath>
11 #include <cstdint>
12 
13 using CLHEP::ns;
14 
15 LArCalibDigitsAccumulator::LArCalibDigitsAccumulator (const std::string& name, ISvcLocator* pSvcLocator):
16  AthAlgorithm(name, pSvcLocator),
17  m_sc2ccMappingTool("CaloSuperCellIDTool"),
18  m_onlineHelper(nullptr),
19  m_sampleShift(0)
20 {
21  declareProperty("LArAccuCalibDigitContainerName",m_calibAccuDigitContainerName, "LArAccumulatedCalibDigits");
22  declareProperty("KeyList",m_keylist);
23  declareProperty("StepOfTriggers",m_nStepTrigger=1);
24  declareProperty("DelayScale",m_delayScale=1*ns);
25  declareProperty("KeepOnlyPulsed",m_keepPulsed=false);
26  declareProperty("KeepFullyPulsedSC",m_keepFullyPulsedSC=false);
27  declareProperty("DropPercentTrig",m_DropPercentTrig=10);
28  declareProperty("isSC",m_isSC=false);
29  declareProperty("SampleShift",m_sampleShift=0);
30  m_delay=-1;
32 }
33 
34 
36 
37  m_eventNb=0;
38  // retrieve online ID helper
39  StatusCode sc;
42 
43  if(m_isSC){
44  const LArOnline_SuperCellID *scid;
45  sc = detStore()->retrieve(scid, "LArOnline_SuperCellID");
46  if (sc.isFailure()) {
47  ATH_MSG_ERROR( "Could not get LArOnline_SuperCellID helper !" );
48  return sc;
49  } else {
50  m_onlineHelper = (const LArOnlineID_Base*)scid;
51  ATH_MSG_DEBUG("Found the LArOnlineID helper");
52  }
53  ATH_CHECK( m_sc2ccMappingTool.retrieve() );
56  } else {
57  const LArOnlineID* ll;
58  sc = detStore()->retrieve(ll, "LArOnlineID");
59  if (sc.isFailure()) {
60  ATH_MSG_ERROR( "Could not get LArOnlineID helper !" );
61  return sc;
62  } else {
64  ATH_MSG_DEBUG(" Found the LArOnlineID helper. ");
65  }
66  } //m_isSC
67 
68  return StatusCode::SUCCESS;
69 }
70 
71 
72 
74 {
75 
76  StatusCode sc;
77 
78  if ( m_event_counter < 100 || m_event_counter%100==0 )
79  ATH_MSG_INFO( "Processing event " << m_event_counter );
81 
83  const LArCalibLineMapping *clcabling {*clHdl};
84  if(!clcabling) {
85  ATH_MSG_WARNING( "Do not have calib line mapping from key " << m_calibMapKey.key() );
86  return StatusCode::FAILURE;
87  }
88 
89  // new here ====
90  const LArOnOffIdMapping* cabling(nullptr);
91  const LArOnOffIdMapping* cablingLeg(nullptr);
92  if( m_isSC ){
94  cabling = {*cablingHdl};
95  if(!cabling) {
96  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKeySC.key());
97  return StatusCode::FAILURE;
98  }
99 
101  cablingLeg = {*cablingHdlLeg};
102  if(!cablingLeg) {
103  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKey.key());
104  return StatusCode::FAILURE;
105  }
106  }
107 
108  // =============
109 
110 
111 
112  // pointer to input container
113  const LArCalibDigitContainer* calibDigitContainer=nullptr;
114 
115  // Event info
116  const xAOD::EventInfo* thisEventInfo = nullptr;
117  ATH_CHECK( evtStore()->retrieve(thisEventInfo) );
118  unsigned eventNb = thisEventInfo->eventNumber();
119  // retrieve calibration settings
120  const LArCalibParams* calibParams;
121  sc=detStore()->retrieve(calibParams,"LArCalibParams");
122  if (sc.isFailure())
123  {ATH_MSG_ERROR( "Cannot load LArCalibParams from DetStore." );
124  return StatusCode::FAILURE;
125  }
126 
127  unsigned int sizeSteps = (m_nStepTrigger>1 ? (m_nStepTrigger+1):1);
128 
129  // retrieve input calibDigits
130 
131  //Loop over all containers that are to be processed (e.g. different gains)
132  for (const std::string& key : m_keylist) {
133 
134  sc=evtStore()->retrieve(calibDigitContainer,key);
135  if(sc.isFailure()) {
136  ATH_MSG_ERROR( "Can't retrieve LArCalibDigitContainer with key " << key << "from StoreGate." );
137  return StatusCode::SUCCESS;
138  }else{
139  ATH_MSG_DEBUG( "Retrieved LArCalibDigitContainer with key " << key << " from StoreGate." );
140  }
141 
142  if(calibDigitContainer->empty()) {
143  ATH_MSG_DEBUG( "LArCalibDigitContainer with key=" << key << " is empty " );
144  }else{
145  ATH_MSG_DEBUG( "LArCalibDigitContainer with key=" << key << " has size = " << calibDigitContainer->size() );
146  }
147 
148  // counter of triggers
149  std::vector<unsigned int> ntrigger, nTriggerPerStep, nStepTrigger, iStepTrigger;
150  // effective number of triggers: per channel
151  ntrigger.resize(calibDigitContainer->size(),0);
152  // asked number of triggers (from calib settings): per FEB
153  nTriggerPerStep.resize(m_onlineHelper->febHashMax(),0);
154  nStepTrigger.resize(m_onlineHelper->febHashMax(),0);
155  iStepTrigger.resize(m_onlineHelper->febHashMax(),0);
156 
157  // output container
158  LArAccumulatedCalibDigitContainer* larAccuCalibDigitContainer = new LArAccumulatedCalibDigitContainer();
159  //Loop over all cells
160  for (const LArCalibDigit* digit : *calibDigitContainer) {
161  if(m_keepPulsed && !digit->isPulsed()) continue;
162 
163  // identificators
164  HWIdentifier chid=digit->hardwareID();
165  const HWIdentifier febid=m_onlineHelper->feb_Id(chid);
166  const IdentifierHash febhash = m_onlineHelper->feb_Hash(febid);
167  const IdentifierHash hashid = m_onlineHelper->channel_Hash(chid);
168 
169 
170 
172 
173  std::vector<Identifier> ccellIds(0);
174  unsigned numPulsedLeg = 0;
175  unsigned numCL = 0;
176  if( m_isSC ){
177 
179  bool hasInvalid=false;
180  for(auto s : digit->samples()){
181  if(s<0){
182  hasInvalid=true;
183  break;
184  }
185  }
186  if(hasInvalid) continue;
187 
188  Identifier myofflineID = cabling->cnvToIdentifier(digit->hardwareID()) ;
189  ccellIds = m_sc2ccMappingTool->superCellToOfflineID( myofflineID );
190  for (Identifier id : ccellIds) {// loop cells in sc
191  HWIdentifier cellLegHWID = cablingLeg->createSignalChannelID(id);
192  const std::vector<HWIdentifier>& calibLineLeg = clcabling->calibSlotLine(cellLegHWID);
193  numCL += calibLineLeg.size();
194  for (HWIdentifier calibLineHWID : calibLineLeg) {// loop legacy calib lines
195  if ( calibParams->isPulsed(eventNb,calibLineHWID) ){
196  numPulsedLeg += 1;
197  }else{
198  if ( digit->isPulsed() ) ATH_MSG_WARNING("SC "<< chid << " constituent cell "<< cellLegHWID << " calib line "<< calibLineHWID<< " not pulsed");}
199  }//end calib line Leg loop
200  }//end legacy cell loop
201  if ( digit->isPulsed() && numPulsedLeg != numCL ){ //(int)(ccellIds.size()) ){
202  ATH_MSG_WARNING("Number of pulsed legacy cells does not equal number of calibration lines "<<chid<<"!! LArParams counter = " << numPulsedLeg << ", SC2CCMappingTool = " << ccellIds.size() << ", num CLs = "<< numCL);
203 
204  if(m_keepFullyPulsedSC){ // && numPulsedLeg < (int)(ccellIds.size())){
205  ATH_MSG_WARNING("Discarding this SC ("<<chid<<") as it is not fully pulsed");
206  continue;
207  }
208  }
209  ATH_MSG_DEBUG("SC "<<chid<<" pulsed cells "<< numPulsedLeg <<" or "<< ccellIds.size()<<", "<<numCL<<" calibration lines");
210  } // end m_isSC
211 
213 
214  // BELOW: DIRTY HACK BECAUSE THERE SEEMS TO BE A BUG IN THE CABLINGSVC CONCERNING THE CALIBLINES.
215  // get calibration settings
216  const std::vector<HWIdentifier>& calibLineID=clcabling->calibSlotLine(chid);
217  HWIdentifier calibModuleID;
218  if(!calibLineID.empty()){
219  calibModuleID=m_onlineHelper->calib_module_Id(calibLineID[0]);
220  nTriggerPerStep[febhash] = calibParams->NTrigger(calibModuleID);
221  ATH_MSG_DEBUG( "Ntrigger per step = " << nTriggerPerStep[febhash] );
222  if(nTriggerPerStep[febhash] > 1000) nTriggerPerStep[febhash]=100; // very dirty !!!
223  }else{
224 
225  nTriggerPerStep[febhash] = 100; // very dirty !!
226  }
227 
228  // cell is pulsed ?
229  bool isPulsed = digit->isPulsed();
230 
231  //First cell to be processed, set delay
232  if (m_delay==-1) {
233  m_delay=digit->delay();
234  }
235  else{
236  // next cells: should be the same delay
237  if (m_delay!=digit->delay()) {
238  ATH_MSG_DEBUG( "Delay is changing to " << digit->delay() << " from " << m_delay << ": book a new LArAccumulatedCalibDigitContainer" );
239  m_delay=digit->delay();
240  }
241  }
242 
243  std::string patternName = getPatternName(key, isPulsed, m_delay, digit->DAC());
244 
245  std::map<std::string, std::vector<LArAccumulated> >::iterator accIter=m_Accumulated_map.find(patternName);
246  if(accIter==m_Accumulated_map.end()){
247  accIter=m_Accumulated_map.insert(std::make_pair(patternName,std::vector<LArAccumulated>(m_onlineHelper->channelHashMax()))).first;
248  }
249 
250  CaloGain::CaloGain gain=digit->gain();
251  if (gain<0 || gain>CaloGain::LARNGAIN)
252  {ATH_MSG_ERROR( "Found not-matching gain number ("<< (int)gain <<")" );
253  delete larAccuCalibDigitContainer;
254  return StatusCode::FAILURE;
255  }
256 
257  // object to be filled for each cell
258  LArAccumulated& cellAccumulated = accIter->second[hashid];
259  cellAccumulated.m_onlineId=chid.get_identifier32().get_compact();
260 
261  // trigger counter for each cell
262  cellAccumulated.m_ntrigger++;
263  ATH_MSG_INFO( "chid = " << chid << ", trigger = " << cellAccumulated.m_ntrigger << ", DAC = " << digit->DAC()<<", Delay = "<<digit->delay()<<", isPulsed? "<<digit->isPulsed() );
264 
265  // at first trigger, initialize vectors
266  unsigned int sizeSamples = digit->samples().size();
267  ATH_MSG_DEBUG( "sizeSteps = " << sizeSteps << ", # of samples = " << sizeSamples );
268 
269  if(cellAccumulated.m_ntrigger==1){
270  cellAccumulated.m_sum.clear();
271  cellAccumulated.m_sum2.clear();
272  cellAccumulated.m_sum.resize(sizeSamples,0);
273  cellAccumulated.m_sum2.resize(sizeSamples,0);
274  }
275 
277  for(unsigned int j=0;j<sizeSamples;j++){
278  int digis;
279  if(j-m_sampleShift >= sizeSamples){
280  digis=digit->samples()[sizeSamples-1];
281  cellAccumulated.m_sum[j] += digis;
282  cellAccumulated.m_sum2[j] += digis*digis;
283  }
284  else if((int)j-m_sampleShift<0){
285  digis=digit->samples()[0];
286  cellAccumulated.m_sum[j] += digis;
287  cellAccumulated.m_sum2[j] += digis*digis;
288  } else{
289  digis=digit->samples()[j-m_sampleShift];
290  cellAccumulated.m_sum[j] += digis;
291  cellAccumulated.m_sum2[j] += digis*digis;
292  }
293  }
294 
295  // when reached total number of triggers for this step, fill LArAccumulatedCalibDigit and reset number of triggers
296  unsigned int ntrigUsed = nTriggerPerStep[febhash];
297  if ( m_isSC && m_DropPercentTrig != 0 ){
298  ntrigUsed -= ntrigUsed*(m_DropPercentTrig/100);
299  }
300 
301  if(cellAccumulated.m_ntrigger==ntrigUsed){
302  ATH_MSG_DEBUG( "filling LArAccumulatedCalibDigit " );
303  ATH_MSG_DEBUG( "chid = " << chid << ", gain = " << gain << ", DAC = " << digit->DAC() << ", isPulsed = " << isPulsed << ", delay = " << m_delay << ", trigPerStep = " << nTriggerPerStep[febhash] << ", istep = " << iStepTrigger[febhash] );
304 
305 
306  LArAccumulatedCalibDigit* accuCalibDigit;
307  if ( m_isSC ){
308  ATH_MSG_DEBUG("Channel "<<chid<<" DAC "<< digit->DAC()<< " will multiply by "<<numPulsedLeg<< " = "<<digit->DAC()*numPulsedLeg<<" is pulsed??? "<<isPulsed);
309  accuCalibDigit = new LArAccumulatedCalibDigit(chid,gain,sizeSamples,(int32_t)(digit->DAC()*numPulsedLeg),(uint16_t)m_delay,isPulsed,0,0);
310  }else{
311  accuCalibDigit = new LArAccumulatedCalibDigit(chid,gain,sizeSamples,(uint16_t)digit->DAC(),(uint16_t)m_delay,isPulsed,0,0);
312  }
313 
314 
315  accuCalibDigit->setAddSubStep(cellAccumulated.m_sum,cellAccumulated.m_sum2,ntrigUsed);
316  iStepTrigger[febhash]++;
317 
318  std::vector<float> mean = accuCalibDigit->mean();
319  std::vector<float> RMS = accuCalibDigit->RMS();
320 
321  for(unsigned int i=0;i<mean.size();i++){
322  ATH_MSG_DEBUG( "mean["<<i<<"] = " << mean[i] );
323  ATH_MSG_DEBUG( "RMS["<<i<<"] = " << RMS[i] );
324  }
325 
326  larAccuCalibDigitContainer->push_back(accuCalibDigit);
327 
328  cellAccumulated.m_nused = cellAccumulated.m_ntrigger;
329  cellAccumulated.m_ntrigger = 0;
330  }
331 
332  }// loop over cells in container
333 
334 
335  larAccuCalibDigitContainer->setDelayScale(m_delayScale);
336  sc = evtStore()->record(larAccuCalibDigitContainer,key);
337  if (sc!=StatusCode::SUCCESS)
338  {ATH_MSG_WARNING( "Unable to record LArAccumulatedCalibDigitContainer with key " << key << " from DetectorStore. " );
339  }
340  else
341  ATH_MSG_DEBUG( "Recorded succesfully LArAccumulatedCalibDigitContainer with key " << key << " with size " << larAccuCalibDigitContainer->size());
342 
343  sc = evtStore()->setConst(larAccuCalibDigitContainer);
344  if (sc.isFailure()) {
345  ATH_MSG_ERROR( " Cannot lock LArAccumulatedCalibDigitContainer " );
346  return(StatusCode::FAILURE);
347  }
348 
349 
350  } // loop over key container
351  return StatusCode::SUCCESS;
352 }
353 
354 std::string LArCalibDigitsAccumulator::getPatternName(const std::string& gain, bool isPulsed, int delay, int dac){
355  std::ostringstream ss;
356  ss<<gain<<"_"<<isPulsed<<"_"<<delay<<"_"<<dac;
357  return ss.str();
358 }
359 
360 
362 
363  if ( !m_isSC ) return StatusCode::SUCCESS;
364  int ntrigUsed = 100 - 100*(m_DropPercentTrig/100);
365  for(auto &acc : m_Accumulated_map){
366  std::string pattern=acc.first;
367  for(auto &sc : acc.second){
368  if(sc.m_onlineId && sc.m_nused != ntrigUsed){
369  ATH_MSG_WARNING("Not enough triggers for pattern " << pattern << " channel OnlineID " << sc.m_onlineId << " ntriggers " << sc.m_ntrigger );
370  }
371  }
372  }
373 
374  return StatusCode::SUCCESS;
375 
376 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
mergePhysValFiles.pattern
pattern
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:26
LArAccumulatedCalibDigit
Data class for calibration ADC samples preprocessed by the DSP.
Definition: LArAccumulatedCalibDigit.h:42
LArOnlineID_Base::channel_Hash
IdentifierHash channel_Hash(HWIdentifier channelId) const
Create channel_hash from channel_Id.
Definition: LArOnlineID_Base.cxx:1632
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
mean
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Definition: dependence.cxx:254
LArAccumulatedCalibDigitContainer::setDelayScale
void setDelayScale(const double scale)
set the delay Scale
Definition: LArAccumulatedCalibDigitContainer.h:35
LArOnlineID_Base::febHashMax
size_type febHashMax(void) const
define feb hash tables max size
Definition: LArOnlineID_Base.cxx:1892
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
detail::ll
long long ll
Definition: PrimitiveHelpers.h:46
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
LArCalibDigitsAccumulator::m_nStepTrigger
unsigned int m_nStepTrigger
Number of intermediate accumulations (JO property)
Definition: LArCalibDigitsAccumulator.h:93
LArCalibParams::NTrigger
unsigned NTrigger(const HWIdentifier calibModuleID) const
Definition: LArCalibParams.cxx:195
LArCalibDigitsAccumulator::m_keylist
std::vector< std::string > m_keylist
list of key for input digit container (=gain)
Definition: LArCalibDigitsAccumulator.h:88
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LArCalibDigitsAccumulator::m_DropPercentTrig
double m_DropPercentTrig
Percentage of the used triggers that we will skip over at the end, in order ot ensure that the accumu...
Definition: LArCalibDigitsAccumulator.h:118
LArCalibDigitsAccumulator::m_keepPulsed
bool m_keepPulsed
Tells you whether you keep only pulsed cells or all cells.
Definition: LArCalibDigitsAccumulator.h:103
LArCalibDigitsAccumulator::m_sampleShift
int m_sampleShift
Samples to shift by, usually used in the case of SCs.
Definition: LArCalibDigitsAccumulator.h:134
LArCalibDigitsAccumulator::m_isSC
bool m_isSC
Tells you whether you run on SuperCells or Cells.
Definition: LArCalibDigitsAccumulator.h:108
LArCalibLineMapping
Definition: LArCalibLineMapping.h:17
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
LArCalibParams
Definition: LArCalibParams.h:28
LArCalibDigitsAccumulator::m_event_counter
unsigned int m_event_counter
Event counter.
Definition: LArCalibDigitsAccumulator.h:128
Identifier::get_identifier32
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
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
LArCalibDigitsAccumulator::getPatternName
static std::string getPatternName(const std::string &gain, bool isPulsed, int delay, int dac)
Definition: LArCalibDigitsAccumulator.cxx:354
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
checkRpcDigits.digit
digit
Definition: checkRpcDigits.py:186
HWIdentifier
Definition: HWIdentifier.h:13
CaloGain::LARNGAIN
@ LARNGAIN
Definition: CaloGain.h:19
Identifier32::get_compact
value_type get_compact() const
Get the compact id.
Definition: Identifier32.h:44
LArCalibDigitsAccumulator::LArAccumulated::m_sum
std::vector< uint64_t > m_sum
Definition: LArCalibDigitsAccumulator.h:53
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
LArCalibDigitsAccumulator::m_Accumulated_map
std::map< std::string, std::vector< LArAccumulated > > m_Accumulated_map
Vector (index=hash ID) of accumulation quantities.
Definition: LArCalibDigitsAccumulator.h:123
LArCalibDigitsAccumulator::finalize
StatusCode finalize()
Definition: LArCalibDigitsAccumulator.cxx:361
LArCalibDigitsAccumulator::m_eventNb
unsigned int m_eventNb
Definition: LArCalibDigitsAccumulator.h:129
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
LArCalibDigitsAccumulator::execute
StatusCode execute()
Definition: LArCalibDigitsAccumulator.cxx:73
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
LArCalibDigitsAccumulator::m_delayScale
double m_delayScale
Set delay scale.
Definition: LArCalibDigitsAccumulator.h:98
lumiFormat.i
int i
Definition: lumiFormat.py:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArAccumulatedCalibDigit::RMS
std::vector< float > RMS() const
Calculates and returns the RMS value of each ADC sample.
Definition: LArAccumulatedCalibDigit.cxx:50
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArCalibParams::isPulsed
bool isPulsed(const unsigned event, const HWIdentifier calibLineID) const
Definition: LArCalibParams.cxx:151
LArCalibDigitsAccumulator::m_calibAccuDigitContainerName
std::string m_calibAccuDigitContainerName
LArAccumulatedCalibDigitContainer name.
Definition: LArCalibDigitsAccumulator.h:83
AthenaPoolTestRead.acc
acc
Definition: AthenaPoolTestRead.py:16
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArCalibDigitsAccumulator::LArAccumulated::m_sum2
std::vector< uint64_t > m_sum2
Definition: LArCalibDigitsAccumulator.h:54
delay
double delay(std::size_t d)
Definition: JetTrigTimerTest.cxx:14
LArOnOffIdMapping::createSignalChannelID
HWIdentifier createSignalChannelID(const Identifier &id) const
create a HWIdentifier from an Identifier (not inline)
Definition: LArOnOffIdMapping.h:126
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:1479
LArCalibDigitsAccumulator::initialize
StatusCode initialize()
Definition: LArCalibDigitsAccumulator.cxx:35
integrator_ascii2db.dac
dac
Definition: integrator_ascii2db.py:126
LArCalibDigitsAccumulator::m_calibMapKey
SG::ReadCondHandleKey< LArCalibLineMapping > m_calibMapKey
Definition: LArCalibDigitsAccumulator.h:64
LArAccumulatedCalibDigit::mean
std::vector< float > mean() const
Calculates and returns the Mean value of each ADC sample.
Definition: LArAccumulatedCalibDigit.cxx:36
DiTauMassTools::HistInfo::RMS
@ RMS
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:35
LArOnlineID_Base
Helper for the Liquid Argon Calorimeter cell identifiers.
Definition: LArOnlineID_Base.h:105
LArCalibDigitsAccumulator::m_cablingKeySC
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKeySC
Definition: LArCalibDigitsAccumulator.h:71
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
LArCalibDigitsAccumulator::LArAccumulated::m_nused
int m_nused
Definition: LArCalibDigitsAccumulator.h:51
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:1897
LArCalibDigitsAccumulator::LArCalibDigitsAccumulator
LArCalibDigitsAccumulator(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LArCalibDigitsAccumulator.cxx:15
LArCalibDigitsAccumulator::m_keepFullyPulsedSC
bool m_keepFullyPulsedSC
Tells you whether you keep only fully pulsed supercells or all supercells.
Definition: LArCalibDigitsAccumulator.h:113
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)
LArOnlineID
Definition: LArOnlineID.h:20
LArCalibDigitsAccumulator::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArCalibDigitsAccumulator.h:70
LArOnline_SuperCellID
Definition: LArOnline_SuperCellID.h:20
LArCalibDigitsAccumulator::LArAccumulated::m_ntrigger
unsigned int m_ntrigger
Definition: LArCalibDigitsAccumulator.h:50
LArCalibDigitsAccumulator::m_delay
int m_delay
Store delay.
Definition: LArCalibDigitsAccumulator.h:78
EventInfo.h
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
LArCalibDigitsAccumulator::LArAccumulated
Class of intermediate accumulations.
Definition: LArCalibDigitsAccumulator.h:48
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
LArOnline_SuperCellID.h
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
LArCalibDigitsAccumulator.h
LArCalibDigitsAccumulator::m_onlineHelper
const LArOnlineID_Base * m_onlineHelper
Definition: LArCalibDigitsAccumulator.h:73
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
LArCalibDigitsAccumulator::m_calibMapSCKey
SG::ReadCondHandleKey< LArCalibLineMapping > m_calibMapSCKey
Definition: LArCalibDigitsAccumulator.h:67
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:1512
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
LArCalibDigitsAccumulator::m_sc2ccMappingTool
ToolHandle< ICaloSuperCellIDTool > m_sc2ccMappingTool
Definition: LArCalibDigitsAccumulator.h:62
LArOnlineID.h
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
Identifier
Definition: IdentifierFieldParser.cxx:14
LArCalibDigitsAccumulator::LArAccumulated::m_onlineId
unsigned int m_onlineId
Definition: LArCalibDigitsAccumulator.h:52