12 #ifndef TRIGEFMISSINGET_PUFITUTILS_H 
   13 #define TRIGEFMISSINGET_PUFITUTILS_H 
   15 #include <Eigen/Dense> 
   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);
 
  269 #endif //> !TRIGEFMISSINGET_PUFITUTILS_H