CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Functions
HcalSimpleRecAlgoImpl Namespace Reference

Functions

template<class Digi , class RecHit >
RecHit reco (const Digi &digi, const HcalCoder &coder, const HcalCalibrations &calibs, const int ifirst, const int n, const bool slewCorrect, const bool pulseCorrect, const HcalPulseContainmentCorrection *corr, const HcalTimeSlew::BiasSetting slewFlavor, const int runnum, const bool useLeak, const AbsOOTPileupCorrection *pileupCorrection, const BunchXParameter *bxInfo, const unsigned lenInfo, const int puCorrMethod, const PulseShapeFitOOTPileupCorrection *psFitOOTpuCorr, HcalDeterministicFit *hltOOTpuCorr, PedestalSub *hltPedSub)
 
template<class Digi , class RecHit >
RecHit recoHBHE (const Digi &digi, const HcalCoder &coder, const HcalCalibrations &calibs, const int ifirst, const int n, const bool slewCorrect, const bool pulseCorrect, const HcalPulseContainmentCorrection *corr, const HcalTimeSlew::BiasSetting slewFlavor, const int runnum, const bool useLeak, const AbsOOTPileupCorrection *pileupCorrection, const BunchXParameter *bxInfo, const unsigned lenInfo, const int puCorrMethod, const PulseShapeFitOOTPileupCorrection *psFitOOTpuCorr, HcalDeterministicFit *hltOOTpuCorr, PedestalSub *hltPedSub)
 
template<class Digi >
float recoHFTime (const Digi &digi, const int maxI, const double amp_fC, const bool slewCorrect, double maxA, float t0, float t2)
 
template<class Digi >
void removePileup (const Digi &digi, const HcalCoder &coder, const HcalCalibrations &calibs, const int ifirst, const int n, const bool pulseCorrect, const HcalPulseContainmentCorrection *corr, const AbsOOTPileupCorrection *pileupCorrection, const BunchXParameter *bxInfo, const unsigned lenInfo, double *p_maxA, double *p_ampl, double *p_uncorr_ampl, double *p_fc_ampl, int *p_nRead, int *p_maxI, bool *leakCorrApplied, float *p_t0, float *p_t2)
 

Function Documentation

template<class Digi , class RecHit >
RecHit HcalSimpleRecAlgoImpl::reco ( const Digi &  digi,
const HcalCoder coder,
const HcalCalibrations calibs,
const int  ifirst,
const int  n,
const bool  slewCorrect,
const bool  pulseCorrect,
const HcalPulseContainmentCorrection corr,
const HcalTimeSlew::BiasSetting  slewFlavor,
const int  runnum,
const bool  useLeak,
const AbsOOTPileupCorrection pileupCorrection,
const BunchXParameter *  bxInfo,
const unsigned  lenInfo,
const int  puCorrMethod,
const PulseShapeFitOOTPileupCorrection psFitOOTpuCorr,
HcalDeterministicFit hltOOTpuCorr,
PedestalSub hltPedSub 
)
inline

Definition at line 320 of file HcalSimpleRecAlgo.cc.

References HcalCoder::adc2fC(), HcalDeterministicFit::apply(), PulseShapeFitOOTPileupCorrection::apply(), fwrapper::cs, HcalTimeSlew::delay(), eCorr(), HcalBarrel, HcalDetId::ieta(), HcalDetId::iphi(), leakCorr(), bookConverter::max, findQualityFiles::maxI, removePileup(), setRawEnergy(), CaloSamples::size(), HcalDetId::subdet(), cond::rpcobgas::time, HcalCalibrations::timecorr(), and timeshift_ns_hbheho().

