#include <ESRecHitFitAlgo.h>
Public Member Functions | |
ESRecHitFitAlgo () | |
double * | EvalAmplitude (const ESDataFrame &digi, double ped) const |
EcalRecHit | reconstruct (const ESDataFrame &digi) const |
void | setAngleCorrectionFactors (const ESAngleCorrectionFactors *ang) |
void | setChannelStatus (const ESChannelStatus *status) |
void | setESGain (const double &value) |
void | setIntercalibConstants (const ESIntercalibConstants *mips) |
void | setMIPGeV (const double &value) |
void | setPedestals (const ESPedestals *peds) |
void | setRatioCuts (const ESRecHitRatioCuts *ratioCuts) |
~ESRecHitFitAlgo () | |
Private Attributes | |
const ESAngleCorrectionFactors * | ang_ |
const ESChannelStatus * | channelStatus_ |
TF1 * | fit_ |
double | gain_ |
double | MIPGeV_ |
const ESIntercalibConstants * | mips_ |
const ESPedestals * | peds_ |
const ESRecHitRatioCuts * | ratioCuts_ |
Definition at line 14 of file ESRecHitFitAlgo.h.
ESRecHitFitAlgo::ESRecHitFitAlgo | ( | ) |
ESRecHitFitAlgo::~ESRecHitFitAlgo | ( | ) |
double * ESRecHitFitAlgo::EvalAmplitude | ( | const ESDataFrame & | digi, |
double | ped | ||
) | const |
Definition at line 35 of file ESRecHitFitAlgo.cc.
References ecalMGPA::adc(), ESSample::adc(), fit_, ESRecHitRatioCuts::getR12High(), ESRecHitRatioCuts::getR23High(), i, ratioCuts_, ESDataFrame::sample(), ESDataFrame::size(), and ntuplemaker::status.
Referenced by reconstruct().
{ double *fitresults = new double[3]; double adc[3]; double tx[3]; tx[0] = -5.; tx[1] = 20.; tx[2] = 45.; for (int i=0; i<digi.size(); i++) adc[i] = digi.sample(i).adc() - ped; double status = 0; if (adc[0] > 20) status = 14; if (adc[1] < 0 || adc[2] < 0) status = 10; if (adc[0] > adc[1] && adc[0] > adc[2]) status = 8; if (adc[2] > adc[1] && adc[2] > adc[0]) status = 9; double r12 = (adc[1] != 0) ? adc[0]/adc[1] : 99999; double r23 = (adc[2] != 0) ? adc[1]/adc[2] : 99999; if (r12 > ratioCuts_->getR12High()) status = 5; if (r23 > ratioCuts_->getR23High()) status = 6; if (r23 < ratioCuts_->getR23Low()) status = 7; if (int(status) == 0) { double para[10]; TGraph *gr = new TGraph(3, tx, adc); fit_->SetParameters(50, 10); gr->Fit("fit", "MQ"); fit_->GetParameters(para); fitresults[0] = para[0]; fitresults[1] = para[1]; delete gr; if (adc[1] > 2800 && adc[2] > 2800) status = 11; else if (adc[1] > 2800) status = 12; else if (adc[2] > 2800) status = 13; } else { fitresults[0] = 0; fitresults[1] = -999; } fitresults[2] = status; return fitresults; }
EcalRecHit ESRecHitFitAlgo::reconstruct | ( | const ESDataFrame & | digi | ) | const |
Definition at line 82 of file ESRecHitFitAlgo.cc.
References ang_, channelStatus_, funct::cos(), relval_parameters_module::energy, EvalAmplitude(), ESCondObjectContainer< T >::find(), ESCondObjectContainer< T >::getMap(), ESDataFrame::id(), EcalRecHit::kESBadRatioFor12, EcalRecHit::kESBadRatioFor23Lower, EcalRecHit::kESBadRatioFor23Upper, EcalRecHit::kESDead, EcalRecHit::kESGood, EcalRecHit::kESSaturated, EcalRecHit::kESTS13Sigmas, EcalRecHit::kESTS1Largest, EcalRecHit::kESTS2Saturated, EcalRecHit::kESTS3Largest, EcalRecHit::kESTS3Negative, EcalRecHit::kESTS3Saturated, LogDebug, MIPGeV_, mips_, peds_, python::entryComment::results, EcalRecHit::setRecoFlag(), and ntuplemaker::status.
Referenced by ESRecHitWorker::run().
{ ESPedestals::const_iterator it_ped = peds_->find(digi.id()); ESIntercalibConstantMap::const_iterator it_mip = mips_->getMap().find(digi.id()); ESAngleCorrectionFactors::const_iterator it_ang = ang_->getMap().find(digi.id()); ESChannelStatusMap::const_iterator it_status = channelStatus_->getMap().find(digi.id()); double* results; results = EvalAmplitude(digi, it_ped->getMean()); double energy = results[0]; double t0 = results[1]; int status = (int) results[2]; delete[] results; double mipCalib = (std::fabs(cos(*it_ang)) != 0.) ? (*it_mip)/fabs(cos(*it_ang)) : 0.; energy *= (mipCalib != 0.) ? MIPGeV_/mipCalib : 0.; DetId detId = digi.id(); LogDebug("ESRecHitFitAlgo") << "ESRecHitFitAlgo : reconstructed energy "<<energy<<" T0 "<<t0; EcalRecHit rechit(digi.id(), energy, t0); if (it_status->getStatusCode() == 1) { rechit.setRecoFlag(EcalRecHit::kESDead); } else { if (status == 0) rechit.setRecoFlag(EcalRecHit::kESGood); else if (status == 5) rechit.setRecoFlag(EcalRecHit::kESBadRatioFor12); else if (status == 6) rechit.setRecoFlag(EcalRecHit::kESBadRatioFor23Upper); else if (status == 7) rechit.setRecoFlag(EcalRecHit::kESBadRatioFor23Lower); else if (status == 8) rechit.setRecoFlag(EcalRecHit::kESTS1Largest); else if (status == 9) rechit.setRecoFlag(EcalRecHit::kESTS3Largest); else if (status == 10) rechit.setRecoFlag(EcalRecHit::kESTS3Negative); else if (status == 11) rechit.setRecoFlag(EcalRecHit::kESSaturated); else if (status == 12) rechit.setRecoFlag(EcalRecHit::kESTS2Saturated); else if (status == 13) rechit.setRecoFlag(EcalRecHit::kESTS3Saturated); else if (status == 14) rechit.setRecoFlag(EcalRecHit::kESTS13Sigmas); } return rechit; }
void ESRecHitFitAlgo::setAngleCorrectionFactors | ( | const ESAngleCorrectionFactors * | ang | ) | [inline] |
Definition at line 27 of file ESRecHitFitAlgo.h.
References ang_.
Referenced by ESRecHitWorker::set().
{ ang_ = ang; }
void ESRecHitFitAlgo::setChannelStatus | ( | const ESChannelStatus * | status | ) | [inline] |
Definition at line 25 of file ESRecHitFitAlgo.h.
References channelStatus_, and ntuplemaker::status.
Referenced by ESRecHitWorker::set().
{ channelStatus_ = status; }
void ESRecHitFitAlgo::setESGain | ( | const double & | value | ) | [inline] |
Definition at line 21 of file ESRecHitFitAlgo.h.
References gain_, and relativeConstraints::value.
Referenced by ESRecHitWorker::set().
void ESRecHitFitAlgo::setIntercalibConstants | ( | const ESIntercalibConstants * | mips | ) | [inline] |
Definition at line 24 of file ESRecHitFitAlgo.h.
References mips_.
Referenced by ESRecHitWorker::set().
{ mips_ = mips; }
void ESRecHitFitAlgo::setMIPGeV | ( | const double & | value | ) | [inline] |
Definition at line 22 of file ESRecHitFitAlgo.h.
References MIPGeV_, and relativeConstraints::value.
Referenced by ESRecHitWorker::set().
void ESRecHitFitAlgo::setPedestals | ( | const ESPedestals * | peds | ) | [inline] |
Definition at line 23 of file ESRecHitFitAlgo.h.
References peds_.
Referenced by ESRecHitWorker::set().
{ peds_ = peds; }
void ESRecHitFitAlgo::setRatioCuts | ( | const ESRecHitRatioCuts * | ratioCuts | ) | [inline] |
Definition at line 26 of file ESRecHitFitAlgo.h.
References ratioCuts_.
Referenced by ESRecHitWorker::set().
{ ratioCuts_ = ratioCuts; }
const ESAngleCorrectionFactors* ESRecHitFitAlgo::ang_ [private] |
Definition at line 39 of file ESRecHitFitAlgo.h.
Referenced by reconstruct(), and setAngleCorrectionFactors().
const ESChannelStatus* ESRecHitFitAlgo::channelStatus_ [private] |
Definition at line 37 of file ESRecHitFitAlgo.h.
Referenced by reconstruct(), and setChannelStatus().
TF1* ESRecHitFitAlgo::fit_ [private] |
Definition at line 33 of file ESRecHitFitAlgo.h.
Referenced by ESRecHitFitAlgo(), EvalAmplitude(), and ~ESRecHitFitAlgo().
double ESRecHitFitAlgo::gain_ [private] |
Definition at line 34 of file ESRecHitFitAlgo.h.
Referenced by setESGain().
double ESRecHitFitAlgo::MIPGeV_ [private] |
Definition at line 40 of file ESRecHitFitAlgo.h.
Referenced by reconstruct(), and setMIPGeV().
const ESIntercalibConstants* ESRecHitFitAlgo::mips_ [private] |
Definition at line 36 of file ESRecHitFitAlgo.h.
Referenced by reconstruct(), and setIntercalibConstants().
const ESPedestals* ESRecHitFitAlgo::peds_ [private] |
Definition at line 35 of file ESRecHitFitAlgo.h.
Referenced by reconstruct(), and setPedestals().
const ESRecHitRatioCuts* ESRecHitFitAlgo::ratioCuts_ [private] |
Definition at line 38 of file ESRecHitFitAlgo.h.
Referenced by EvalAmplitude(), and setRatioCuts().