CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
PulseShapeFitOOTPileupCorrection Class Reference

#include <PulseShapeFitOOTPileupCorrection.h>

Public Member Functions

void apply (const CaloSamples &cs, const std::vector< int > &capidvec, const HcalCalibrations &calibs, std::vector< double > &correctedOutput) const
 
 PulseShapeFitOOTPileupCorrection ()
 
void resetPulseShapeTemplate (const HcalPulseShapes::Shape &ps)
 
void setPulseShapeTemplate (const HcalPulseShapes::Shape &ps)
 
void setPUParams (bool iPedestalConstraint, bool iTimeConstraint, bool iAddPulseJitter, bool iUnConstrainedFit, bool iApplyTimeSlew, double iTS4Min, double iTS4Max, double iPulseJitter, double iTimeMean, double iTimeSig, double iPedMean, double iPedSig, double iNoise, double iTMin, double iTMax, double its3Chi2, double its4Chi2, double its345Chi2, double iChargeThreshold, HcalTimeSlew::BiasSetting slewFlavor, int iFitTimes)
 
 ~PulseShapeFitOOTPileupCorrection ()
 

Private Member Functions

void fit (int iFit, float &timevalfit, float &chargevalfit, float &pedvalfit, float &chi2, bool &fitStatus, double &iTSMax, const double &iTSTOTen, double *iEnArr, int(&iBX)[3]) const
 
int pulseShapeFit (const double *energyArr, const double *pedenArr, const double *chargeArr, const double *pedArr, const double *gainArr, const double tsTOTen, std::vector< double > &fitParsVec) const
 

Private Attributes

bool addPulseJitter_
 
bool applyTimeSlew_
 
double chargeThreshold_
 
int cntsetPulseShape
 
ROOT::Math::Functor * dpfunctor_
 
int fitTimes_
 
PSFitter::HybridMinimizerhybridfitter
 
std::array< double,
HcalConst::maxSamples
iniTimesArr
 
double noise_
 
bool pedestalConstraint_
 
double pedMean_
 
double pedSig_
 
std::auto_ptr
< FitterFuncs::PulseShapeFunctor
psfPtr_
 
double pulseJitter_
 
HcalTimeSlew::BiasSetting slewFlavor_
 
ROOT::Math::Functor * spfunctor_
 
bool timeConstraint_
 
double timeMean_
 
double timeSig_
 
ROOT::Math::Functor * tpfunctor_
 
double ts345Chi2_
 
double ts3Chi2_
 
double ts4Chi2_
 
double ts4Max_
 
double ts4Min_
 
int TSMax_
 
int TSMin_
 
bool unConstrainedFit_
 

Detailed Description

Definition at line 86 of file PulseShapeFitOOTPileupCorrection.h.

Constructor & Destructor Documentation

PulseShapeFitOOTPileupCorrection::PulseShapeFitOOTPileupCorrection ( )

Definition at line 199 of file PulseShapeFitOOTPileupCorrection.cc.

References hybridfitter, iniTimesArr, and PSFitter::HybridMinimizer::kMigrad.

200  psfPtr_(nullptr), spfunctor_(nullptr), dpfunctor_(nullptr), tpfunctor_(nullptr),
203  ts4Min_(0), ts4Max_(0), pulseJitter_(0), timeMean_(0), timeSig_(0), pedMean_(0), pedSig_(0),
204  noise_(0) {
206  iniTimesArr = { {-100,-75,-50,-25,0,25,50,75,100,125} };
207 }
std::auto_ptr< FitterFuncs::PulseShapeFunctor > psfPtr_
std::array< double, HcalConst::maxSamples > iniTimesArr
PulseShapeFitOOTPileupCorrection::~PulseShapeFitOOTPileupCorrection ( )

Definition at line 209 of file PulseShapeFitOOTPileupCorrection.cc.

References dpfunctor_, hybridfitter, spfunctor_, and tpfunctor_.

209  {
210  if(hybridfitter) delete hybridfitter;
211  if(spfunctor_) delete spfunctor_;
212  if(dpfunctor_) delete dpfunctor_;
213  if(tpfunctor_) delete tpfunctor_;
214 }

Member Function Documentation

