Skip to content

Commit cc45304

Browse files
authored
Merge pull request #76 from jkarancs/80X_AddEleMVAs_FixUncorrSDMass
Add ele MVA IDs, fix uncorrSDMass
2 parents 342577b + d29a3fb commit cc45304

File tree

4 files changed

+73
-19
lines changed

4 files changed

+73
-19
lines changed

python/b2gedmntuples_cff.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -746,9 +746,18 @@
746746
tag = cms.untracked.string("tau3Puppi"),
747747
quantity = cms.untracked.string("userFloat('ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau3')")
748748
),
749+
# Uncorrected SD mass used for W tagging (needs additional W specific GEN/RECO corrections)
750+
# https://twiki.cern.ch/twiki/bin/view/CMS/JetWtagging?rev=54#Working_points_and_scale_factors
751+
# --> https://github.com/cms-jet/PuppiSoftdropMassCorr/#get-uncorrected-puppi-soft-drop-mass-from-miniaod
749752
cms.PSet(
750-
tag = cms.untracked.string("uncorrSDMassAK8Puppi"),
751-
quantity = cms.untracked.string("? hasUserFloat('subjetSumMassSoftDropPuppi') ? userFloat('subjetSumMassSoftDropPuppi') : -999 ")
753+
tag = cms.untracked.string("uncorrSDMassPuppi"),
754+
quantity = cms.untracked.string("? hasUserFloat('uncorrSDMassPuppi') ? userFloat('uncorrSDMassPuppi') : -999 ")
755+
),
756+
# Corrected (L1L2L3 applied on subjets) SD mass used for top tagging
757+
# https://twiki.cern.ch/twiki/bin/view/CMS/JetTopTagging?rev=14#13_TeV_working_points_CMSSW_8_0
758+
cms.PSet(
759+
tag = cms.untracked.string("corrSDMassPuppi"),
760+
quantity = cms.untracked.string("? hasUserFloat('corrSDMassPuppi') ? userFloat('corrSDMassPuppi') : -999 ")
752761
),
753762
)
754763

@@ -1042,6 +1051,22 @@
10421051
tag = cms.untracked.string("vidHEEPnoiso"),
10431052
quantity = cms.untracked.string("userFloat('vidHEEPnoiso')")
10441053
),
1054+
cms.PSet(
1055+
tag = cms.untracked.string("vidMvaGPvalue"),
1056+
quantity = cms.untracked.string("userFloat('vidMvaGPvalue')")
1057+
),
1058+
cms.PSet(
1059+
tag = cms.untracked.string("vidMvaGPcateg"),
1060+
quantity = cms.untracked.string("userInt('vidMvaGPcateg')")
1061+
),
1062+
cms.PSet(
1063+
tag = cms.untracked.string("vidMvaHZZvalue"),
1064+
quantity = cms.untracked.string("userFloat('vidMvaHZZvalue')")
1065+
),
1066+
cms.PSet(
1067+
tag = cms.untracked.string("vidMvaHZZcateg"),
1068+
quantity = cms.untracked.string("userInt('vidMvaHZZcateg')")
1069+
),
10451070
)
10461071

10471072