328  {
329  double fc_ampl =0, ampl =0, uncorr_ampl =0, maxA = -1.e300;
330  int nRead = 0, maxI = -1;
331  bool leakCorrApplied = false;
332  float t0 =0, t2 =0;
333  float time = -9999;
334 
335 // Disable method 1 inside the removePileup function this way!
336 // Some code in removePileup does NOT do pileup correction & to make sure maximum share of code
337  const AbsOOTPileupCorrection * inputAbsOOTpuCorr = ( puCorrMethod == 1 ? pileupCorrection: 0 );
338 
339  removePileup(digi, coder, calibs, ifirst, n,
340  pulseCorrect, corr, inputAbsOOTpuCorr,
341  bxInfo, lenInfo, &maxA, &ampl,
342  &uncorr_ampl, &fc_ampl, &nRead, &maxI,
343  &leakCorrApplied, &t0, &t2);
344 
345  if (maxI > 0 && maxI < (nRead - 1))
346  {
347  // Handle negative excursions by moving "zero":
348  float minA=t0;
349  if (maxA<minA) minA=maxA;
350  if (t2<minA) minA=t2;
351  if (minA<0) { maxA-=minA; t0-=minA; t2-=minA; } // positivizes all samples
352 
353  float wpksamp = (t0 + maxA + t2);
354  if (wpksamp!=0) wpksamp=(maxA + 2.0*t2) / wpksamp;
355  time = (maxI - digi.presamples())*25.0 + timeshift_ns_hbheho(wpksamp);
356 
357  if (slewCorrect) time-=HcalTimeSlew::delay(std::max(1.0,fc_ampl),slewFlavor);
358 
359  time=time-calibs.timecorr(); // time calibration
360  }
361 
362  // Note that uncorr_ampl is always set from outside of method 2!
363  if( puCorrMethod == 2 ){
364  std::vector<double> correctedOutput;
365 
366  CaloSamples cs;
367  coder.adc2fC(digi,cs);
368  std::vector<int> capidvec;
369  for(int ip=0; ip<cs.size(); ip++){
370  const int capid = digi[ip].capid();
371  capidvec.push_back(capid);
372  }
373  psFitOOTpuCorr->apply(cs, capidvec, calibs, correctedOutput);
374  if( correctedOutput.back() == 0 && correctedOutput.size() >1 ){
375  time = correctedOutput[1]; ampl = correctedOutput[0];
376  }
377  }
378 
379  // S. Brandt - Feb 19th : Adding Section for HLT
380  // Turn on HLT here with puCorrMethod = 3
381  if ( puCorrMethod == 3){
382  std::vector<double> hltCorrOutput;
383 
384  CaloSamples cs;
385  coder.adc2fC(digi,cs);
386  std::vector<int> capidvec;
387  for(int ip=0; ip<cs.size(); ip++){
388  const int capid = digi[ip].capid();
389  capidvec.push_back(capid);
390  }
391  hltOOTpuCorr->apply(cs, capidvec, calibs, digi, hltCorrOutput);
392  if( hltCorrOutput.size() > 1 ){
393  time = hltCorrOutput[1]; ampl = hltCorrOutput[0];
394  }
395  }
396 
397  // Temporary hack to apply energy-dependent corrections to some HB- cells
398  if (runnum > 0) {
399  const HcalDetId& cell = digi.id();
400  if (cell.subdet() == HcalBarrel) {
401  const int ieta = cell.ieta();
402  const int iphi = cell.iphi();
403  ampl *= eCorr(ieta, iphi, ampl, runnum);
404  uncorr_ampl *= eCorr(ieta, iphi, uncorr_ampl, runnum);
405  }
406  }
407 
408  // Correction for a leak to pre-sample
409  if(useLeak && !leakCorrApplied) {
410  ampl *= leakCorr(ampl);
411  uncorr_ampl *= leakCorr(uncorr_ampl);
412  }
413 
414  RecHit rh(digi.id(),ampl,time);
415  setRawEnergy(rh, static_cast<float>(uncorr_ampl));
416  return rh;
417  }
void apply(const CaloSamples &cs, const std::vector< int > &capidvec, const HcalCalibrations &calibs, const Digi &digi, std::vector< double > &Output) const
auto_ptr< ClusterSequence > cs
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:45
void setRawEnergy(HcalRecHit &h, float e)
Definition: rawEnergy.h:139
int ieta() const
get the cell ieta
Definition: HcalDetId.h:51
static float leakCorr(double energy)
Leak correction.
void removePileup(const Digi &digi, const HcalCoder &coder, const HcalCalibrations &calibs, const int ifirst, const int n, const bool pulseCorrect, const HcalPulseContainmentCorrection *corr, const AbsOOTPileupCorrection *pileupCorrection, const BunchXParameter *bxInfo, const unsigned lenInfo, double *p_maxA, double *p_ampl, double *p_uncorr_ampl, double *p_fc_ampl, int *p_nRead, int *p_maxI, bool *leakCorrApplied, float *p_t0, float *p_t2)
static float timeshift_ns_hbheho(float wpksamp)
int iphi() const
get the cell iphi
Definition: HcalDetId.h:53
int size() const
get the size
Definition: CaloSamples.h:24
double timecorr() const
get time correction factor
virtual void adc2fC(const HBHEDataFrame &df, CaloSamples &lf) const =0
void apply(const CaloSamples &cs, const std::vector< int > &capidvec, const HcalCalibrations &calibs, std::vector< double > &correctedOutput) const
tuple runnum
Definition: summaryLumi.py:210
static float eCorr(int ieta, int iphi, double ampl, int runnum)
Ugly hack to apply energy corrections to some HB- cells.
static double delay(double fC, BiasSetting bias=Medium)
Returns the amount (ns) by which a pulse of the given number of fC will be delayed by the timeslew ef...
Definition: HcalTimeSlew.cc:12
template<class Digi , class RecHit >
RecHit HcalSimpleRecAlgoImpl::recoHBHE ( const Digi &  digi,
const HcalCoder coder,
const HcalCalibrations calibs,
const int  ifirst,
const int  n,
const bool  slewCorrect,
const bool  pulseCorrect,
const HcalPulseContainmentCorrection corr,
const HcalTimeSlew::BiasSetting  slewFlavor,
const int  runnum,
const bool  useLeak,
const AbsOOTPileupCorrection pileupCorrection,
const BunchXParameter *  bxInfo,
const unsigned  lenInfo,
const int  puCorrMethod,
const PulseShapeFitOOTPileupCorrection psFitOOTpuCorr,
HcalDeterministicFit hltOOTpuCorr,
PedestalSub hltPedSub 
)
inline

