#include <MahiFit.h>
Public Types | |
typedef BXVector::Index | Index |
Public Member Functions | |
void | doFit (std::array< float, 3 > &correctedOutput, const int nbx) const |
MahiFit () | |
void | phase1Apply (const HBHEChannelInfo &channelData, float &reconstructedEnergy, float &reconstructedTime, bool &useTriple, float &chi2) const |
void | phase1Debug (const HBHEChannelInfo &channelData, MahiDebugInfo &mdi) const |
void | resetPulseShapeTemplate (const HcalPulseShapes::Shape &ps, bool hasTimeInfo, unsigned int nSamples) |
void | setParameters (bool iDynamicPed, double iTS4Thresh, double chiSqSwitch, bool iApplyTimeSlew, HcalTimeSlew::BiasSetting slewFlavor, bool iCalculateArrivalTime, double iMeanTime, double iTimeSigmaHPD, double iTimeSigmaSiPM, const std::vector< int > &iActiveBXs, int iNMaxItersMin, int iNMaxItersNNLS, double iDeltaChiSqThresh, double iNnlsThresh) |
void | setPulseShapeTemplate (const HcalPulseShapes::Shape &ps, bool hasTimeInfo, const HcalTimeSlew *hcalTimeSlewDelay, unsigned int nSamples) |
~MahiFit () | |
Public Attributes | |
const HcalPulseShapes::Shape * | currentPulseShape_ = nullptr |
const HcalTimeSlew * | hcalTimeSlewDelay_ = nullptr |
Private Member Functions | |
float | calculateArrivalTime (unsigned int iBX) const |
float | calculateChiSq () const |
const float | minimize () const |
void | nnls () const |
void | nnlsConstrainParameter (Index minratioidx) const |
void | nnlsUnconstrainParameter (Index idxp) const |
void | onePulseMinimize () const |
void | resetWorkspace () const |
void | solveSubmatrix (PulseMatrix &mat, PulseVector &invec, PulseVector &outvec, unsigned nP) const |
void | updateCov (const SampleMatrix &invCovMat) const |
void | updatePulseShape (const float itQ, FullSampleVector &pulseShape, FullSampleVector &pulseDeriv, FullSampleMatrix &pulseCov) const |
Private Attributes | |
std::vector< int > | activeBXs_ |
bool | applyTimeSlew_ |
int | bxOffsetConf_ |
unsigned int | bxSizeConf_ |
bool | calculateArrivalTime_ |
float | chiSqSwitch_ |
int | cntsetPulseShape_ |
float | deltaChiSqThresh_ |
bool | dynamicPed_ |
float | meanTime_ |
int | nMaxItersMin_ |
int | nMaxItersNNLS_ |
float | nnlsThresh_ |
MahiNnlsWorkspace | nnlsWork_ |
float | norm_ = (1.f / std::sqrt(12)) |
std::unique_ptr< ROOT::Math::Functor > | pfunctor_ |
std::unique_ptr< FitterFuncs::PulseShapeFunctor > | psfPtr_ |
HcalTimeSlew::BiasSetting | slewFlavor_ |
float | timeSigmaHPD_ |
float | timeSigmaSiPM_ |
float | ts4Thresh_ |
float | tsDelay1GeV_ = 0.f |
Static Private Attributes | |
static constexpr int | pedestalBX_ = 100 |
static constexpr float | timeLimit_ = 12.5f |
typedef BXVector::Index MahiFit::Index |
MahiFit::MahiFit | ( | ) |
Definition at line 5 of file MahiFit.cc.
|
private |
Definition at line 319 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, MahiNnlsWorkspace::ampVec, MahiNnlsWorkspace::bxOffset, MahiNnlsWorkspace::bxs, nnlsWork_, MahiNnlsWorkspace::nPulseTot, MahiNnlsWorkspace::pulseDerivMat, MahiNnlsWorkspace::pulseMat, OrderedSet::t, and timeLimit_.
Referenced by doFit().
|
private |
Definition at line 441 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, MahiNnlsWorkspace::ampVec, MahiNnlsWorkspace::covDecomp, nnlsWork_, and MahiNnlsWorkspace::pulseMat.
Referenced by minimize().
void MahiFit::doFit | ( | std::array< float, 3 > & | correctedOutput, |
const int | nbx | ||
) | const |
Definition at line 115 of file MahiFit.cc.
References activeBXs_, MahiNnlsWorkspace::amplitudes, MahiNnlsWorkspace::ampVec, MahiNnlsWorkspace::bxOffset, bxOffsetConf_, MahiNnlsWorkspace::bxs, bxSizeConf_, calculateArrivalTime(), calculateArrivalTime_, dynamicPed_, MahiNnlsWorkspace::maxoffset, minimize(), nnlsWork_, MahiNnlsWorkspace::nPulseTot, hltrates_dqm_sourceclient-live_cfg::offset, pedestalBX_, MahiNnlsWorkspace::pulseCovArray, MahiNnlsWorkspace::pulseDerivMat, MahiNnlsWorkspace::pulseMat, MahiNnlsWorkspace::tsOffset, MahiNnlsWorkspace::tsSize, and updatePulseShape().
Referenced by phase1Apply().
|
private |
Definition at line 206 of file MahiFit.cc.
References funct::abs(), MahiNnlsWorkspace::ampVec, calculateChiSq(), deltaChiSqThresh_, MahiNnlsWorkspace::invcovp, nMaxItersMin_, nnls(), nnlsWork_, MahiNnlsWorkspace::noiseTerms, MahiNnlsWorkspace::nPulseTot, onePulseMinimize(), MahiNnlsWorkspace::pedVal, MahiNnlsWorkspace::tsSize, and updateCov().
Referenced by doFit().
|
private |
Definition at line 339 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, MahiNnlsWorkspace::ampVec, MahiNnlsWorkspace::aTaMat, MahiNnlsWorkspace::aTbVec, MahiNnlsWorkspace::covDecomp, MahiNnlsWorkspace::invcovp, SiStripPI::max, min(), nMaxItersNNLS_, nnlsConstrainParameter(), nnlsThresh_, nnlsUnconstrainParameter(), nnlsWork_, MahiNnlsWorkspace::nP, MahiNnlsWorkspace::nPulseTot, MahiNnlsWorkspace::pulseMat, particleFlowDisplacedVertex_cfi::ratio, solveSubmatrix(), remoteMonitoring_LED_IterMethod_cfg::threshold, MahiNnlsWorkspace::tsSize, and cms::cuda::wmax.
Referenced by minimize().
|
private |
Definition at line 486 of file MahiFit.cc.
References MahiNnlsWorkspace::ampVec, MahiNnlsWorkspace::aTaMat, MahiNnlsWorkspace::aTbVec, MahiNnlsWorkspace::bxs, nnlsWork_, MahiNnlsWorkspace::nP, MahiNnlsWorkspace::pulseMat, and edm::swap().
Referenced by nnls().
|
private |
Definition at line 474 of file MahiFit.cc.
References MahiNnlsWorkspace::ampVec, MahiNnlsWorkspace::aTaMat, MahiNnlsWorkspace::aTbVec, MahiNnlsWorkspace::bxs, nnlsWork_, MahiNnlsWorkspace::nP, MahiNnlsWorkspace::pulseMat, and edm::swap().
Referenced by nnls().
|
private |
Definition at line 431 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, MahiNnlsWorkspace::ampVec, MahiNnlsWorkspace::covDecomp, f, MahiNnlsWorkspace::invcovp, SiStripPI::max, nnlsWork_, and MahiNnlsWorkspace::pulseMat.
Referenced by minimize().
void MahiFit::phase1Apply | ( | const HBHEChannelInfo & | channelData, |
float & | reconstructedEnergy, | ||
float & | reconstructedTime, | ||
bool & | useTriple, | ||
float & | chi2 | ||
) | const |
Definition at line 46 of file MahiFit.cc.
References CustomPhysics_cfi::amplitude, MahiNnlsWorkspace::amplitudes, cms::cuda::assert(), hltPixelTracks_cff::chi2, chiSqSwitch_, doFit(), f, HBHEChannelInfo::fcByPE(), nnlsWork_, MahiNnlsWorkspace::noiseTerms, norm_, HBHEChannelInfo::nSamples(), MahiNnlsWorkspace::pedVal, resetWorkspace(), HBHEChannelInfo::soi(), mathSSE::sqrt(), ts4Thresh_, HBHEChannelInfo::tsDFcPerADC(), HBHEChannelInfo::tsGain(), MahiNnlsWorkspace::tsOffset, HBHEChannelInfo::tsPedestal(), HBHEChannelInfo::tsPedestalWidth(), HBHEChannelInfo::tsRawCharge(), and MahiNnlsWorkspace::tsSize.
Referenced by phase1Debug(), and SimpleHBHEPhase1Algo::reconstruct().
void MahiFit::phase1Debug | ( | const HBHEChannelInfo & | channelData, |
MahiDebugInfo & | mdi | ||
) | const |
Definition at line 498 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, MahiNnlsWorkspace::ampVec, MahiDebugInfo::arrivalTime, MahiNnlsWorkspace::bxs, ALCARECOTkAlJpsiMuMu_cff::charge, hltPixelTracks_cff::chi2, MahiDebugInfo::chiSq, MahiDebugInfo::count, MahiNnlsWorkspace::dt, HBHEChannelInfo::fcByPE(), HBHEChannelInfo::hasTimeInfo(), MahiDebugInfo::inGain, MahiDebugInfo::inNoiseADC, MahiDebugInfo::inNoisePhoto, MahiDebugInfo::inPedAvg, MahiDebugInfo::inPedestal, MahiDebugInfo::inputTDC, MahiDebugInfo::inputTS, MahiDebugInfo::inTimeConst, MahiDebugInfo::itPulse, MahiDebugInfo::mahiEnergy, nnlsWork_, MahiNnlsWorkspace::noiseTerms, norm_, MahiNnlsWorkspace::nPulseTot, MahiDebugInfo::nSamples, HBHEChannelInfo::nSamples(), MahiDebugInfo::ootEnergy, MahiDebugInfo::ootPulse, MahiDebugInfo::pedEnergy, pedestalBX_, phase1Apply(), MahiNnlsWorkspace::pulseMat, MahiDebugInfo::soi, HBHEChannelInfo::soi(), mathSSE::sqrt(), MahiDebugInfo::totalUCNoise, HBHEChannelInfo::tsDFcPerADC(), HBHEChannelInfo::tsGain(), HBHEChannelInfo::tsPedestal(), HBHEChannelInfo::tsPedestalWidth(), HBHEChannelInfo::tsRawCharge(), HBHEChannelInfo::tsRiseTime(), MahiNnlsWorkspace::tsSize, and MahiDebugInfo::use3.
void MahiFit::resetPulseShapeTemplate | ( | const HcalPulseShapes::Shape & | ps, |
bool | hasTimeInfo, | ||
unsigned int | nSamples | ||
) |
Definition at line 459 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, cntsetPulseShape_, MahiNnlsWorkspace::dt, HcalConst::maxSamples, nnlsWork_, MahiNnlsWorkspace::noiseTerms, PresampleTask_cfi::nSamples, psfPtr_, timeSigmaHPD_, timeSigmaSiPM_, and MahiNnlsWorkspace::tsSize.
Referenced by setPulseShapeTemplate().
|
private |
Definition at line 613 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, MahiNnlsWorkspace::bxOffset, MahiNnlsWorkspace::maxoffset, nnlsWork_, MahiNnlsWorkspace::noiseTerms, MahiNnlsWorkspace::nP, MahiNnlsWorkspace::nPulseTot, and MahiNnlsWorkspace::tsOffset.
Referenced by phase1Apply().
void MahiFit::setParameters | ( | bool | iDynamicPed, |
double | iTS4Thresh, | ||
double | chiSqSwitch, | ||
bool | iApplyTimeSlew, | ||
HcalTimeSlew::BiasSetting | slewFlavor, | ||
bool | iCalculateArrivalTime, | ||
double | iMeanTime, | ||
double | iTimeSigmaHPD, | ||
double | iTimeSigmaSiPM, | ||
const std::vector< int > & | iActiveBXs, | ||
int | iNMaxItersMin, | ||
int | iNMaxItersNNLS, | ||
double | iDeltaChiSqThresh, | ||
double | iNnlsThresh | ||
) |
Definition at line 7 of file MahiFit.cc.
References activeBXs_, applyTimeSlew_, bxOffsetConf_, bxSizeConf_, calculateArrivalTime_, HLT_2018_cff::chiSqSwitch, chiSqSwitch_, deltaChiSqThresh_, dynamicPed_, meanTime_, nMaxItersMin_, nMaxItersNNLS_, nnlsThresh_, slewFlavor_, timeSigmaHPD_, timeSigmaSiPM_, and ts4Thresh_.
void MahiFit::setPulseShapeTemplate | ( | const HcalPulseShapes::Shape & | ps, |
bool | hasTimeInfo, | ||
const HcalTimeSlew * | hcalTimeSlewDelay, | ||
unsigned int | nSamples | ||
) |
Definition at line 446 of file MahiFit.cc.
References currentPulseShape_, HcalTimeSlew::delay(), hcalTimeSlewDelay_, PresampleTask_cfi::nSamples, resetPulseShapeTemplate(), slewFlavor_, and tsDelay1GeV_.
|
private |
Definition at line 564 of file MahiFit.cc.
References Exception, and groupFilesInBlocks::temp.
Referenced by nnls().
|
private |
Definition at line 298 of file MahiFit.cc.
References MahiNnlsWorkspace::ampVec, MahiNnlsWorkspace::bxOffset, MahiNnlsWorkspace::bxs, MahiNnlsWorkspace::covDecomp, nnlsWork_, MahiNnlsWorkspace::nPulseTot, hltrates_dqm_sourceclient-live_cfg::offset, pedestalBX_, and MahiNnlsWorkspace::pulseCovArray.
Referenced by minimize().
|
private |
Definition at line 242 of file MahiFit.cc.
References applyTimeSlew_, calculateArrivalTime_, HcalTimeSlew::delay(), dumpMFGeometry_cfg::delta, MahiNnlsWorkspace::dt, f, hcalTimeSlewDelay_, MahiNnlsWorkspace::maxoffset, meanTime_, nnlsWork_, psfPtr_, slewFlavor_, FrontierCondition_GT_autoExpress_cfi::t0, createJobs::tmp, tsDelay1GeV_, MahiNnlsWorkspace::tsOffset, MahiNnlsWorkspace::tsSize, and geometryCSVtoXML::xx.
Referenced by doFit().
|
private |
Definition at line 172 of file MahiFit.h.
Referenced by doFit(), and setParameters().
|
private |
Definition at line 162 of file MahiFit.h.
Referenced by setParameters(), and updatePulseShape().
|
private |
Definition at line 181 of file MahiFit.h.
Referenced by doFit(), and setParameters().
|
private |
Definition at line 180 of file MahiFit.h.
Referenced by doFit(), and setParameters().
|
private |
Definition at line 167 of file MahiFit.h.
Referenced by doFit(), setParameters(), and updatePulseShape().
|
private |
Definition at line 160 of file MahiFit.h.
Referenced by phase1Apply(), and setParameters().
|
private |
Definition at line 184 of file MahiFit.h.
Referenced by resetPulseShapeTemplate().
const HcalPulseShapes::Shape* MahiFit::currentPulseShape_ = nullptr |
Definition at line 126 of file MahiFit.h.
Referenced by setPulseShapeTemplate().
|
private |
Definition at line 177 of file MahiFit.h.
Referenced by minimize(), and setParameters().
|
private |
Definition at line 158 of file MahiFit.h.
Referenced by doFit(), and setParameters().
const HcalTimeSlew* MahiFit::hcalTimeSlewDelay_ = nullptr |
Definition at line 127 of file MahiFit.h.
Referenced by setPulseShapeTemplate(), and updatePulseShape().
|
private |
Definition at line 168 of file MahiFit.h.
Referenced by setParameters(), and updatePulseShape().
|
private |
Definition at line 174 of file MahiFit.h.
Referenced by minimize(), and setParameters().
|
private |
Definition at line 175 of file MahiFit.h.
Referenced by nnls(), and setParameters().
|
private |
Definition at line 178 of file MahiFit.h.
Referenced by nnls(), and setParameters().
|
mutableprivate |
Definition at line 148 of file MahiFit.h.
Referenced by calculateArrivalTime(), calculateChiSq(), doFit(), minimize(), nnls(), nnlsConstrainParameter(), nnlsUnconstrainParameter(), onePulseMinimize(), phase1Apply(), phase1Debug(), resetPulseShapeTemplate(), resetWorkspace(), updateCov(), and updatePulseShape().
|
private |
Definition at line 165 of file MahiFit.h.
Referenced by phase1Apply(), and phase1Debug().
|
staticconstexprprivate |
Definition at line 151 of file MahiFit.h.
Referenced by doFit(), phase1Debug(), and updateCov().
|
private |
|
private |
Definition at line 185 of file MahiFit.h.
Referenced by resetPulseShapeTemplate(), and updatePulseShape().
|
private |
Definition at line 163 of file MahiFit.h.
Referenced by setParameters(), setPulseShapeTemplate(), and updatePulseShape().
|
staticconstexprprivate |
Definition at line 155 of file MahiFit.h.
Referenced by calculateArrivalTime().
|
private |
Definition at line 169 of file MahiFit.h.
Referenced by resetPulseShapeTemplate(), and setParameters().
|
private |
Definition at line 170 of file MahiFit.h.
Referenced by resetPulseShapeTemplate(), and setParameters().
|
private |
Definition at line 159 of file MahiFit.h.
Referenced by phase1Apply(), and setParameters().
|
private |
Definition at line 164 of file MahiFit.h.
Referenced by setPulseShapeTemplate(), and updatePulseShape().