void PulseShapeFitOOTPileupCorrection::apply ( const CaloSamples cs,
const std::vector< int > &  capidvec,
const HcalCalibrations calibs,
std::vector< double > &  correctedOutput 
) const

Definition at line 272 of file PulseShapeFitOOTPileupCorrection.cc.

References RecoTauCleanerPlugins::charge, relval_parameters_module::energy, HcalConst::maxSamples, HcalCalibrations::pedestal(), pedSig_, psfPtr_, pulseShapeFit(), HcalCalibrations::respcorrgain(), CaloSamples::size(), and ts4Min_.

Referenced by heavyIonTools.ConfigureHeavyIons::__call__(), editorTools.UserCodeTool::__call__(), HiCoreTools.RestrictInputToAOD::__call__(), coreTools.RunOnData::__call__(), trackTools.MakeAODTrackCandidates::__call__(), runJetUncertainties.RunJetUncertainties::__call__(), metTools.AddMETCollection::__call__(), heavyIonTools.ProductionDefaults::__call__(), editorTools.ChangeSource::__call__(), HiCoreTools.RemoveMCMatching::__call__(), coreTools.RemoveMCMatching::__call__(), trackTools.MakePATTrackCandidates::__call__(), trigTools.SwitchOnTrigger::__call__(), jetTools.AddJetCollection::__call__(), heavyIonTools.SelectionDefaults::__call__(), HiCoreTools.RemoveAllPATObjectsBut::__call__(), heavyIonTools.DisbaleMonteCarloDeps::__call__(), runType1CaloMEtUncertainties.RunType1CaloMEtUncertainties::__call__(), HiCoreTools.RemoveSpecificPATObjects::__call__(), trigTools.SwitchOnTriggerStandAlone::__call__(), trackTools.MakeTrackCandidates::__call__(), runMVAMEtUncertainties.RunMVAMEtUncertainties::__call__(), tauTools.AddTauCollection::__call__(), trigTools.SwitchOnTriggerMatching::__call__(), HiCoreTools.RemoveCleaning::__call__(), runType1PFMEtUncertainties.RunType1PFMEtUncertainties::__call__(), HiCoreTools.AddCleaning::__call__(), runNoPileUpMEtUncertainties.RunNoPileUpMEtUncertainties::__call__(), trigTools.SwitchOnTriggerMatchingStandAlone::__call__(), trigTools.SwitchOnTriggerMatchEmbedding::__call__(), jetTools.SwitchJetCollection::__call__(), jetTools.AddJetID::__call__(), jetTools.SetTagInfos::__call__(), and HcalSimpleRecAlgoImpl::reco().

273 {
274  psfPtr_->setDefaultcntNANinfit();
275 
276  const unsigned int cssize = cs.size();
277 // initialize arrays to be zero
278  double chargeArr[HcalConst::maxSamples]={}, pedArr[HcalConst::maxSamples]={}, gainArr[HcalConst::maxSamples]={};
279  double energyArr[HcalConst::maxSamples]={}, pedenArr[HcalConst::maxSamples]={};
280  double tsTOT = 0, tstrig = 0; // in fC
281  double tsTOTen = 0; // in GeV
282  for(unsigned int ip=0; ip<cssize; ++ip){
283  if( ip >= (unsigned) HcalConst::maxSamples ) continue; // Too many samples than what we wanna fit (10 is enough...) -> skip them
284  const int capid = capidvec[ip];
285  double charge = cs[ip];
286  double ped = calibs.pedestal(capid);
287  double gain = calibs.respcorrgain(capid);
288 
289  double energy = charge*gain;
290  double peden = ped*gain;
291 
292  chargeArr[ip] = charge; pedArr[ip] = ped; gainArr[ip] = gain;
293  energyArr[ip] = energy; pedenArr[ip] = peden;
294 
295  tsTOT += charge - ped;
296  tsTOTen += energy - peden;
297  if( ip ==4 || ip==5 ){
298  tstrig += charge - ped;
299  }
300  }
301  if( tsTOTen < 0. ) tsTOTen = pedSig_;
302  std::vector<double> fitParsVec;
303  if( tstrig >= ts4Min_ ) { //Two sigma from 0
304  pulseShapeFit(energyArr, pedenArr, chargeArr, pedArr, gainArr, tsTOTen, fitParsVec);
305 // double time = fitParsVec[1], ampl = fitParsVec[0], uncorr_ampl = fitParsVec[0];
306  }
307  correctedOutput.swap(fitParsVec); correctedOutput.push_back(psfPtr_->getcntNANinfit());
308 }
std::auto_ptr< FitterFuncs::PulseShapeFunctor > psfPtr_
double respcorrgain(int fCapId) const
get response corrected gain for capid=0..3
double pedestal(int fCapId) const
get pedestal for capid=0..3
int pulseShapeFit(const double *energyArr, const double *pedenArr, const double *chargeArr, const double *pedArr, const double *gainArr, const double tsTOTen, std::vector< double > &fitParsVec) const
int size() const
get the size
Definition: CaloSamples.h:24
void PulseShapeFitOOTPileupCorrection::fit ( int  iFit,
float &  timevalfit,
float &  chargevalfit,
float &  pedvalfit,
float &  chi2,
bool &  fitStatus,
double &  iTSMax,
const double &  iTSTOTen,
double *  iEnArr,
int(&)  iBX[3] 
) const
private