Definition at line 420 of file HcalSimpleRecAlgo.cc.

References HcalCoder::adc2fC(), HcalDeterministicFit::apply(), PulseShapeFitOOTPileupCorrection::apply(), fwrapper::cs, HcalTimeSlew::delay(), eCorr(), HcalCaloFlagLabels::HBHEPulseFitBit, HcalBarrel, HcalDetId::ieta(), HcalDetId::iphi(), leakCorr(), bookConverter::max, findQualityFiles::maxI, removePileup(), CaloRecHit::setFlagField(), setRawEnergy(), CaloSamples::size(), HcalDetId::subdet(), cond::rpcobgas::time, HcalCalibrations::timecorr(), and timeshift_ns_hbheho().

428  {
429  double fc_ampl =0, ampl =0, uncorr_ampl =0, maxA = -1.e300;
430  int nRead = 0, maxI = -1;
431  bool leakCorrApplied = false;
432  float t0 =0, t2 =0;
433  float time = -9999;
434  bool useTriple = false;
435 
436  // Disable method 1 inside the removePileup function this way!
437  // Some code in removePileup does NOT do pileup correction & to make sure maximum share of code
438  const AbsOOTPileupCorrection * inputAbsOOTpuCorr = ( puCorrMethod == 1 ? pileupCorrection: 0 );
439 
440  removePileup(digi, coder, calibs, ifirst, n,
441  pulseCorrect, corr, inputAbsOOTpuCorr,
442  bxInfo, lenInfo, &maxA, &ampl,
443  &uncorr_ampl, &fc_ampl, &nRead, &maxI,
444  &leakCorrApplied, &t0, &t2);
445 
446  if (maxI > 0 && maxI < (nRead - 1))
447  {
448  // Handle negative excursions by moving "zero":
449  float minA=t0;
450  if (maxA<minA) minA=maxA;
451  if (t2<minA) minA=t2;
452  if (minA<0) { maxA-=minA; t0-=minA; t2-=minA; } // positivizes all samples
453 
454  float wpksamp = (t0 + maxA + t2);
455  if (wpksamp!=0) wpksamp=(maxA + 2.0*t2) / wpksamp;
456  time = (maxI - digi.presamples())*25.0 + timeshift_ns_hbheho(wpksamp);
457 
458  if (slewCorrect) time-=HcalTimeSlew::delay(std::max(1.0,fc_ampl),slewFlavor);
459 
460  time=time-calibs.timecorr(); // time calibration
461  }
462 
463  // Note that uncorr_ampl is always set from outside of method 2!
464  if( puCorrMethod == 2 ){
465  std::vector<double> correctedOutput;
466 
467  CaloSamples cs;
468  coder.adc2fC(digi,cs);
469  std::vector<int> capidvec;
470  for(int ip=0; ip<cs.size(); ip++){
471  const int capid = digi[ip].capid();
472  capidvec.push_back(capid);
473  }
474  psFitOOTpuCorr->apply(cs, capidvec, calibs, correctedOutput);
475  if( correctedOutput.back() == 0 && correctedOutput.size() >1 ){
476  time = correctedOutput[1]; ampl = correctedOutput[0];
477  useTriple = correctedOutput[4];
478  }
479  }
480 
481  // S. Brandt - Feb 19th : Adding Section for HLT
482  // Turn on HLT here with puCorrMethod = 3
483  if ( puCorrMethod == 3){
484  std::vector<double> hltCorrOutput;
485 
486  CaloSamples cs;
487  coder.adc2fC(digi,cs);
488  std::vector<int> capidvec;
489  for(int ip=0; ip<cs.size(); ip++){
490  const int capid = digi[ip].capid();
491  capidvec.push_back(capid);
492  }
493  hltOOTpuCorr->apply(cs, capidvec, calibs, digi, hltCorrOutput);
494  if( hltCorrOutput.size() > 1 ){
495  time = hltCorrOutput[1]; ampl = hltCorrOutput[0];
496  }
497  }
498 
499  // Temporary hack to apply energy-dependent corrections to some HB- cells
500  if (runnum > 0) {
501  const HcalDetId& cell = digi.id();
502  if (cell.subdet() == HcalBarrel) {
503  const int ieta = cell.ieta();
504  const int iphi = cell.iphi();
505  ampl *= eCorr(ieta, iphi, ampl, runnum);
506  uncorr_ampl *= eCorr(ieta, iphi, uncorr_ampl, runnum);
507  }
508  }
509 
510  // Correction for a leak to pre-sample
511  if(useLeak && !leakCorrApplied) {
512  ampl *= leakCorr(ampl);
513  uncorr_ampl *= leakCorr(uncorr_ampl);
514  }
515 
516  HBHERecHit rh(digi.id(),ampl,time);
517  if(useTriple)
518  {
520  }
521  setRawEnergy(rh, static_cast<float>(uncorr_ampl));
522  return rh;
523  }
void apply(const CaloSamples &cs, const std::vector< int > &capidvec, const HcalCalibrations &calibs, const Digi &digi, std::vector< double > &Output) const
auto_ptr< ClusterSequence > cs
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:45
void setFlagField(uint32_t value, int base, int width=1)
Definition: CaloRecHit.cc:20
void setRawEnergy(HcalRecHit &h, float e)
Definition: rawEnergy.h:139
int ieta() const
get the cell ieta
Definition: HcalDetId.h:51
static float leakCorr(double energy)
Leak correction.
void removePileup(const Digi &digi, const HcalCoder &coder, const HcalCalibrations &calibs, const int ifirst, const int n, const bool pulseCorrect, const HcalPulseContainmentCorrection *corr, const AbsOOTPileupCorrection *pileupCorrection, const BunchXParameter *bxInfo, const unsigned lenInfo, double *p_maxA, double *p_ampl, double *p_uncorr_ampl, double *p_fc_ampl, int *p_nRead, int *p_maxI, bool *leakCorrApplied, float *p_t0, float *p_t2)
static float timeshift_ns_hbheho(float wpksamp)
int iphi() const
get the cell iphi
Definition: HcalDetId.h:53
int size() const
get the size
Definition: CaloSamples.h:24
double timecorr() const
get time correction factor
virtual void adc2fC(const HBHEDataFrame &df, CaloSamples &lf) const =0
void apply(const CaloSamples &cs, const std::vector< int > &capidvec, const HcalCalibrations &calibs, std::vector< double > &correctedOutput) const
tuple runnum
Definition: summaryLumi.py:210
static float eCorr(int ieta, int iphi, double ampl, int runnum)
Ugly hack to apply energy corrections to some HB- cells.
static double delay(double fC, BiasSetting bias=Medium)
Returns the amount (ns) by which a pulse of the given number of fC will be delayed by the timeslew ef...
Definition: HcalTimeSlew.cc:12
template<class Digi >
float HcalSimpleRecAlgoImpl::recoHFTime ( const Digi &  digi,
const int  maxI,
const double  amp_fC,
const bool  slewCorrect,
double  maxA,
float  t0,
float  t2 
)
inline

