3 double calculateMT2wHepUtils(vector<HEPUtils::P4>& jets, vector<bool>& btag, HEPUtils::P4& lep,
float met,
float metphi){
6 assert ( jets.size() == btag.size() );
8 if ( jets.size()<2 )
return 99999.;
11 std::vector<int> bjets;
12 std::vector<int> non_bjets;
13 for(
unsigned int i = 0 ; i < jets.size() ; i++ ){
17 non_bjets.push_back(i);
21 int n_btag = (
int) bjets.size();
28 if(jets.size()<=3) nMax=non_bjets.size();
34 float min_mt2w = 9999;
36 for (
int i=0; i<nMax; i++)
37 for (
int j=0; j<nMax; j++){
41 jets[non_bjets[j]], met, metphi);
42 if (c_mt2w < min_mt2w)
47 }
else if (n_btag == 1 ){
49 float min_mt2w = 9999;
51 for (
int i=0; i<nMax; i++){
53 if (c_mt2w < min_mt2w)
56 for (
int i=0; i<nMax; i++){
58 if (c_mt2w < min_mt2w)
63 }
else if (n_btag >= 2) {
66 float min_mt2w = 9999;
67 for (
int i=0; i<n_btag; i++)
68 for (
int j=0; j<n_btag; j++){
72 jets[bjets[j]], met, metphi);
73 if (c_mt2w < min_mt2w)
84 double mt2wWrapperHepUtils(HEPUtils::P4& lep, HEPUtils::P4& jet_o, HEPUtils::P4& jet_b,
float met,
float metphi){
87 float metx = met * cos( metphi );
88 float mety = met * sin( metphi );
95 pl[0]= lep.E(); pl[1]= lep.px(); pl[2]= lep.py(); pl[3]= lep.pz();
96 pb1[1] = jet_o.px(); pb1[2] = jet_o.py(); pb1[3] = jet_o.pz();
97 pb2[1] = jet_b.px(); pb2[2] = jet_b.py(); pb2[3] = jet_b.pz();
98 pmiss[0] = 0.; pmiss[1] = metx; pmiss[2] = mety;
double calculateMT2wHepUtils(vector< HEPUtils::P4 > &jets, vector< bool > &btag, HEPUtils::P4 &lep, float met, float metphi)
void set_momenta(double *pl0, double *pb10, double *pb20, double *pmiss0)
double mt2wWrapperHepUtils(HEPUtils::P4 &lep, HEPUtils::P4 &jet_o, HEPUtils::P4 &jet_b, float met, float metphi)