12#ifndef TRIGEFMISSINGET_PUFITUTILS_H
13#define TRIGEFMISSINGET_PUFITUTILS_H
54 const std::vector<double> &sorted,
80 template <std::
size_t N>
104 template <std::
size_t N>
112 template <
typename Gr
id>
133 Eigen::VectorXd
pufit(
134 const Eigen::Vector2d &pileupSum,
135 const Eigen::Matrix2d &pileupCovariance,
136 const Eigen::VectorXd &towerExpectations,
137 const Eigen::VectorXd &towerVariances,
138 const Eigen::VectorXd &correctionDirections,
139 double constraintImportance = 1);
159 Eigen::VectorXd
pufit(
160 const Eigen::Vector2d &pileupSum,
161 const Eigen::Matrix2d &pileupCovariance,
162 const Eigen::VectorXd &towerExpectations,
163 const Eigen::VectorXd &towerVariances,
164 const Eigen::Matrix<double, 2, Eigen::Dynamic> &cosSin,
165 double constraintImportance = 1);
189 std::vector<SignedKinematics>
pufit(
190 const Eigen::Vector2d &pileupSum,
191 const Eigen::Matrix2d &pileupCovariance,
192 const std::vector<double> &towerExpectations,
193 const std::vector<double> &towerVariances,
194 const std::vector<SignedKinematics> &toCorrect,
195 double constraintImportance = 1);
208 Eigen::VectorXd
pufit(
209 const Eigen::Vector2d &pileupSum,
210 const Eigen::Matrix2d &pileupCovariance,
212 double towerVariance,
213 const Eigen::VectorXd &correctionDirections,
214 double constraintImportance = 1);
230 Eigen::VectorXd
pufit(
231 const Eigen::Vector2d &pileupSum,
232 const Eigen::Matrix2d &pileupCovariance,
234 double towerVariance,
235 const Eigen::Matrix<double, 2, Eigen::Dynamic> &cosSin,
236 double constraintImportance = 1);
256 std::vector<SignedKinematics>
pufit(
257 const Eigen::Vector2d &pileupSum,
258 const Eigen::Matrix2d &pileupCovariance,
260 double towerVariance,
261 const std::vector<SignedKinematics> &toCorrect,
262 double constraintImportance = 1);
Bins energy deposits into a grid.
Multiple grids combined into one.
Class to describe the kinematics of an object that can have negative energies.
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
void trimmedMeanAndVariance(const std::vector< double > &sorted, double trimFraction, double &mean, double &variance)
Calculate the trimmed mean and variance for a vector of tower sumEts.
Eigen::VectorXd pufit(const Eigen::Vector2d &pileupSum, const Eigen::Matrix2d &pileupCovariance, const Eigen::VectorXd &towerExpectations, const Eigen::VectorXd &towerVariances, const Eigen::VectorXd &correctionDirections, double constraintImportance)
Perform the pile-up fit.
void unmaskedMeanAndVariance(const PufitGrid &grid, double &mean, double &variance)
Calculate the mean and variance of unmasked towers.
GridDisplacement selectGrid(const PufitGridSet &grids)
Select the grid with the highest masked sumEt.
GridDisplacement
Enum to describe the positioning of the grid.
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
Helper struct to contain a full set of grids.
Helper struct to forward the SignedKinematics operators nicely.
Eigen::Matrix2d covariance
The covariance matrix.
CovarianceSum & add(const SignedKinematics &kin, double sigma)
Add a new contribution to the sum.
Eigen::Vector2d sum
The sum.
CovarianceSum()
Default constructor - zero initialize everything.