Definition at line 136 of file HcalSimpleRecAlgo.cc.

References alignCSCRings::e, create_public_lumi_plots::exp, f, min(), cond::rpcobgas::time, and timeshift_ns_hf().

Referenced by HcalSimpleRecAlgo::reconstruct(), and HcalSimpleRecAlgo::reconstructHFUpgrade().

138  {
139  // Handle negative excursions by moving "zero":
140  float zerocorr=std::min(t0,t2);
141  if (zerocorr<0.f) {
142  t0 -= zerocorr;
143  t2 -= zerocorr;
144  maxA -= zerocorr;
145  }
146 
147  // pair the peak with the larger of the two neighboring time samples
148  float wpksamp=0.f;
149  if (t0>t2) {
150  wpksamp = t0+maxA;
151  if (wpksamp != 0.f) wpksamp = maxA/wpksamp;
152  } else {
153  wpksamp = maxA+t2;
154  if (wpksamp != 0.f) wpksamp = 1.+(t2/wpksamp);
155  }
156 
157  float time = (maxI - digi.presamples())*25.0 + timeshift_ns_hf(wpksamp);
158 
159  if (slewCorrect && amp_fC > 0.0) {
160  // -5.12327 - put in calibs.timecorr()
161  double tslew=exp(0.337681-5.94689e-4*amp_fC)+exp(2.44628-1.34888e-2*amp_fC);
162  time -= (float)tslew;
163  }
164 
165  return time;
166  }
static float timeshift_ns_hf(float wpksamp)
Same as above, but for the HF PMTs.
double f[11][100]
T min(T a, T b)
Definition: MathUtil.h:58
template<class Digi >
void HcalSimpleRecAlgoImpl::removePileup ( const Digi &  digi,
const HcalCoder coder,
const HcalCalibrations calibs,
const int  ifirst,
const int  n,
const bool  pulseCorrect,
const HcalPulseContainmentCorrection corr,
const AbsOOTPileupCorrection pileupCorrection,
const BunchXParameter *  bxInfo,
const unsigned  lenInfo,
double *  p_maxA,
double *  p_ampl,
double *  p_uncorr_ampl,
double *  p_fc_ampl,
int *  p_nRead,
int *  p_maxI,
bool *  leakCorrApplied,
float *  p_t0,
float *  p_t2 
)
inline

