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 
82  const LArCalibLineMapping *clcabling = nullptr;
83  if(m_isSC) {
85  clcabling =*clHdl;
86  } else {
88  clcabling =*clHdl;
89  }
90  if(!clcabling) {
91  ATH_MSG_WARNING( "Do not have calib line mapping from key " << m_calibMapKey.key() );
92  return StatusCode::FAILURE;
93  }
94 
95  // new here ====
96  const LArOnOffIdMapping* cabling(nullptr);
97  const LArOnOffIdMapping* cablingLeg(nullptr);
98  if( m_isSC ){
100  cabling = {*cablingHdl};
101  if(!cabling) {
102  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKeySC.key());
103  return StatusCode::FAILURE;
104  }
105 
107  cablingLeg = {*cablingHdlLeg};
108  if(!cablingLeg) {
109  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKey.key());
110  return StatusCode::FAILURE;
111  }
112  }
113 
114  // =============
115 
116 
117 
118  // pointer to input container
119  const LArCalibDigitContainer* calibDigitContainer=nullptr;
120 
121  // Event info
122  const xAOD::EventInfo* thisEventInfo = nullptr;
123  ATH_CHECK( evtStore()->retrieve(thisEventInfo) );
124  unsigned eventNb = thisEventInfo->eventNumber();
125  // retrieve calibration settings
126  const LArCalibParams* calibParams;
127  sc=detStore()->retrieve(calibParams,"LArCalibParams");
128  if (sc.isFailure())
129  {ATH_MSG_ERROR( "Cannot load LArCalibParams from DetStore." );
130  return StatusCode::FAILURE;
131  }
132 
133  unsigned int sizeSteps = (m_nStepTrigger>1 ? (m_nStepTrigger+1):1);
134 
135  // retrieve input calibDigits
136 
137  //Loop over all containers that are to be processed (e.g. different gains)
138  for (const std::string& key : m_keylist) {
139 
140  sc=evtStore()->retrieve(calibDigitContainer,key);
141  if(sc.isFailure()) {
142  ATH_MSG_ERROR( "Can't retrieve LArCalibDigitContainer with key " << key << "from StoreGate." );
143  return StatusCode::SUCCESS;
144  }else{
145  ATH_MSG_DEBUG( "Retrieved LArCalibDigitContainer with key " << key << " from StoreGate." );
146  }
147 
148  if(calibDigitContainer->empty()) {
149  ATH_MSG_DEBUG( "LArCalibDigitContainer with key=" << key << " is empty " );
150  }else{
151  ATH_MSG_DEBUG( "LArCalibDigitContainer with key=" << key << " has size = " << calibDigitContainer->size() );
152  }
153 
154  // counter of triggers
155  std::vector<unsigned int> ntrigger, nTriggerPerStep, nStepTrigger, iStepTrigger;
156  // effective number of triggers: per channel
157  ntrigger.resize(calibDigitContainer->size(),0);
158  // asked number of triggers (from calib settings): per FEB
159  nTriggerPerStep.resize(m_onlineHelper->febHashMax(),0);
160  nStepTrigger.resize(m_onlineHelper->febHashMax(),0);
161  iStepTrigger.resize(m_onlineHelper->febHashMax(),0);
162 
163  // output container
164  LArAccumulatedCalibDigitContainer* larAccuCalibDigitContainer = new LArAccumulatedCalibDigitContainer();
165  //Loop over all cells
166  for (const LArCalibDigit* digit : *calibDigitContainer) {
167  if(m_keepPulsed && !digit->isPulsed()) continue;
168 
169  // identificators
170  HWIdentifier chid=digit->hardwareID();
171  const HWIdentifier febid=m_onlineHelper->feb_Id(chid);
172  const IdentifierHash febhash = m_onlineHelper->feb_Hash(febid);
173  const IdentifierHash hashid = m_onlineHelper->channel_Hash(chid);
174 
175 
176 
178 
179  std::vector<Identifier> ccellIds(0);
180  unsigned numPulsedLeg = 0;
181  unsigned numCL = 0;
182  if( m_isSC ){
183 
185  bool hasInvalid=false;
186  for(auto s : digit->samples()){
187  if(s<0){
188  hasInvalid=true;
189  break;
190  }
191  }
192  if(hasInvalid) continue;
193 
194  Identifier myofflineID = cabling->cnvToIdentifier(digit->hardwareID()) ;
195  ccellIds = m_sc2ccMappingTool->superCellToOfflineID( myofflineID );
196  for (Identifier id : ccellIds) {// loop cells in sc
197  HWIdentifier cellLegHWID = cablingLeg->createSignalChannelID(id);
198  const std::vector<HWIdentifier>& calibLineLeg = clcabling->calibSlotLine(cellLegHWID);
199  numCL += calibLineLeg.size();
200  for (HWIdentifier calibLineHWID : calibLineLeg) {// loop legacy calib lines
201  if ( calibParams->isPulsed(eventNb,calibLineHWID) ){
202  numPulsedLeg += 1;
203  }else{
204  if ( digit->isPulsed() ) ATH_MSG_WARNING("SC "<< chid << " constituent cell "<< cellLegHWID << " calib line "<< calibLineHWID<< " not pulsed");}
205  }//end calib line Leg loop
206  }//end legacy cell loop
207  if ( digit->isPulsed() && numPulsedLeg != numCL ){ //(int)(ccellIds.size()) ){
208  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);
209 
210  if(m_keepFullyPulsedSC){ // && numPulsedLeg < (int)(ccellIds.size())){
211  ATH_MSG_WARNING("Discarding this SC ("<<chid<<") as it is not fully pulsed");
212  continue;
213  }
214  }
215  ATH_MSG_DEBUG("SC "<<chid<<" pulsed cells "<< numPulsedLeg <<" or "<< ccellIds.size()<<", "<<numCL<<" calibration lines");
216  } // end m_isSC
217 
219 
220  // BELOW: DIRTY HACK BECAUSE THERE SEEMS TO BE A BUG IN THE CABLINGSVC CONCERNING THE CALIBLINES.
221  // get calibration settings
222  const std::vector<HWIdentifier>& calibLineID=clcabling->calibSlotLine(chid);
223  HWIdentifier calibModuleID;
224  if(!calibLineID.empty()){
225  calibModuleID=m_onlineHelper->calib_module_Id(calibLineID[0]);
226  nTriggerPerStep[febhash] = calibParams->NTrigger(calibModuleID);
227  ATH_MSG_DEBUG( "Ntrigger per step = " << nTriggerPerStep[febhash] );
228  if(nTriggerPerStep[febhash] > 1000) nTriggerPerStep[febhash]=100; // very dirty !!!
229  }else{
230 
231  nTriggerPerStep[febhash] = 100; // very dirty !!
232  }
233 
234  // cell is pulsed ?
235  bool isPulsed = digit->isPulsed();
236 
237  //First cell to be processed, set delay
238  if (m_delay==-1) {
239  m_delay=digit->delay();
240  }
241  else{
242  // next cells: should be the same delay
243  if (m_delay!=digit->delay()) {
244  ATH_MSG_DEBUG( "Delay is changing to " << digit->delay() << " from " << m_delay << ": book a new LArAccumulatedCalibDigitContainer" );
245  m_delay=digit->delay();
246  }
247  }
248 
249  std::string patternName = getPatternName(key, isPulsed, m_delay, digit->DAC());
250 
251  std::map<std::string, std::vector<LArAccumulated> >::iterator accIter=m_Accumulated_map.find(patternName);
252  if(accIter==m_Accumulated_map.end()){
253  accIter=m_Accumulated_map.insert(std::make_pair(patternName,std::vector<LArAccumulated>(m_onlineHelper->channelHashMax()))).first;
254  }
255 
256  CaloGain::CaloGain gain=digit->gain();
257  if (gain<0 || gain>CaloGain::LARNGAIN)
258  {ATH_MSG_ERROR( "Found not-matching gain number ("<< (int)gain <<")" );
259  delete larAccuCalibDigitContainer;
260  return StatusCode::FAILURE;
261  }
262 
263  // object to be filled for each cell
264  LArAccumulated& cellAccumulated = accIter->second[hashid];
265  cellAccumulated.m_onlineId=chid.get_identifier32().get_compact();
266 
267  // trigger counter for each cell
268  cellAccumulated.m_ntrigger++;
269  ATH_MSG_DEBUG( "chid = " << chid << ", trigger = " << cellAccumulated.m_ntrigger << ", DAC = " << digit->DAC()<<", Delay = "<<digit->delay()<<", isPulsed? "<<digit->isPulsed() );
270 
271  // at first trigger, initialize vectors
272  unsigned int sizeSamples = digit->samples().size();
273  ATH_MSG_DEBUG( "sizeSteps = " << sizeSteps << ", # of samples = " << sizeSamples );
274 
275  if(cellAccumulated.m_ntrigger==1){
276  cellAccumulated.m_sum.clear();
277  cellAccumulated.m_sum2.clear();
278  cellAccumulated.m_sum.resize(sizeSamples,0);
279  cellAccumulated.m_sum2.resize(sizeSamples,0);
280  }
281 
283  for(unsigned int j=0;j<sizeSamples;j++){
284  int digis;
285  if(j-m_sampleShift >= sizeSamples){
286  digis=digit->samples()[sizeSamples-1];
287  cellAccumulated.m_sum[j] += digis;
288  cellAccumulated.m_sum2[j] += digis*digis;
289  }
290  else if((int)j-m_sampleShift<0){
291  digis=digit->samples()[0];
292  cellAccumulated.m_sum[j] += digis;
293  cellAccumulated.m_sum2[j] += digis*digis;
294  } else{
295  digis=digit->samples()[j-m_sampleShift];
296  cellAccumulated.m_sum[j] += digis;
297  cellAccumulated.m_sum2[j] += digis*digis;
298  }
299  }
300 
301  // when reached total number of triggers for this step, fill LArAccumulatedCalibDigit and reset number of triggers
302  unsigned int ntrigUsed = nTriggerPerStep[febhash];
303  if ( m_isSC && m_DropPercentTrig != 0 ){
304  ntrigUsed -= ntrigUsed*(m_DropPercentTrig/100);
305  }
306 
307  if(cellAccumulated.m_ntrigger==ntrigUsed){
308  ATH_MSG_DEBUG( "filling LArAccumulatedCalibDigit " );
309  ATH_MSG_DEBUG( "chid = " << chid << ", gain = " << gain << ", DAC = " << digit->DAC() << ", isPulsed = " << isPulsed << ", delay = " << m_delay << ", trigPerStep = " << nTriggerPerStep[febhash] << ", istep = " << iStepTrigger[febhash] );
310 
311 
312  LArAccumulatedCalibDigit* accuCalibDigit;
313  if ( m_isSC ){
314  ATH_MSG_DEBUG("Channel "<<chid<<" DAC "<< digit->DAC()<< " will multiply by "<<numPulsedLeg<< " = "<<digit->DAC()*numPulsedLeg<<" is pulsed??? "<<isPulsed);
315  accuCalibDigit = new LArAccumulatedCalibDigit(chid,gain,sizeSamples,(int32_t)(digit->DAC()*numPulsedLeg),(uint16_t)m_delay,isPulsed,0,0);
316  }else{
317  accuCalibDigit = new LArAccumulatedCalibDigit(chid,gain,sizeSamples,(uint16_t)digit->DAC(),(uint16_t)m_delay,isPulsed,0,0);
318  }
319 
320 
321  accuCalibDigit->setAddSubStep(cellAccumulated.m_sum,cellAccumulated.m_sum2,ntrigUsed);
322  iStepTrigger[febhash]++;
323 
324  std::vector<float> mean = accuCalibDigit->mean();
325  std::vector<float> RMS = accuCalibDigit->RMS();
326 
327  for(unsigned int i=0;i<mean.size();i++){
328  ATH_MSG_DEBUG( "mean["<<i<<"] = " << mean[i] );
329  ATH_MSG_DEBUG( "RMS["<<i<<"] = " << RMS[i] );
330  }
331 
332  larAccuCalibDigitContainer->push_back(accuCalibDigit);
333 
334  cellAccumulated.m_nused = cellAccumulated.m_ntrigger;
335  cellAccumulated.m_ntrigger = 0;
336  }
337 
338  }// loop over cells in container
339 
340 
341  larAccuCalibDigitContainer->setDelayScale(m_delayScale);
342  sc = evtStore()->record(larAccuCalibDigitContainer,key);
343  if (sc!=StatusCode::SUCCESS)
344  {ATH_MSG_WARNING( "Unable to record LArAccumulatedCalibDigitContainer with key " << key << " from DetectorStore. " );
345  }
346  else
347  ATH_MSG_DEBUG( "Recorded succesfully LArAccumulatedCalibDigitContainer with key " << key << " with size " << larAccuCalibDigitContainer->size());
348 
349  sc = evtStore()->setConst(larAccuCalibDigitContainer);
350  if (sc.isFailure()) {
351  ATH_MSG_ERROR( " Cannot lock LArAccumulatedCalibDigitContainer " );
352  return(StatusCode::FAILURE);
353  }
354 
355 
356  } // loop over key container
357  return StatusCode::SUCCESS;
358 }
359 
360 std::string LArCalibDigitsAccumulator::getPatternName(const std::string& gain, bool isPulsed, int delay, int dac){
361  std::ostringstream ss;
362  ss<<gain<<"_"<<isPulsed<<"_"<<delay<<"_"<<dac;
363  return ss.str();
364 }
365 
366 
368 
369  if ( !m_isSC ) return StatusCode::SUCCESS;
370  int ntrigUsed = 100 - 100*(m_DropPercentTrig/100);
371  for(auto &acc : m_Accumulated_map){
372  std::string pattern=acc.first;
373  for(auto &sc : acc.second){
374  if(sc.m_onlineId && sc.m_nused != ntrigUsed){
375  ATH_MSG_WARNING("Not enough triggers for pattern " << pattern << " channel OnlineID " << sc.m_onlineId << " ntriggers " << sc.m_ntrigger );
376  }
377  }
378  }
379 
380  return StatusCode::SUCCESS;
381 
382 }
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:47
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
LArCalibLineMapping::calibSlotLine
const std::vector< HWIdentifier > & calibSlotLine(const HWIdentifier id) const
Definition: LArCalibLineMapping.cxx:15
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:360
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:367
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:93
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:228
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