28 return prob->MetProbability(preparedInput, 1.,1.,1.,1.);
38 return prob->mEtAndTauProbability(preparedInput);
44 TLorentzVector totalTau1;
47 const double tau1_tmpp = totalTau1.P();
48 const double angle1 =
Angle(nuvec1,tauvec1);
49 Prob*=
prob->dTheta3d_probabilityFast(preparedInput, tau_type1, angle1, tau1_tmpp);
52 TLorentzVector totalTau2;
55 const double tau2_tmpp = totalTau2.P();
56 const double angle2 =
Angle(nuvec2,tauvec2);
57 Prob*=
prob->dTheta3d_probabilityFast(preparedInput, tau_type2, angle2, tau2_tmpp);
64 return prob->TauProbability(preparedInput, tau_type1, tauvec1, nuvec1, tau_type2, tauvec2, nuvec2, preparedInput.
m_MetVec.Mod());
66 return prob->TauProbability(preparedInput, tau_type1, tauvec1, nuvec1, tau_type2, tauvec2, nuvec2);
73 if(
prob->GetUseMnuProbability()==1){
75 else if(tau_type1==8 && (tau_type2>=0 && tau_type2<=5))
return prob->MnuProbability(preparedInput, nuvec1.M());
76 else if((tau_type1>=0 && tau_type1<=5) && tau_type2==8)
return prob->MnuProbability(preparedInput, nuvec2.M());
78 Warning(
"DiTauMassTools",
"something went really wrong in MNuProb...");
90 TLorentzVector totalTau1;
93 const double angle1 =
Angle(nuvec1,tauvec1);
94 double prob_tmp = 1
e-10;
95 if (angle1!=0.) prob_tmp=
prob->GetFormulaAngle1()->Eval(angle1);
96 if (prob_tmp<=0.) prob_tmp=1
e-10;
100 TLorentzVector totalTau2;
103 const double angle2 =
Angle(nuvec2,tauvec2);
104 double prob_tmp = 1
e-10;
105 if (angle2!=0.) prob_tmp=
prob->GetFormulaAngle2()->Eval(angle2);
106 if (prob_tmp<=0.) prob_tmp=1
e-10;
110 if (std::isnan(Prob)) Prob = 0.;
119 double R1 = nuvec1.P()/tauvec1.P();
120 double R2 = nuvec2.P()/tauvec2.P();
121 Prob*=
prob->GetFormulaRatio1()->Eval(R1);
122 Prob*=
prob->GetFormulaRatio2()->Eval(R2);
124 if (std::isnan(Prob)) Prob = 0.;
132 if(
prob->GetUseMnuProbability()==1){
134 else if(tau_type1==8 && (tau_type2>=0 && tau_type2<=5)) Prob*=
prob->GetFormulaNuMass()->Eval(nuvec1.M());
135 else if((tau_type1>=0 && tau_type1<=5) && tau_type2==8) Prob*=
prob->GetFormulaNuMass()->Eval(nuvec2.M());
137 Warning(
"DiTauMassTools",
"something went really wrong in MNuProb...");
141 if (std::isnan(Prob)) Prob = 0.;
154 double Pt_tau = tauvec.Pt();
156 if (tautype > 4 && tautype < 8)
type = 4;
159 for(
int i=0;
i<=3;
i++){
170 for(
int i=0;
i<=3;
i++){
184 if(tautype > 4 && tautype < 8)
type = 4;
224 m_probListConstant.push_back( std::bind(&
mEtAndTauProbabilityWrapper,
this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6, std::placeholders::_7) );
225 m_probListOneTau.push_back( std::bind(&
dTheta3d_probabilityNewWrapper,
this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6, std::placeholders::_7) );
226 m_probListTwoTau.push_back( std::bind(&
TauProbabilityNewWrapper,
this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6, std::placeholders::_7) );
227 m_probListTwoTau.push_back( std::bind(&
MnuProbabilityNewWrapper,
this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6, std::placeholders::_7) );
233 m_probListConstant.push_back( std::bind(&
mEtAndTauProbabilityWrapper,
this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6, std::placeholders::_7) );
234 m_probListOneTau.push_back( std::bind(&
dTheta3d_probabilityFastWrapper,
this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6, std::placeholders::_7) );
235 m_probListTwoTau.push_back( std::bind(&
TauProbabilityWrapper,
this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6, std::placeholders::_7) );
236 m_probListTwoTau.push_back( std::bind(&
MnuProbabilityWrapper,
this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6, std::placeholders::_7) );
532 double MissingMassProb::apply(
MissingMassInput& preparedInput,
const int & tau_type1,
const int & tau_type2,
const TLorentzVector & tauvec1,
const TLorentzVector & tauvec2,
const TLorentzVector nuvec1,
const TLorentzVector & nuvec2,
bool constant,
bool oneTau,
bool twoTau) {
536 prob*=
f(preparedInput, tau_type1, tau_type2, tauvec1, tauvec2, nuvec1, nuvec2);
538 }
else if (oneTau ==
true) {
540 prob*=
f(preparedInput, tau_type1, tau_type2, tauvec1, tauvec2, nuvec1, nuvec2);
542 }
else if (twoTau ==
true) {
544 prob*=
f(preparedInput, tau_type1, tau_type2, tauvec1, tauvec2, nuvec1, nuvec2);
555 if(MetSigma1>1.0 && MetSigma2>1.0)
558 metprob=
exp(-0.5*(met1*met1/(MetSigma1*MetSigma1)+met2*met2/(MetSigma2*MetSigma2)))/(MetSigma1*MetSigma2*2*TMath::Pi());
562 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"MissingMassCalculator::MetProbability: either MetSigma1 or MetSigma2 are <1 GeV--- too low, returning prob=1");
617 const double mtau=1.777;
618 const double R1=nu1.E()/vis1.E();
622 double E1=0.5*(mtau*mtau+
m1*
m1-
m2*
m2)/mtau;
624 if(E1<=m1 || E1>=mtau)
626 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::TauProbability: bad E1, returning 0 ");
629 if(E2<=m2 || E2>=mtau)
631 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::TauProbability: bad E2, returning 0 ");
634 preparedInput.
m_tlv_tmp.SetPxPyPzE(0.,0.,0.,0.);
639 double V=
p/sqrt(
p*
p+mtau*mtau);
641 if(type1==8) p0=sqrt(E2*E2-
m2*
m2);
643 prob1=0.5*mtau/(p0*V*
pow(R1+1.0,2));
650 const int & type2,
const TLorentzVector & vis2,
const TLorentzVector & nu2)
656 const double mtau=1.777;
657 const double R1=nu1.E()/vis1.E();
658 const double R2=nu2.E()/vis2.E();
662 double E1=0.5*(mtau*mtau+
m1*
m1-
m2*
m2)/mtau;
664 if(E1<=m1 || E1>=mtau)
666 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::TauProbability: bad E1, returning 0 ");
669 if(E2<=m2 || E2>=mtau)
671 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::TauProbability: bad E2, returning 0 ");
674 preparedInput.
m_tlv_tmp.SetPxPyPzE(0.,0.,0.,0.);
679 double V=
p/sqrt(
p*
p+mtau*mtau);
681 if(type1==8) p0=sqrt(E2*E2-
m2*
m2);
683 prob1=0.5*mtau/(p0*V*
pow(R1+1.0,2));
691 E1=0.5*(mtau*mtau+
m1*
m1-
m2*
m2)/mtau;
693 if(E1<=m1 || E1>=mtau)
695 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::TauProbability: bad E1, returning 0 ");
698 if(E2<=m2 || E2>=mtau)
700 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::TauProbability: bad E2, returning 0 ");
703 preparedInput.
m_tlv_tmp.SetPxPyPzE(0.,0.,0.,0.);
710 V=
p/sqrt(
p*
p+mtau*mtau);
711 if(type2==8) p0=sqrt(E2*E2-
m2*
m2);
713 prob2=0.5*mtau/(p0*V*
pow(R2+1.0,2));
723 const int & type2,
const TLorentzVector & vis2,
const TLorentzVector & nu2,
const double & detmet) {
732 const double R1=nu1.P()/vis1.P();
733 const double R2=nu2.P()/vis2.P();
734 const double lep_p1[4]={0.417,0.64,0.52,0.678};
735 const double lep_p2[4]={0.23,0.17,0.315,0.319};
736 const double lep_p3[4]={0.18,0.33,0.41,0.299};
737 const double lep_p4[4]={0.033,0.109,0.129,0.096};
738 const double lep_p5[4]={0.145,0.107,0.259,0.304};
741 const double n_1pr[4]={-0.15,-0.13,-0.25,-0.114};
742 const double s_1pr[4]={0.40,0.54,0.62,0.57};
743 const double n_3pr[4]={-1.08,-1.57,-0.46,-0.39};
744 const double s_3pr[4]={0.53,0.85,0.61,0.53};
747 if(type1>=0 && type1<=5)
752 if(type2>=0 && type2<=5)
757 if(Plep<50.0 && Plep>=45.0)
ind=2;
758 if(Plep<45.0 && Plep>=40.0)
ind=1;
760 if(Ptau<50.0 && Ptau>=45.0) indT=2;
761 if(Ptau<45.0 && Ptau>=40.0) indT=1;
762 if(Ptau<40.0) indT=0;
763 if(type1==8)
prob=
prob*(lep_p5[
ind]*TMath::Gaus(R1,lep_p1[
ind],lep_p2[
ind])+TMath::Landau(R1,lep_p3[
ind],lep_p4[
ind]))/(1+lep_p5[
ind]);
764 if(type2==8)
prob=
prob*(lep_p5[
ind]*TMath::Gaus(R2,lep_p1[
ind],lep_p2[
ind])+TMath::Landau(R2,lep_p3[
ind],lep_p4[
ind]))/(1+lep_p5[
ind]);
766 if(type1>=0 && type1<=2)
prob=
prob*TMath::Gaus(R1,n_1pr[indT],s_1pr[indT]);
767 if(type2>=0 && type2<=2)
prob=
prob*TMath::Gaus(R2,n_1pr[indT],s_1pr[indT]);
768 if(type1>=3 && type1<=5)
prob=
prob*TMath::Gaus(R1,n_3pr[indT],s_3pr[indT]);
769 if(type2>=3 && type2<=5)
prob=
prob*TMath::Gaus(R2,n_3pr[indT],s_3pr[indT]);
774 const double R1=nu1.P()/vis1.P();
775 const double R2=nu2.P()/vis2.P();
776 const double lep_p1[4]={0.441,0.64,0.79,0.8692};
777 const double lep_p2[4]={0.218,0.28,0.29,0.3304};
778 const double lep_p3[4]={0.256,0.33,0.395,0.4105};
779 const double lep_p4[4]={0.048,0.072,0.148,0.1335};
780 const double lep_p5[4]={0.25,0.68,0.10,0.2872};
782 const double p_1prong=-3.706;
783 const double p_3prong=-5.845;
786 if(type1>=0 && type1<=5)
791 if(type2>=0 && type2<=5)
796 if(Plep<50.0 && Plep>=45.0)
ind=2;
797 if(Plep<45.0 && Plep>=40.0)
ind=1;
799 const double scale1prong=Ptau>45.0 ? 1.0 : -1.019/((Ptau*0.0074-0.059)*p_1prong);
800 const double scale3prong=Ptau>40.0 ? 1.0 : -1.24/((Ptau*0.0062-0.033)*p_3prong);
801 if(type1==8)
prob=
prob*(lep_p5[
ind]*TMath::Gaus(R1,lep_p1[
ind],lep_p2[
ind])+TMath::Landau(R1,lep_p3[
ind],lep_p4[
ind]))/(1+lep_p5[
ind]);
802 if(type2==8)
prob=
prob*(lep_p5[
ind]*TMath::Gaus(R2,lep_p1[
ind],lep_p2[
ind])+TMath::Landau(R2,lep_p3[
ind],lep_p4[
ind]))/(1+lep_p5[
ind]);
804 if(type1>=0 && type1<=2)
prob=
prob*
exp(p_1prong*R1*scale1prong)*std::abs(p_1prong*scale1prong)*0.02;
805 if(type2>=0 && type2<=2)
prob=
prob*
exp(p_1prong*R2*scale1prong)*std::abs(p_1prong*scale1prong)*0.02;
806 if(type1>=3 && type1<=5)
prob=
prob*
exp(p_3prong*R1*scale3prong)*std::abs(p_3prong*scale3prong)*0.02;
807 if(type2>=3 && type2<=5)
prob=
prob*
exp(p_3prong*R2*scale3prong)*std::abs(p_3prong*scale3prong)*0.02;
817 const double R[2]={nu1.P()/vis1.P(),nu2.P()/vis2.P()};
818 const double E[2]={(nu1+vis1).
E(),(nu2+vis2).
E()};
819 const int tau_type[2]={type1,type2};
820 int order1= vis1.Pt()>vis2.Pt() ? 0 : 1;
821 int order2= vis1.Pt()>vis2.Pt() ? 1 : 0;
826 par_1p[0][0]=0.1273; par_1p[0][1]=-0.2479; par_1p[0][2]=1.0; par_1p[0][3]=-43.16; par_1p[0][4]=0.0; par_1p[0][5]=0.0;
827 par_1p[1][0]=0.3736; par_1p[1][1]=-1.441; par_1p[1][2]=1.0; par_1p[1][3]=-29.82; par_1p[1][4]=0.0; par_1p[1][5]=0.0;
828 par_3p[0][0]=0.1167; par_3p[0][1]=-0.1388; par_3p[0][2]=1.0; par_3p[0][3]=-44.77; par_3p[0][4]=0.0; par_3p[0][5]=0.0;
829 par_3p[1][0]=0.3056; par_3p[1][1]=-2.18; par_3p[1][2]=1.0; par_3p[1][3]=-19.09; par_3p[1][4]=0.0; par_3p[1][5]=0.0;
831 const double C1p=0.062;
832 const double C3p=0.052;
833 const double G1p=1.055;
834 const double G3p=1.093;
837 if( tau_type[order1]>=0 && tau_type[order1]<=2 )
843 const double slope=par_1p[0][0]+par_1p[0][1]/(par_1p[0][2]*
x+par_1p[0][3])+par_1p[0][4]*
x > 0.01 ?
844 par_1p[0][0]+par_1p[0][1]/(par_1p[0][2]*
x+par_1p[0][3])+par_1p[0][4]*
x : 0.01;
847 if( tau_type[order1]>=3 && tau_type[order1]<=5 )
852 const double slope=par_3p[0][0]+par_3p[0][1]/(par_3p[0][2]*
x+par_3p[0][3])+par_3p[0][4]*
x > 0.01 ?
853 par_3p[0][0]+par_3p[0][1]/(par_3p[0][2]*
x+par_3p[0][3])+par_3p[0][4]*
x : 0.01;
857 if( tau_type[order2]>=0 && tau_type[order2]<=2 )
859 const double par[4]={0.1147,-0.09675,-35.0,3.711E-11};
862 const double sigma=G1p*(par_1p[1][0]+par_1p[1][1]/(par_1p[1][2]*
x+par_1p[1][3])+par_1p[1][4]*
x+par_1p[1][5]*
x*
x) > 0.01 ?
863 G1p*(par_1p[1][0]+par_1p[1][1]/(par_1p[1][2]*
x+par_1p[1][3])+par_1p[1][4]*
x+par_1p[1][5]*
x*
x) : 0.01;
868 if( tau_type[order2]>=3 && tau_type[order2]<=5 )
872 const double sigma=G3p*(par_3p[1][0]+par_3p[1][1]/(par_3p[1][2]*
x+par_3p[1][3])+par_3p[1][4]*
x+par_3p[1][5]*
x*
x) > 0.01 ?
873 G3p*(par_3p[1][0]+par_3p[1][1]/(par_3p[1][2]*
x+par_3p[1][3])+par_3p[1][4]*
x+par_3p[1][5]*
x*
x) : 0.01;
874 const double par[4]={0.2302,-2.012,-36.08,-0.000373};
882 const double R1=nu1.P()/vis1.P();
883 const double R2=nu2.P()/vis2.P();
884 const double E1=(nu1+vis1).
E();
885 const double E2=(nu2+vis2).
E();
886 int order1= vis1.Pt()>vis2.Pt() ? 0 : 1;
887 int order2= vis1.Pt()>vis2.Pt() ? 1 : 0;
888 const double slope_1p[2]={-3.185,-2.052};
889 const double slope_3p[2]={-3.876,-2.853};
892 par_1p[0][0]=-0.3745; par_1p[0][1]=0.01417; par_1p[0][2]=-7.285E-5;
893 par_1p[1][0]=-0.3683; par_1p[1][1]=0.01807; par_1p[1][2]=-9.514E-5;
894 par_3p[0][0]=-0.3055; par_3p[0][1]=0.01149; par_3p[0][2]=-5.855E-5;
895 par_3p[1][0]=-0.3410; par_3p[1][1]=0.01638; par_3p[1][2]=-9.465E-5;
898 if(type1>=0 && type1<=2)
900 scale1=E1>100.0 ? 1.0 : 1.0/std::abs((par_1p[order1][0]+par_1p[order1][1]*E1+par_1p[order1][2]*E1*E1)*slope_1p[order1]);
905 if(type1>=3 && type1<=5)
907 scale1=E1>100.0 ? 1.0 : 1.0/std::abs((par_3p[order1][0]+par_3p[order1][1]*E1+par_3p[order1][2]*E1*E1)*slope_3p[order1]);
912 if(type2>=0 && type2<=2)
914 scale2=E2>100.0 ? 1.0 : 1.0/std::abs((par_1p[order2][0]+par_1p[order2][1]*E2+par_1p[order2][2]*E2*E2)*slope_1p[order2]);
919 if(type2>=3 && type2<=5)
921 scale2=E2>100.0 ? 1.0 : 1.0/std::abs((par_3p[order2][0]+par_3p[order2][1]*E2+par_3p[order2][2]*E2*E2)*slope_3p[order2]);
940 double norm=4851900.0;
943 p[4]=1.433E5/(5.0*
norm);
p[5]=-1.229E5/(6.0*
norm);
p[6]=3.434E4/(7.0*
norm);
946 double x1= mnu+0.5*binsize < 1.777-0.113 ? mnu+0.5*binsize : 1.777-0.113;
947 double x2= mnu-0.5*binsize > 0.0 ? mnu-0.5*binsize : 0.0;
948 for(
int i=0;
i<7;
i++)
956 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::MnuProbability: negative probability!!! ");
961 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::MnuProbability: probability > 1!!! ");
972 const double norm=4851900.0;
974 p[0]=-288.6;
p[1]=6.217E4;
p[2]=2.122E4;
p[3]=-9.067E4;
975 p[4]=1.433E5;
p[5]=-1.229E5;
p[6]=3.434E4;
977 for(
int i=0;
i<7;
i++)
984 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::MnuProbability: negative probability!!! ");
989 if(preparedInput.
m_fUseVerbose==1) Warning(
"DiTauMassTools",
"Warning in MissingMassCalculator::MnuProbability: probability > 1!!! ");
996 const double & trueMetGuess,
const double & mht_offset) {
1007 const double n_arg=(mht-trueMetGuess-mht_offset)/preparedInput.
m_MHtSigma1;
1008 mhtprob*=
exp(-0.25*
pow(n_arg,2));
1013 const double & trueMetGuess,
const double & mht_offset) {
1020 const double n_arg=(mht-trueMetGuess-mht_offset)/5.7;
1035 double prob=1.0E-10;
1037 if(tau_type==8) tau_code = 0;
1038 else if(tau_type>=0 && tau_type<=2) tau_code = 1;
1039 else if(tau_type>=3 && tau_type<=5) tau_code = 2;
1042 Warning(
"DiTauMassTools",
"---- WARNING in MissingMassCalculator::dTheta3d_probabilityFast() ----");
1043 Warning(
"DiTauMassTools",
"%s", (
"..... wrong tau_type="+
std::to_string(tau_type)).c_str());
1044 Warning(
"DiTauMassTools",
"%s", (
"..... returning prob="+
std::to_string(
prob)).c_str());
1045 Warning(
"DiTauMassTools",
"____________________________________________________________");
1050 double myDelThetaParam[6];
1052 for (
int i=0;
i<6;++
i)
1060 double dTheta3dVal=dTheta3d;
1070 Warning(
"DiTauMassTools",
"---- WARNING in MissingMassCalculator::dTheta3d_probabilityFast() ----");
1071 Warning(
"DiTauMassTools",
"%s", (
"..... wrong probability="+
std::to_string(
prob)).c_str());
1073 Warning(
"DiTauMassTools",
"____________________________________________________________");
1084 double fitval=1.0E-10;
1085 if(
x[0]>TMath::Pi() ||
x[0]<0.0)
return fitval;
1086 const double arg=
x[0];
1087 const double arg_L=
arg;
1089 const double sigmaG=
par[2];
1090 const double mpv=
par[3];
1091 const double sigmaL=
par[4];
1097 const double norm=sqrt(2.0*TMath::Pi());
1099 const double g2=TMath::Landau(arg_L,mpv,sigmaL)/
norm;
1103 if(fitval<0.0)
return 0.0;
1110 double fitval=1.0E-10;
1111 if(
x[0]>TMath::Pi() ||
x[0]<0.0)
return fitval;
1114 double normL=
par[5];
1115 if(normL<0.0) normL=0.0;
1119 const double arg_L=
x[0];
1120 const double mean=1.0;
1121 const double sigmaG=
par[2];
1122 const double mpv=
par[3];
1123 const double sigmaL=
par[4];
1124 const double g1=normL*TMath::Gaus(
arg,
mean,sigmaG);
1125 const double g2=TMath::Landau(arg_L,mpv,sigmaL);
1126 fitval=
par[0]*(
g1+
g2)/(1.0+normL);
1127 if(fitval<0.0)
return 0.0;
1134 if(P_tau<0.0)
return 0.0;
1253 if(preparedInput.
m_fUseVerbose==1) { Info(
"DiTauMassTools",
"Attempting to set LFV MMC settings"); }
1263 if(mT1>mT2) sr_switch = 0;
1268 if(mT1>mT2) sr_switch = 1;
1276 if(mT1>mT2) sr_switch = 0;
1281 if(mT1>mT2) sr_switch = 1;
1290 if(mT1>mT2) sr_switch = 0;
1295 if(mT1>mT2) sr_switch = 1;
1303 double sigmaSyst = 0.10;
1308 METresScale = 0.41*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1309 METoffset = 7.36*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1313 METresScale = 0.34*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1314 METoffset = 6.61*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1318 Info(
"DiTauMassTools",
"%s", (
"METoffset = "+
std::to_string(METoffset)).c_str());
1319 Info(
"DiTauMassTools",
"%s", (
"METresScale = "+
std::to_string(METresScale)).c_str());
1322 double sigma = preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt) : METoffset;
1332 double sigmaSyst = 0.10;
1338 METresScale = 0.38*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1339 METoffset = 7.96*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1343 METresScale = 0.39*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1344 METoffset = 6.61*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1348 sigma = preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt) : METoffset;
1368 if(preparedInput.
m_MetVec.Mod()<20.0)
1381 double sigmaSyst = 0.10;
1382 double METresScale = 0.32*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1383 double METoffset = 5.38*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1384 double sigma = preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt) : METoffset;
1404 double sigmaSyst = 0.10;
1405 double METresScale = 0.87*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1406 double METoffset = 4.16*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1407 double sigma = preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt) : METoffset;
1417 double sigmaSyst = 0.10;
1418 double METresScale = 0.65*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1419 double METoffset = 5.0*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1420 double sigma = preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt) : METoffset;
1428 double sigmaSyst=0.10;
1433 double METresScale=0.86*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1434 double METoffset=3.0*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1436 sigma= preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt) : METoffset;
1443 double dphi_scale =
x > 0.3 ? 0.9429 - 0.059*
x + 0.054*
x*
x : 0.728;
1444 double METoffset = 1.875*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1445 double METresScale1 = 8.914*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1446 double METresScale2 = -8.53*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1449 sigma = preparedInput.
m_SumEt > 80.0 ? METoffset + METresScale1*TMath::Log(sqrt(preparedInput.
m_SumEt)+METresScale2) : 5.0;
1468 double sigmaSyst=0.10;
1470 double METresScale=0.9*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1471 double METoffset=-1.8*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1472 double sigma= preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt) : std::abs(METoffset);
1477 else if(preparedInput.
m_Njet25==0 &&
1481 double sigmaSyst=0.10;
1483 double dphi_scale =
x > 2.5 ? 11.0796 - 4.61236*
x + 0.423617*
x*
x : 2.;
1484 double METoffset = -8.51013*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1485 double METresScale1 = 8.54378*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1486 double METresScale2 = -3.97146*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1487 double sigma= preparedInput.
m_SumEt>80.0 ? METoffset+METresScale1*TMath::Log(sqrt(preparedInput.
m_SumEt)+METresScale2) : 5.;
1506 double METresScale=-1.;
1507 double METoffset=-1.;
1508 double sigmaSyst=0.10;
1513 METresScale = 1.1*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1514 METoffset = -5.0*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1517 double sigma = preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt) : std::abs(METoffset);
1522 double dphi_scale =
x > 0.6 ? 1.42047 - 0.666644*
x + 0.199986*
x*
x : 1.02;
1523 METoffset = 1.19769*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1524 double METresScale1 = 5.61687*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1525 double METresScale2 = -4.2076*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1526 sigma= preparedInput.
m_SumEt>115.0 ? METoffset+METresScale1*TMath::Log(sqrt(preparedInput.
m_SumEt)+METresScale2) : 12.1;
1541 double sigmaSyst = 0.10;
1542 double METresScale = -1.0;
1543 double METoffset = -1.0;
1549 METresScale=-0.4307*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1550 METoffset=7.06*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1551 double METresScale2=0.07693*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1556 sigma= preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt)+METresScale2*preparedInput.
m_SumEt : METoffset;
1561 METresScale=0.8149*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1562 METoffset=5.343*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1566 sigma= preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt) : METoffset;
1577 double sigmaSyst=0.10;
1578 double METresScale=-1.0;
1579 double METoffset=-1.0;
1581 double min_sigma = 2.0;
1586 METoffset = 4.22581*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1587 METresScale = 0.03818*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1588 double METresScale2= 0.12623;
1589 sigma= preparedInput.
m_SumEt>0.0 ? METoffset+METresScale*sqrt(preparedInput.
m_SumEt)+METresScale2*preparedInput.
m_SumEt : min_sigma;
1591 double p0 = 2.60131;
1592 double p1const = 1.22427;
1593 double p2quad = -1.71261;
1595 sigma *= (DphiLL < p0) ? p1const : p1const+
1596 p2quad*p0*p0 - 2*p2quad*p0*DphiLL+p2quad*DphiLL*DphiLL;
1603 METoffset = 5.42506*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1604 METresScale = 5.36760*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1605 double METoffset2 = -4.86808*(1.0+preparedInput.
m_METresSyst*sigmaSyst);
1606 if (preparedInput.
m_SumEt > 0.0) {
1607 double x = sqrt(preparedInput.
m_SumEt);
1608 sigma = (
x+METoffset2 > 1) ? METoffset+METresScale*
log(
x+METoffset2) : METoffset;
1613 double p0 = 2.24786;
1614 double p1const = 0.908597;
1615 double p2quad = 0.544577;
1617 sigma *= (DphiLL < p0) ? p1const : p1const+
1618 p2quad*p0*p0 - 2*p2quad*p0*DphiLL+p2quad*DphiLL*DphiLL;