ATLAS Offline Software
L1CaloPprPhos4Shape.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // ********************************************************
6 // Name: L1CaloPprPhos4Shape.cxx
7 // Package: TrigT1CaloCalibConditions
8 //
9 // Author: Taylor Childers (childers@mail.cern.ch)
10 //
11 // See header for descriptions
12 //
13 // *********************************************************
14 
16 
18  AthMessaging("L1CaloPprPhos4Shape"),
19  m_minSignalHeight (30),
20  m_coolId (coolId),
21  m_eta (999),
22  m_phi (999),
23  m_layer (LAYER_NOT_SET),
24  m_isValid (true),
25  m_isEnabled (true),
26  m_currentFullDelayData (0),
27  m_pedValue (0),
28  m_l1aFadcSlice (0)
29 {
30  // setup raw signal profile.
32 // sm_raw_signalShape->GetXaxis()->SetTitle("nanosecond steps");
33 
34  m_raw_maxPeakValue = 0.;
35  m_raw_maxPeakBin = 0;
37  m_raw_fitPeakValue = 0.;
38  m_raw_fitPeakBin = 0;
40  m_raw_fitPerformed = true;
41 
42  m_raw_fit = 0;
43 
44  m_rawPedestalMean = 0.;
45  m_rawPedestalSigma = 0.;
46 
47  // I use the first 50 entries, which should all be pedestal level, to
48  // correct for the nanosecond depedent PHOS4 correction.
54 
63 
64  m_processed_fit = 0;
65 
66  m_risingSlopeMean = 0.;
67  m_risingSlopeSigma = 0.;
68 
69  m_processSignalShape = true;
70 
71 }
72 
74 
75 }
76 
78 StatusCode L1CaloPprPhos4Shape::Fill(const unsigned int ns_step,const unsigned int adc){
79  m_raw_signalShape->Fill(ns_step,adc);
80 
81  if(ns_step < NANOSEC_PER_LHC_CLOCK_TICK*2){
82  const unsigned int phos4step = ns_step % NANOSEC_PER_LHC_CLOCK_TICK;
83  m_pedCorrectionSum[phos4step] += adc;
84  m_pedCorrectionSum2[phos4step] += adc*adc;
85  ++m_pedCorrectionN[phos4step];
86  }
87 
88  return StatusCode::SUCCESS;
89 }
90 
94 StatusCode L1CaloPprPhos4Shape::Fill(const unsigned int timeSlice,const unsigned int rodHeaderStep,const int adc){
95  const unsigned int phos4step = rodHeaderStep % NANOSEC_PER_LHC_CLOCK_TICK;
96  const unsigned int ns_step = timeSlice*NANOSEC_PER_LHC_CLOCK_TICK + phos4step;
97  m_raw_signalShape->Fill(ns_step,adc);
98 
99  if(ns_step < NANOSEC_PER_LHC_CLOCK_TICK*2){
100  m_pedCorrectionSum[phos4step] += adc;
101  m_pedCorrectionSum2[phos4step] += adc*adc;
102  ++m_pedCorrectionN[phos4step];
103  }
104 
105  return StatusCode::SUCCESS;
106 }
107 
113 StatusCode L1CaloPprPhos4Shape::Fill(const unsigned int rodHeaderStep,const std::vector<int>& adc){
114  const unsigned int phos4step = rodHeaderStep % NANOSEC_PER_LHC_CLOCK_TICK;
115 
116  for(unsigned int timeSlice = 0;timeSlice < adc.size();++timeSlice){
117  const unsigned int ns_step = timeSlice*NANOSEC_PER_LHC_CLOCK_TICK + phos4step;
118  m_raw_signalShape->Fill(ns_step,adc[timeSlice]);
119  }
120 
121  m_pedCorrectionSum[phos4step] += adc[0];
122  m_pedCorrectionSum2[phos4step] += adc[0]*adc[0];
123  ++m_pedCorrectionN[phos4step];
124 
125  m_pedCorrectionSum[phos4step] += adc[1];
126  m_pedCorrectionSum2[phos4step] += adc[1]*adc[1];
127  ++m_pedCorrectionN[phos4step];
128 
129  return StatusCode::SUCCESS;
130 }
131 
136 
137 
138  // calculate pedestal with first 50 ns steps
140  const unsigned int pedestal = (unsigned int)m_rawPedestalMean;
141  // use pedestal + minSignalHeight as the cut unless it is lower than 6sigma
142  unsigned int signalCut = m_minSignalHeight;
143  if(signalCut < (unsigned int)(m_rawPedestalSigma*6.))
144  signalCut = (unsigned int)(m_rawPedestalSigma*6.);
145 
146  // signal cut above pedestal
147  signalCut += pedestal;
148 
149  bool signalIsPresent = IsSignalPresent(m_raw_signalShape,signalCut);
150 
151  if(!signalIsPresent || !m_isValid || !m_isEnabled){
152  // subtract the pedestal correction from the raw signal
154 
155  FillErrorCode(signalIsPresent,false);
156 
157  return StatusCode::SUCCESS;
158  }
159 
160  // check if the signal is saturated
161  const unsigned short int saturationLevel = 1020;
162  bool signalIsSaturated = IsSignalSaturated(m_raw_signalShape,saturationLevel);
163  // if signal is saturated, don't fit signals
164  if(signalIsSaturated){
165  m_raw_fitPerformed = false;
166  m_processed_fitPerformed = false;
167  }
168 
169  // find the peak value and location for the raw signal
171  // calculate the fullDelayData for these max values
173  // find the peak value and location using landau/gaus fit
174  if(m_raw_fitPerformed){
176  std::string rawFitName = "raw_";
177  rawFitName += m_raw_fit->GetName();
178  m_raw_fit->SetName(rawFitName.c_str());
179  // calculate the fullDelayData for these fitvalues
181  }
182 
183  // find the peak value and location for the corrected signal
184  // and calculate the new FullDataDelay
186  // subtract the pedestal correction from the raw signal
188 
190  // calculate the fullDelayData for these fitvalues
192 
193 
194  // find the peak value and location using landau/gaus fit
197 
198  std::string processedFitName = "processed_";
199  processedFitName += m_processed_fit->GetName();
200  m_processed_fit->SetName(processedFitName.c_str());
201 
202  // calculate the fullDelayData for these fitvalues
204  }
205  }
206 
207  // Fill Error Code
208  FillErrorCode(signalIsPresent,signalIsSaturated);
209 
210  return StatusCode::SUCCESS;
211 }
212 
214 void L1CaloPprPhos4Shape::FindBinWithMaxValue(TH1* histo,float& peakValue,unsigned int& peakBin){
215 
216  peakValue = 0;
217  peakBin = 0;
218  for(unsigned int bin=1;(int)bin<=histo->GetNbinsX();++bin){
219  if(peakValue < histo->GetBinContent(bin)){
220  peakValue = histo->GetBinContent(bin);
221  peakBin = bin;
222  }
223  }
224 }
226 TF1* L1CaloPprPhos4Shape::FitSignalPeak(TH1* histo,const float maxPeakValue,const unsigned int maxPeakBin,const unsigned int pedestal,float& fitPeakValue,unsigned int& fitPeakBin){
227 
228  fitPeakValue = 0.;
229  fitPeakBin = 0;
230 
231  const unsigned int fitRangeWidth = 13;
232  const unsigned int minFitRange = maxPeakBin - fitRangeWidth - 1; // -1 for bin to ns correction
233  const unsigned int maxFitRange = maxPeakBin + fitRangeWidth - 1;
234 
235  LandGaussFunc *fitFunc = new LandGaussFunc;
236 
237  std::string fitName = "fit_" + CoolIdToString(m_coolId);
238  TF1* fit = new TF1(fitName.c_str(),fitFunc,minFitRange,maxFitRange,5);
239  // fix the pedestal value
240  fit->FixParameter(4,pedestal);
241 
242  // constrain the mean position
243 // const unsigned int xmax_min = 0, xmax_max = 15*25;
244 // fit->SetParLimits(0,xmax_min,xmax_max);
245  // set initial mean position to that of the maximum bin
246  const unsigned int xmax_init = maxPeakBin-1;
247  fit->SetParameter(0,xmax_init);
248 
249  // constrain the amplitude
250 // const unsigned int amp_min = m_minSignalHeight+pedestal, amp_max = 1020;
251 // fit->SetParLimits(1,amp_min,amp_max);
252  // set initial amplitude
253  const float amp_init = (maxPeakValue-pedestal)*exp(0.5);
254  fit->SetParameter(1,amp_init);
255 
256  // constrain the sigma gaus
257 // const unsigned int gSigma_min = 1, gSigma_max = 60;
258 // fit->SetParLimits(2,gSigma_min,gSigma_max);
259  // set initial sigma gaus
260  const unsigned int gSigma_init = 25;
261  fit->SetParameter(2,gSigma_init);
262 
263  // constrain the sigma landau
264 // const unsigned int lSigma_min = 1, lSigma_max = 60;
265 // fit->SetParLimits(3,lSigma_min,lSigma_max);
266  // set initial sigma gaus
267  const unsigned int lSigma_init = 15;
268  fit->SetParameter(3,lSigma_init);
269 
270  histo->Fit(fit,"qurnob");
271 
272 
273 
274 // const float x_max = fit->GetParameter(0);
275  const float ampl = fit->GetParameter(1);
276 // const float gSigma = fit->GetParameter(2);
277 // const float lSigma = fit->GetParameter(3);
278 // const float ped = fit->GetParameter(4);
279 
280  fitPeakValue = ampl*exp(-0.5)+pedestal;
281  // +0.5 deals with rounding. If fitPeakValue is between x.0 and x.49
282  // the bin should not change after adding 0.5, but if it is x.5 to x.9
283  // the bin should be assigned to the next bin (so rounding up)
284  fitPeakBin = histo->FindBin(fit->GetParameter(0));
285 
286  delete fitFunc;
287  fitFunc = 0;
288 
289  return fit;
290 }
291 
292 void L1CaloPprPhos4Shape::CalculatePedestal(TH1* histo,float& pedMean,float& pedSigma){
293 
294  if((unsigned int)histo->GetNbinsX() < NANOSEC_PER_LHC_CLOCK_TICK*2){
295  ATH_MSG_WARNING("[CalculatePedestal] Could not calculate pedestal due to lack of bins in " << histo->GetName());
296  return;
297  }
298 
299  float pedSum=0,pedSum2=0;
300  unsigned int pedN=0;
301  for(unsigned int bin=1;bin<NANOSEC_PER_LHC_CLOCK_TICK*2;++bin){
302  pedSum += histo->GetBinContent(bin);
303  pedSum2 += histo->GetBinContent(bin)*histo->GetBinContent(bin);
304  pedN++;
305  }
306  // pedN > 0 <=> NANOSEC_PER_LHC_CLOCK_TICK > 0, which is protected by the above return
307  pedMean = pedSum/(float)pedN;
308  pedSigma = sqrt( (1.0/(float)pedN)*pedSum2 - pedMean*pedMean);
309 
310 }
311 
313 
314  // if the pedestal sigma is greater than this value we set
315  // the pedestal is flat to false so that the correction is
316  // not completed and the raw signal is used instead.
318  //m_processed_signalShape->GetXaxis()->SetTitle("nanosecond steps");
319 
321  m_processSignalShape = false;
322  }
323  else{
325 
326 
327  for(unsigned int bin=1;(int)bin<m_raw_signalShape->GetNbinsX();++bin){
328 
329  unsigned int phos4step = (bin - 1) % NANOSEC_PER_LHC_CLOCK_TICK;
330 
331  // add the bin content from the raw and pedestal correction
333 
334  // calculate the error
335  float error = sqrt(m_raw_signalShape->GetBinError(bin)*m_raw_signalShape->GetBinError(bin) + m_pedCorrectionSigma[phos4step]*m_pedCorrectionSigma[phos4step] );
336 
337  m_processed_signalShape->SetBinError(bin,error);
338 
339  }
340  }
341 
342 }
343 
345  for(unsigned int step=0;step<NANOSEC_PER_LHC_CLOCK_TICK;++step){
348  }
349 
350 }
351 
352 unsigned int L1CaloPprPhos4Shape::CalculateFullDelayData(const int truePeakPosition){
353 
354  // Stephen Hillier derived this calculation
355 
356  // integer division to get the course timing delay
357  const int courseDelay = (int)(m_currentFullDelayData/NANOSEC_PER_LHC_CLOCK_TICK);
358  // base delay
359  const int baseDelay = courseDelay*NANOSEC_PER_LHC_CLOCK_TICK + 9;
360 
361  const int idealPeakPosition = m_l1aFadcSlice*NANOSEC_PER_LHC_CLOCK_TICK;
362  const int dt = idealPeakPosition - truePeakPosition;
363 
364  const int newFullDelayData = (baseDelay + dt);
365  if(newFullDelayData < 0){
366  ATH_MSG_WARNING("[CalculateFullDelayData]: New Full Delay data was calculated as zero. Should only be greater than zero. Returning 0 for safety. Channel 0x" << CoolIdToString(m_coolId) << ". Peak position passed was: " << truePeakPosition << " and the idealPeakPosition is: " << idealPeakPosition);
367  return 0;
368  }
369 
370  return (unsigned int)newFullDelayData;
371 }
372 
373 void L1CaloPprPhos4Shape::FillErrorCode(bool signalIsPresent,bool signalIsSaturated){
374 
375  // if the signal is not present set the bad data bit
376  if(!signalIsPresent){
377  ATH_MSG_WARNING("[FillErrorCode] Set bad data bit because signal not present. Channel 0x" << CoolIdToString(m_coolId));
378  m_errorCode.badData(true);
380 
381  // fill FullDelayData variables with current database value for safety
386  return;
387  }
388 
389  if(signalIsSaturated){
390  ATH_MSG_WARNING("[FillErrorCode] Set bad data bit because signal is saturated. Channel 0x" << CoolIdToString(m_coolId));
391  m_errorCode.badData(true);
393 
394  // fill FullDelayData variables with current database value for safety
399 
400  }
401 
404  else
406 
407  // if no Mean or sigma was calculated this usually indicates a bad signal shape
408  if((m_risingSlopeMean < 0.0001 || m_risingSlopeSigma < 0.0001)){
409  ATH_MSG_WARNING("[FillErrorCode] Set bad data bit because the signal shape is corrupt. Channel 0x" << CoolIdToString(m_coolId));
410  m_errorCode.badData(true);
411  ATH_MSG_WARNING("[FillErrorCode] Set phos4 scan bad signal bit because the signal shape is corrupt. Channel 0x" << CoolIdToString(m_coolId));
413 
414 
415  // fill FullDelayData variables with current database value for safety
420  }
421  else if( m_risingSlopeSigma > 10.0){
422  ATH_MSG_WARNING("[FillErrorCode] Set bad data because the signal rising edge instantaneous slope has a large sigma. Channel 0x" << CoolIdToString(m_coolId));
423  m_errorCode.badData(true);
424  ATH_MSG_WARNING("[FillErrorCode] Set phos4 scan bad signal bit because the signal rising edge instantaneous slope has a large sigma. Channel 0x" << CoolIdToString(m_coolId));
426 
427 
428  // fill FullDelayData variables with current database value for safety
433  }
434 
435 
436 }
437 
438 // Verifies that a signal exists in this plot
439 // tests that the peak is above the passed threshold
440 bool L1CaloPprPhos4Shape::IsSignalPresent(TH1* histo,const unsigned int threshold) const{
441  for(unsigned int bin=1;bin<=(unsigned int)histo->GetNbinsX();++bin){
442  if(histo->GetBinContent(bin) > threshold){
443  return true;
444  }
445  }
446  return false;
447 }
448 
449 // tests for signal saturation
450 bool L1CaloPprPhos4Shape::IsSignalSaturated(TH1* histo,const unsigned int saturationPoint) const{
451  for(unsigned int bin=1;bin<=(unsigned int)histo->GetNbinsX();++bin){
452  if(histo->GetBinContent(bin) >= saturationPoint){
453  return true;
454  }
455  }
456  return false;
457 }
458 
459 
460 // verifies that there are no spikes in the slope
461 // it should be somewhat linear
462 void L1CaloPprPhos4Shape::CheckRisingSlope(TH1* histo,unsigned int peakBin,float peakValue){
463 
464  // want to only look at the slope from 10% to 90%
465  const float peakValue10percent = peakValue*0.10;
466  const float peakValue90percent = peakValue*0.90;
467  unsigned int peakBin10percent = 0;
468  unsigned int peakBin90percent = 0;
469  for(unsigned int bin=peakBin;bin>0;--bin){
470  if(histo->GetBinContent(bin) < peakValue10percent && peakBin10percent == 0){
471  peakBin10percent = bin;
472  break;
473  }
474  if(histo->GetBinContent(bin) < peakValue90percent && peakBin90percent == 0){
475  peakBin90percent = bin;
476  }
477 
478  }// end for(bin)
479 
480  //now calculate the mean and sigma instantaneous slope
481  float sum=0,sum2=0;
482  unsigned int n=0;
483  for(unsigned int bin=peakBin10percent+1;bin<=peakBin90percent;++bin){
484  float dydx = histo->GetBinContent(bin) - histo->GetBinContent(bin-1);
485  // dx = 1 by definition so dy = dydx
486 
487  sum += dydx;
488  sum2 += dydx*dydx;
489  n++;
490 
491  }
492 
493  m_risingSlopeMean = (n == 0) ? 0 : sum/(float)n;
494  m_risingSlopeSigma = (n == 0) ? 0 : sqrt( (1.0/(float)n)*sum2 - m_risingSlopeMean*m_risingSlopeMean);
495 
496 }
497 
498 std::string L1CaloPprPhos4Shape::GetPlotName(const std::string& base, const L1CaloCoolChannelId& coolId) const{
499  std::string tempStr = base + "_" + CoolIdToString(coolId);
500  return tempStr;
501 }
502 
503 std::string L1CaloPprPhos4Shape::GetPlotTitle(const std::string& base, const L1CaloCoolChannelId& coolId) const{
504  std::string tempStr = base + " " + CoolIdToString(coolId);
505  return tempStr;
506 }
507 
509  char temp[200];
510  sprintf(temp,"%08x",coolId.id());
511  std::string tempStr = temp;
512  return tempStr;
513 }
L1CaloPprPhos4Shape::m_processed_maxFullDelayData
unsigned int m_processed_maxFullDelayData
Definition: L1CaloPprPhos4Shape.h:215
base
std::string base
Definition: hcg.cxx:78
ChanCalibErrorCode::phos4ScanSignalSaturated
bool phos4ScanSignalSaturated() const
Definition: ChanCalibErrorCode.h:156
L1CaloPprPhos4Shape::m_raw_maxFullDelayData
unsigned int m_raw_maxFullDelayData
Definition: L1CaloPprPhos4Shape.h:195
L1CaloPprPhos4Shape::FillErrorCode
void FillErrorCode(bool signalIsPresent, bool signalIsSaturated)
Definition: L1CaloPprPhos4Shape.cxx:373
L1CaloPprPhos4Shape::m_processSignalShape
bool m_processSignalShape
Definition: L1CaloPprPhos4Shape.h:226
ChanCalibErrorCode::phos4ScanNoSignal
bool phos4ScanNoSignal() const
Definition: ChanCalibErrorCode.h:138
L1CaloPprPhos4Shape::m_processed_maxPeakBin
unsigned int m_processed_maxPeakBin
Definition: L1CaloPprPhos4Shape.h:214
L1CaloPprPhos4Shape::m_minSignalHeight
unsigned int m_minSignalHeight
Definition: L1CaloPprPhos4Shape.h:174
L1CaloPprPhos4Shape::m_processed_signalShape
TH1F * m_processed_signalShape
Definition: L1CaloPprPhos4Shape.h:212
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
L1CaloPprPhos4Shape::m_l1aFadcSlice
unsigned int m_l1aFadcSlice
Definition: L1CaloPprPhos4Shape.h:186
L1CaloPprPhos4Shape::m_coolId
L1CaloCoolChannelId m_coolId
Definition: L1CaloPprPhos4Shape.h:176
L1CaloPprPhos4Shape::m_isValid
bool m_isValid
Definition: L1CaloPprPhos4Shape.h:181
L1CaloPprPhos4Shape::m_rawPedestalSigma
float m_rawPedestalSigma
Definition: L1CaloPprPhos4Shape.h:204
ChanCalibErrorCode::phos4ScanBadSignal
bool phos4ScanBadSignal() const
Definition: ChanCalibErrorCode.h:141
L1CaloPprPhos4Shape::m_processed_fit
TF1 * m_processed_fit
Definition: L1CaloPprPhos4Shape.h:221
L1CaloPprPhos4Shape::Fill
StatusCode Fill(const unsigned int ns_step, const unsigned int adc)
Fill the profile with the ADC values at each nanosecond step.
Definition: L1CaloPprPhos4Shape.cxx:78
L1CaloPprPhos4Shape::m_pedValue
unsigned int m_pedValue
Definition: L1CaloPprPhos4Shape.h:185
L1CaloPprPhos4Shape::m_risingSlopeMean
float m_risingSlopeMean
Definition: L1CaloPprPhos4Shape.h:223
L1CaloPprPhos4Shape::m_currentFullDelayData
unsigned int m_currentFullDelayData
Definition: L1CaloPprPhos4Shape.h:184
bin
Definition: BinsDiffFromStripMedian.h:43
L1CaloPprPhos4Shape::NANOSEC_PER_LHC_CLOCK_TICK
static const unsigned int NANOSEC_PER_LHC_CLOCK_TICK
Definition: L1CaloPprPhos4Shape.h:230
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
L1CaloPprPhos4Shape::m_processed_maxPeakValue
float m_processed_maxPeakValue
Definition: L1CaloPprPhos4Shape.h:213
L1CaloPprPhos4Shape::CalculatePedCorrection
void CalculatePedCorrection(void)
Definition: L1CaloPprPhos4Shape.cxx:344
L1CaloPprPhos4Shape::m_risingSlopeSigma
float m_risingSlopeSigma
Definition: L1CaloPprPhos4Shape.h:224
L1CaloPprPhos4Shape::CheckRisingSlope
void CheckRisingSlope(TH1 *histo, unsigned int peakBin, float peakValue)
Definition: L1CaloPprPhos4Shape.cxx:462
L1CaloPprPhos4Shape::IsSignalPresent
bool IsSignalPresent(TH1 *histo, const unsigned int threshold) const
Definition: L1CaloPprPhos4Shape.cxx:440
L1CaloPprPhos4Shape::IsSignalSaturated
bool IsSignalSaturated(TH1 *histo, const unsigned int saturationPoint) const
Definition: L1CaloPprPhos4Shape.cxx:450
L1CaloPprPhos4Shape::L1CaloPprPhos4Shape
L1CaloPprPhos4Shape()
L1CaloPprPhos4Shape::m_raw_signalShape
TProfile * m_raw_signalShape
Definition: L1CaloPprPhos4Shape.h:192
L1CaloPprPhos4Shape::m_isEnabled
bool m_isEnabled
Definition: L1CaloPprPhos4Shape.h:182
L1CaloPprPhos4Shape::m_raw_maxPeakValue
float m_raw_maxPeakValue
Definition: L1CaloPprPhos4Shape.h:193
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
python.TrigEgammaMonitorHelper.TProfile
def TProfile(*args, **kwargs)
Definition: TrigEgammaMonitorHelper.py:81
beamspotman.n
n
Definition: beamspotman.py:731
L1CaloPprPhos4Shape::m_raw_maxPeakBin
unsigned int m_raw_maxPeakBin
Definition: L1CaloPprPhos4Shape.h:194
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CaloNoise_fillDB.dt
dt
Definition: CaloNoise_fillDB.py:58
L1CaloPprPhos4Shape::FitSignalPeak
TF1 * FitSignalPeak(TH1 *histo, const float maxPeakValue, const unsigned int maxPeakBin, const unsigned int pedestal, float &fitPeakValue, unsigned int &fitPeakBin)
Given a signal profile, this finds the maximum value and it's corresponding bin.
Definition: L1CaloPprPhos4Shape.cxx:226
L1CaloCoolChannelId::id
unsigned int id() const
Definition: L1CaloCoolChannelId.h:32
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
L1CaloPprPhos4Shape::MAX_PEDESTAL_SIGMA
static const unsigned int MAX_PEDESTAL_SIGMA
Definition: L1CaloPprPhos4Shape.h:233
L1CaloPprPhos4Shape::m_errorCode
ChanCalibErrorCode m_errorCode
Definition: L1CaloPprPhos4Shape.h:188
L1CaloPprPhos4Shape::m_processed_fitPerformed
bool m_processed_fitPerformed
Definition: L1CaloPprPhos4Shape.h:219
TH1F::SetBinContent
void SetBinContent(int, double)
Definition: rootspy.cxx:327
MuonValidation_CreateResolutionProfiles.fit
def fit(h, emin, emax)
Definition: MuonValidation_CreateResolutionProfiles.py:69
L1CaloPprPhos4Shape.h
L1CaloPprPhos4Shape::m_raw_fitPerformed
bool m_raw_fitPerformed
Definition: L1CaloPprPhos4Shape.h:199
L1CaloPprPhos4Shape::m_pedCorrectionMean
std::vector< float > m_pedCorrectionMean
Definition: L1CaloPprPhos4Shape.h:209
plotBeamSpotVxVal.bin
int bin
Definition: plotBeamSpotVxVal.py:83
threshold
Definition: chainparser.cxx:74
L1CaloPprPhos4Shape::GetPlotTitle
std::string GetPlotTitle(const std::string &base, const L1CaloCoolChannelId &coolId) const
Definition: L1CaloPprPhos4Shape.cxx:503
L1CaloPprPhos4Shape::m_raw_fit
TF1 * m_raw_fit
Definition: L1CaloPprPhos4Shape.h:201
L1CaloPprPhos4Shape::m_processed_fitPeakValue
float m_processed_fitPeakValue
Definition: L1CaloPprPhos4Shape.h:216
L1CaloCoolChannelId
Definition: L1CaloCoolChannelId.h:10
LandGaussFunc
Definition: L1CaloPprPhos4Shape.h:254
L1CaloPprPhos4Shape::Finalize
StatusCode Finalize(void)
In finalize I want the profile to be processed and extract some useful characteristics like the peak ...
Definition: L1CaloPprPhos4Shape.cxx:135
TProfile::Fill
int Fill(double, double)
Definition: rootspy.cxx:523
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
L1CaloPprPhos4Shape::FindBinWithMaxValue
void FindBinWithMaxValue(TH1 *histo, float &peakValue, unsigned int &peakBin)
Given a signal profile, this finds the maximum value and it's corresponding bin.
Definition: L1CaloPprPhos4Shape.cxx:214
L1CaloPprPhos4Shape::CoolIdToString
std::string CoolIdToString(const L1CaloCoolChannelId &coolId) const
Definition: L1CaloPprPhos4Shape.cxx:508
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
L1CaloPprPhos4Shape::CalculateFullDelayData
unsigned int CalculateFullDelayData(const int truePeakPosition)
Definition: L1CaloPprPhos4Shape.cxx:352
TH1
Definition: rootspy.cxx:268
L1CaloPprPhos4Shape::CalculatePedestal
void CalculatePedestal(TH1 *histo, float &pedMean, float &pedSigma)
Definition: L1CaloPprPhos4Shape.cxx:292
L1CaloPprPhos4Shape::CorrectRawPedestal
void CorrectRawPedestal(void)
Definition: L1CaloPprPhos4Shape.cxx:312
L1CaloPprPhos4Shape::m_raw_fitFullDelayData
unsigned int m_raw_fitFullDelayData
Definition: L1CaloPprPhos4Shape.h:198
L1CaloPprPhos4Shape::m_raw_fitPeakBin
unsigned int m_raw_fitPeakBin
Definition: L1CaloPprPhos4Shape.h:197
LArCellBinning.step
step
Definition: LArCellBinning.py:158
L1CaloPprPhos4Shape::m_raw_fitPeakValue
float m_raw_fitPeakValue
Definition: L1CaloPprPhos4Shape.h:196
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
plotBeamSpotCompare.histo
histo
Definition: plotBeamSpotCompare.py:415
L1CaloPprPhos4Shape::m_pedCorrectionN
std::vector< unsigned int > m_pedCorrectionN
Definition: L1CaloPprPhos4Shape.h:208
error
Definition: IImpactPoint3dEstimator.h:70
ChanCalibErrorCode::badData
bool badData() const
Definition: ChanCalibErrorCode.h:111
L1CaloPprPhos4Shape::m_processed_fitPeakBin
unsigned int m_processed_fitPeakBin
Definition: L1CaloPprPhos4Shape.h:217
L1CaloPprPhos4Shape::m_pedCorrectionSum2
std::vector< unsigned int > m_pedCorrectionSum2
Definition: L1CaloPprPhos4Shape.h:207
L1CaloPprPhos4Shape::m_rawPedestalMean
float m_rawPedestalMean
Definition: L1CaloPprPhos4Shape.h:203
dumpTgcDigiThreshold.threshold
list threshold
Definition: dumpTgcDigiThreshold.py:34
readCCLHist.float
float
Definition: readCCLHist.py:83
L1CaloPprPhos4Shape::m_pedCorrectionSigma
std::vector< float > m_pedCorrectionSigma
Definition: L1CaloPprPhos4Shape.h:210
L1CaloPprPhos4Shape::MAX_ADC_TIME_SLICES
static const unsigned int MAX_ADC_TIME_SLICES
Definition: L1CaloPprPhos4Shape.h:229
L1CaloPprPhos4Shape::m_processed_fitFullDelayData
unsigned int m_processed_fitFullDelayData
Definition: L1CaloPprPhos4Shape.h:218
L1CaloPprPhos4Shape::GetPlotName
std::string GetPlotName(const std::string &base, const L1CaloCoolChannelId &coolId) const
Definition: L1CaloPprPhos4Shape.cxx:498
L1CaloPprPhos4Shape::m_pedCorrectionSum
std::vector< unsigned int > m_pedCorrectionSum
Definition: L1CaloPprPhos4Shape.h:206
TProfile::GetBinContent
double GetBinContent(int) const
Definition: rootspy.cxx:527
L1CaloPprPhos4Shape::~L1CaloPprPhos4Shape
~L1CaloPprPhos4Shape()
Definition: L1CaloPprPhos4Shape.cxx:73