1 #include "Math/VectorUtil.h"
8 namespace HWWFunctions {
15 monitor.
count(type,
"baseline", weight);
17 monitor.
count(type,
"opposite sign", weight);
18 if(!
passFullLep(hww, i_hyp, egammaMvaEleEstimator, muonMVAEstimator))
return;
19 monitor.
count(type,
"full lepton selection", weight);
21 monitor.
count(type,
"extra lepton veto", weight);
23 monitor.
count(type,
"met > 20 GeV", weight);
24 if(!(hww.
hyp_p4().at(i_hyp).mass() > 12.0))
return;
25 monitor.
count(type,
"mll > 12 GeV", weight);
27 monitor.
count(type,
"|mll - mZ| > 15 GeV", weight);
29 monitor.
count(type,
"minMET > 20 GeV", weight);
31 monitor.
count(type,
"minMET > 40 GeV for ee/mm", weight);
33 monitor.
count(type,
"dPhiDiLepJet < 165 dg for ee/mm", weight);
35 monitor.
count(type,
"SoftMuons==0", weight);
37 monitor.
count(type,
"top veto", weight);
38 if(hww.
hyp_p4().at(i_hyp).pt() <= 45.0)
return;
39 monitor.
count(type,
"ptll > 45 GeV", weight);
42 std::vector<JetPair> sortedJets =
getJets(hww, i_hyp, 30.0, 4.7,
true,
false);
49 monitor.
count(type,
"njets == 0", weight);
51 monitor.
count(type,
"max(lep1.pt(),lep2.pt())>30", weight);
53 monitor.
count(type,
"min(lep1.pt(),lep2.pt())>25", weight);
56 monitor.
count( type,
"njets == 1", weight);
58 if ( njets==2 || njets==3 ) {
59 monitor.
count(type,
"njets == 2 or 3", weight);
60 if (fabs(sortedJets[0].
first.eta())>=4.7 || fabs(sortedJets[1].
first.eta())>=4.7)
return;
61 monitor.
count(type,
"abs(jet1.eta())<4.7 && abs(jet2.eta())<4.7",weight);
62 if (njets==3 && sortedJets[2].
first.pt()>30 && ((sortedJets[0].first.eta()-sortedJets[2].first.eta() > 0 && sortedJets[1].first.eta()-sortedJets[2].first.eta() < 0) ||
63 (sortedJets[1].
first.eta()-sortedJets[2].first.eta() > 0 && sortedJets[0].first.eta()-sortedJets[2].first.eta() < 0)) )
return;
64 monitor.
count(type,
"no central jets", weight);
74 for(
unsigned int i = 0;
i < candidates.size(); ++
i ) {
75 unsigned int i_hyp = candidates.at(
i);
93 if (hww.
trks_d0().size()==0)
return false;
96 if (hww.
hyp_p4().at(i_hyp).mass2()<0)
return false;
114 bool lockToCoreSelectors =
false;
115 bool useLHeleId =
false;
117 bool useMVAmuId =
false;
120 std::vector<Int_t> nullMu;
121 std::vector<Int_t> nullEle;
132 if (
goodMuonIsolated(hww, index, lockToCoreSelectors, useMVAmuId, muonIdMVA, muonMVAEstimator, nullMu, nullEle) ) PASSED_LT_FINAL =
true;
133 if (
fakableMuon(hww, index,
MuFOV2, muonMVAEstimator, nullMu, nullEle) && !
goodMuonIsolated(hww, index, lockToCoreSelectors, useMVAmuId, muonIdMVA, muonMVAEstimator, nullMu, nullEle)) PASSED_LT_FO_MU2 =
true;
137 if (
goodMuonIsolated(hww, index, lockToCoreSelectors, useMVAmuId, muonIdMVA, muonMVAEstimator, nullMu, nullEle) ) PASSED_LL_FINAL =
true;
138 if (
fakableMuon(hww, index,
MuFOV2, muonMVAEstimator, nullMu, nullEle) && !
goodMuonIsolated(hww, index, lockToCoreSelectors, useMVAmuId, muonIdMVA, muonMVAEstimator, nullMu, nullEle)) PASSED_LL_FO_MU2 =
true;
142 if (
goodElectronIsolated(hww, index, useLHeleId, useMVAeleId, egammaMvaEleEstimator, lockToCoreSelectors) ) PASSED_LT_FINAL =
true;
147 if (
goodElectronIsolated(hww, index, useLHeleId, useMVAeleId, egammaMvaEleEstimator, lockToCoreSelectors) ) PASSED_LL_FINAL =
true;
151 if( PASSED_LT_FINAL && PASSED_LL_FINAL )
return true;
152 if( PASSED_LT_FINAL && PASSED_LL_FO_MU2 )
return true;
153 if( PASSED_LT_FINAL && PASSED_LL_FO_ELEV4 )
return true;
154 if( PASSED_LL_FINAL && PASSED_LT_FINAL )
return true;
155 if( PASSED_LL_FINAL && PASSED_LT_FO_MU2 )
return true;
156 if( PASSED_LL_FINAL && PASSED_LT_FO_ELEV4 )
return true;
163 bool lockToCoreSelectors =
false;
164 bool useLHeleId =
false;
166 bool useMVAmuId =
false;
169 std::vector<Int_t> nullMu;
170 std::vector<Int_t> nullEle;
177 if (
goodMuonIsolated(hww, index, lockToCoreSelectors, useMVAmuId, muonIdMVA, muonMVAEstimator, nullMu, nullEle) ) PASSED_LT_FINAL =
true;
181 if (
goodMuonIsolated(hww, index, lockToCoreSelectors, useMVAmuId, muonIdMVA, muonMVAEstimator, nullMu, nullEle) ) PASSED_LL_FINAL =
true;
185 if (
goodElectronIsolated(hww, index, useLHeleId, useMVAeleId, egammaMvaEleEstimator, lockToCoreSelectors) ) PASSED_LT_FINAL =
true;
189 if (
goodElectronIsolated(hww, index, useLHeleId, useMVAeleId, egammaMvaEleEstimator, lockToCoreSelectors) ) PASSED_LL_FINAL =
true;
192 if(PASSED_LT_FINAL && PASSED_LL_FINAL)
return true;
200 bool useLHeleId =
false;
202 bool useMVAmuId =
false;
205 std::vector<Int_t> nullMu;
206 std::vector<Int_t> nullEle;
208 return (
numberOfExtraLeptons(hww, i_hyp,10, useLHeleId, useMVAeleId, egammaMvaEleEstimator, useMVAmuId, muonIdMVA,muonMVAEstimator, nullMu, nullEle) == 0);
214 if(hww.
hyp_type().at(i_hyp) == 1 || hww.
hyp_type().at(i_hyp) == 2)
return true;
215 if(fabs(hww.
hyp_p4().at(i_hyp).mass() - 91.1876) > 15.0)
return true;
225 return(
min(pmet,pTrackMet)>20);
233 if(hww.
hyp_type().at(i_hyp) == 1)
return true;
234 if(hww.
hyp_type().at(i_hyp) == 2)
return true;
237 return(
min(pmet,pTrackMet)>40);
245 if(hww.
hyp_type().at(i_hyp)==1)
return true;
246 if(hww.
hyp_type().at(i_hyp)==2)
return true;
249 std::vector<JetPair> sortedJets =
getJets(hww, i_hyp, 15.0, 4.7,
true,
false);
251 if (sortedJets.size()>0) {
252 if (njets<2 && fabs(ROOT::Math::VectorUtil::DeltaPhi(sortedJets[0].
first,hww.
hyp_p4().at(i_hyp))) >= (165.*
TMath::Pi()/180.))
return false;
253 else if ( (njets>= 2) && (fabs(ROOT::Math::VectorUtil::DeltaPhi( (sortedJets[0].first+sortedJets[1].first),hww.
hyp_p4().at(i_hyp))) >= (165.*
TMath::Pi()/180.)) )
return false;
270 return(!
toptag(hww, i_hyp, 10));
275 std::vector<JetPair>
getJets(
HWW& hww,
int i_hyp,
double etThreshold,
double etaMax,
bool sortJets,
bool btag){
277 std::vector<JetPair>
jets;
278 const double vetoCone = 0.3;
280 vector <float> fixedpfjetmva_analobj;
getGoodMVAs(hww, fixedpfjetmva_analobj,
"mvavalue");
282 for (
unsigned int i=0;
i < hww.
pfjets_p4().size(); ++
i) {
288 if ( (hww.
pfjets_p4().at(
i).pt() *
jec) < etThreshold )
continue;
305 return getJets(hww, i_hyp, 30, 4.7,
false, btagged);
323 return lv1.first.pt() > lv2.first.pt();
329 bool passMVAJetId(
double corjetpt,
double jeteta,
double mvavalue,
unsigned int tightness)
333 edm::LogError(
"InvalidParameter") <<
"ERROR : tightness should be 0, 1, or 2. ";
337 double fMVACut[3][4][4];
340 fMVACut[0][0][0] = 0.5; fMVACut[0][0][1] = 0.6; fMVACut[0][0][2] = 0.6; fMVACut[0][0][3] = 0.9;
341 fMVACut[0][1][0] = -0.2; fMVACut[0][1][1] = 0.2; fMVACut[0][1][2] = 0.2; fMVACut[0][1][3] = 0.6;
342 fMVACut[0][2][0] = 0.3; fMVACut[0][2][1] = 0.4; fMVACut[0][2][2] = 0.7; fMVACut[0][2][3] = 0.8;
343 fMVACut[0][3][0] = 0.5; fMVACut[0][3][1] = 0.4; fMVACut[0][3][2] = 0.8; fMVACut[0][3][3] = 0.9;
345 fMVACut[1][0][0] = 0.2; fMVACut[1][0][1] = 0.4; fMVACut[1][0][2] = 0.2; fMVACut[1][0][3] = 0.6;
346 fMVACut[1][1][0] = -0.3; fMVACut[1][1][1] = 0. ; fMVACut[1][1][2] = 0. ; fMVACut[1][1][3] = 0.5;
347 fMVACut[1][2][0] = 0.2; fMVACut[1][2][1] = 0.2; fMVACut[1][2][2] = 0.5; fMVACut[1][2][3] = 0.7;
348 fMVACut[1][3][0] = 0.3; fMVACut[1][3][1] = 0.2; fMVACut[1][3][2] = 0.7; fMVACut[1][3][3] = 0.8;
350 fMVACut[2][0][0] = -0.2; fMVACut[2][0][1] = 0. ; fMVACut[2][0][2] = 0.2; fMVACut[2][0][3] = 0.5;
351 fMVACut[2][1][0] = -0.4; fMVACut[2][1][1] = -0.4; fMVACut[2][1][2] = -0.4; fMVACut[2][1][3] = 0.4;
352 fMVACut[2][2][0] = 0. ; fMVACut[2][2][1] = 0. ; fMVACut[2][2][2] = 0.2; fMVACut[2][2][3] = 0.6;
353 fMVACut[2][3][0] = 0. ; fMVACut[2][3][1] = 0. ; fMVACut[2][3][2] = 0.6; fMVACut[2][3][3] = 0.2;
357 if( corjetpt > 10 && corjetpt < 20 ) ptId = 1;
358 if( corjetpt > 20 && corjetpt < 30 ) ptId = 2;
359 if( corjetpt > 30 ) ptId = 3;
363 if( fabs(jeteta) > 2.5 && fabs(jeteta) < 2.75 ) etaId = 1;
364 if( fabs(jeteta) > 2.75 && fabs(jeteta) < 3.0 ) etaId = 2;
365 if( fabs(jeteta) > 3.0 && fabs(jeteta) < 5.0 ) etaId = 3;
368 if( mvavalue > fMVACut[tightness][ptId][etaId] )
return true;
376 if (hww.
vtxs_ndof().at(ivtx) <= 4.)
return false;
378 if (fabs(hww.
vtxs_position().at(ivtx).Z()) > 24.0)
return false;
384 unsigned int nVtx = 0;
385 for (
unsigned int i = 0;
i < hww.
vtxs_sumpt().size(); ++
i ){
405 bool ptcut = hww.
els_p4().at(i).pt() >= 10.0;
408 assert(!lockToCoreSelectors || core==
internal);
417 if (fabs(etaSC)<1.479) {
448 if ( hww.
els_p4().at(i).pt() < 10.0 )
return false;
465 if (fabs(hww.
mus_p4().at(i).eta()) < 1.479) subdet = 0;
468 if (hww.
mus_p4().at(i).pt() > 14.5) ptBin = 1;
469 if (hww.
mus_p4().at(i).pt() > 20.0) ptBin = 2;
472 if (subdet == 0 && ptBin == 0) MVABin = 0;
473 if (subdet == 1 && ptBin == 0) MVABin = 1;
474 if (subdet == 0 && ptBin == 1) MVABin = 2;
475 if (subdet == 1 && ptBin == 1) MVABin = 3;
476 if (subdet == 0 && ptBin == 2) MVABin = 4;
477 if (subdet == 1 && ptBin == 2) MVABin = 5;
479 double MVACut = -999.;
481 if (MVABin == 0) MVACut = -0.5618;
482 if (MVABin == 1) MVACut = -0.3002;
483 if (MVABin == 2) MVACut = -0.4642;
484 if (MVABin == 3) MVACut = -0.2478;
485 if (MVABin == 4) MVACut = 0.1706;
486 if (MVABin == 5) MVACut = 0.8146;
488 double mvaValue=mva->
MVAValue(hww, i, 0);
496 if (hww.
mus_p4().at(i).pt() < 10) pass =
false;
497 if (fabs(hww.
mus_p4().at(i).eta()) >= 2.4) pass =
false;
502 (((hww.
mus_type().at(i)) & (1<<1)) == (1<<1)
508 ( ((hww.
mus_type().at(i)) & (1<<2)) == (1<<2)
512 && ((hww.
mus_type().at(i)) & (1<<2)) == (1<<2)
527 MuonMVAEstimator* muonMVAEstimator, std::vector<Int_t> IdentifiedMu, std::vector<Int_t> IdentifiedEle){
528 return ww_muBase(hww, i) &&
ww_mud0PV(hww, i) &&
ww_mudZPV(hww, i, 0.1) &&
ww_muId(hww, i, useMVAmuId, mva) &&
passMuonRingsMVAFO(hww, i, muonMVAEstimator, IdentifiedMu, IdentifiedEle);
532 MuonMVAEstimator* muonMVAEstimator, std::vector<Int_t> IdentifiedMu, std::vector<Int_t> IdentifiedEle ){
533 bool ptcut = hww.
mus_p4().at(i).pt() >= 10.0;
535 bool internal =
ww_muBase(hww, i) &&
ww_mud0PV(hww, i) &&
ww_mudZPV(hww, i, 0.1) &&
ww_muId(hww, i, useMVAmuId, mva) &&
ww_muIso(hww, i, muonMVAEstimator, IdentifiedMu, IdentifiedEle);
536 assert(!lockToCoreSelectors || core==
internal);
546 if (hww.
els_p4().at(index).pt() < 10.0)
return false;
547 if (fabs(hww.
els_p4().at(index).eta()) > 2.5)
return false;
559 if (!
goodElectronTMVA(hww, egammaMvaEleEstimator, useMVAeleId, index))
return false;
573 return fabs(hww.
els_d0corr().at(index)) < 0.02;
579 if (vtxIndex<0)
return false;
580 double dxyPV = hww.
els_d0().at(index)-
583 return fabs(dxyPV) < 0.02;
588 if (vtxIndex<0)
return false;
590 return fabs(dzpv)<0.1;
608 if (hww.
mus_p4().at(index).pt() < 10.0)
return false;
609 if (fabs(hww.
mus_p4().at(index).eta()) > 2.4)
return false;
610 if (hww.
mus_type().at(index) == 8)
return false;
615 return fabs(hww.
mus_d0corr().at(index)) < 0.02;
620 if (vtxIndex<0)
return 9999;
621 double dxyPV = hww.
mus_d0().at(index)-
634 if (vtxIndex<0)
return false;
636 return fabs(dzpv)<
cut;
645 if (((hww.
mus_type().at(index)) & (1<<2)) == 0)
return false;
649 if (hww.
mus_trkKink().at(index) > 20.)
return false;
652 bool goodMuonGlobalMuon =
false;
653 if (((hww.
mus_type().at(index)) & (1<<1)) == (1<<1)){
654 goodMuonGlobalMuon =
true;
657 if (hww.
mus_nmatches().at(index)<2) goodMuonGlobalMuon =
false;
659 return goodMuonGlobalMuon ||
667 double pt = hww.
mus_p4().at(index).pt();
672 if (hww.
mus_p4().at(index).pt()>20) {
686 return passMuonRingsMVA(hww, index, muonMVAEstimator, IdentifiedMu, IdentifiedEle);
698 if (fabs(etaSC)<1.479) {
721 double mvavalue = egammaMvaEleEstimator->
mvaValue(hww, i,
false);
724 if( fabs(etaSC)>=1.479 && mvavalue>0.92)
return true;
725 if( fabs(etaSC)>=0.8 && fabs(etaSC)<1.479 && mvavalue>0.85)
return true;
726 if( fabs(etaSC)<0.8 && mvavalue>0.94)
return true;
730 if( fabs(etaSC)>=1.479 && mvavalue>0.62)
return true;
731 if( fabs(etaSC)>=0.8 && fabs(etaSC)<1.479 && mvavalue>0.1)
return true;
732 if( fabs(etaSC)<0.8 && mvavalue>0.0)
return true;
740 IdentifiedEle, IdentifiedMu,
false );
746 if( fabs(eta)>=1.479 && fabs(eta)<2.4 && mvavalue>0.86 )
return true;
747 if( fabs(eta)<1.479 && mvavalue>0.82 )
return true;
751 if( fabs(eta)>=1.479 && fabs(eta)<2.4 && mvavalue>0.82 )
return true;
752 if( fabs(eta)<1.479 && mvavalue>0.86 )
return true;
760 IdentifiedEle, IdentifiedMu,
false );
762 if( mvavalue>-0.6 )
return true;
767 std::vector<Int_t> IdentifiedMu, std::vector<Int_t> IdentifiedEle){
769 if (((hww.
mus_type().at(i)) & (1<<2)) == 0)
return false;
776 bool goodMuonGlobalMuon =
false;
777 if (((hww.
mus_type().at(i)) & (1<<1)) == (1<<1)) {
778 goodMuonGlobalMuon =
true;
781 if (hww.
mus_nmatches().at(i)<2) goodMuonGlobalMuon =
false;
793 std::vector<Int_t> IdentifiedMu, std::vector<Int_t> IdentifiedEle){
794 if ( hww.
mus_p4().at(i).pt() < 10.0 )
return false;
797 case MuFOV2:
return MuonFOV2(hww, i, muonMVAEstimator, IdentifiedMu, IdentifiedEle);
804 MuonMVAEstimator* muonMVAEstimator, std::vector<Int_t> IdentifiedMu, std::vector<Int_t> IdentifiedEle ){
806 std::vector<LeptonPair>
leptons;
811 if ( ! (
ww_mud0PV(hww,
i) &&
ww_muId(hww,
i, useMVAmuId, mumva) &&
ww_muIso(hww,
i, muonMVAEstimator, IdentifiedMu, IdentifiedEle) &&
812 fabs(hww.
mus_p4().at(
i).eta()) <2.4) )
continue;
820 fabs(hww.
els_p4().at(
i).eta()) < 2.5) )
continue;
827 MuonMVAEstimator* muonMVAEstimator, std::vector<Int_t> IdentifiedMu, std::vector<Int_t> IdentifiedEle){
828 return getExtraLeptons(hww, i_hyp, minPt, useLHeleId, useMVAeleId, egammaMvaEleEstimator, useMVAmuId, mumva,muonMVAEstimator,IdentifiedMu,IdentifiedEle).size();
835 const std::vector<JetPair> vetojets = std::vector<JetPair>();
837 unsigned int nMuons = 0;
838 for (
int imu=0; imu < int(hww.
mus_charge().size()); ++imu) {
840 if ( ((hww.
mus_goodmask().at(imu)) & (1<<19)) == 0 )
continue;
841 if ( hww.
mus_p4().at(imu).pt() < 3 )
continue;
843 if ( !
ww_mudZPV(hww, imu,0.2) )
continue;
847 if ( nonisolated &&
ww_muIsoVal(hww, imu)<0.1 && hww.
mus_p4().at(imu).pt()>20 )
continue;
849 for ( std::vector<JetPair>::const_iterator ijet = vetojets.begin(); ijet != vetojets.end(); ++ijet ){
852 if ( skip )
continue;
861 double tightDPhi = fabs(hww.
hyp_lt_p4().at(i_hyp).Phi() -
Phi);
863 double looseDPhi = fabs(hww.
hyp_ll_p4().at(i_hyp).Phi() -
Phi);
872 if (DeltaPhi <
TMath::Pi()/2)
return met*TMath::Sin(DeltaPhi);
880 const double vetoCone = 0.3;
882 vector <float> fixedpfjetmva_analsel;
getGoodMVAs(hww, fixedpfjetmva_analsel,
"mvavalue");
884 for (
unsigned int i=0;
i < hww.
pfjets_p4().size(); ++
i) {
889 bool ignoreJet =
false;
890 for ( std::vector<JetPair>::const_iterator ijet = ignoreJets.begin();
891 ijet != ignoreJets.end(); ++ijet )
893 if ( ignoreJet )
continue;
static const cuts_t electronSelection_smurfV6
bool ww_mud0(HWW &hww, unsigned int i)
bool ww_muId(HWW &hww, unsigned int i, bool useMVAmuId, MuonIDMVA *mva)
std::vector< float > & trk_met()
bool passMinMet40(HWW &, int)
bool fakableElectron(HWW &hww, unsigned int i, EleFOTypes)
Bool_t comparePt(JetPair lv1, JetPair lv2)
std::vector< int > & mus_pid_PFMuon()
Double_t mvaValue(Double_t fbrem, Double_t kfchi2, Int_t kfhits, Double_t gsfchi2, Double_t deta, Double_t dphi, Double_t detacalo, Double_t see, Double_t spp, Double_t etawidth, Double_t phiwidth, Double_t e1x5e5x5, Double_t R9, Double_t HoE, Double_t EoP, Double_t IoEmIoP, Double_t eleEoPout, Double_t PreShowerOverRaw, Double_t d0, Double_t ip3d, Double_t eta, Double_t pt, Bool_t printDebug=kFALSE)
double ww_muIsoVal(HWW &hww, unsigned int i)
std::vector< float > & els_tkIso()
std::vector< int > & els_exp_innerlayers()
std::vector< int > & hyp_ll_id()
std::vector< int > & trks_valid_pixelhits()
bool ww_elId(HWW &hww, unsigned int i, bool useLHeleId, int useMVAeleId, EGammaMvaEleEstimator *egammaMvaEleEstimator)
std::pair< LorentzVector, unsigned int > JetPair
bool passLikelihoodId_v2(HWW &, unsigned int index, float lhValue, int workingPoint)
HypothesisType getHypothesisTypeNew(HWW &, unsigned int i_hyp)
bool passTopVeto(HWW &, int)
bool goodElectronIsolated(HWW &hww, unsigned int i, bool useLHeleId, int useMVAeleId, EGammaMvaEleEstimator *egammaMvaEleEstimator, bool lockToCoreSelectors)
std::vector< float > & mus_gfit_chi2()
bool passCharge(HWW &, int)
bool goodElectronTMVA(HWW &hww, EGammaMvaEleEstimator *egammaMvaEleEstimator, int useMVAeleId, unsigned int i)
std::vector< float > & mus_d0corr()
unsigned int numberOfSoftMuons(HWW &hww, int i_hyp, bool nonisolated)
bool passBaseline(HWW &, int, EGammaMvaEleEstimator *, MuonMVAEstimator *)
std::vector< LorentzVector > & els_vertex_p4()
std::vector< float > & els_hOverE()
Sin< T >::type sin(const T &t)
bool muonId(HWW &, unsigned int index, SelectionType type)
bool goodElectronWithoutIsolation(HWW &hww, unsigned int i, bool useLHeleId, int useMVAeleId, EGammaMvaEleEstimator *egammaMvaEleEstimator)
std::vector< int > & mus_pid_TMLastStationTight()
std::vector< float > & els_d0corr()
bool passMVAJetId(double, double, double, unsigned int)
std::vector< float > & trk_metPhi()
std::vector< int > & mus_trkidx()
bool ww_eldZPV(HWW &hww, unsigned int i)
bool goodMuonWithoutIsolation(HWW &hww, unsigned int i, bool useMVAmuId, MuonIDMVA *mva, MuonMVAEstimator *muonMVAEstimator, std::vector< Int_t > IdentifiedMu, std::vector< Int_t > IdentifiedEle)
std::vector< float > & els_d0()
std::vector< float > & mus_ptErr()
std::vector< int > & hyp_lt_index()
bool toptag(HWW &hww, int i_hyp, double minPt, std::vector< JetPair > ignoreJets=std::vector< JetPair >())
std::vector< LeptonPair > getExtraLeptons(HWW &hww, int i_hyp, double minPt, bool useLHeleId, int useMVAeleId, EGammaMvaEleEstimator *egammaMvaEleEstimator, bool useMVAmuId, MuonIDMVA *mumva, MuonMVAEstimator *muonMVAEstimator, std::vector< Int_t > IdentifiedMu, std::vector< Int_t > IdentifiedEle)
std::vector< LorentzVector > & mus_p4()
bool ElectronFOV4(HWW &hww, unsigned int i)
std::vector< float > & mus_iso03_hadEt()
std::vector< int > & mus_nmatches()
bool goodMuonTMVA(HWW &hww, MuonIDMVA *mva, unsigned int i)
bool ww_eld0(HWW &hww, unsigned int i)
std::vector< float > & mus_iso03_sumPt()
std::vector< float > & trks_d0()
float electronIsoValuePF2012_FastJetEffArea_HWW(HWW &, int index)
std::vector< int > & mus_gfit_validSTAHits()
std::pair< bool, unsigned int > LeptonPair
bool passMuonRingsMVA(HWW &hww, unsigned int mu, MuonMVAEstimator *muonMVAEstimator, std::vector< Int_t > IdentifiedMu, std::vector< Int_t > IdentifiedEle)
double ww_mud0ValuePV(HWW &hww, unsigned int index)
double projectedMet(HWW &hww, unsigned int i_hyp, double met, double phi)
bool ww_elIso(HWW &hww, unsigned int i)
bool ww_mud0PV(HWW &hww, unsigned int i)
bool defaultBTag(HWW &hww, unsigned int, float)
bool ElectronFOIdV4(HWW &hww, unsigned int i)
std::vector< LorentzVector > & hyp_ll_p4()
bool passDPhiDiLepJet(HWW &, int)
std::vector< LorentzVector > & mus_trk_p4()
std::vector< int > & mus_validHits()
bool fakableMuon(HWW &hww, unsigned int i, MuFOTypes, MuonMVAEstimator *muonMVAEstimator, std::vector< Int_t > IdentifiedMu, std::vector< Int_t > IdentifiedEle)
std::vector< float > & els_ecalIso()
static const cuts_t electronSelectionFO_el_smurf_v1
std::vector< JetPair > getJets(HWW &hww, int, double, double, bool, bool)
void count(HypothesisType type, const char *name, double weight=1.0)
static const cuts_t electronSelection_smurfV3_id
Cos< T >::type cos(const T &t)
std::vector< float > & vtxs_ndof()
std::vector< int > & mus_charge()
Abs< T >::type abs(const T &t)
std::vector< float > & mus_gfit_ndof()
std::vector< float > & els_lh()
int bestHypothesis(HWW &hww, const std::vector< int > &)
unsigned int numberOfJets(HWW &hww, unsigned int)
Double_t mvaValueIso(HWW &, Int_t imu, Double_t rho, MuonEffectiveArea::MuonEffectiveAreaTarget EATarget, std::vector< Int_t > IdentifiedEle, std::vector< Int_t > IdentifiedMu, Bool_t printDebug)
std::vector< LorentzVector > & vtxs_position()
std::vector< int > & hyp_type()
std::vector< float > & els_hcalIso()
std::vector< LorentzVector > & els_p4()
std::vector< float > & els_etaSC()
bool ww_elBase(HWW &hww, unsigned int i)
static const cuts_t electronSelectionFO_el_smurf_v3
bool pass_electronSelection(HWW &, const unsigned int index, const cuts_t selectionType, bool applyAlignmentCorrection=false, bool removedEtaCutInEndcap=false, bool useGsfTrack=true)
bool ww_muBase(HWW &hww, unsigned int i)
bool passExtraLeptonVeto(HWW &, int, EGammaMvaEleEstimator *, MuonMVAEstimator *)
bool goodMuonIsolated(HWW &hww, unsigned int i, bool lockToCoreSelectors, bool useMVAmuId, MuonIDMVA *mva, MuonMVAEstimator *muonMVAEstimator, std::vector< Int_t > IdentifiedMu, std::vector< Int_t > IdentifiedEle)
bool passSoftMuonVeto(HWW &, int)
void doCutFlow(HWW &, int, EventMonitor &, EGammaMvaEleEstimator *, MuonMVAEstimator *)
bool ww_mudZPV(HWW &hww, unsigned int i, float cut=0.1)
double muonIsoValuePF(HWW &, unsigned int imu, unsigned int ivtx, float coner=0.4, float minptn=1.0, float dzcut=0.1, int filterId=0)
bool passFirstCuts(HWW &, int)
std::vector< float > & mus_trkKink()
bool MuonFOV2(HWW &hww, unsigned int i, MuonMVAEstimator *muonMVAEstimator, std::vector< Int_t > IdentifiedMu, std::vector< Int_t > IdentifiedEle)
unsigned int nGoodVertex(HWW &hww)
std::vector< int > & els_charge()
bool getGoodMVAs(HWW &, std::vector< float > &goodmvas, std::string variable)
std::vector< LorentzVector > & hyp_p4()
std::vector< float > & pfjets_trackCountingHighEffBJetTag()
std::vector< float > & mus_d0()
bool isFromConversionMIT(HWW &, const unsigned int index)
double nearestDeltaPhi(HWW &hww, double Phi, int i_hyp)
double ww_elIsoVal(HWW &hww, unsigned int i)
std::vector< int > & hyp_lt_id()
bool passMuonRingsMVAFO(HWW &hww, unsigned int mu, MuonMVAEstimator *muonMVAEstimator, std::vector< Int_t > IdentifiedMu, std::vector< Int_t > IdentifiedEle)
std::vector< float > & els_dPhiIn()
double dzPV(const LorentzVector &vtx, const LorentzVector &p4, const LorentzVector &pv)
std::vector< LorentzVector > & hyp_lt_p4()
std::vector< int > & vtxs_isFake()
std::vector< float > & pfjets_JEC()
std::vector< float > & els_dEtaIn()
bool ww_muIso(HWW &hww, unsigned int i)
bool passFullLep(HWW &, int, EGammaMvaEleEstimator *, MuonMVAEstimator *)
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< float > > LorentzVector
std::vector< int > & trks_nlayers()
std::vector< LorentzVector > & pfjets_p4()
volatile std::atomic< bool > shutdown_flag false
std::vector< LorentzVector > & mus_vertex_p4()
std::vector< JetPair > getDefaultJets(HWW &hww, unsigned int, bool)
std::vector< float > & els_sigmaIEtaIEta()
Double_t MVAValue(HWW &, const unsigned int mu, const unsigned int vertex)
bool ww_eld0PV(HWW &hww, unsigned int i)
std::vector< int > & mus_goodmask()
unsigned int numberOfExtraLeptons(HWW &hww, int i_hyp, double minPt, bool useLHeleId, int useMVAeleId, EGammaMvaEleEstimator *egammaMvaEleEstimator, bool useMVAmuId, MuonIDMVA *mumva, MuonMVAEstimator *muonMVAEstimator, std::vector< Int_t > IdentifiedMu, std::vector< Int_t > IdentifiedEle)
static const cuts_t electronSelectionFO_el_smurf_v2
std::vector< float > & vtxs_sumpt()
std::vector< float > & mus_iso03_emEt()
std::vector< LorentzVector > & els_trk_p4()
bool passMinMet(HWW &, int)
std::vector< int > & mus_type()
bool passZVeto(HWW &, int)
bool isGoodVertex(HWW &hww, int)
std::vector< int > & hyp_ll_index()