8#ifndef DITAUMASSTOOLS_MISSINGMASSPROB_H
9#define DITAUMASSTOOLS_MISSINGMASSPROB_H
16#include <Math/Vector4D.h>
24 using ROOT::Math::PtEtaPhiMVector;
35 double apply(
MissingMassInput& preparedInput,
const int & tau_type1,
const int & tau_type2,
const PtEtaPhiMVector & tauvec1,
const PtEtaPhiMVector & tauvec2,
const PtEtaPhiMVector nuvec1,
const PtEtaPhiMVector & nuvec2,
bool constant=
false,
bool oneTau=
false,
bool twoTau=
false);
37 void setParamAngle(
const PtEtaPhiMVector & tauvec,
int tau,
int tautype);
61 double MetProbability(
MissingMassInput& preparedInput,
const double & met1,
const double & met2,
const double & MetSigma1,
const double & MetSigma2);
62 double dTheta3Dparam(
const int & parInd,
const int & tau_type,
const double & P_tau,
const double *par);
69 const double & trueMetGuess,
const double & mht_offset);
71 const double & trueMetGuess,
const double & mht_offset);
78 const int & type2,
const PtEtaPhiMVector & vis2,
const PtEtaPhiMVector & nu2);
80 const int & type2,
const PtEtaPhiMVector & vis2,
const PtEtaPhiMVector & nu2,
const double & detmet);
83 static double MetProbabilityWrapper(
MissingMassProb* prob,
MissingMassInput& preparedInput,
const int & tau_type1,
const int & tau_type2,
const PtEtaPhiMVector & tauvec1,
const PtEtaPhiMVector & tauvec2,
const PtEtaPhiMVector nuvec1,
const PtEtaPhiMVector & nuvec2);
86 static double TauProbabilityWrapper(
MissingMassProb* prob,
MissingMassInput& preparedInput,
const int & tau_type1,
const int & tau_type2,
const PtEtaPhiMVector & tauvec1,
const PtEtaPhiMVector & tauvec2,
const PtEtaPhiMVector nuvec1,
const PtEtaPhiMVector & nuvec2 );
87 static double MnuProbabilityWrapper(
MissingMassProb* prob,
MissingMassInput& preparedInput,
const int & tau_type1,
const int & tau_type2,
const PtEtaPhiMVector & tauvec1,
const PtEtaPhiMVector & tauvec2,
const PtEtaPhiMVector nuvec1,
const PtEtaPhiMVector & nuvec2 );
93 std::list<std::function<double(
MissingMassInput& preparedInput,
const int & tau_type1,
const int & tau_type2,
const PtEtaPhiMVector & tauvec1,
const PtEtaPhiMVector & tauvec2,
const PtEtaPhiMVector nuvec1,
const PtEtaPhiMVector & nuvec2)>>
m_probListConstant;
94 std::list<std::function<double(
MissingMassInput& preparedInput,
const int & tau_type1,
const int & tau_type2,
const PtEtaPhiMVector & tauvec1,
const PtEtaPhiMVector & tauvec2,
const PtEtaPhiMVector nuvec1,
const PtEtaPhiMVector & nuvec2)>>
m_probListOneTau;
95 std::list<std::function<double(
MissingMassInput& preparedInput,
const int & tau_type1,
const int & tau_type2,
const PtEtaPhiMVector & tauvec1,
const PtEtaPhiMVector & tauvec2,
const PtEtaPhiMVector nuvec1,
const PtEtaPhiMVector & nuvec2)>>
m_probListTwoTau;
101 TF1 *
m_formulaAngle1 =
new TF1(
"formulaAngle1",
"[0]*exp(-[2]*(log((x+[3])/[1]))**2)");
102 TF1 *
m_formulaAngle2 =
new TF1(
"formulaAngle2",
"[0]*exp(-[2]*(log((x+[3])/[1]))**2)");