Definition at line 377 of file PulseShapeFitOOTPileupCorrection.cc.

References funct::abs(), assert(), PSFitter::HybridMinimizer::Clear(), dpfunctor_, fitTimes_, hybridfitter, i, iniTimesArr, PSFitter::HybridMinimizer::kMigrad, PSFitter::HybridMinimizer::kScan, PSFitter::HybridMinimizer::Minimize(), PSFitter::HybridMinimizer::MinValue(), gen::n, pedMean_, pedSig_, python.entryComment::results, PSFitter::HybridMinimizer::SetFixedVariable(), PSFitter::HybridMinimizer::SetFunction(), PSFitter::HybridMinimizer::SetLimitedVariable(), PSFitter::HybridMinimizer::SetMinimizerType(), spfunctor_, relval_parameters_module::step, timeMean_, timeSig_, tpfunctor_, TSMax_, TSMin_, unConstrainedFit_, varNames, and PSFitter::HybridMinimizer::X().

Referenced by pulseShapeFit().

377  {
378  int n = 3;
379  if(iFit == 2) n = 5; //Two Pulse Fit
380  if(iFit == 3) n = 7; //Three Pulse Fit
381  //Step 1 Single Pulse fit
382  float pedMax = iTSMax; //=> max timeslice
383  float tMin = TSMin_; //Fitting Time Min
384  float tMax = TSMax_; //Fitting Time Max
385  //Checks to make sure fitting happens
386  if(pedMax < 1.) pedMax = 1.;
387  // Set starting values andf step sizes for parameters
388  double vstart[n];
389  for(int i = 0; i < int((n-1)/2); i++) {
390  vstart[2*i+0] = iniTimesArr[iBX[i]]+timeMean_;
391  vstart[2*i+1] = iEnArr[iBX[i]];
392  }
393  vstart[n-1] = pedMean_;
394 
395  double step[n];
396  for(int i = 0; i < n; i++) step[i] = 0.1;
397 
398  if(iFit == 1) hybridfitter->SetFunction(*spfunctor_);
399  if(iFit == 2) hybridfitter->SetFunction(*dpfunctor_);
400  if(iFit == 3) hybridfitter->SetFunction(*tpfunctor_);
401  hybridfitter->Clear();
402  //Times and amplitudes
403  for(int i = 0; i < int((n-1)/2); i++) {
404  hybridfitter->SetLimitedVariable(0+i*2, varNames[2*i+0] , vstart[0+i*2], step[0+i*2],iniTimesArr[iBX[i]]+tMin, iniTimesArr[ iBX[i] ]+tMax);
405  hybridfitter->SetLimitedVariable(1+i*2, varNames[2*i+1] , vstart[1+i*2], step[1+i*2], 0, iTSTOTEn);
406  //Secret Option to fix the time
407  if(timeSig_ < 0) hybridfitter->SetFixedVariable(0+i*2, varNames[2*i+0],vstart[0+i*2]);
408  }
409  //Pedestal
410  if(vstart[n-1] > std::abs(pedMax)) vstart[n-1] = pedMax;
411  hybridfitter->SetLimitedVariable(n-1, varNames[n-1], vstart[n-1], step[n-1],-pedMax,pedMax);
412  //Secret Option to fix the pedestal
413  if(pedSig_ < 0) hybridfitter->SetFixedVariable(n-1,varNames[n-1],vstart[n-1]);
414  //a special number to label the initial condition
415  chi2=-1;
416  //3 fits why?!
417  const double *results = 0;
418  for(int tries=0; tries<=3;++tries){
419  if( fitTimes_ != 2 || tries !=1 ){
421  fitStatus = hybridfitter->Minimize();
422  }
423  double chi2valfit = hybridfitter->MinValue();
424  const double *newresults = hybridfitter->X();
425  if(chi2 == -1 || chi2>chi2valfit+0.01) {
426  results=newresults;
427  chi2=chi2valfit;
428  if( tries == 0 && fitTimes_ == 1 ) break;
429  if( tries == 1 && (fitTimes_ == 2 || fitTimes_ ==3 ) ) break;
430  if( tries == 2 && fitTimes_ == 4 ) break;
431  if( tries == 3 && fitTimes_ == 5 ) break;
432  //Secret option to speed up the fit => perhaps we should drop this
433  if(timeSig_ < 0 || pedSig_ < 0) break;
434  if(tries==0){
436  fitStatus = hybridfitter->Minimize();
437  } else if(tries==1){
438  hybridfitter->SetStrategy(1);
439  } else if(tries==2){
440  hybridfitter->SetStrategy(2);
441  }
442  } else {
443  break;
444  }
445  }
446  assert(results);
447 
448  timevalfit = results[0];
449  chargevalfit = results[1];
450  pedvalfit = results[n-1];
451  if(!(unConstrainedFit_ && iFit == 2)) return;
452  //Add the option of the old method 2
453  float timeval2fit = results[2];
454  float chargeval2fit = results[3];
455  if(std::abs(timevalfit)>std::abs(timeval2fit)) {// if timeval1fit and timeval2fit are differnt, choose the one which is closer to zero
456  timevalfit=timeval2fit;
457  chargevalfit=chargeval2fit;
458  } else if(timevalfit==timeval2fit) { // if the two times are the same, then for charge we just sum the two
459  timevalfit=(timevalfit+timeval2fit)/2;
460  chargevalfit=chargevalfit+chargeval2fit;
461  } else {
462  timevalfit=-999.;
463  chargevalfit=-999.;
464  }
465 }
int i
Definition: DBlmapReader.cc:9
assert(m_qm.get())
virtual const double * X() const
return pointer to X values at the minimum
void SetMinimizerType(EMinimizerType type)
std::array< double, HcalConst::maxSamples > iniTimesArr
virtual double MinValue() const
return minimum function value
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
virtual bool SetFixedVariable(unsigned int, const std::string &, double)
set fixed variable (override if minimizer supports them )
char const * varNames[]
virtual void SetFunction(const ROOT::Math::IMultiGenFunction &func)
set the function to minimize
virtual bool SetLimitedVariable(unsigned int ivar, const std::string &name, double val, double step, double, double)
set upper/lower limited variable (override if minimizer supports them )
int PulseShapeFitOOTPileupCorrection::pulseShapeFit ( const double *  energyArr,
const double *  pedenArr,
const double *  chargeArr,
const double *  pedArr,
const double *  gainArr,
const double  tsTOTen,
std::vector< double > &  fitParsVec 
) const
private

