From e8b5abd10e18c1d72e52cfd485530519309c4083 Mon Sep 17 00:00:00 2001 From: Claudio Caputo Date: Thu, 22 Oct 2015 20:15:36 +0300 Subject: [PATCH] Improving SyncTreeProducer Adding the ntuple structure, defined in TreeProduction, into the SyncTreeProducer. To Be Tested!!!! --- TreeProduction/interface/Tau.h | 2 +- microAODProduction/BuildFile.xml | 1 + .../plugins/SyncTreeProducer.cc | 54 +++++++------------ 3 files changed, 22 insertions(+), 35 deletions(-) diff --git a/TreeProduction/interface/Tau.h b/TreeProduction/interface/Tau.h index bb9025fe..6dd969c6 100644 --- a/TreeProduction/interface/Tau.h +++ b/TreeProduction/interface/Tau.h @@ -96,7 +96,7 @@ /* Trigger match information */ \ VECTOR_VAR(std::string, matchedTriggerPaths) \ /* tau discriminators */ \ - TAU_DISCRIMINATOR_DATA() \ + NEW_TAU_DISCRIMINATOR_DATA() \ /**/ // new TauID diff --git a/microAODProduction/BuildFile.xml b/microAODProduction/BuildFile.xml index fa420e04..607e7e75 100755 --- a/microAODProduction/BuildFile.xml +++ b/microAODProduction/BuildFile.xml @@ -22,6 +22,7 @@ + diff --git a/microAODProduction/plugins/SyncTreeProducer.cc b/microAODProduction/plugins/SyncTreeProducer.cc index add82110..1434a205 100755 --- a/microAODProduction/plugins/SyncTreeProducer.cc +++ b/microAODProduction/plugins/SyncTreeProducer.cc @@ -51,8 +51,9 @@ #include "FWCore/ServiceRegistry/interface/Service.h" #include "CommonTools/UtilAlgos/interface/TFileService.h" +//HHbbTauTau Framework #include "HHbbTauTau/AnalysisBase/include/SyncTree.h" - +#include "TreeProduction/interface/Tau.h" #include "TTree.h" #include "Math/VectorUtil.h" @@ -124,26 +125,14 @@ class SyncTreeProducer : public edm::EDAnalyzer { // constructors and destructor // SyncTreeProducer::SyncTreeProducer(const edm::ParameterSet& iConfig): - eleMediumIdMapToken_(consumes >(iConfig.getParameter("eleMediumIdMap"))), - eleTightIdMapToken_(consumes >(iConfig.getParameter("eleTightIdMap"))), - mvaValuesMapToken_(consumes >(iConfig.getParameter("mvaValuesMap"))), - mvaCategoriesMapToken_(consumes >(iConfig.getParameter("mvaCategoriesMap"))), + tausMiniAODToken_(mayConsume >(iConfig.getParameter("tauSrc"))), syncTree(&edm::Service()->file(),false) { - // MiniAOD tokens - // For electrons, use the fact that pat::Electron can be cast into - // GsfElectron - electronsMiniAODToken_ = mayConsume > - (iConfig.getParameter - ("electronsMiniAOD")); - genParticlesMiniAODToken_ = mayConsume > (iConfig.getParameter ("genParticlesMiniAOD")); - tausMiniAODToken_= mayConsume >(iConfig.getParameter("tauSrc")); - } @@ -173,35 +162,32 @@ SyncTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetu syncTree->lumi() = iEvent.id().luminosityBlock(); syncTree->evt() = iEvent.id().event(); - // Retrieve the collection of electrons from the event. - // If we fail to retrieve the collection with the standard AOD - // name, we next look for the one with the stndard miniAOD name. - // We use exactly the same handle for AOD and miniAOD formats - // since pat::Electron objects can be recast as reco::GsfElectron objects. - edm::Handle > electrons; - iEvent.getByToken(electronsMiniAODToken_,electrons); - // Get the MC collection iEvent.getByToken(genParticlesMiniAODToken_,genParticles); //Get Tau collection edm::Handle > taus; iEvent.getByToken(tausMiniAODToken_, taus); +//Usare ntuple::Muon e Tau definiti in TreeProduction in modo da poter utilizzare i metodi del BaseAnalyzer + ntuple::TauVector tausV; + + for (const pat::Tau &tau : *taus){ + ntuple::Tau tmp_tau; - // Get the electron ID data from the event stream. - // Note: this implies that the VID ID modules have been run upstream. - // If you need more info, check with the EGM group. - edm::Handle > medium_id_decisions; - edm::Handle > tight_id_decisions; - iEvent.getByToken(eleMediumIdMapToken_,medium_id_decisions); - iEvent.getByToken(eleTightIdMapToken_,tight_id_decisions); + //pat::PackedCandidate const* packedLeadTauCand = dynamic_cast(src.leadChargedHadrCand().get()); + //fabs(packedLeadTauCand->dz()) < 0.2; // The PackedCandidate::dz() method is wrt. the first PV by default - // Get MVA values and categories (optional) - edm::Handle > mvaValues; - edm::Handle > mvaCategories; - iEvent.getByToken(mvaValuesMapToken_,mvaValues); - iEvent.getByToken(mvaCategoriesMapToken_,mvaCategories); + if(!(tau.pt() > 20 && fabs(tau.eta()) < 2.3 && tau.tauID('decayModeFindingNewDMs') > 0.5)) continue; + tmp_tau.eta = tau.eta(); + tmp_tau.pt = tau.pt(); + tmp_tau.phi = tau.phi(); + tmp_tau.againstElectronLooseMVA5 = tau.tauID('againstElectronLooseMVA5'); + tmp_tau.againstElectronMediumMVA5 = tau.tauID('againstElectronMediumMVA5'); + tmp_tau.againstElectronTightMVA5 = tau.tauID('againstElectronTightMVA5'); + tmp_tau.againstElectronVTightMVA5 = tau.tauID('againstElectronVTightMVA5'); + tausV.push_back(tmp_tau); + } syncTree.Fill();