#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 | 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 (int pulseShapeId, const HcalPulseShapes &ps, bool hasTimeInfo, const HcalTimeSlew *hcalTimeSlewDelay, unsigned int nSamples) |
~MahiFit () | |
Public Attributes | |
const HcalTimeSlew * | hcalTimeSlewDelay_ = nullptr |
Private Types | |
typedef std::pair< int, std::shared_ptr< FitterFuncs::PulseShapeFunctor > > | ShapeWithId |
Private Member Functions | |
float | calculateArrivalTime (const 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 | resetPulseShapeTemplate (int pulseShapeId, const HcalPulseShapes &ps, unsigned int nSamples) |
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_ = 0 |
int | currentPulseShapeId_ = INT_MIN |
float | deltaChiSqThresh_ |
bool | dynamicPed_ |
std::vector< ShapeWithId > | knownPulseShapes_ |
float | meanTime_ |
int | nMaxItersMin_ |
int | nMaxItersNNLS_ |
float | nnlsThresh_ |
MahiNnlsWorkspace | nnlsWork_ |
float | norm_ = (1.f / std::sqrt(12)) |
FitterFuncs::PulseShapeFunctor * | psfPtr_ = nullptr |
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 |
|
private |
MahiFit::MahiFit | ( | ) |
Definition at line 5 of file MahiFit.cc.
|
private |
Definition at line 338 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, MahiNnlsWorkspace::ampVec, MahiNnlsWorkspace::bxOffset, MahiNnlsWorkspace::bxs, nnlsWork_, MahiNnlsWorkspace::nPulseTot, MahiNnlsWorkspace::pulseDerivMat, MahiNnlsWorkspace::pulseMat, submitPVValidationJobs::t, and timeLimit_.
Referenced by doFit().
|
private |
Definition at line 462 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 122 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 213 of file MahiFit.cc.
References funct::abs(), MahiNnlsWorkspace::ampVec, calculateChiSq(), deltaChiSqThresh_, mps_fire::i, MahiNnlsWorkspace::invcovp, nMaxItersMin_, nnls(), nnlsWork_, MahiNnlsWorkspace::noisecorr, MahiNnlsWorkspace::noiseTerms, MahiNnlsWorkspace::nPulseTot, onePulseMinimize(), MahiNnlsWorkspace::pedVal, MahiNnlsWorkspace::pedVals, MahiNnlsWorkspace::tsSize, and updateCov().
Referenced by doFit().
|
private |
Definition at line 358 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 530 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 518 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 452 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::noisecorr, HBHEChannelInfo::noisecorr(), MahiNnlsWorkspace::noiseTerms, norm_, HBHEChannelInfo::nSamples(), MahiNnlsWorkspace::pedVal, MahiNnlsWorkspace::pedVals, resetWorkspace(), HBHEChannelInfo::soi(), 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 542 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.
|
private |
Definition at line 493 of file MahiFit.cc.
References cntsetPulseShape_, currentPulseShapeId_, HcalPulseShapes::getShape(), knownPulseShapes_, hcal::constants::maxSamples, AlCaHLTBitMon_ParallelJobs::p, and psfPtr_.
Referenced by setPulseShapeTemplate().
|
private |
Definition at line 657 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, MahiNnlsWorkspace::bxOffset, MahiNnlsWorkspace::maxoffset, nnlsWork_, MahiNnlsWorkspace::noiseTerms, MahiNnlsWorkspace::nP, MahiNnlsWorkspace::nPulseTot, MahiNnlsWorkspace::pedVals, 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_FULL_cff::chiSqSwitch, chiSqSwitch_, deltaChiSqThresh_, dynamicPed_, meanTime_, nMaxItersMin_, nMaxItersNNLS_, nnlsThresh_, slewFlavor_, timeSigmaHPD_, timeSigmaSiPM_, and ts4Thresh_.
void MahiFit::setPulseShapeTemplate | ( | int | pulseShapeId, |
const HcalPulseShapes & | ps, | ||
bool | hasTimeInfo, | ||
const HcalTimeSlew * | hcalTimeSlewDelay, | ||
unsigned int | nSamples | ||
) |
Definition at line 467 of file MahiFit.cc.
References MahiNnlsWorkspace::amplitudes, cms::cuda::assert(), currentPulseShapeId_, HcalTimeSlew::delay(), MahiNnlsWorkspace::dt, hcalTimeSlewDelay_, nnlsWork_, MahiNnlsWorkspace::noiseTerms, PresampleTask_cfi::nSamples, MahiNnlsWorkspace::pedVals, resetPulseShapeTemplate(), slewFlavor_, timeSigmaHPD_, timeSigmaSiPM_, tsDelay1GeV_, and MahiNnlsWorkspace::tsSize.
|
private |
Definition at line 608 of file MahiFit.cc.
References Exception, and groupFilesInBlocks::temp.
Referenced by nnls().
|
private |
Definition at line 318 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 258 of file MahiFit.cc.
References applyTimeSlew_, calculateArrivalTime_, HcalTimeSlew::delay(), dumpMFGeometry_cfg::delta, MahiNnlsWorkspace::dt, f, FitterFuncs::PulseShapeFunctor::getPulseShape(), hcalTimeSlewDelay_, MahiNnlsWorkspace::maxoffset, meanTime_, nnlsWork_, psfPtr_, FitterFuncs::PulseShapeFunctor::singlePulseShapeFuncMahi(), slewFlavor_, FrontierCondition_GT_autoExpress_cfi::t0, createJobs::tmp, tsDelay1GeV_, MahiNnlsWorkspace::tsOffset, MahiNnlsWorkspace::tsSize, and geometryCSVtoXML::xx.
Referenced by doFit().
|
private |
Definition at line 181 of file MahiFit.h.
Referenced by doFit(), and setParameters().
|
private |
Definition at line 171 of file MahiFit.h.
Referenced by setParameters(), and updatePulseShape().
|
private |
Definition at line 190 of file MahiFit.h.
Referenced by doFit(), and setParameters().
|
private |
Definition at line 189 of file MahiFit.h.
Referenced by doFit(), and setParameters().
|
private |
Definition at line 176 of file MahiFit.h.
Referenced by doFit(), setParameters(), and updatePulseShape().
|
private |
Definition at line 169 of file MahiFit.h.
Referenced by phase1Apply(), and setParameters().
|
private |
Definition at line 194 of file MahiFit.h.
Referenced by resetPulseShapeTemplate().
|
private |
Definition at line 193 of file MahiFit.h.
Referenced by resetPulseShapeTemplate(), and setPulseShapeTemplate().
|
private |
Definition at line 186 of file MahiFit.h.
Referenced by minimize(), and setParameters().
|
private |
Definition at line 167 of file MahiFit.h.
Referenced by doFit(), and setParameters().
const HcalTimeSlew* MahiFit::hcalTimeSlewDelay_ = nullptr |
Definition at line 133 of file MahiFit.h.
Referenced by setPulseShapeTemplate(), and updatePulseShape().
|
private |
Definition at line 196 of file MahiFit.h.
Referenced by resetPulseShapeTemplate().
|
private |
Definition at line 177 of file MahiFit.h.
Referenced by setParameters(), and updatePulseShape().
|
private |
Definition at line 183 of file MahiFit.h.
Referenced by minimize(), and setParameters().
|
private |
Definition at line 184 of file MahiFit.h.
Referenced by nnls(), and setParameters().
|
private |
Definition at line 187 of file MahiFit.h.
Referenced by nnls(), and setParameters().
|
mutableprivate |
Definition at line 157 of file MahiFit.h.
Referenced by calculateArrivalTime(), calculateChiSq(), doFit(), minimize(), nnls(), nnlsConstrainParameter(), nnlsUnconstrainParameter(), onePulseMinimize(), phase1Apply(), phase1Debug(), resetWorkspace(), setPulseShapeTemplate(), updateCov(), and updatePulseShape().
|
private |
Definition at line 174 of file MahiFit.h.
Referenced by phase1Apply(), and phase1Debug().
|
staticconstexprprivate |
Definition at line 160 of file MahiFit.h.
Referenced by doFit(), phase1Debug(), and updateCov().
|
private |
Definition at line 195 of file MahiFit.h.
Referenced by resetPulseShapeTemplate(), and updatePulseShape().
|
private |
Definition at line 172 of file MahiFit.h.
Referenced by setParameters(), setPulseShapeTemplate(), and updatePulseShape().
|
staticconstexprprivate |
Definition at line 164 of file MahiFit.h.
Referenced by calculateArrivalTime().
|
private |
Definition at line 178 of file MahiFit.h.
Referenced by setParameters(), and setPulseShapeTemplate().
|
private |
Definition at line 179 of file MahiFit.h.
Referenced by setParameters(), and setPulseShapeTemplate().
|
private |
Definition at line 168 of file MahiFit.h.
Referenced by phase1Apply(), and setParameters().
|
private |
Definition at line 173 of file MahiFit.h.
Referenced by setPulseShapeTemplate(), and updatePulseShape().