Definition at line 312 of file PulseShapeFitOOTPileupCorrection.cc.

References funct::abs(), applyTimeSlew_, rpcdqm::BX, chargeThreshold_, HcalTimeSlew::delay(), fit(), i, bookConverter::max, HcalConst::maxSamples, noise_, psfPtr_, slewFlavor_, mathSSE::sqrt(), ts4Chi2_, ts4Max_, and unConstrainedFit_.

Referenced by apply().

312  {
313  double tsMAX=0;
314  int nAboveThreshold = 0;
316  double tstrig = 0; // in fC
317  for(int i=0;i<HcalConst::maxSamples;++i){
318  tmpx[i]=i;
319  tmpy[i]=energyArr[i]-pedenArr[i];
320  //Add Time Slew !!! does this need to be pedestal subtracted
321  tmpslew[i] = 0;
322  if(applyTimeSlew_) tmpslew[i] = HcalTimeSlew::delay(std::max(1.0,chargeArr[i]),slewFlavor_);
323  //Add Greg's channel discretization
324  double sigmaBin = psfPtr_->sigma(chargeArr[i]);
325  tmperry2[i]=noise_*noise_+ sigmaBin*sigmaBin; //Greg's Granularity
326  //Propagate it through
327  tmperry2[i]*=(gainArr[i]*gainArr[i]); //Convert from fC to GeV
328  tmperry [i]=sqrt(tmperry2[i]);
329  //Add the Uncosntrained Double Pulse Switch
330  if((chargeArr[i])>chargeThreshold_) nAboveThreshold++;
331  if(std::abs(energyArr[i])>tsMAX) tsMAX=std::abs(tmpy[i]);
332  if( i ==4 || i ==5 ){
333  tstrig += chargeArr[i] - pedArr[i];
334  }
335  }
336  psfPtr_->setpsFitx (tmpx);
337  psfPtr_->setpsFity (tmpy);
338  psfPtr_->setpsFiterry (tmperry);
339  psfPtr_->setpsFiterry2(tmperry2);
340  psfPtr_->setpsFitslew (tmpslew);
341 
342  //Fit 1 single pulse
343  float timevalfit = 0;
344  float chargevalfit= 0;
345  float pedvalfit = 0;
346  float chi2 = 999; //cannot be zero
347  bool fitStatus = false;
348 
349  int BX[3] = {4,5,3};
350  if(ts4Chi2_ != 0) fit(1,timevalfit,chargevalfit,pedvalfit,chi2,fitStatus,tsMAX,tsTOTen,tmpy,BX);
351 // Based on the pulse shape ( 2. likely gives the same performance )
352  if(tmpy[2] > 3.*tmpy[3]) BX[2] = 2;
353 // Only do three-pulse fit when tstrig < ts4Max_, otherwise one-pulse fit is used (above)
354  if(chi2 > ts4Chi2_ && !unConstrainedFit_ && tstrig < ts4Max_) { //fails chi2 cut goes straight to 3 Pulse fit
355  fit(3,timevalfit,chargevalfit,pedvalfit,chi2,fitStatus,tsMAX,tsTOTen,tmpy,BX);
356  }
357  if(unConstrainedFit_ && nAboveThreshold > 5) { //For the old method 2 do double pulse fit if values above a threshold
358  fit(2,timevalfit,chargevalfit,pedvalfit,chi2,fitStatus,tsMAX,tsTOTen,tmpy,BX);
359  }
360  /*
361  if(chi2 > ts345Chi2_) { //fails do two pulse chi2 for TS5
362  BX[1] = 5;
363  fit(3,timevalfit,chargevalfit,pedvalfit,chi2,fitStatus,tsMAX,tsTOTen,BX);
364  }
365  */
366  //Fix back the timeslew
367  //if(applyTimeSlew_) timevalfit+=HcalTimeSlew::delay(std::max(1.0,chargeArr[4]),slewFlavor_);
368  int outfitStatus = (fitStatus ? 1: 0 );
369  fitParsVec.clear();
370  fitParsVec.push_back(chargevalfit);
371  fitParsVec.push_back(timevalfit);
372  fitParsVec.push_back(pedvalfit);
373  fitParsVec.push_back(chi2);
374  return outfitStatus;
375 }
std::auto_ptr< FitterFuncs::PulseShapeFunctor > psfPtr_
int i
Definition: DBlmapReader.cc:9
void fit(int iFit, float &timevalfit, float &chargevalfit, float &pedvalfit, float &chi2, bool &fitStatus, double &iTSMax, const double &iTSTOTen, double *iEnArr, int(&iBX)[3]) const
T sqrt(T t)
Definition: SSEVec.h:48
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
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:8
void PulseShapeFitOOTPileupCorrection::resetPulseShapeTemplate ( const HcalPulseShapes::Shape ps)

