File indexing completed on 2024-04-06 12:27:55
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021
0022
0023 #include "FWCore/Framework/interface/Frameworkfwd.h"
0024 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0025
0026 #include "FWCore/Framework/interface/Event.h"
0027 #include "FWCore/Framework/interface/MakerMacros.h"
0028
0029 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0030
0031 #include "DataFormats/PatCandidates/interface/Tau.h"
0032 #include "DataFormats/PatCandidates/interface/PATTauDiscriminator.h"
0033
0034 #include "DataFormats/TauReco/interface/PFTau.h"
0035 #include "DataFormats/TauReco/interface/PFTauFwd.h"
0036 #include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
0037 #include "DataFormats/TauReco/interface/PFTauTransverseImpactParameterAssociation.h"
0038
0039 #include "RecoTauTag/RecoTau/interface/PFRecoTauClusterVariables.h"
0040 #include "RecoTauTag/RecoTau/interface/AntiElectronIDMVA6.h"
0041
0042 #include "FWCore/ServiceRegistry/interface/Service.h"
0043 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0044
0045 #include "TH1D.h"
0046 #include "TH2D.h"
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058 typedef edm::AssociationVector<reco::PFTauRefProd, std::vector<reco::PFTauTransverseImpactParameterRef> >
0059 PFTauTIPAssociationByRef;
0060
0061 class rerunMVAIsolationOnMiniAOD : public edm::one::EDAnalyzer<edm::one::SharedResources> {
0062 public:
0063 explicit rerunMVAIsolationOnMiniAOD(const edm::ParameterSet&);
0064 ~rerunMVAIsolationOnMiniAOD();
0065
0066 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0067
0068 private:
0069 virtual void beginJob() override;
0070 virtual void analyze(const edm::Event&, const edm::EventSetup&) override;
0071 virtual void endJob() override;
0072
0073
0074 bool verbosity_;
0075 bool additionalCollectionsAvailable_;
0076
0077 edm::EDGetTokenT<pat::TauCollection> tauToken_;
0078 edm::EDGetTokenT<reco::PFTauCollection> pfTauToken_;
0079 edm::EDGetTokenT<reco::PFTauDiscriminator> dmfNewToken_;
0080 edm::EDGetTokenT<reco::PFTauDiscriminator> chargedIsoPtSumToken_;
0081 edm::EDGetTokenT<reco::PFTauDiscriminator> neutralIsoPtSumToken_;
0082 edm::EDGetTokenT<reco::PFTauDiscriminator> puCorrPtSumToken_;
0083 edm::EDGetTokenT<reco::PFTauDiscriminator> photonPtSumOutsideSignalConeToken_;
0084 edm::EDGetTokenT<reco::PFTauDiscriminator> footprintCorrectionToken_;
0085 edm::EDGetTokenT<reco::PFTauDiscriminator> rawElecMVA6Token_;
0086 edm::EDGetTokenT<PFTauTIPAssociationByRef> tauTIPToken_;
0087
0088 TH1D* mvaValueAOD;
0089 TH1D* mvaValueMiniAOD;
0090 TH1D* mvaValueDiff;
0091
0092 TH1D* differences;
0093 TH1D* differencesWeighted;
0094
0095 TH1D* difference_dxy;
0096 TH1D* difference_dxySig;
0097 TH1D* difference_ip3d;
0098 TH1D* difference_ip3dSig;
0099 TH1D* difference_flightlengthSig;
0100 TH1D* difference_ptWeightedDetaStrip;
0101 TH1D* difference_ptWeightedDphiStrip;
0102 TH1D* difference_ptWeightedDrSignal;
0103 TH1D* difference_ptWeightedDrIso;
0104
0105 TH2D* mvaValue;
0106 TH2D* mvaValue_vLoose;
0107 TH2D* mvaValue_Loose;
0108 TH2D* mvaValue_Medium;
0109 TH2D* mvaValue_Tight;
0110 TH2D* mvaValue_vTight;
0111 TH2D* mvaValue_vvTight;
0112
0113 TH2D* decayMode;
0114 TH2D* chargedIsoPtSum;
0115 TH2D* neutralIsoPtSum;
0116 TH2D* puCorrPtSum;
0117 TH2D* photonPtSumOutsideSignalCone;
0118 TH2D* footprintCorrection;
0119
0120 TH2D* decayDistMag;
0121 TH2D* dxy;
0122 TH2D* dxySig;
0123 TH2D* ip3d;
0124 TH2D* ip3dSig;
0125 TH2D* hasSV;
0126 TH2D* flightlengthSig;
0127 TH2D* nPhoton;
0128 TH2D* ptWeightedDetaStrip;
0129 TH2D* ptWeightedDphiStrip;
0130 TH2D* ptWeightedDrSignal;
0131 TH2D* ptWeightedDrIsolation;
0132 TH2D* leadTrackChi2;
0133 TH2D* eRatio;
0134 TH2D* mvaValue_antiEMVA6;
0135 };
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148 rerunMVAIsolationOnMiniAOD::rerunMVAIsolationOnMiniAOD(const edm::ParameterSet& iConfig)
0149
0150 {
0151
0152 tauToken_ = consumes<pat::TauCollection>(edm::InputTag("newTauIDsEmbedded"));
0153 pfTauToken_ = consumes<reco::PFTauCollection>(edm::InputTag("hpsPFTauProducer", "", "PAT"));
0154 dmfNewToken_ =
0155 consumes<reco::PFTauDiscriminator>(edm::InputTag("hpsPFTauDiscriminationByDecayModeFindingNewDMs", "", "PAT"));
0156 chargedIsoPtSumToken_ = consumes<reco::PFTauDiscriminator>(edm::InputTag("hpsPFTauChargedIsoPtSum", "", "PAT"));
0157 neutralIsoPtSumToken_ = consumes<reco::PFTauDiscriminator>(edm::InputTag("hpsPFTauNeutralIsoPtSum", "", "PAT"));
0158 puCorrPtSumToken_ = consumes<reco::PFTauDiscriminator>(edm::InputTag("hpsPFTauPUcorrPtSum", "", "PAT"));
0159 photonPtSumOutsideSignalConeToken_ =
0160 consumes<reco::PFTauDiscriminator>(edm::InputTag("hpsPFTauPhotonPtSumOutsideSignalCone", "", "PAT"));
0161 footprintCorrectionToken_ =
0162 consumes<reco::PFTauDiscriminator>(edm::InputTag("hpsPFTauFootprintCorrection", "", "PAT"));
0163 rawElecMVA6Token_ =
0164 consumes<reco::PFTauDiscriminator>(edm::InputTag("hpsPFTauDiscriminationagainstElectronMVA6Raw", "", "RECO"));
0165 tauTIPToken_ = consumes<PFTauTIPAssociationByRef>(edm::InputTag("hpsPFTauTransverseImpactParameters", "", "PAT"));
0166
0167 verbosity_ = iConfig.getParameter<int>("verbosity");
0168 additionalCollectionsAvailable_ = iConfig.getParameter<bool>("additionalCollectionsAvailable");
0169
0170
0171 edm::Service<TFileService> fileService;
0172 mvaValueAOD = fileService->make<TH1D>("mvaValueAOD", ";MVA value;", 220, -1.1, 1.1);
0173 mvaValueMiniAOD = fileService->make<TH1D>("mvaValueMiniAOD", ";MVA value;", 220, -1.1, 1.1);
0174 mvaValueDiff = fileService->make<TH1D>("mvaValueDiff", ";|AOD - MiniAOD|;", 2000, 0, 2);
0175
0176 differences = fileService->make<TH1D>("differences", "", 24, -0.5, 23.5);
0177 differencesWeighted = fileService->make<TH1D>("differencesWeighted", "", 24, -0.5, 23.5);
0178
0179 difference_dxy = fileService->make<TH1D>("difference_dxy", ";|AOD - MiniAOD| (dxy);", 1000, 0, 0.0005);
0180 difference_dxySig = fileService->make<TH1D>("difference_dxySig", ";|AOD - MiniAOD| (dxySig);", 1000, 0, 0.0005);
0181 difference_ip3d = fileService->make<TH1D>("difference_ip3d", ";|AOD - MiniAOD| (ip3d);", 1000, 0, 0.0005);
0182 difference_ip3dSig = fileService->make<TH1D>("difference_ip3dSig", ";|AOD - MiniAOD| (ip3dSig);", 1000, 0, 0.0005);
0183 difference_flightlengthSig =
0184 fileService->make<TH1D>("difference_flightlengthSig", ";|AOD - MiniAOD| (flightlengthSig);", 1000, 0, 0.0005);
0185 difference_ptWeightedDetaStrip = fileService->make<TH1D>(
0186 "difference_ptWeightedDetaStrip", ";|AOD - MiniAOD| (ptWeightedDetaStrip);", 1000, 0, 0.0005);
0187 difference_ptWeightedDphiStrip = fileService->make<TH1D>(
0188 "difference_ptWeightedDphiStrip", ";|AOD - MiniAOD| (ptWeightedDphiStrip);", 1000, 0, 0.0005);
0189 difference_ptWeightedDrSignal = fileService->make<TH1D>(
0190 "difference_ptWeightedDrSignal", ";|AOD - MiniAOD| (ptWeightedDrSignal);", 1000, 0, 0.0005);
0191 difference_ptWeightedDrIso =
0192 fileService->make<TH1D>("difference_ptWeightedDrIso", ";|AOD - MiniAOD| (ptWeightedDrIso);", 1000, 0, 0.0005);
0193
0194 mvaValue = fileService->make<TH2D>("mvaValue", ";AOD;MiniAOD", 220, -1.1, 1.1, 220, -1.1, 1.1);
0195 mvaValue_vLoose = fileService->make<TH2D>("mvaValue_vLoose", ";AOD;MiniAOD", 2, -0.5, 1.5, 2, -0.5, 1.5);
0196 mvaValue_Loose = fileService->make<TH2D>("mvaValue_Loose", ";AOD;MiniAOD", 2, -0.5, 1.5, 2, -0.5, 1.5);
0197 mvaValue_Medium = fileService->make<TH2D>("mvaValue_Medium", ";AOD;MiniAOD", 2, -0.5, 1.5, 2, -0.5, 1.5);
0198 mvaValue_Tight = fileService->make<TH2D>("mvaValue_Tight", ";AOD;MiniAOD", 2, -0.5, 1.5, 2, -0.5, 1.5);
0199 mvaValue_vTight = fileService->make<TH2D>("mvaValue_vTight", ";AOD;MiniAOD", 2, -0.5, 1.5, 2, -0.5, 1.5);
0200 mvaValue_vvTight = fileService->make<TH2D>("mvaValue_vvTight", ";AOD;MiniAOD", 2, -0.5, 1.5, 2, -0.5, 1.5);
0201
0202 decayMode =
0203 fileService->make<TH2D>("decayMode", ";decay mode (AOD);decay mode (MiniAOD)", 12, -0.5, 11.5, 12, -0.5, 11.5);
0204 chargedIsoPtSum = fileService->make<TH2D>(
0205 "chargedIsoPtSum", ";chargedIsoPtSum (AOD);chargedIsoPtSum (MiniAOD)", 500, 0, 50, 500, 0, 50);
0206 neutralIsoPtSum = fileService->make<TH2D>(
0207 "neutralIsoPtSum", ";neutralIsoPtSum (AOD);neutralIsoPtSum (MiniAOD)", 500, 0, 50, 500, 0, 50);
0208 puCorrPtSum =
0209 fileService->make<TH2D>("puCorrPtSum", ";puCorrPtSum (AOD);puCorrPtSum (MiniAOD)", 500, 0, 50, 500, 0, 50);
0210 photonPtSumOutsideSignalCone =
0211 fileService->make<TH2D>("photonPtSumOutsideSignalCone",
0212 ";photonPtSumOutsideSignalCone (AOD);photonPtSumOutsideSignalCone (MiniAOD)",
0213 500,
0214 0,
0215 50,
0216 500,
0217 0,
0218 50);
0219 footprintCorrection = fileService->make<TH2D>(
0220 "footprintCorrection", ";footprintCorrection (AOD);footprintCorrection (MiniAOD)", 500, 0, 50, 500, 0, 50);
0221
0222 decayDistMag =
0223 fileService->make<TH2D>("decayDistMag", ";decayDistMag (AOD);decayDistMag (MiniAOD)", 100, 0, 10, 100, 0, 10);
0224 dxy = fileService->make<TH2D>("dxy", ";d_{xy} (AOD);d_{xy} (MiniAOD)", 100, 0, 0.1, 100, 0, 0.1);
0225 dxySig = fileService->make<TH2D>(
0226 "dxySig", ";d_{xy} significance (AOD);d_{xy} significance (MiniAOD)", 10, -0.5, 9.5, 10, -0.5, 9.5);
0227 ip3d = fileService->make<TH2D>("ip3d", ";ip3d (AOD);ip3d (MiniAOD)", 100, 0, 10, 100, 0, 10);
0228 ip3dSig = fileService->make<TH2D>(
0229 "ip3dSig", ";ip3d significance (AOD);ip3d significance (MiniAOD)", 10, -0.5, 9.5, 10, -0.5, 9.5);
0230 hasSV = fileService->make<TH2D>("hasSV", ";has SV (AOD);has SV (MiniAOD)", 2, -0.5, 1.5, 2, -0.5, 1.5);
0231 flightlengthSig = fileService->make<TH2D>("flightlengthSig",
0232 ";flightlength significance (AOD);flightlength significance (MiniAOD)",
0233 21,
0234 -10.5,
0235 10.5,
0236 21,
0237 -10.5,
0238 10.5);
0239 nPhoton = fileService->make<TH2D>("nPhoton", ";nPhoton (AOD);nPhoton (MiniAOD)", 20, -0.5, 19.5, 20, -0.5, 19.5);
0240 ptWeightedDetaStrip = fileService->make<TH2D>(
0241 "ptWeightedDetaStrip", ";ptWeightedDetaStrip (AOD);ptWeightedDetaStrip (MiniAOD)", 50, 0, 0.5, 50, 0, 0.5);
0242 ptWeightedDphiStrip = fileService->make<TH2D>(
0243 "ptWeightedDphiStrip", ";ptWeightedDphiStrip (AOD);ptWeightedDphiStrip (MiniAOD)", 50, 0, 0.5, 50, 0, 0.5);
0244 ptWeightedDrSignal = fileService->make<TH2D>(
0245 "ptWeightedDrSignal", ";ptWeightedDrSignal (AOD);ptWeightedDrSignal (MiniAOD)", 50, 0, 0.5, 50, 0, 0.5);
0246 ptWeightedDrIsolation = fileService->make<TH2D>(
0247 "ptWeightedDrIsolation", ";ptWeightedDrIsolation (AOD);ptWeightedDrIsolation (MiniAOD)", 50, 0, 0.5, 50, 0, 0.5);
0248 leadTrackChi2 = fileService->make<TH2D>(
0249 "leadTrackChi2", ";leadTrackChi2 (AOD);leadTrackChi2 (MiniAOD)", 1000, 0, 100, 1000, 0, 100);
0250 eRatio = fileService->make<TH2D>("eRatio", ";eRatio (AOD);eRatio (MiniAOD)", 200, 0, 2, 200, 0, 2);
0251 mvaValue_antiEMVA6 = fileService->make<TH2D>("mvaValue_antiEMVA6", ";AOD;MiniAOD", 220, -1.1, 1.1, 220, -1.1, 1.1);
0252 }
0253
0254 rerunMVAIsolationOnMiniAOD::~rerunMVAIsolationOnMiniAOD() {
0255
0256
0257 }
0258
0259
0260
0261
0262
0263
0264 void rerunMVAIsolationOnMiniAOD::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0265 edm::Handle<pat::TauCollection> taus;
0266 iEvent.getByToken(tauToken_, taus);
0267
0268 std::vector<pat::TauRef> unmatchedTaus;
0269
0270 for (unsigned iTau = 0; iTau < taus->size(); iTau++) {
0271 pat::TauRef tau(taus, iTau);
0272 float valueAOD = tau->tauID("byIsolationMVArun2v1DBoldDMwLTraw");
0273 float valueMiniAOD = tau->tauID("byIsolationMVArun2v1DBoldDMwLTrawNew");
0274
0275 mvaValueAOD->Fill(valueAOD);
0276 mvaValueMiniAOD->Fill(valueMiniAOD);
0277
0278 mvaValue->Fill(valueAOD, valueMiniAOD);
0279 mvaValue_vLoose->Fill(tau->tauID("byVLooseIsolationMVArun2v1DBoldDMwLT"),
0280 tau->tauID("byVLooseIsolationMVArun2v1DBoldDMwLTNew"));
0281 mvaValue_Loose->Fill(tau->tauID("byLooseIsolationMVArun2v1DBoldDMwLT"),
0282 tau->tauID("byLooseIsolationMVArun2v1DBoldDMwLTNew"));
0283 mvaValue_Medium->Fill(tau->tauID("byMediumIsolationMVArun2v1DBoldDMwLT"),
0284 tau->tauID("byMediumIsolationMVArun2v1DBoldDMwLTNew"));
0285 mvaValue_Tight->Fill(tau->tauID("byTightIsolationMVArun2v1DBoldDMwLT"),
0286 tau->tauID("byTightIsolationMVArun2v1DBoldDMwLTNew"));
0287 mvaValue_vTight->Fill(tau->tauID("byVTightIsolationMVArun2v1DBoldDMwLT"),
0288 tau->tauID("byVTightIsolationMVArun2v1DBoldDMwLTNew"));
0289 mvaValue_vvTight->Fill(tau->tauID("byVVTightIsolationMVArun2v1DBoldDMwLT"),
0290 tau->tauID("byVVTightIsolationMVArun2v1DBoldDMwLTNew"));
0291 mvaValueDiff->Fill(std::abs(valueAOD - valueMiniAOD));
0292 mvaValue_antiEMVA6->Fill(tau->tauID("againstElectronMVA6Raw"), tau->tauID("againstElectronMVA6RawNew"));
0293
0294 if (valueAOD != valueMiniAOD)
0295 unmatchedTaus.push_back(tau);
0296 }
0297
0298
0299
0300
0301
0302
0303
0304 if (additionalCollectionsAvailable_) {
0305 edm::Handle<reco::PFTauCollection> pfTaus;
0306 iEvent.getByToken(pfTauToken_, pfTaus);
0307
0308 edm::Handle<reco::PFTauDiscriminator> dmfNew;
0309 iEvent.getByToken(dmfNewToken_, dmfNew);
0310
0311 edm::Handle<reco::PFTauDiscriminator> chargedIso;
0312 iEvent.getByToken(chargedIsoPtSumToken_, chargedIso);
0313
0314 edm::Handle<reco::PFTauDiscriminator> neutralIso;
0315 iEvent.getByToken(neutralIsoPtSumToken_, neutralIso);
0316
0317 edm::Handle<reco::PFTauDiscriminator> puCorr;
0318 iEvent.getByToken(puCorrPtSumToken_, puCorr);
0319
0320 edm::Handle<reco::PFTauDiscriminator> photonSumOutsideSignalCone;
0321 iEvent.getByToken(photonPtSumOutsideSignalConeToken_, photonSumOutsideSignalCone);
0322
0323 edm::Handle<reco::PFTauDiscriminator> footPrint;
0324 iEvent.getByToken(footprintCorrectionToken_, footPrint);
0325
0326 edm::Handle<PFTauTIPAssociationByRef> tauLifetimeInfos;
0327 iEvent.getByToken(tauTIPToken_, tauLifetimeInfos);
0328
0329 for (unsigned iPFTau = 0; iPFTau < pfTaus->size(); iPFTau++) {
0330 reco::PFTauRef pfTau(pfTaus, iPFTau);
0331
0332 if ((*dmfNew)[pfTau] < 0.5)
0333 continue;
0334
0335 if ((float)pfTau->pt() < 18 || std::abs((float)pfTau->eta()) > 2.3)
0336 continue;
0337
0338 for (unsigned iTau = 0; iTau < unmatchedTaus.size(); iTau++) {
0339 if ((float)pfTau->pt() != (float)unmatchedTaus.at(iTau)->pt())
0340 continue;
0341 if ((float)pfTau->eta() != (float)unmatchedTaus.at(iTau)->eta())
0342 continue;
0343 if ((float)pfTau->phi() != (float)unmatchedTaus.at(iTau)->phi())
0344 continue;
0345 if ((float)pfTau->energy() != (float)unmatchedTaus.at(iTau)->energy())
0346 continue;
0347
0348 decayMode->Fill(pfTau->decayMode(), unmatchedTaus.at(iTau)->decayMode());
0349 chargedIsoPtSum->Fill((*chargedIso)[pfTau], unmatchedTaus.at(iTau)->tauID("chargedIsoPtSum"));
0350 neutralIsoPtSum->Fill((*neutralIso)[pfTau], unmatchedTaus.at(iTau)->tauID("neutralIsoPtSum"));
0351 puCorrPtSum->Fill((*puCorr)[pfTau], unmatchedTaus.at(iTau)->tauID("puCorrPtSum"));
0352 photonPtSumOutsideSignalCone->Fill((*photonSumOutsideSignalCone)[pfTau],
0353 unmatchedTaus.at(iTau)->tauID("photonPtSumOutsideSignalCone"));
0354 footprintCorrection->Fill((*footPrint)[pfTau], unmatchedTaus.at(iTau)->tauID("footprintCorrection"));
0355
0356 const reco::PFTauTransverseImpactParameter& tauLifetimeInfo = *(*tauLifetimeInfos)[pfTau];
0357
0358 float decayDistXAOD = tauLifetimeInfo.flightLength().x();
0359 float decayDistYAOD = tauLifetimeInfo.flightLength().y();
0360 float decayDistZAOD = tauLifetimeInfo.flightLength().z();
0361 float decayDistMagAOD =
0362 std::sqrt(decayDistXAOD * decayDistXAOD + decayDistYAOD * decayDistYAOD + decayDistZAOD * decayDistZAOD);
0363
0364 float decayDistXMiniAOD = unmatchedTaus.at(iTau)->flightLength().x();
0365 float decayDistYMiniAOD = unmatchedTaus.at(iTau)->flightLength().y();
0366 float decayDistZMiniAOD = unmatchedTaus.at(iTau)->flightLength().z();
0367 float decayDistMagMiniAOD =
0368 std::sqrt(decayDistXMiniAOD * decayDistXMiniAOD + decayDistYMiniAOD * decayDistYMiniAOD +
0369 decayDistZMiniAOD * decayDistZMiniAOD);
0370
0371 decayDistMag->Fill(decayDistMagAOD, decayDistMagMiniAOD);
0372 dxy->Fill(tauLifetimeInfo.dxy(), unmatchedTaus.at(iTau)->dxy());
0373 dxySig->Fill(tauLifetimeInfo.dxy_Sig(), unmatchedTaus.at(iTau)->dxy_Sig());
0374 ip3d->Fill(tauLifetimeInfo.ip3d(), unmatchedTaus.at(iTau)->ip3d());
0375 ip3dSig->Fill(tauLifetimeInfo.ip3d_Sig(), unmatchedTaus.at(iTau)->ip3d_Sig());
0376 hasSV->Fill(tauLifetimeInfo.hasSecondaryVertex(), unmatchedTaus.at(iTau)->hasSecondaryVertex());
0377 flightlengthSig->Fill(tauLifetimeInfo.flightLengthSig(), unmatchedTaus.at(iTau)->flightLengthSig());
0378 nPhoton->Fill((float)reco::tau::n_photons_total(*pfTau),
0379 (float)reco::tau::n_photons_total(*unmatchedTaus.at(iTau)));
0380 ptWeightedDetaStrip->Fill(
0381 reco::tau::pt_weighted_deta_strip(*pfTau, pfTau->decayMode()),
0382 reco::tau::pt_weighted_deta_strip(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode()));
0383 ptWeightedDphiStrip->Fill(
0384 reco::tau::pt_weighted_dphi_strip(*pfTau, pfTau->decayMode()),
0385 reco::tau::pt_weighted_dphi_strip(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode()));
0386 ptWeightedDrSignal->Fill(
0387 reco::tau::pt_weighted_dr_signal(*pfTau, pfTau->decayMode()),
0388 reco::tau::pt_weighted_dr_signal(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode()));
0389 ptWeightedDrIsolation->Fill(
0390 reco::tau::pt_weighted_dr_iso(*pfTau, pfTau->decayMode()),
0391 reco::tau::pt_weighted_dr_iso(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode()));
0392 leadTrackChi2->Fill(reco::tau::lead_track_chi2(*pfTau), unmatchedTaus.at(iTau)->leadingTrackNormChi2());
0393 eRatio->Fill(reco::tau::eratio(*pfTau), reco::tau::eratio(*unmatchedTaus.at(iTau)));
0394
0395 if (verbosity_)
0396 std::cout << "=============================================================" << std::endl;
0397 if (pfTau->pt() != unmatchedTaus.at(iTau)->pt()) {
0398 if (verbosity_)
0399 std::cout << "pt: PF = " << pfTau->pt() << ", pat = " << unmatchedTaus.at(iTau)->pt() << std::endl;
0400 differences->Fill(0);
0401 differencesWeighted->Fill(0., std::abs(pfTau->pt() - unmatchedTaus.at(iTau)->pt()));
0402 }
0403 if (pfTau->eta() != unmatchedTaus.at(iTau)->eta()) {
0404 if (verbosity_)
0405 std::cout << "eta: PF = " << pfTau->eta() << ", pat = " << unmatchedTaus.at(iTau)->eta() << std::endl;
0406 differences->Fill(1);
0407 differencesWeighted->Fill(1, std::abs(pfTau->eta() - unmatchedTaus.at(iTau)->eta()));
0408 }
0409 if (pfTau->phi() != unmatchedTaus.at(iTau)->phi()) {
0410 if (verbosity_)
0411 std::cout << "phi: PF = " << pfTau->phi() << ", pat = " << unmatchedTaus.at(iTau)->phi() << std::endl;
0412 differences->Fill(2);
0413 differencesWeighted->Fill(2, std::abs(pfTau->phi() - unmatchedTaus.at(iTau)->phi()));
0414 }
0415 if (pfTau->energy() != unmatchedTaus.at(iTau)->energy()) {
0416 if (verbosity_)
0417 std::cout << "energy PF = " << pfTau->energy() << ", pat = " << unmatchedTaus.at(iTau)->energy()
0418 << std::endl;
0419 differences->Fill(3);
0420 differencesWeighted->Fill(3, std::abs(pfTau->energy() - unmatchedTaus.at(iTau)->energy()));
0421 }
0422 if (pfTau->decayMode() != unmatchedTaus.at(iTau)->decayMode()) {
0423 if (verbosity_)
0424 std::cout << "decayMode: PF = " << pfTau->decayMode() << ", pat = " << unmatchedTaus.at(iTau)->decayMode()
0425 << std::endl;
0426 differences->Fill(4);
0427 differencesWeighted->Fill(4, std::abs(pfTau->decayMode() - unmatchedTaus.at(iTau)->decayMode()));
0428 }
0429 if ((*chargedIso)[pfTau] != unmatchedTaus.at(iTau)->tauID("chargedIsoPtSum")) {
0430 if (verbosity_)
0431 std::cout << "chargedIso: PF = " << (*chargedIso)[pfTau]
0432 << ", pat = " << unmatchedTaus.at(iTau)->tauID("chargedIsoPtSum") << std::endl;
0433 differences->Fill(5);
0434 differencesWeighted->Fill(5,
0435 std::abs((*chargedIso)[pfTau] - unmatchedTaus.at(iTau)->tauID("chargedIsoPtSum")));
0436 }
0437 if ((*neutralIso)[pfTau] != unmatchedTaus.at(iTau)->tauID("neutralIsoPtSum")) {
0438 if (verbosity_)
0439 std::cout << "neutralIso: PF = " << (*neutralIso)[pfTau]
0440 << ", pat = " << unmatchedTaus.at(iTau)->tauID("neutralIsoPtSum") << std::endl;
0441 differences->Fill(6);
0442 differencesWeighted->Fill(6,
0443 std::abs((*neutralIso)[pfTau] - unmatchedTaus.at(iTau)->tauID("neutralIsoPtSum")));
0444 }
0445 if ((*puCorr)[pfTau] != unmatchedTaus.at(iTau)->tauID("puCorrPtSum")) {
0446 if (verbosity_)
0447 std::cout << "puCorr: PF = " << (*puCorr)[pfTau]
0448 << ", pat = " << unmatchedTaus.at(iTau)->tauID("puCorrPtSum") << std::endl;
0449 differences->Fill(7);
0450 differencesWeighted->Fill(7, std::abs((*puCorr)[pfTau] - unmatchedTaus.at(iTau)->tauID("puCorrPtSum")));
0451 }
0452 if ((*photonSumOutsideSignalCone)[pfTau] != unmatchedTaus.at(iTau)->tauID("photonPtSumOutsideSignalCone")) {
0453 if (verbosity_)
0454 std::cout << "photonSumOutsideSignalCone: PF = " << (*photonSumOutsideSignalCone)[pfTau]
0455 << ", pat = " << unmatchedTaus.at(iTau)->tauID("photonPtSumOutsideSignalCone") << std::endl;
0456 differences->Fill(8);
0457 differencesWeighted->Fill(8,
0458 std::abs((*photonSumOutsideSignalCone)[pfTau] -
0459 unmatchedTaus.at(iTau)->tauID("photonPtSumOutsideSignalCone")));
0460 }
0461 if ((*footPrint)[pfTau] != unmatchedTaus.at(iTau)->tauID("footprintCorrection")) {
0462 if (verbosity_)
0463 std::cout << "footPrint: PF = " << (*footPrint)[pfTau]
0464 << ", pat = " << unmatchedTaus.at(iTau)->tauID("footprintCorrection") << std::endl;
0465 differences->Fill(9);
0466 differencesWeighted->Fill(
0467 9, std::abs((*footPrint)[pfTau] - unmatchedTaus.at(iTau)->tauID("footprintCorrection")));
0468 }
0469 if (decayDistMagAOD != decayDistMagMiniAOD) {
0470 if (verbosity_)
0471 std::cout << "decayDistMag: PF = " << decayDistMagAOD << ", pat = " << decayDistMagMiniAOD << std::endl;
0472 differences->Fill(10);
0473 differencesWeighted->Fill(10, std::abs(decayDistMagAOD - decayDistMagMiniAOD));
0474 }
0475 if (tauLifetimeInfo.dxy() != unmatchedTaus.at(iTau)->dxy()) {
0476 if (verbosity_)
0477 std::cout << "dxy: PF = " << tauLifetimeInfo.dxy() << ", pat = " << unmatchedTaus.at(iTau)->dxy()
0478 << std::endl;
0479 differences->Fill(11);
0480 differencesWeighted->Fill(11, std::abs((float)tauLifetimeInfo.dxy() - unmatchedTaus.at(iTau)->dxy()));
0481 difference_dxy->Fill(std::abs(tauLifetimeInfo.dxy() - unmatchedTaus.at(iTau)->dxy()));
0482 }
0483 if (tauLifetimeInfo.dxy_Sig() != unmatchedTaus.at(iTau)->dxy_Sig()) {
0484 if (verbosity_)
0485 std::cout << "dxy_Sig: PF = " << tauLifetimeInfo.dxy_Sig()
0486 << ", pat = " << unmatchedTaus.at(iTau)->dxy_Sig() << std::endl;
0487 differences->Fill(12);
0488 differencesWeighted->Fill(12, std::abs((float)tauLifetimeInfo.dxy_Sig() - unmatchedTaus.at(iTau)->dxy_Sig()));
0489 difference_dxySig->Fill(std::abs(tauLifetimeInfo.dxy_Sig() - unmatchedTaus.at(iTau)->dxy_Sig()));
0490 }
0491 if (tauLifetimeInfo.ip3d() != unmatchedTaus.at(iTau)->ip3d()) {
0492 if (verbosity_)
0493 std::cout << "ip3d PF: = " << tauLifetimeInfo.ip3d() << ", pat = " << unmatchedTaus.at(iTau)->ip3d()
0494 << std::endl;
0495 differences->Fill(13);
0496 differencesWeighted->Fill(13, std::abs((float)tauLifetimeInfo.ip3d() - unmatchedTaus.at(iTau)->ip3d()));
0497 difference_ip3d->Fill(std::abs(tauLifetimeInfo.ip3d() - unmatchedTaus.at(iTau)->ip3d()));
0498 }
0499 if (tauLifetimeInfo.ip3d_Sig() != unmatchedTaus.at(iTau)->ip3d_Sig()) {
0500 if (verbosity_)
0501 std::cout << "ip3d_Sig: PF = " << tauLifetimeInfo.ip3d_Sig()
0502 << ", pat = " << unmatchedTaus.at(iTau)->ip3d_Sig() << std::endl;
0503 differences->Fill(14);
0504 differencesWeighted->Fill(14,
0505 std::abs((float)tauLifetimeInfo.ip3d_Sig() - unmatchedTaus.at(iTau)->ip3d_Sig()));
0506 difference_ip3dSig->Fill(std::abs(tauLifetimeInfo.ip3d_Sig() - unmatchedTaus.at(iTau)->ip3d_Sig()));
0507 }
0508 if (tauLifetimeInfo.hasSecondaryVertex() != unmatchedTaus.at(iTau)->hasSecondaryVertex()) {
0509 if (verbosity_)
0510 std::cout << "hasSV: PF = " << tauLifetimeInfo.hasSecondaryVertex()
0511 << ", pat = " << unmatchedTaus.at(iTau)->hasSecondaryVertex() << std::endl;
0512 differences->Fill(15);
0513 differencesWeighted->Fill(
0514 15, std::abs((float)tauLifetimeInfo.hasSecondaryVertex() - unmatchedTaus.at(iTau)->hasSecondaryVertex()));
0515 }
0516 if (tauLifetimeInfo.flightLengthSig() != unmatchedTaus.at(iTau)->flightLengthSig()) {
0517 if (verbosity_)
0518 std::cout << "flightlengthSig: PF = " << tauLifetimeInfo.flightLengthSig()
0519 << ", pat = " << unmatchedTaus.at(iTau)->flightLengthSig() << std::endl;
0520 differences->Fill(16);
0521 differencesWeighted->Fill(
0522 16, std::abs((float)tauLifetimeInfo.flightLengthSig() - unmatchedTaus.at(iTau)->flightLengthSig()));
0523 difference_flightlengthSig->Fill(
0524 std::abs(tauLifetimeInfo.flightLengthSig() - unmatchedTaus.at(iTau)->flightLengthSig()));
0525 }
0526 if ((float)reco::tau::n_photons_total(*pfTau) != (float)reco::tau::n_photons_total(*unmatchedTaus.at(iTau))) {
0527 if (verbosity_)
0528 std::cout << "nPhoton PF: = " << (float)reco::tau::n_photons_total(*pfTau)
0529 << ", pat = " << (float)reco::tau::n_photons_total(*unmatchedTaus.at(iTau)) << std::endl;
0530 differences->Fill(17);
0531 differencesWeighted->Fill(17,
0532 std::abs((float)reco::tau::n_photons_total(*pfTau) -
0533 (float)reco::tau::n_photons_total(*unmatchedTaus.at(iTau))));
0534 }
0535 if (reco::tau::pt_weighted_deta_strip(*pfTau, pfTau->decayMode()) !=
0536 reco::tau::pt_weighted_deta_strip(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())) {
0537 if (verbosity_)
0538 std::cout << "ptWeightedDetaStrip: PF = " << reco::tau::pt_weighted_deta_strip(*pfTau, pfTau->decayMode())
0539 << ", pat = "
0540 << reco::tau::pt_weighted_deta_strip(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())
0541 << std::endl;
0542 differences->Fill(18);
0543 differencesWeighted->Fill(18,
0544 std::abs(reco::tau::pt_weighted_deta_strip(*pfTau, pfTau->decayMode()) -
0545 reco::tau::pt_weighted_deta_strip(*unmatchedTaus.at(iTau),
0546 unmatchedTaus.at(iTau)->decayMode())));
0547 difference_ptWeightedDetaStrip->Fill(std::abs(
0548 reco::tau::pt_weighted_deta_strip(*pfTau, pfTau->decayMode()) -
0549 reco::tau::pt_weighted_deta_strip(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())));
0550 }
0551 if (reco::tau::pt_weighted_dphi_strip(*pfTau, pfTau->decayMode()) !=
0552 reco::tau::pt_weighted_dphi_strip(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())) {
0553 if (verbosity_)
0554 std::cout << "ptWeightedDphiStrip: PF = " << reco::tau::pt_weighted_dphi_strip(*pfTau, pfTau->decayMode())
0555 << ", pat = "
0556 << reco::tau::pt_weighted_dphi_strip(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())
0557 << std::endl;
0558 differences->Fill(19);
0559 differencesWeighted->Fill(19,
0560 std::abs(reco::tau::pt_weighted_dphi_strip(*pfTau, pfTau->decayMode()) -
0561 reco::tau::pt_weighted_dphi_strip(*unmatchedTaus.at(iTau),
0562 unmatchedTaus.at(iTau)->decayMode())));
0563 difference_ptWeightedDphiStrip->Fill(std::abs(
0564 reco::tau::pt_weighted_dphi_strip(*pfTau, pfTau->decayMode()) -
0565 reco::tau::pt_weighted_dphi_strip(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())));
0566 }
0567 if (reco::tau::pt_weighted_dr_signal(*pfTau, pfTau->decayMode()) !=
0568 reco::tau::pt_weighted_dr_signal(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())) {
0569 if (verbosity_)
0570 std::cout << "ptWeightedDrSignal: PF = " << reco::tau::pt_weighted_dr_signal(*pfTau, pfTau->decayMode())
0571 << ", pat = "
0572 << reco::tau::pt_weighted_dr_signal(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())
0573 << std::endl;
0574 differences->Fill(20);
0575 differencesWeighted->Fill(
0576 20,
0577 std::abs(reco::tau::pt_weighted_dr_signal(*pfTau, pfTau->decayMode()) -
0578 reco::tau::pt_weighted_dr_signal(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())));
0579 difference_ptWeightedDrSignal->Fill(
0580 std::abs(reco::tau::pt_weighted_dr_signal(*pfTau, pfTau->decayMode()) -
0581 reco::tau::pt_weighted_dr_signal(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())));
0582 }
0583 if (reco::tau::pt_weighted_dr_iso(*pfTau, pfTau->decayMode()) !=
0584 reco::tau::pt_weighted_dr_iso(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())) {
0585 if (verbosity_)
0586 std::cout << "ptWeightedDrIso: PF = " << reco::tau::pt_weighted_dr_iso(*pfTau, pfTau->decayMode())
0587 << ", pat = "
0588 << reco::tau::pt_weighted_dr_iso(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())
0589 << std::endl;
0590 differences->Fill(21);
0591 differencesWeighted->Fill(
0592 21,
0593 std::abs(reco::tau::pt_weighted_dr_iso(*pfTau, pfTau->decayMode()) -
0594 reco::tau::pt_weighted_dr_iso(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())));
0595 difference_ptWeightedDrIso->Fill(
0596 std::abs(reco::tau::pt_weighted_dr_iso(*pfTau, pfTau->decayMode()) -
0597 reco::tau::pt_weighted_dr_iso(*unmatchedTaus.at(iTau), unmatchedTaus.at(iTau)->decayMode())));
0598 }
0599 if (reco::tau::lead_track_chi2(*pfTau) != unmatchedTaus.at(iTau)->leadingTrackNormChi2()) {
0600 if (verbosity_)
0601 std::cout << "leadTrackChi2: PF = " << reco::tau::lead_track_chi2(*pfTau)
0602 << ", pat = " << unmatchedTaus.at(iTau)->leadingTrackNormChi2() << std::endl;
0603 differences->Fill(22);
0604 differencesWeighted->Fill(
0605 22, std::abs(reco::tau::lead_track_chi2(*pfTau) - unmatchedTaus.at(iTau)->leadingTrackNormChi2()));
0606 }
0607 if (reco::tau::eratio(*pfTau) != reco::tau::eratio(*unmatchedTaus.at(iTau))) {
0608 if (verbosity_)
0609 std::cout << "eRatio: PF = " << reco::tau::eratio(*pfTau)
0610 << ", pat = " << reco::tau::eratio(*unmatchedTaus.at(iTau)) << std::endl;
0611 differences->Fill(23);
0612 differencesWeighted->Fill(23,
0613 std::abs(reco::tau::eratio(*pfTau) - reco::tau::eratio(*unmatchedTaus.at(iTau))));
0614 }
0615 if (verbosity_)
0616 std::cout << "=============================================================" << std::endl;
0617 }
0618 }
0619 }
0620 }
0621
0622
0623 void rerunMVAIsolationOnMiniAOD::beginJob() {}
0624
0625
0626 void rerunMVAIsolationOnMiniAOD::endJob() {}
0627
0628
0629 void rerunMVAIsolationOnMiniAOD::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0630
0631
0632 edm::ParameterSetDescription desc;
0633 desc.setUnknown();
0634 descriptions.addDefault(desc);
0635 }
0636
0637
0638 DEFINE_FWK_MODULE(rerunMVAIsolationOnMiniAOD);