test
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(), 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__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties::__call__(), heavyIonTools.SelectionDefaults::__call__(), HiCoreTools.RemoveAllPATObjectsBut::__call__(), heavyIonTools.DisbaleMonteCarloDeps::__call__(), HiCoreTools.RemoveSpecificPATObjects::__call__(), trigTools.SwitchOnTriggerStandAlone::__call__(), trackTools.MakeTrackCandidates::__call__(), tauTools.AddTauCollection::__call__(), trigTools.SwitchOnTriggerMatching::__call__(), HiCoreTools.RemoveCleaning::__call__(), HiCoreTools.AddCleaning::__call__(), trigTools.SwitchOnTriggerMatchingStandAlone::__call__(), jetTools.AddJetCollection::__call__(), trigTools.SwitchOnTriggerMatchEmbedding::__call__(), jetTools.SwitchJetCollection::__call__(), jetTools.UpdateJetCollection::__call__(), jetTools.AddJetID::__call__(), jetTools.SetTagInfos::__call__(), HcalSimpleRecAlgoImpl::reco(), and HcalSimpleRecAlgoImpl::recoHBHE().

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 
302  std::vector<double> fitParsVec;
303  if(tstrig >= ts4Min_&& tsTOTen > 0.) { //Two sigma from 0
304  pulseShapeFit(energyArr, pedenArr, chargeArr, pedArr, gainArr, tsTOTen, fitParsVec);
305  }
306  else if((tstrig < ts4Min_||tsTOTen < 0.)&&(ts4Min_==0)){
307  fitParsVec.clear();
308  fitParsVec.push_back(0.);
309  fitParsVec.push_back(0.);
310  fitParsVec.push_back(0.);
311  fitParsVec.push_back(999.);
312  fitParsVec.push_back(false);
313  }
314  correctedOutput.swap(fitParsVec); correctedOutput.push_back(psfPtr_->getcntNANinfit());
315 }
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 387 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_, mps_update::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 trackingPlots.Iteration::modules(), and pulseShapeFit().

387  {
388  int n = 3;
389  if(iFit == 2) n = 5; //Two Pulse Fit
390  if(iFit == 3) n = 7; //Three Pulse Fit
391  //Step 1 Single Pulse fit
392  float pedMax = iTSMax; //=> max timeslice
393  float tMin = TSMin_; //Fitting Time Min
394  float tMax = TSMax_; //Fitting Time Max
395  //Checks to make sure fitting happens
396  if(pedMax < 1.) pedMax = 1.;
397  // Set starting values andf step sizes for parameters
398  double vstart[n];
399  for(int i = 0; i < int((n-1)/2); i++) {
400  vstart[2*i+0] = iniTimesArr[iBX[i]]+timeMean_;
401  vstart[2*i+1] = iEnArr[iBX[i]];
402  }
403  vstart[n-1] = pedMean_;
404 
405  double step[n];
406  for(int i = 0; i < n; i++) step[i] = 0.1;
407 
408  if(iFit == 1) hybridfitter->SetFunction(*spfunctor_);
409  if(iFit == 2) hybridfitter->SetFunction(*dpfunctor_);
410  if(iFit == 3) hybridfitter->SetFunction(*tpfunctor_);
411  hybridfitter->Clear();
412  //Times and amplitudes
413  for(int i = 0; i < int((n-1)/2); i++) {
414  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);
415  hybridfitter->SetLimitedVariable(1+i*2, varNames[2*i+1] , vstart[1+i*2], step[1+i*2], 0, 1.2*iTSTOTEn);
416  //Secret Option to fix the time
417  if(timeSig_ < 0) hybridfitter->SetFixedVariable(0+i*2, varNames[2*i+0],vstart[0+i*2]);
418  }
419  //Pedestal
420  if(vstart[n-1] > std::abs(pedMax)) vstart[n-1] = pedMax;
421  hybridfitter->SetLimitedVariable(n-1, varNames[n-1], vstart[n-1], step[n-1],-pedMax,pedMax);
422  //Secret Option to fix the pedestal
423  if(pedSig_ < 0) hybridfitter->SetFixedVariable(n-1,varNames[n-1],vstart[n-1]);
424  //a special number to label the initial condition
425  chi2=-1;
426  //3 fits why?!
427  const double *results = 0;
428  for(int tries=0; tries<=3;++tries){
429  if( fitTimes_ != 2 || tries !=1 ){
431  fitStatus = hybridfitter->Minimize();
432  }
433  double chi2valfit = hybridfitter->MinValue();
434  const double *newresults = hybridfitter->X();
435  if(chi2 == -1 || chi2>chi2valfit+0.01) {
436  results=newresults;
437  chi2=chi2valfit;
438  if( tries == 0 && fitTimes_ == 1 ) break;
439  if( tries == 1 && (fitTimes_ == 2 || fitTimes_ ==3 ) ) break;
440  if( tries == 2 && fitTimes_ == 4 ) break;
441  if( tries == 3 && fitTimes_ == 5 ) break;
442  //Secret option to speed up the fit => perhaps we should drop this
443  if(timeSig_ < 0 || pedSig_ < 0) break;
444  if(tries==0){
446  fitStatus = hybridfitter->Minimize();
447  } else if(tries==1){
448  hybridfitter->SetStrategy(1);
449  } else if(tries==2){
450  hybridfitter->SetStrategy(2);
451  }
452  } else {
453  break;
454  }
455  }
456  assert(results);
457 
458  timevalfit = results[0];
459  chargevalfit = results[1];
460  pedvalfit = results[n-1];
461  if(!(unConstrainedFit_ && iFit == 2)) return;
462  //Add the option of the old method 2
463  float timeval2fit = results[2];
464  float chargeval2fit = results[3];
465  if(std::abs(timevalfit)>std::abs(timeval2fit)) {// if timeval1fit and timeval2fit are differnt, choose the one which is closer to zero
466  timevalfit=timeval2fit;
467  chargevalfit=chargeval2fit;
468  } else if(timevalfit==timeval2fit) { // if the two times are the same, then for charge we just sum the two
469  timevalfit=(timevalfit+timeval2fit)/2;
470  chargevalfit=chargevalfit+chargeval2fit;
471  } else {
472  timevalfit=-999.;
473  chargevalfit=-999.;
474  }
475 }
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
tuple results
Definition: mps_update.py:44
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 319 of file PulseShapeFitOOTPileupCorrection.cc.

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

Referenced by apply().

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