Definition at line 263 of file PulseShapeFitOOTPileupCorrection.cc.

References addPulseJitter_, applyTimeSlew_, cntsetPulseShape, FitterFuncs::PulseShapeFunctor::doublePulseShapeFunc(), dpfunctor_, noise_, pedestalConstraint_, pedMean_, pedSig_, psfPtr_, pulseJitter_, FitterFuncs::PulseShapeFunctor::singlePulseShapeFunc(), spfunctor_, timeConstraint_, timeMean_, timeSig_, tpfunctor_, and FitterFuncs::PulseShapeFunctor::triplePulseShapeFunc().

263  {
264  ++ cntsetPulseShape;
267  spfunctor_ = new ROOT::Math::Functor(psfPtr_.get(),&FitterFuncs::PulseShapeFunctor::singlePulseShapeFunc, 3);
268  dpfunctor_ = new ROOT::Math::Functor(psfPtr_.get(),&FitterFuncs::PulseShapeFunctor::doublePulseShapeFunc, 5);
269  tpfunctor_ = new ROOT::Math::Functor(psfPtr_.get(),&FitterFuncs::PulseShapeFunctor::triplePulseShapeFunc, 7);
270 }
std::auto_ptr< FitterFuncs::PulseShapeFunctor > psfPtr_
void PulseShapeFitOOTPileupCorrection::setPulseShapeTemplate ( const HcalPulseShapes::Shape ps)