src/BoostedJetToolboxUserData.cc

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,27 @@ void BoostedJetToolboxUserData::produce( edm::Event& iEvent, const edm::EventSet
8383

8484
pat::Jet & jet = (*jetColl)[i];
8585

86+
float min_dR = 999, uncorrSDMass = -999, corrSDMass = -999;
8687
for ( auto const & puppiSDJet : *puppiSDjetHandle ) {
8788

88-
float temp_dR2 = reco::deltaR2(jet.eta(),jet.phi(),puppiSDJet.eta(),puppiSDJet.phi());
89-
if ( temp_dR2 < distMax_ ) {
90-
89+
float temp_dR = reco::deltaR(jet.eta(),jet.phi(),puppiSDJet.eta(),puppiSDJet.phi());
90+
if ( temp_dR < distMax_ && temp_dR < min_dR ) {
91+
min_dR = temp_dR;
9192
TLorentzVector puppi_softdrop, puppi_softdrop_subjet;
92-
auto const & sbSubjetsPuppi = puppiSDJet.subjets("SoftDrop");
93+
TLorentzVector puppi_softdrop_corr, puppi_softdrop_subjet_corr;
94+
auto const & sbSubjetsPuppi = puppiSDJet.subjets("SoftDropPuppi");
9395
for ( auto const & it : sbSubjetsPuppi ) {
94-
puppi_softdrop_subjet.SetPtEtaPhiM(it->pt(),it->eta(),it->phi(),it->mass());
96+
puppi_softdrop_subjet.SetPtEtaPhiM(it->correctedP4(0).pt(),it->correctedP4(0).eta(),it->correctedP4(0).phi(),it->correctedP4(0).mass());
9597
puppi_softdrop+=puppi_softdrop_subjet;
98+
puppi_softdrop_subjet_corr.SetPtEtaPhiM(it->pt(),it->eta(),it->phi(),it->mass());
99+
puppi_softdrop_corr+=puppi_softdrop_subjet_corr;
96100
}
97-
jet.addUserFloat("subjetSumMassSoftDropPuppi", puppi_softdrop.M() );
101+
uncorrSDMass = puppi_softdrop.M();
102+
corrSDMass = puppi_softdrop_corr.M();
98103
}
99104
}
105+
jet.addUserFloat("uncorrSDMassPuppi", uncorrSDMass );
106+
jet.addUserFloat("corrSDMassPuppi", corrSDMass );
100107

101108

102109
for ( auto const & jetWithSubjet : *jetWithSubjetHandle ) {

src/ElectronUserData.cc

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ class ElectronUserData : public edm::EDProducer {
6868
edm::EDGetTokenT<edm::ValueMap<vid::CutFlowResult> > eleMediumIdFullInfoMapToken_;
6969
edm::EDGetTokenT<edm::ValueMap<vid::CutFlowResult> > eleTightIdFullInfoMapToken_;
7070
edm::EDGetTokenT<edm::ValueMap<vid::CutFlowResult> > electronHEEPIdMapToken_;
71-
edm::EDGetTokenT<edm::ValueMap<float> > electronMVAIdMapToken_;
71+
edm::EDGetTokenT<edm::ValueMap<float> > electronGPMvaValueMapToken_;
72+
edm::EDGetTokenT<edm::ValueMap<int> > electronGPMvaCatMapToken_;
73+
edm::EDGetTokenT<edm::ValueMap<float> > electronHZZMvaValueMapToken_;
74+
edm::EDGetTokenT<edm::ValueMap<int> > electronHZZMvaCatMapToken_;
7275

7376
bool verboseIdFlag_;
7477

@@ -99,7 +102,10 @@ ElectronUserData::ElectronUserData(const edm::ParameterSet& iConfig):
99102
eleMediumIdFullInfoMapToken_(consumes<edm::ValueMap<vid::CutFlowResult> >(iConfig.getParameter<edm::InputTag>("eleMediumIdFullInfoMap"))),
100103
eleTightIdFullInfoMapToken_(consumes<edm::ValueMap<vid::CutFlowResult> >(iConfig.getParameter<edm::InputTag>("eleTightIdFullInfoMap"))),
101104
electronHEEPIdMapToken_(consumes<edm::ValueMap<vid::CutFlowResult> >(iConfig.getParameter<edm::InputTag>("eleHEEPIdFullInfoMap"))),
102-
electronMVAIdMapToken_(consumes<edm::ValueMap<float> >(iConfig.getParameter<edm::InputTag>("eleMVAIdValue"))),
105+
electronGPMvaValueMapToken_(consumes<edm::ValueMap<float> >(iConfig.getParameter<edm::InputTag>("eleGPMvaValueMap"))),
106+
electronGPMvaCatMapToken_(consumes<edm::ValueMap<int> >(iConfig.getParameter<edm::InputTag>("eleGPMvaCatMap"))),
107+
electronHZZMvaValueMapToken_(consumes<edm::ValueMap<float> >(iConfig.getParameter<edm::InputTag>("eleHZZMvaValueMap"))),
108+
electronHZZMvaCatMapToken_(consumes<edm::ValueMap<int> >(iConfig.getParameter<edm::InputTag>("eleHZZMvaCatMap"))),
103109
verboseIdFlag_(iConfig.getParameter<bool>("eleIdVerbose"))
104110
{
105111
debug_ = iConfig.getUntrackedParameter<int>("debugLevel",int(0));
@@ -156,12 +162,19 @@ void ElectronUserData::produce( edm::Event& iEvent, const edm::EventSetup& iSetu
156162
edm::Handle<edm::ValueMap<vid::CutFlowResult> > tight_id_cutflow_data;
157163
edm::Handle<edm::ValueMap<vid::CutFlowResult> > heep_id_cutflow_data;
158164
edm::Handle<edm::ValueMap<float> > mva_id_data;
159-
iEvent.getByToken(eleVetoIdFullInfoMapToken_,veto_id_cutflow_data);
165+
edm::Handle<edm::ValueMap<float> > GPMva_values;
166+
edm::Handle<edm::ValueMap<int> > GPMva_cats;
167+
edm::Handle<edm::ValueMap<float> > HZZMva_values;
168+
edm::Handle<edm::ValueMap<int> > HZZMva_cats;
169+
iEvent.getByToken(eleVetoIdFullInfoMapToken_,veto_id_cutflow_data);
160170
iEvent.getByToken(eleLooseIdFullInfoMapToken_,loose_id_cutflow_data);
161171
iEvent.getByToken(eleMediumIdFullInfoMapToken_,medium_id_cutflow_data);
162172
iEvent.getByToken(eleTightIdFullInfoMapToken_,tight_id_cutflow_data);
163173
iEvent.getByToken(electronHEEPIdMapToken_,heep_id_cutflow_data);
164-
iEvent.getByToken(electronMVAIdMapToken_,mva_id_data);
174+
iEvent.getByToken(electronGPMvaValueMapToken_, GPMva_values);
175+
iEvent.getByToken(electronGPMvaCatMapToken_, GPMva_cats);
176+
iEvent.getByToken(electronHZZMvaValueMapToken_, HZZMva_values);
177+
iEvent.getByToken(electronHZZMvaCatMapToken_, HZZMva_cats);
165178
//passVetoId_.clear();
166179
//passTightId_.clear();
167180

@@ -268,8 +281,11 @@ void ElectronUserData::produce( edm::Event& iEvent, const edm::EventSetup& iSetu
268281
bool vidTight = (*tight_id_cutflow_data)[ elPtr ].cutFlowPassed();
269282
bool vidHEEP = (*heep_id_cutflow_data)[ elPtr ].cutFlowPassed();
270283

271-
float mvaval = (*mva_id_data)[ elPtr ];
272-
// if(mvaval > 0.1 ) cout<<"true ele "<<mvaval<<endl;
284+
float gp_mva_val = (*GPMva_values)[ elPtr ];
285+
int gp_mva_cat = (*GPMva_cats)[ elPtr ];
286+
float hzz_mva_val = (*HZZMva_values)[ elPtr ];
287+
int hzz_mva_cat = (*HZZMva_cats)[ elPtr ];
288+
// if(gp_mva_val > 0.1 ) cout<<"true ele "<<mvaval<<endl;
273289

274290

275291

@@ -334,7 +350,10 @@ void ElectronUserData::produce( edm::Event& iEvent, const edm::EventSetup& iSetu
334350
el.addUserFloat("vidMediumnoiso", vidMedium_noiso );
335351
el.addUserFloat("vidTightnoiso", vidTight_noiso );
336352
el.addUserFloat("vidHEEPnoiso", vidHEEP_noiso );
337-
el.addUserFloat("mvaIDvalue", mvaval);
353+
el.addUserFloat("vidMvaGPvalue", gp_mva_val);
354+
el.addUserInt ("vidMvaGPcateg", gp_mva_cat);
355+
el.addUserFloat("vidMvaHZZvalue", hzz_mva_val);
356+
el.addUserInt ("vidMvaHZZcateg", hzz_mva_cat);
338357
}
339358

340359
iEvent.put( eleColl );

test/b2gedmntuples_cfg.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@
130130
print "!!!!WARNING: You have chosen globalTag as", options.globalTag, ". Please check if this corresponds to your dataset."
131131
else:
132132
if options.DataProcessing=="Data_80X_Run2016H_03Feb2017":
133-
options.globalTag="80X_dataRun2_Prompt_v15"
133+
options.globalTag="80X_dataRun2_Prompt_v16"
134134
elif options.DataProcessing in [
135135
'Data_80X_Run2016BCD_03Feb2017',
136136
'Data_80X_Run2016EF_03Feb2017',
@@ -172,7 +172,7 @@
172172
triggerSummaryLabel = "hltTriggerSummaryAOD"
173173
hltElectronFilterLabel = "hltL1sL1Mu3p5EG12ORL1MuOpenEG12L3Filtered8"
174174

175-
if "MC" in options.DataProcessing:
175+
if "MC" in options.DataProcessing or "03Feb2017" in options.DataProcessing:
176176
metProcess = "PAT"
177177
else:
178178
metProcess = "RECO"
@@ -239,7 +239,7 @@
239239
iovStart = 278802
240240
iovEnd = 280385
241241
elif options.DataProcessing=="MC_MiniAODv2_80X_Summer16":
242-
jec_era = "Summer16_03Feb2017V4_MC"
242+
jec_era = "Summer16_23Sep2016V4_MC"
243243
elif options.DataProcessing=="MC_MiniAODv2_80X_FastSim":
244244
jec_era = "Spring16_25nsFastSimMC_V1"
245245
else:
@@ -823,7 +823,10 @@
823823
eleMediumIdFullInfoMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium"),
824824
eleTightIdFullInfoMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight"),
825825
eleHEEPIdFullInfoMap = cms.InputTag("egmGsfElectronIDs:heepElectronID-HEEPV60"),
826-
eleMVAIdValue = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values"),
826+
eleGPMvaValueMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values"),
827+
eleGPMvaCatMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Categories"),
828+
eleHZZMvaValueMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16HZZV1Values"),
829+
eleHZZMvaCatMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16HZZV1Categories"),
827830
eleIdVerbose = cms.bool(False)
828831
)
829832

0 commit comments

Comments
 (0)