1 #ifndef RecoLocalCalo_HcalRecAlgos_MahiFit_HH 2 #define RecoLocalCalo_HcalRecAlgos_MahiFit_HH 106 bool iCalculateArrivalTime,
108 double iThEnergeticPulses,
110 double iTimeSigmaHPD,
111 double iTimeSigmaSiPM,
112 const std::vector<int>& iActiveBXs,
115 double iDeltaChiSqThresh,
119 float& reconstructedEnergy,
120 float& soiPlusOneEnergy,
121 float& reconstructedTime,
127 void doFit(std::array<float, 4>& correctedOutput,
const int nbx)
const;
143 typedef std::pair<int, std::shared_ptr<FitterFuncs::PulseShapeFunctor> >
ShapeWithId;
150 float ccTime(
const float itQ)
const;
Eigen::Matrix< double, SampleVectorSize, Eigen::Dynamic, 0, SampleVectorSize, PulseVectorSize > SamplePulseMatrix
void nnlsUnconstrainParameter(Index idxp) const
float thEnergeticPulsesFC_
float ootPulse[7][MaxSVSize]
SamplePulseMatrix invcovp
HcalTimeSlew::BiasSetting slewFlavor_
void resetWorkspace() const
Eigen::Matrix< double, FullSampleVectorSize, FullSampleVectorSize > FullSampleMatrix
Eigen::LLT< SampleMatrix > SampleDecompLLT
MahiNnlsWorkspace nnlsWork_
void nnlsConstrainParameter(Index minratioidx) const
Eigen::Matrix< double, FullSampleVectorSize, 1 > FullSampleVector
static constexpr int pedestalBX_
std::array< SampleMatrix, MaxPVSize > pulseCovArray
SampleDecompLLT covDecomp
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, PulseVectorSize, 1 > PulseVector
float totalUCNoise[MaxSVSize]
float inNoiseADC[MaxSVSize]
void onePulseMinimize() const
SamplePulseMatrix pulseDerivMat
void phase1Apply(const HBHEChannelInfo &channelData, float &reconstructedEnergy, float &soiPlusOneEnergy, float &reconstructedTime, bool &useTriple, float &chi2) const
float calculateChiSq() const
bool calculateArrivalTime_
float calculateArrivalTime(const unsigned int iBX) const
float inPedestal[MaxSVSize]
void solveSubmatrix(PulseMatrix &mat, PulseVector &invec, PulseVector &outvec, unsigned nP) const
const float minimize() const
void phase1Debug(const HBHEChannelInfo &channelData, MahiDebugInfo &mdi) const
std::vector< int > activeBXs_
static constexpr float timeLimit_
float ccTime(const float itQ) const
void setPulseShapeTemplate(int pulseShapeId, const HcalPulseShapes &ps, bool hasTimeInfo, const HcalTimeSlew *hcalTimeSlewDelay, unsigned int nSamples, const float gain)
void resetPulseShapeTemplate(int pulseShapeId, const HcalPulseShapes &ps, unsigned int nSamples)
Eigen::Matrix< double, SampleVectorSize, 1 > SampleVector
void updateCov(const SampleMatrix &invCovMat) const
SamplePulseMatrix pulseMat
void doFit(std::array< float, 4 > &correctedOutput, const int nbx) const
Eigen::Matrix< double, SampleVectorSize, SampleVectorSize > SampleMatrix
float inNoisePhoto[MaxSVSize]
const HcalTimeSlew * hcalTimeSlewDelay_
std::pair< int, std::shared_ptr< FitterFuncs::PulseShapeFunctor > > ShapeWithId
float inNoiseDC[MaxSVSize]
void updatePulseShape(const float itQ, FullSampleVector &pulseShape, FullSampleVector &pulseDeriv, FullSampleMatrix &pulseCov) const
void setParameters(bool iDynamicPed, double iTS4Thresh, double chiSqSwitch, bool iApplyTimeSlew, HcalTimeSlew::BiasSetting slewFlavor, bool iCalculateArrivalTime, int iTimeAlgo, double iThEnergeticPulses, double iMeanTime, double iTimeSigmaHPD, double iTimeSigmaSiPM, const std::vector< int > &iActiveBXs, int iNMaxItersMin, int iNMaxItersNNLS, double iDeltaChiSqThresh, double iNnlsThresh)
FitterFuncs::PulseShapeFunctor * psfPtr_
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, PulseVectorSize, PulseVectorSize > PulseMatrix
std::vector< ShapeWithId > knownPulseShapes_