Definition at line 170 of file HcalSimpleRecAlgo.cc.

References HcalCoder::adc2fC(), AbsOOTPileupCorrection::apply(), fwrapper::cs, HcalPulseContainmentCorrection::getCorrection(), i, AbsOOTPileupCorrection::inputIsEnergy(), LogDebug, bookConverter::max, findQualityFiles::maxI, CaloSamples::MAXSAMPLES, min(), gen::n, HcalCalibrations::pedestal(), HcalCalibrations::respcorrgain(), and CaloSamples::size().

Referenced by reco(), recoHBHE(), HcalSimpleRecAlgo::reconstruct(), and HcalSimpleRecAlgo::reconstructHFUpgrade().

180  {
181  CaloSamples cs;
182  coder.adc2fC(digi,cs);
183  const int nRead = cs.size();
184  const int iStop = std::min(nRead, n + ifirst);
185 
186  // Signal energy will be calculated both with
187  // and without OOT pileup corrections. Try to
188  // arrange the calculations so that we do not
189  // repeat them.
190  double uncorrectedEnergy[CaloSamples::MAXSAMPLES] {}, buf[CaloSamples::MAXSAMPLES] {};
191  double* correctedEnergy = 0;
192  double fc_ampl = 0.0, corr_fc_ampl = 0.0;
193  bool pulseShapeCorrApplied = false, readjustTiming = false;
194  *leakCorrApplied = false;
195 
196  if (pileupCorrection)
197  {
198  correctedEnergy = &buf[0];
199 
200  double correctionInput[CaloSamples::MAXSAMPLES] {};
201  double gains[CaloSamples::MAXSAMPLES] {};
202 
203  for (int i=0; i<nRead; ++i)
204  {
205  const int capid = digi[i].capid();
206  correctionInput[i] = cs[i] - calibs.pedestal(capid);
207  gains[i] = calibs.respcorrgain(capid);
208  }
209 
210  for (int i=ifirst; i<iStop; ++i)
211  fc_ampl += correctionInput[i];
212 
213  const bool useGain = pileupCorrection->inputIsEnergy();
214  for (int i=0; i<nRead; ++i)
215  {
216  uncorrectedEnergy[i] = correctionInput[i]*gains[i];
217  if (useGain)
218  correctionInput[i] = uncorrectedEnergy[i];
219  }
220 
221  pileupCorrection->apply(digi.id(), correctionInput, nRead,
222  bxInfo, lenInfo, ifirst, n,
223  correctedEnergy, CaloSamples::MAXSAMPLES,
224  &pulseShapeCorrApplied, leakCorrApplied,
225  &readjustTiming);
226  if (useGain)
227  {
228  // Gain factors have been already applied.
229  // Divide by them for accumulating corr_fc_ampl.
230  for (int i=ifirst; i<iStop; ++i)
231  if (gains[i])
232  corr_fc_ampl += correctedEnergy[i]/gains[i];
233  }
234  else
235  {
236  for (int i=ifirst; i<iStop; ++i)
237  corr_fc_ampl += correctedEnergy[i];
238  for (int i=0; i<nRead; ++i)
239  correctedEnergy[i] *= gains[i];
240  }
241  }
242  else
243  {
244  correctedEnergy = &uncorrectedEnergy[0];
245 
246  // In this situation, we do not need to process all time slices
247  const int istart = std::max(ifirst - 1, 0);
248  const int iend = std::min(n + ifirst + 1, nRead);
249  for (int i=istart; i<iend; ++i)
250  {
251  const int capid = digi[i].capid();
252  float ta = cs[i] - calibs.pedestal(capid);
253  if (i >= ifirst && i < iStop)
254  fc_ampl += ta;
255  ta *= calibs.respcorrgain(capid);
256  uncorrectedEnergy[i] = ta;
257  }
258  corr_fc_ampl = fc_ampl;
259  }
260 
261  // Uncorrected and corrected energies
262  double ampl = 0.0, corr_ampl = 0.0;
263  for (int i=ifirst; i<iStop; ++i)
264  {
265  ampl += uncorrectedEnergy[i];
266  corr_ampl += correctedEnergy[i];
267  }
268 
269  // Apply phase-based amplitude correction:
270  if (corr && pulseCorrect)
271  {
272  ampl *= corr->getCorrection(fc_ampl);
273  if (pileupCorrection)
274  {
275  if (!pulseShapeCorrApplied)
276  corr_ampl *= corr->getCorrection(corr_fc_ampl);
277  }
278  else
279  corr_ampl = ampl;
280  }
281 
282  // Which energies we want to use for timing?
283  const double *etime = readjustTiming ? &correctedEnergy[0] : &uncorrectedEnergy[0];
284  int maxI = -1; double maxA = -1.e300;
285  for (int i=ifirst; i<iStop; ++i)
286  if (etime[i] > maxA)
287  {
288  maxA = etime[i];
289  maxI = i;
290  }
291 
292  // Fill out the output
293  *p_maxA = maxA;
294  *p_ampl = corr_ampl;
295  *p_uncorr_ampl = ampl;
296  *p_fc_ampl = readjustTiming ? corr_fc_ampl : fc_ampl;
297  *p_nRead = nRead;
298  *p_maxI = maxI;
299 
300  if (maxI <= 0 || maxI >= (nRead-1))
301  {
302  LogDebug("HCAL Pulse") << "HcalSimpleRecAlgoImpl::removePileup :"
303  << " Invalid max amplitude position, "
304  << " max Amplitude: " << maxI
305  << " first: " << ifirst
306  << " last: " << ifirst + n
307  << std::endl;
308  *p_t0 = 0.f;
309  *p_t2 = 0.f;
310  }
311  else
312  {
313  *p_t0 = etime[maxI - 1];
314  *p_t2 = etime[maxI + 1];
315  }
316  }
#define LogDebug(id)
virtual bool inputIsEnergy() const =0
int i
Definition: DBlmapReader.cc:9
double respcorrgain(int fCapId) const
get response corrected gain for capid=0..3
auto_ptr< ClusterSequence > cs
static const int MAXSAMPLES
Definition: CaloSamples.h:73
double getCorrection(double fc_ampl) const
double pedestal(int fCapId) const
get pedestal for capid=0..3
virtual void apply(const HcalDetId &id, const double *inputCharge, unsigned lenInputCharge, const BunchXParameter *bcParams, unsigned lenBcParams, unsigned firstTimeSlice, unsigned nTimeSlices, double *correctedCharge, unsigned lenCorrectedCharge, bool *pulseShapeCorrApplied, bool *leakCorrApplied, bool *readjustTiming) const =0
T min(T a, T b)
Definition: MathUtil.h:58
int size() const
get the size
Definition: CaloSamples.h:24
virtual void adc2fC(const HBHEDataFrame &df, CaloSamples &lf) const =0