Definition at line 252 of file PulseShapeFitOOTPileupCorrection.cc.

References addPulseJitter_, applyTimeSlew_, cntsetPulseShape, FitterFuncs::PulseShapeFunctor::doublePulseShapeFunc(), dpfunctor_, noise_, pedestalConstraint_, pedMean_, pedSig_, psfPtr_, pulseJitter_, FitterFuncs::PulseShapeFunctor::singlePulseShapeFunc(), spfunctor_, timeConstraint_, timeMean_, timeSig_, tpfunctor_, and FitterFuncs::PulseShapeFunctor::triplePulseShapeFunc().

252  {
253 
254  if( cntsetPulseShape ) return;
255  ++ cntsetPulseShape;
258  spfunctor_ = new ROOT::Math::Functor(psfPtr_.get(),&FitterFuncs::PulseShapeFunctor::singlePulseShapeFunc, 3);
259  dpfunctor_ = new ROOT::Math::Functor(psfPtr_.get(),&FitterFuncs::PulseShapeFunctor::doublePulseShapeFunc, 5);
260  tpfunctor_ = new ROOT::Math::Functor(psfPtr_.get(),&FitterFuncs::PulseShapeFunctor::triplePulseShapeFunc, 7);
261 }
std::auto_ptr< FitterFuncs::PulseShapeFunctor > psfPtr_
void PulseShapeFitOOTPileupCorrection::setPUParams ( bool  iPedestalConstraint,
bool  iTimeConstraint,
bool  iAddPulseJitter,
bool  iUnConstrainedFit,
bool  iApplyTimeSlew,
double  iTS4Min,
double  iTS4Max,
double  iPulseJitter,
double  iTimeMean,
double  iTimeSig,
double  iPedMean,
double  iPedSig,
double  iNoise,
double  iTMin,
double  iTMax,
double  its3Chi2,
double  its4Chi2,
double  its345Chi2,
double  iChargeThreshold,
HcalTimeSlew::BiasSetting  slewFlavor,
int  iFitTimes 
)

Definition at line 216 of file PulseShapeFitOOTPileupCorrection.cc.

References addPulseJitter_, applyTimeSlew_, chargeThreshold_, fitTimes_, noise_, pedestalConstraint_, pedMean_, pedSig_, pulseJitter_, slewFlavor_, timeConstraint_, timeMean_, timeSig_, ts345Chi2_, ts3Chi2_, ts4Chi2_, ts4Max_, ts4Min_, TSMax_, TSMin_, and unConstrainedFit_.

