87 |
|
UInt_t ExpectedNBins = 0; |
88 |
|
if (!fUseBinnedVersion) { |
89 |
|
ExpectedNBins = 1; |
90 |
< |
} else if (type == kV2 |
90 |
> |
} else if (type == kV2 |
91 |
|
|| type == kV3 |
92 |
|
|| type == kV8 |
93 |
|
|| type == kIDIsoCombinedDetIso |
96 |
|
|| type == kIDIsoCombinedIsoRingsV0 |
97 |
|
) { |
98 |
|
ExpectedNBins = 6; |
99 |
< |
} |
99 |
> |
} else if (type == kIsoDeltaR){ |
100 |
> |
ExpectedNBins = 4; |
101 |
> |
} |
102 |
> |
|
103 |
|
fNMVABins = ExpectedNBins; |
104 |
|
|
105 |
|
//Check number of weight files given |
233 |
|
tmpTMVAReader->AddVariable( "NeutralHadronIso_DR0p3To0p4", &fMVAVar_NeutralHadronIso_DR0p3To0p4 ); |
234 |
|
tmpTMVAReader->AddVariable( "NeutralHadronIso_DR0p4To0p5", &fMVAVar_NeutralHadronIso_DR0p4To0p5 ); |
235 |
|
} |
236 |
+ |
|
237 |
+ |
if (type == kIsoDeltaR) { |
238 |
+ |
tmpTMVAReader->AddVariable("PFCharged", &fMVAVar_MuRelIsoPFCharged ); |
239 |
+ |
tmpTMVAReader->AddVariable("PFNeutral", &fMVAVar_MuRelIsoPFNeutral ); |
240 |
+ |
tmpTMVAReader->AddVariable("PFPhotons", &fMVAVar_MuRelIsoPFPhotons ); |
241 |
+ |
tmpTMVAReader->AddVariable("SumDeltaR", &fMVAVar_MuDeltaRSum ); |
242 |
+ |
tmpTMVAReader->AddVariable("DeltaRMean", &fMVAVar_MuDeltaRMean ); |
243 |
+ |
tmpTMVAReader->AddVariable("Density", &fMVAVar_MuDensity ); |
244 |
+ |
} |
245 |
|
|
246 |
|
tmpTMVAReader->BookMVA(fMethodname , weightsfiles[i] ); |
247 |
|
std::cout << "MVABin " << i << " : MethodName = " << fMethodname |
293 |
|
} |
294 |
|
} |
295 |
|
|
296 |
+ |
if (fMVAType == MuonIDMVA::kIsoDeltaR){ |
297 |
+ |
if (pt < 20 && fabs(eta) < 1.479) bin = 0; |
298 |
+ |
if (pt < 20 && fabs(eta) >= 1.479) bin = 1; |
299 |
+ |
if (pt >= 20 && fabs(eta) < 1.479) bin = 2; |
300 |
+ |
if (pt >= 20 && fabs(eta) >= 1.479) bin = 3; |
301 |
+ |
} |
302 |
+ |
|
303 |
|
return bin; |
304 |
|
} |
305 |
|
|
850 |
|
Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0; |
851 |
|
Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0; |
852 |
|
|
853 |
+ |
Double_t tmpMuDeltaRMean = 0; |
854 |
+ |
Double_t tmpMuDeltaRSum = 0; |
855 |
+ |
Double_t tmpMuDensity = 0; |
856 |
+ |
Double_t tmpMuNPFCand = 0; |
857 |
+ |
|
858 |
|
for (UInt_t p=0; p<PFCands->GetEntries();p++) { |
859 |
|
const PFCandidate *pf = PFCands->At(p); |
860 |
|
|
872 |
|
//************************************************************ |
873 |
|
// Lepton Footprint Removal |
874 |
|
//************************************************************ |
875 |
< |
for (UInt_t q=0; q < goodElectrons->GetEntries() ; ++q) { |
876 |
< |
//if pf candidate matches an electron passing ID cuts, then veto it |
877 |
< |
if(pf->GsfTrk() && goodElectrons->At(q)->GsfTrk() && |
878 |
< |
pf->GsfTrk() == goodElectrons->At(q)->GsfTrk()) IsLeptonFootprint = kTRUE; |
879 |
< |
if(pf->TrackerTrk() && goodElectrons->At(q)->TrackerTrk() && |
880 |
< |
pf->TrackerTrk() == goodElectrons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE; |
881 |
< |
//if pf candidate lies in veto regions of electron passing ID cuts, then veto it |
882 |
< |
if(pf->BestTrk() && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 |
883 |
< |
&& MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.015) IsLeptonFootprint = kTRUE; |
884 |
< |
if(pf->PFType() == PFCandidate::eGamma && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 && |
885 |
< |
MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.08) IsLeptonFootprint = kTRUE; |
875 |
> |
if(goodElectrons) { |
876 |
> |
for (UInt_t q=0; q < goodElectrons->GetEntries() ; ++q) { |
877 |
> |
//if pf candidate matches an electron passing ID cuts, then veto it |
878 |
> |
if(pf->GsfTrk() && goodElectrons->At(q)->GsfTrk() && |
879 |
> |
pf->GsfTrk() == goodElectrons->At(q)->GsfTrk()) IsLeptonFootprint = kTRUE; |
880 |
> |
if(pf->TrackerTrk() && goodElectrons->At(q)->TrackerTrk() && |
881 |
> |
pf->TrackerTrk() == goodElectrons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE; |
882 |
> |
//if pf candidate lies in veto regions of electron passing ID cuts, then veto it |
883 |
> |
if(pf->BestTrk() && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 |
884 |
> |
&& MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.015) IsLeptonFootprint = kTRUE; |
885 |
> |
if(pf->PFType() == PFCandidate::eGamma && fabs(goodElectrons->At(q)->SCluster()->Eta()) >= 1.479 && |
886 |
> |
MathUtils::DeltaR(goodElectrons->At(q)->Mom(), pf->Mom()) < 0.08) IsLeptonFootprint = kTRUE; |
887 |
> |
} |
888 |
|
} |
889 |
< |
for (UInt_t q=0; q < goodMuons->GetEntries() ; ++q) { |
890 |
< |
//if pf candidate matches an muon passing ID cuts, then veto it |
891 |
< |
if(pf->TrackerTrk() && goodMuons->At(q)->TrackerTrk() && |
892 |
< |
pf->TrackerTrk() == goodMuons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE; |
893 |
< |
//if pf candidate lies in veto regions of muon passing ID cuts, then veto it |
894 |
< |
if(pf->BestTrk() && MathUtils::DeltaR(goodMuons->At(q)->Mom(), pf->Mom()) < 0.01) IsLeptonFootprint = kTRUE; |
889 |
> |
if(goodMuons) { |
890 |
> |
for (UInt_t q=0; q < goodMuons->GetEntries() ; ++q) { |
891 |
> |
//if pf candidate matches an muon passing ID cuts, then veto it |
892 |
> |
if(pf->TrackerTrk() && goodMuons->At(q)->TrackerTrk() && |
893 |
> |
pf->TrackerTrk() == goodMuons->At(q)->TrackerTrk()) IsLeptonFootprint = kTRUE; |
894 |
> |
//if pf candidate lies in veto regions of muon passing ID cuts, then veto it |
895 |
> |
if(pf->BestTrk() && MathUtils::DeltaR(goodMuons->At(q)->Mom(), pf->Mom()) < 0.01) IsLeptonFootprint = kTRUE; |
896 |
> |
} |
897 |
|
} |
898 |
|
|
899 |
|
if (!IsLeptonFootprint) { |
933 |
|
if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += pf->Pt(); |
934 |
|
if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += pf->Pt(); |
935 |
|
} |
936 |
+ |
|
937 |
+ |
if (dr < 0.5) { |
938 |
+ |
tmpMuNPFCand++; |
939 |
+ |
tmpMuDeltaRMean += dr; |
940 |
+ |
tmpMuDeltaRSum += dr; |
941 |
+ |
tmpMuDensity += pf->Pt() / dr; |
942 |
+ |
} |
943 |
|
} //not lepton footprint |
944 |
|
} //in 1.0 dr cone |
945 |
|
} //loop over PF candidates |
946 |
|
|
947 |
< |
Double_t fMVAVar_ChargedIso_DR0p0To0p1 = 0; |
948 |
< |
Double_t fMVAVar_ChargedIso_DR0p1To0p2 = 0; |
949 |
< |
Double_t fMVAVar_ChargedIso_DR0p2To0p3 = 0; |
950 |
< |
Double_t fMVAVar_ChargedIso_DR0p3To0p4 = 0; |
951 |
< |
Double_t fMVAVar_ChargedIso_DR0p4To0p5 = 0; |
952 |
< |
Double_t fMVAVar_GammaIso_DR0p0To0p1 = 0; |
953 |
< |
Double_t fMVAVar_GammaIso_DR0p1To0p2 = 0; |
954 |
< |
Double_t fMVAVar_GammaIso_DR0p2To0p3 = 0; |
955 |
< |
Double_t fMVAVar_GammaIso_DR0p3To0p4 = 0; |
956 |
< |
Double_t fMVAVar_GammaIso_DR0p4To0p5 = 0; |
957 |
< |
Double_t fMVAVar_NeutralHadronIso_DR0p0To0p1 = 0; |
958 |
< |
Double_t fMVAVar_NeutralHadronIso_DR0p1To0p2 = 0; |
959 |
< |
Double_t fMVAVar_NeutralHadronIso_DR0p2To0p3 = 0; |
960 |
< |
Double_t fMVAVar_NeutralHadronIso_DR0p3To0p4 = 0; |
961 |
< |
Double_t fMVAVar_NeutralHadronIso_DR0p4To0p5 = 0; |
947 |
> |
// Double_t fMVAVar_ChargedIso_DR0p0To0p1 = 0; |
948 |
> |
// Double_t fMVAVar_ChargedIso_DR0p1To0p2 = 0; |
949 |
> |
// Double_t fMVAVar_ChargedIso_DR0p2To0p3 = 0; |
950 |
> |
// Double_t fMVAVar_ChargedIso_DR0p3To0p4 = 0; |
951 |
> |
// Double_t fMVAVar_ChargedIso_DR0p4To0p5 = 0; |
952 |
> |
// Double_t fMVAVar_GammaIso_DR0p0To0p1 = 0; |
953 |
> |
// Double_t fMVAVar_GammaIso_DR0p1To0p2 = 0; |
954 |
> |
// Double_t fMVAVar_GammaIso_DR0p2To0p3 = 0; |
955 |
> |
// Double_t fMVAVar_GammaIso_DR0p3To0p4 = 0; |
956 |
> |
// Double_t fMVAVar_GammaIso_DR0p4To0p5 = 0; |
957 |
> |
// Double_t fMVAVar_NeutralHadronIso_DR0p0To0p1 = 0; |
958 |
> |
// Double_t fMVAVar_NeutralHadronIso_DR0p1To0p2 = 0; |
959 |
> |
// Double_t fMVAVar_NeutralHadronIso_DR0p2To0p3 = 0; |
960 |
> |
// Double_t fMVAVar_NeutralHadronIso_DR0p3To0p4 = 0; |
961 |
> |
// Double_t fMVAVar_NeutralHadronIso_DR0p4To0p5 = 0; |
962 |
|
|
963 |
< |
fMVAVar_ChargedIso_DR0p0To0p1 = TMath::Min((tmpChargedIso_DR0p0To0p1)/mu->Pt(), 2.5); |
964 |
< |
fMVAVar_ChargedIso_DR0p1To0p2 = TMath::Min((tmpChargedIso_DR0p1To0p2)/mu->Pt(), 2.5); |
963 |
> |
fMVAVar_ChargedIso_DR0p0To0p1 = TMath::Min((tmpChargedIso_DR0p0To0p1)/mu->Pt(), 2.5); |
964 |
> |
fMVAVar_ChargedIso_DR0p1To0p2 = TMath::Min((tmpChargedIso_DR0p1To0p2)/mu->Pt(), 2.5); |
965 |
|
fMVAVar_ChargedIso_DR0p2To0p3 = TMath::Min((tmpChargedIso_DR0p2To0p3)/mu->Pt(), 2.5); |
966 |
|
fMVAVar_ChargedIso_DR0p3To0p4 = TMath::Min((tmpChargedIso_DR0p3To0p4)/mu->Pt(), 2.5); |
967 |
|
fMVAVar_ChargedIso_DR0p4To0p5 = TMath::Min((tmpChargedIso_DR0p4To0p5)/mu->Pt(), 2.5); |
975 |
|
fMVAVar_NeutralHadronIso_DR0p2To0p3 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p2To0p3 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p2To0p3, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
976 |
|
fMVAVar_NeutralHadronIso_DR0p3To0p4 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p3To0p4 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p3To0p4, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
977 |
|
fMVAVar_NeutralHadronIso_DR0p4To0p5 = TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p4To0p5 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p4To0p5, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
943 |
– |
|
978 |
|
|
979 |
+ |
// Variables for dR MVA |
980 |
+ |
fMVAVar_MuRelIsoPFCharged = 0.; |
981 |
+ |
fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p0To0p1)/mu->Pt(), 2.5); |
982 |
+ |
fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p1To0p2)/mu->Pt(), 2.5); |
983 |
+ |
fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p2To0p3)/mu->Pt(), 2.5); |
984 |
+ |
fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p3To0p4)/mu->Pt(), 2.5); |
985 |
+ |
fMVAVar_MuRelIsoPFCharged += TMath::Min((tmpChargedIso_DR0p4To0p5)/mu->Pt(), 2.5); |
986 |
+ |
|
987 |
+ |
fMVAVar_MuRelIsoPFNeutral = 0.; |
988 |
+ |
fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p0To0p1 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p0To0p1, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
989 |
+ |
fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p1To0p2 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p1To0p2, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
990 |
+ |
fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p2To0p3 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p2To0p3, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
991 |
+ |
fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p3To0p4 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p3To0p4, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
992 |
+ |
fMVAVar_MuRelIsoPFNeutral += TMath::Max(TMath::Min((tmpNeutralHadronIso_DR0p4To0p5 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuNeutralHadronIsoDR0p4To0p5, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
993 |
+ |
|
994 |
+ |
fMVAVar_MuRelIsoPFPhotons = 0.; |
995 |
+ |
fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p0To0p1 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p0To0p1, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
996 |
+ |
fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p1To0p2 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p1To0p2, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
997 |
+ |
fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p2To0p3 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p2To0p3, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
998 |
+ |
fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p3To0p4 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p3To0p4, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
999 |
+ |
fMVAVar_MuRelIsoPFPhotons += TMath::Max(TMath::Min((tmpGammaIso_DR0p4To0p5 - Rho*MuonTools::MuonEffectiveArea(MuonTools::kMuGammaIsoDR0p4To0p5, mu->Eta(), EffectiveAreaTarget))/mu->Pt(), 2.5), 0.0); |
1000 |
+ |
|
1001 |
+ |
fMVAVar_MuDeltaRMean = tmpMuDeltaRMean/TMath::Max(1.0,tmpMuNPFCand); |
1002 |
+ |
fMVAVar_MuDeltaRSum = tmpMuDeltaRSum; |
1003 |
+ |
fMVAVar_MuDensity = tmpMuDensity; |
1004 |
|
|
1005 |
|
Double_t mva = -9999; |
1006 |
|
TMVA::Reader *reader = 0; |
1034 |
|
<< " MuHadS9Energy " << fMVAVar_MuHadS9Energy |
1035 |
|
<< " MuEmS9Energy " << fMVAVar_MuEmS9Energy |
1036 |
|
<< " eta " << fMVAVar_MuEta |
1037 |
< |
<< " pt " << fMVAVar_MuPt << std::endl; |
1038 |
< |
|
1037 |
> |
<< " pt " << fMVAVar_MuPt |
1038 |
> |
<< " isoInfo: "; |
1039 |
|
std::cout << fMVAVar_ChargedIso_DR0p0To0p1 << " " |
1040 |
|
<< fMVAVar_ChargedIso_DR0p1To0p2 << " " |
1041 |
|
<< fMVAVar_ChargedIso_DR0p2To0p3 << " " |
1050 |
|
<< fMVAVar_NeutralHadronIso_DR0p1To0p2 << " " |
1051 |
|
<< fMVAVar_NeutralHadronIso_DR0p2To0p3 << " " |
1052 |
|
<< fMVAVar_NeutralHadronIso_DR0p3To0p4 << " " |
1053 |
< |
<< fMVAVar_NeutralHadronIso_DR0p4To0p5 << " " |
1054 |
< |
<< std::endl; |
1055 |
< |
std::cout << "MVA: " << mva |
1053 |
> |
<< fMVAVar_NeutralHadronIso_DR0p4To0p5; |
1054 |
> |
std::cout << " MuRelIsoPFCharged: " << fMVAVar_MuRelIsoPFCharged |
1055 |
> |
<< " MuRelIsoPFNeutral: " << fMVAVar_MuRelIsoPFNeutral |
1056 |
> |
<< " MuRelIsoPFPhotons: " << fMVAVar_MuRelIsoPFPhotons |
1057 |
> |
<< " MuDeltaRMean: " << fMVAVar_MuDeltaRMean |
1058 |
> |
<< " MuDeltaRMean: " << fMVAVar_MuDeltaRMean |
1059 |
> |
<< " MuDensity: " << fMVAVar_MuDensity; |
1060 |
> |
std::cout << " MVA: " << mva |
1061 |
|
<< std::endl; |
1062 |
|
} |
1063 |
|
|