Skip to content

Commit 2e3696f

Browse files
committed
Transfer function remove cuts
1 parent fc1503f commit 2e3696f

3 files changed

Lines changed: 63 additions & 100 deletions

File tree

interface/Types.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ namespace HH {
3434
bool id_M; // Medium
3535
bool id_T; // Tight
3636
bool id_HWW; // HWW-like id
37+
bool passLep1PtCut;
38+
bool passLep2PtCut;
3739
bool iso_L; // Loose
3840
bool iso_T; // Tight
3941
bool iso_HWW;
@@ -140,6 +142,7 @@ namespace HH {
140142
bool btag_L;
141143
bool btag_M;
142144
bool btag_T;
145+
bool passPtCut;
143146
float CSV;
144147
float JP;
145148
float minDR_jet_selLeptons;

plugins/Categories.cc

Lines changed: 8 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,11 @@ const std::vector<HH::DileptonMetDijet>& DileptonCategory::getDileptonMetDijets(
2727
// Dilepton Mu-Mu category
2828
// ***** ***** *****
2929
bool MuMuCategory::event_in_category_pre_analyzers(const ProducersManager& producers) const {
30-
const MuonsProducer& muons = producers.get<MuonsProducer>("muons");
31-
return (muons.p4.size() >= 2);
30+
return true;
3231
};
3332

3433
bool MuMuCategory::event_in_category_post_analyzers(const ProducersManager& producers, const AnalyzersManager& analyzers) const {
35-
const std::vector<HH::Dilepton>& ll = getDileptons(analyzers);
36-
const std::vector<HH::DileptonMetDijet>& llmetjj = getDileptonMetDijets(analyzers);
37-
bool isMuMu = false;
38-
for (unsigned int idilep = 0; idilep < ll.size(); idilep++)
39-
{
40-
if (ll[idilep].isMuMu) isMuMu = true;
41-
}
42-
return (isMuMu && llmetjj.size() > 0);
34+
return true;
4335
};
4436

4537
void MuMuCategory::register_cuts(CutManager& manager) {
@@ -62,19 +54,11 @@ void MuMuCategory::evaluate_cuts_post_analyzers(CutManager& manager, const Produ
6254
// Dilepton El-El category
6355
// ***** ***** *****
6456
bool ElElCategory::event_in_category_pre_analyzers(const ProducersManager& producers) const {
65-
const ElectronsProducer& electrons = producers.get<ElectronsProducer>("electrons");
66-
return (electrons.p4.size() >= 2);
57+
return true;
6758
};
6859

6960
bool ElElCategory::event_in_category_post_analyzers(const ProducersManager& producers, const AnalyzersManager& analyzers) const {
70-
const std::vector<HH::Dilepton>& ll = getDileptons(analyzers);
71-
const std::vector<HH::DileptonMetDijet>& llmetjj = getDileptonMetDijets(analyzers);
72-
bool isElEl = false;
73-
for (unsigned int idilep = 0; idilep < ll.size(); idilep++)
74-
{
75-
if (ll[idilep].isElEl) isElEl = true;
76-
}
77-
return (isElEl && llmetjj.size() > 0);
61+
return true;
7862
};
7963

8064
void ElElCategory::register_cuts(CutManager& manager) {
@@ -95,20 +79,11 @@ void ElElCategory::evaluate_cuts_post_analyzers(CutManager& manager, const Produ
9579
// Dilepton El-Mu category
9680
// ***** ***** *****
9781
bool ElMuCategory::event_in_category_pre_analyzers(const ProducersManager& producers) const {
98-
const ElectronsProducer& electrons = producers.get<ElectronsProducer>("electrons");
99-
const MuonsProducer& muons = producers.get<MuonsProducer>("muons");
100-
return ((electrons.p4.size() + muons.p4.size()) >= 2);
82+
return true;
10183
};
10284

10385
bool ElMuCategory::event_in_category_post_analyzers(const ProducersManager& producers, const AnalyzersManager& analyzers) const {
104-
const std::vector<HH::Dilepton>& ll = getDileptons(analyzers);
105-
const std::vector<HH::DileptonMetDijet>& llmetjj = getDileptonMetDijets(analyzers);
106-
bool isElMu = false;
107-
for (unsigned int idilep = 0; idilep < ll.size(); idilep++)
108-
{
109-
if (ll[idilep].isElMu) isElMu = true;
110-
}
111-
return (isElMu && llmetjj.size() > 0);
86+
return true;
11287
};
11388

11489
void ElMuCategory::register_cuts(CutManager& manager) {
@@ -127,20 +102,11 @@ void ElMuCategory::evaluate_cuts_post_analyzers(CutManager& manager, const Produ
127102
// Dilepton Mu-El category
128103
// ***** ***** *****
129104
bool MuElCategory::event_in_category_pre_analyzers(const ProducersManager& producers) const {
130-
const ElectronsProducer& electrons = producers.get<ElectronsProducer>("electrons");
131-
const MuonsProducer& muons = producers.get<MuonsProducer>("muons");
132-
return ((electrons.p4.size() + muons.p4.size()) >= 2);
105+
return true;
133106
};
134107

135108
bool MuElCategory::event_in_category_post_analyzers(const ProducersManager& producers, const AnalyzersManager& analyzers) const {
136-
const std::vector<HH::Dilepton>& ll = getDileptons(analyzers);
137-
const std::vector<HH::DileptonMetDijet>& llmetjj = getDileptonMetDijets(analyzers);
138-
bool isMuEl = false;
139-
for (unsigned int idilep = 0; idilep < ll.size(); idilep++)
140-
{
141-
if (ll[idilep].isMuEl) isMuEl = true;
142-
}
143-
return (isMuEl && llmetjj.size() > 0);
109+
return true;
144110
};
145111

146112
void MuElCategory::register_cuts(CutManager& manager) {
@@ -154,5 +120,3 @@ void MuElCategory::evaluate_cuts_post_analyzers(CutManager& manager, const Produ
154120
if (path.find("HLT_Mu17_TrkIsoVVL_Ele12_CaloIdL_TrackIdL_IsoVL_v") != std::string::npos) manager.pass_cut("fire_trigger_Mu17_Ele12");
155121
}
156122
}
157-
158-

plugins/HHAnalyzer.cc

Lines changed: 52 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -456,9 +456,12 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
456456
// Electrons
457457
for (unsigned int ielectron = 0; ielectron < allelectrons.p4.size(); ielectron++)
458458
{
459-
if ( !(allelectrons.p4[ielectron].Pt() > m_subleadingElectronPtCut && fabs(allelectrons.p4[ielectron].Eta()) < m_electronEtaCut) )
459+
if ( !(fabs(allelectrons.p4[ielectron].Eta()) < m_electronEtaCut) )
460460
continue;
461+
461462
HH::Lepton ele;
463+
ele.passLep1PtCut = allelectrons.p4[ielectron].Pt() > m_leadingElectronPtCut;
464+
ele.passLep2PtCut = allelectrons.p4[ielectron].Pt() > m_subleadingElectronPtCut;
462465
ele.id_L = allelectrons.ids[ielectron][m_electron_loose_wp_name];
463466
ele.id_M = allelectrons.ids[ielectron][m_electron_medium_wp_name];
464467
ele.id_T = allelectrons.ids[ielectron][m_electron_tight_wp_name];
@@ -481,15 +484,15 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
481484
nElectronsHWW++;
482485
nLeptonsHWW++;
483486
}
484-
if (!(ele.iso_HWW && ele.id_HWW))
485-
continue;
486487
ele.p4 = allelectrons.p4[ielectron];
487488
if (!hlt.paths.empty())
488489
matchOfflineLepton(ele);
489490
ele.charge = allelectrons.charge[ielectron];
490491
ele.idx = ielectron;
491492
ele.isMu = false;
492493
ele.isEl = true;
494+
if (!(ele.iso_HWW && ele.id_HWW))
495+
continue;
493496
// GEN MATCHING
494497
ele.tt_matched = false;
495498
ele.tt_gen_p4 = null_p4;
@@ -535,9 +538,11 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
535538
// Muons
536539
for (unsigned int imuon = 0; imuon < allmuons.p4.size(); imuon++)
537540
{
538-
if (!(allmuons.p4[imuon].Pt() > m_subleadingMuonPtCut && fabs(allmuons.p4[imuon].Eta()) < m_muonEtaCut))
541+
if (!(fabs(allmuons.p4[imuon].Eta()) < m_muonEtaCut))
539542
continue;
540543
HH::Lepton mu;
544+
mu.passLep1PtCut = allmuons.p4[imuon].Pt() > m_leadingMuonPtCut;
545+
mu.passLep2PtCut = allmuons.p4[imuon].Pt() > m_subleadingMuonPtCut;
541546
mu.id_L = allmuons.isLoose[imuon];
542547
mu.id_M = allmuons.isMedium[imuon];
543548
mu.id_T = allmuons.isTight[imuon];
@@ -607,8 +612,6 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
607612
leptons.push_back(mu);
608613
}//end of loop on muons
609614

610-
if (leptons.size() < 2)
611-
return;
612615
nMuons = muons.size();
613616
nLeptons = leptons.size();
614617

@@ -618,8 +621,6 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
618621
// Dileptons
619622
for (unsigned int ilep1 = 0; ilep1 < leptons.size(); ilep1++)
620623
{
621-
if ((leptons[ilep1].isMu && leptons[ilep1].p4.Pt() < m_leadingMuonPtCut) || (leptons[ilep1].isEl && leptons[ilep1].p4.Pt() < m_leadingElectronPtCut))
622-
continue;
623624
for (unsigned int ilep2 = ilep1+1; ilep2 < leptons.size(); ilep2++)
624625
{
625626
HH::Dilepton dilep;
@@ -695,8 +696,6 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
695696
}
696697
}
697698

698-
if (ll.size()<1)
699-
return;
700699
std::sort(ll.begin(), ll.end(), [](const HH::Dilepton& ll1, const HH::Dilepton& ll2) { return ll1.ht_l_l > ll2.ht_l_l; });
701700

702701
// *****
@@ -799,6 +798,7 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
799798
}
800799
}
801800

801+
802802
// *****
803803
// Jets and dijets
804804
// *****
@@ -812,11 +812,11 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
812812
for (unsigned int ijet = 0; ijet < alljets.p4.size(); ijet++)
813813
{
814814
float correctionFactor = m_applyBJetRegression ? alljets.regPt[ijet] / alljets.p4[ijet].Pt() : 1.;
815-
if (!((alljets.p4[ijet].Pt() * correctionFactor > m_jetPtCut)
816-
&& (fabs(alljets.p4[ijet].Eta()) < m_jetEtaCut) && alljets.passLooseID[ijet]))
815+
if (!((fabs(alljets.p4[ijet].Eta()) < m_jetEtaCut) && alljets.passLooseID[ijet]))
817816
continue;
818817

819818
HH::Jet myjet;
819+
myjet.passPtCut = (alljets.p4[ijet].Pt() * correctionFactor > m_jetPtCut);
820820
// Jet veto based on DR with all selected leptons
821821
float DRj_l1 = -1;
822822
float DRj_l2 = -1;
@@ -904,9 +904,6 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
904904
}
905905
nJets = jets.size();
906906

907-
if (nJets < 2)
908-
return;
909-
910907
jj.clear();
911908

912909
for (unsigned int ijet1 = 0; ijet1 < jets.size(); ijet1++)
@@ -1124,9 +1121,6 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
11241121
llmetjj.push_back(myllmetjj);
11251122
}
11261123
}
1127-
if (!llmetjj.size()>0)
1128-
return;
1129-
11301124
// Different llmetjj candidate
11311125
// PT ORDERED asking the first two jets to be b-tagged
11321126
llmetjj_HWWleptons_nobtag_pt.clear();
@@ -1136,45 +1130,47 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
11361130
llmetjj_HWWleptons_btagML_pt.clear();
11371131
llmetjj_HWWleptons_btagT_pt.clear();
11381132

1139-
auto llmetjj_cand = llmetjj.at(0);
1140-
llmetjj_HWWleptons_nobtag_pt.push_back(llmetjj_cand);
1141-
if (llmetjj_cand.btag_LL)
1142-
llmetjj_HWWleptons_btagL_pt.push_back(llmetjj_cand);
1143-
if (llmetjj_cand.btag_MM)
1144-
llmetjj_HWWleptons_btagM_pt.push_back(llmetjj_cand);
1145-
if (llmetjj_cand.btag_ML || llmetjj_cand.btag_LM)
1146-
llmetjj_HWWleptons_btagML_pt.push_back(llmetjj_cand);
1147-
if (llmetjj_cand.btag_MT || llmetjj_cand.btag_TM)
1148-
llmetjj_HWWleptons_btagMT_pt.push_back(llmetjj_cand);
1149-
if (llmetjj_cand.btag_TT)
1150-
llmetjj_HWWleptons_btagT_pt.push_back(llmetjj_cand);
1151-
// PT ORDERED asking at least two jets to be b-tagged
1152-
for (auto llmetjj_cand_incl : llmetjj){
1153-
if (llmetjj_cand_incl.btag_MM && llmetjj_HWWleptons_btagM_pt_inclusive.size() == 0)
1154-
llmetjj_HWWleptons_btagM_pt_inclusive.push_back(llmetjj_cand_incl);
1155-
}
1133+
if (llmetjj.size()>0) {
1134+
auto llmetjj_cand = llmetjj.at(0);
1135+
llmetjj_HWWleptons_nobtag_pt.push_back(llmetjj_cand);
1136+
if (llmetjj_cand.btag_LL)
1137+
llmetjj_HWWleptons_btagL_pt.push_back(llmetjj_cand);
1138+
if (llmetjj_cand.btag_MM)
1139+
llmetjj_HWWleptons_btagM_pt.push_back(llmetjj_cand);
1140+
if (llmetjj_cand.btag_ML || llmetjj_cand.btag_LM)
1141+
llmetjj_HWWleptons_btagML_pt.push_back(llmetjj_cand);
1142+
if (llmetjj_cand.btag_MT || llmetjj_cand.btag_TM)
1143+
llmetjj_HWWleptons_btagMT_pt.push_back(llmetjj_cand);
1144+
if (llmetjj_cand.btag_TT)
1145+
llmetjj_HWWleptons_btagT_pt.push_back(llmetjj_cand);
1146+
// PT ORDERED asking at least two jets to be b-tagged
1147+
for (auto llmetjj_cand_incl : llmetjj){
1148+
if (llmetjj_cand_incl.btag_MM && llmetjj_HWWleptons_btagM_pt_inclusive.size() == 0)
1149+
llmetjj_HWWleptons_btagM_pt_inclusive.push_back(llmetjj_cand_incl);
1150+
}
11561151

1157-
// CSV ORDERED
1158-
std::sort(llmetjj.begin(), llmetjj.end(), [](const HH::DileptonMetDijet& llmetjj1, const HH::DileptonMetDijet& llmetjj2) { return llmetjj1.sumCSV > llmetjj2.sumCSV; });
1159-
llmetjj_HWWleptons_nobtag_csv.clear();
1160-
llmetjj_HWWleptons_btagL_csv.clear();
1161-
llmetjj_HWWleptons_btagM_csv.clear();
1162-
llmetjj_HWWleptons_btagMT_csv.clear();
1163-
llmetjj_HWWleptons_btagML_csv.clear();
1164-
llmetjj_HWWleptons_btagT_csv.clear();
1165-
1166-
llmetjj_HWWleptons_nobtag_csv.push_back(llmetjj.at(0));
1167-
for (auto llmetjj_cand : llmetjj){
1168-
if (llmetjj_cand.btag_LL && llmetjj_HWWleptons_btagL_csv.size()==0)
1169-
llmetjj_HWWleptons_btagL_csv.push_back(llmetjj_cand);
1170-
if (llmetjj_cand.btag_MM && llmetjj_HWWleptons_btagM_csv.size()==0)
1171-
llmetjj_HWWleptons_btagM_csv.push_back(llmetjj_cand);
1172-
if ((llmetjj_cand.btag_ML || llmetjj_cand.btag_LM) && llmetjj_HWWleptons_btagML_pt.size()==0)
1173-
llmetjj_HWWleptons_btagML_csv.push_back(llmetjj_cand);
1174-
if ((llmetjj_cand.btag_MT || llmetjj_cand.btag_TM) && llmetjj_HWWleptons_btagMT_pt.size()==0)
1175-
llmetjj_HWWleptons_btagMT_csv.push_back(llmetjj_cand);
1176-
if (llmetjj_cand.btag_TT && llmetjj_HWWleptons_btagT_pt.size()==0)
1177-
llmetjj_HWWleptons_btagT_csv.push_back(llmetjj_cand);
1152+
// CSV ORDERED
1153+
std::sort(llmetjj.begin(), llmetjj.end(), [](const HH::DileptonMetDijet& llmetjj1, const HH::DileptonMetDijet& llmetjj2) { return llmetjj1.sumCSV > llmetjj2.sumCSV; });
1154+
llmetjj_HWWleptons_nobtag_csv.clear();
1155+
llmetjj_HWWleptons_btagL_csv.clear();
1156+
llmetjj_HWWleptons_btagM_csv.clear();
1157+
llmetjj_HWWleptons_btagMT_csv.clear();
1158+
llmetjj_HWWleptons_btagML_csv.clear();
1159+
llmetjj_HWWleptons_btagT_csv.clear();
1160+
1161+
llmetjj_HWWleptons_nobtag_csv.push_back(llmetjj.at(0));
1162+
for (auto llmetjj_cand : llmetjj){
1163+
if (llmetjj_cand.btag_LL && llmetjj_HWWleptons_btagL_csv.size()==0)
1164+
llmetjj_HWWleptons_btagL_csv.push_back(llmetjj_cand);
1165+
if (llmetjj_cand.btag_MM && llmetjj_HWWleptons_btagM_csv.size()==0)
1166+
llmetjj_HWWleptons_btagM_csv.push_back(llmetjj_cand);
1167+
if ((llmetjj_cand.btag_ML || llmetjj_cand.btag_LM) && llmetjj_HWWleptons_btagML_pt.size()==0)
1168+
llmetjj_HWWleptons_btagML_csv.push_back(llmetjj_cand);
1169+
if ((llmetjj_cand.btag_MT || llmetjj_cand.btag_TM) && llmetjj_HWWleptons_btagMT_pt.size()==0)
1170+
llmetjj_HWWleptons_btagMT_csv.push_back(llmetjj_cand);
1171+
if (llmetjj_cand.btag_TT && llmetjj_HWWleptons_btagT_pt.size()==0)
1172+
llmetjj_HWWleptons_btagT_csv.push_back(llmetjj_cand);
1173+
}
11781174
}
11791175

11801176
count_has2leptons += tmp_count_has2leptons;

0 commit comments

Comments
 (0)