221  {
222 
223  TSMin_ = iTMin;
224  TSMax_ = iTMax;
225  ts3Chi2_ = its3Chi2;
226  ts4Chi2_ = its4Chi2;
227  ts345Chi2_ = its345Chi2;
228  pedestalConstraint_ = iPedestalConstraint;
229  timeConstraint_ = iTimeConstraint;
230  addPulseJitter_ = iAddPulseJitter;
231  unConstrainedFit_ = iUnConstrainedFit;
232  applyTimeSlew_ = iApplyTimeSlew;
233  ts4Min_ = iTS4Min;
234  ts4Max_ = iTS4Max;
235  pulseJitter_ = iPulseJitter*iPulseJitter;
236  timeMean_ = iTimeMean;
237  timeSig_ = iTimeSig;
238  pedMean_ = iPedMean;
239  pedSig_ = iPedSig;
240  noise_ = iNoise;
241  slewFlavor_ = slewFlavor;
242  chargeThreshold_ = iChargeThreshold;
243  fitTimes_ = iFitTimes;
244  if(unConstrainedFit_) { //Turn off all Constraints
245  //pedestalConstraint_ = false; => Leaving this as tunable
246  //timeConstraint_ = false;
247  TSMin_ = -100.;
248  TSMax_ = 75.;
249  }
250 }

Member Data Documentation

bool PulseShapeFitOOTPileupCorrection::addPulseJitter_
private
bool PulseShapeFitOOTPileupCorrection::applyTimeSlew_
private
double PulseShapeFitOOTPileupCorrection::chargeThreshold_
private

Definition at line 110 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by pulseShapeFit(), and setPUParams().

int PulseShapeFitOOTPileupCorrection::cntsetPulseShape
private
ROOT::Math::Functor* PulseShapeFitOOTPileupCorrection::dpfunctor_
private
int PulseShapeFitOOTPileupCorrection::fitTimes_
private

Definition at line 111 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by fit(), and setPUParams().

PSFitter::HybridMinimizer* PulseShapeFitOOTPileupCorrection::hybridfitter
private
std::array<double,HcalConst::maxSamples> PulseShapeFitOOTPileupCorrection::iniTimesArr
private

Definition at line 109 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by fit(), and PulseShapeFitOOTPileupCorrection().

double PulseShapeFitOOTPileupCorrection::noise_
private
bool PulseShapeFitOOTPileupCorrection::pedestalConstraint_
private
double PulseShapeFitOOTPileupCorrection::pedMean_
private
double PulseShapeFitOOTPileupCorrection::pedSig_
private
std::auto_ptr<FitterFuncs::PulseShapeFunctor> PulseShapeFitOOTPileupCorrection::psfPtr_
private
double PulseShapeFitOOTPileupCorrection::pulseJitter_
private
HcalTimeSlew::BiasSetting PulseShapeFitOOTPileupCorrection::slewFlavor_
private

Definition at line 135 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by pulseShapeFit(), and setPUParams().

ROOT::Math::Functor* PulseShapeFitOOTPileupCorrection::spfunctor_
private
bool PulseShapeFitOOTPileupCorrection::timeConstraint_
private
double PulseShapeFitOOTPileupCorrection::timeMean_
private
double PulseShapeFitOOTPileupCorrection::timeSig_
private
ROOT::Math::Functor* PulseShapeFitOOTPileupCorrection::tpfunctor_
private
double PulseShapeFitOOTPileupCorrection::ts345Chi2_
private

Definition at line 121 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by setPUParams().

double PulseShapeFitOOTPileupCorrection::ts3Chi2_
private

Definition at line 120 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by setPUParams().

double PulseShapeFitOOTPileupCorrection::ts4Chi2_
private

Definition at line 119 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by pulseShapeFit(), and setPUParams().

double PulseShapeFitOOTPileupCorrection::ts4Max_
private

Definition at line 128 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by pulseShapeFit(), and setPUParams().

double PulseShapeFitOOTPileupCorrection::ts4Min_
private

Definition at line 127 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by apply(), and setPUParams().

int PulseShapeFitOOTPileupCorrection::TSMax_
private

Definition at line 118 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by fit(), and setPUParams().

int PulseShapeFitOOTPileupCorrection::TSMin_
private

Definition at line 117 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by fit(), and setPUParams().

bool PulseShapeFitOOTPileupCorrection::unConstrainedFit_
private

Definition at line 125 of file PulseShapeFitOOTPileupCorrection.h.

Referenced by fit(), pulseShapeFit(), and setPUParams().