Skip to content

Commit

Permalink
Add V0 to miniAOD
Browse files Browse the repository at this point in the history
  • Loading branch information
arizzi committed Apr 11, 2017
1 parent 44f89f5 commit 74bf290
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 9 deletions.
22 changes: 22 additions & 0 deletions PhysicsTools/PatAlgos/plugins/PATLostTracks.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "DataFormats/VertexReco/interface/VertexFwd.h"
#include "DataFormats/PatCandidates/interface/Jet.h"
#include "DataFormats/Common/interface/Association.h"
#include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"

namespace {
bool passesQuality(const reco::Track& trk,const std::vector<reco::TrackBase::TrackQuality>& allowedQuals){
Expand Down Expand Up @@ -63,6 +64,8 @@ namespace pat {
const edm::EDGetTokenT<edm::Association<pat::PackedCandidateCollection> > map_;
const edm::EDGetTokenT<reco::TrackCollection> tracks_;
const edm::EDGetTokenT<reco::VertexCollection> vertices_;
const edm::EDGetTokenT<reco::VertexCompositeCandidateCollection> kshorts_;
const edm::EDGetTokenT<reco::VertexCompositeCandidateCollection> lambdas_;
const edm::EDGetTokenT<reco::VertexCollection> pv_;
const edm::EDGetTokenT<reco::VertexCollection> pvOrigs_;
const double minPt_;
Expand All @@ -80,6 +83,8 @@ pat::PATLostTracks::PATLostTracks(const edm::ParameterSet& iConfig) :
map_(consumes<edm::Association<pat::PackedCandidateCollection> >(iConfig.getParameter<edm::InputTag>("packedPFCandidates"))),
tracks_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("inputTracks"))),
vertices_(consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("secondaryVertices"))),
kshorts_(consumes<reco::VertexCompositeCandidateCollection>(iConfig.getParameter<edm::InputTag>("kshorts"))),
lambdas_(consumes<reco::VertexCompositeCandidateCollection>(iConfig.getParameter<edm::InputTag>("lambdas"))),
pv_(consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("primaryVertices"))),
pvOrigs_(consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("originalVertices"))),
minPt_(iConfig.getParameter<double>("minPt")),
Expand Down Expand Up @@ -122,6 +127,11 @@ void pat::PATLostTracks::produce(edm::StreamID, edm::Event& iEvent, const edm::E
edm::Handle<reco::VertexCollection> vertices;
iEvent.getByToken( vertices_, vertices );

edm::Handle<reco::VertexCompositeCandidateCollection> kshorts;
iEvent.getByToken( kshorts_, kshorts );
edm::Handle<reco::VertexCompositeCandidateCollection> lambdas;
iEvent.getByToken( lambdas_, lambdas );

edm::Handle<reco::VertexCollection> pvs;
iEvent.getByToken( pv_, pvs );
reco::VertexRef pv(pvs.id());
Expand Down Expand Up @@ -160,6 +170,18 @@ void pat::PATLostTracks::produce(edm::StreamID, edm::Event& iEvent, const edm::E
if(trkStatus[trkIt->key()]==TrkStatus::NOTUSED) trkStatus[trkIt->key()]=TrkStatus::VTX;
}
}
for(const auto& v0 : *kshorts){
for(size_t dIdx=0;dIdx<v0.numberOfDaughters(); dIdx++){
size_t key= (dynamic_cast<const reco::RecoChargedCandidate*>(v0.daughter(dIdx)))->track().key();
if(trkStatus[key]==TrkStatus::NOTUSED) trkStatus[key]=TrkStatus::VTX;
}
}
for(const auto& v0 : *lambdas){
for(size_t dIdx=0;dIdx<v0.numberOfDaughters(); dIdx++){
size_t key= (dynamic_cast<const reco::RecoChargedCandidate*>(v0.daughter(dIdx)))->track().key();
if(trkStatus[key]==TrkStatus::NOTUSED) trkStatus[key]=TrkStatus::VTX;
}
}
std::vector<int> mapping(tracks->size(),-1);
int lostTrkIndx=0;
for(unsigned int trkIndx=0; trkIndx < tracks->size(); trkIndx++){
Expand Down
22 changes: 17 additions & 5 deletions PhysicsTools/PatAlgos/plugins/PATPackedCandidateProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "FWCore/Utilities/interface/Exception.h"
#include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
#include "DataFormats/MuonReco/interface/Muon.h"
#include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"
/*#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h"
#include "TrackingTools/GeomPropagators/interface/AnalyticalImpactPointExtrapolator.h"
#include "MagneticField/Engine/interface/MagneticField.h"
Expand Down Expand Up @@ -81,7 +82,7 @@ namespace pat {
const edm::EDGetTokenT<edm::ValueMap<reco::CandidatePtr> > PuppiCandsMap_;
const edm::EDGetTokenT<std::vector< reco::PFCandidate > > PuppiCands_;
const edm::EDGetTokenT<std::vector< reco::PFCandidate > > PuppiCandsNoLep_;
std::vector< edm::EDGetTokenT<edm::View<reco::CompositePtrCandidate> > > SVWhiteLists_;
std::vector< edm::EDGetTokenT<edm::View<reco::Candidate> > > SVWhiteLists_;

const double minPtForTrackProperties_;
const int covarianceVersion_;
Expand Down Expand Up @@ -118,7 +119,7 @@ pat::PATPackedCandidateProducer::PATPackedCandidateProducer(const edm::Parameter
std::vector<edm::InputTag> sv_tags = iConfig.getParameter<std::vector<edm::InputTag> >("secondaryVerticesForWhiteList");
for(auto itag : sv_tags){
SVWhiteLists_.push_back(
consumes<edm::View< reco::CompositePtrCandidate > >(itag)
consumes<edm::View< reco::Candidate > >(itag)
);
}

Expand Down Expand Up @@ -167,16 +168,25 @@ void pat::PATPackedCandidateProducer::produce(edm::StreamID, edm::Event& iEvent,


std::set<unsigned int> whiteList;
std::set<reco::TrackRef> whiteListTk;
for(auto itoken : SVWhiteLists_) {
edm::Handle<edm::View<reco::CompositePtrCandidate > > svWhiteListHandle;
edm::Handle<edm::View<reco::Candidate > > svWhiteListHandle;
iEvent.getByToken(itoken, svWhiteListHandle);
const edm::View<reco::CompositePtrCandidate > & svWhiteList=*(svWhiteListHandle.product());
const edm::View<reco::Candidate > & svWhiteList=*(svWhiteListHandle.product());
for(unsigned int i=0; i<svWhiteList.size();i++) {
//Whitelist via Ptrs
for(unsigned int j=0; j< svWhiteList[i].numberOfSourceCandidatePtrs(); j++) {
const edm::Ptr<reco::Candidate> & c = svWhiteList[i].sourceCandidatePtr(j);
if(c.id() == cands.id()) whiteList.insert(c.key());

}
//Whitelist via RecoCharged
for(auto dau = svWhiteList[i].begin(); dau != svWhiteList[i].end() ; dau++){
const reco::RecoChargedCandidate * chCand=dynamic_cast<const reco::RecoChargedCandidate *>(&(*dau));
if(chCand!=nullptr) {
whiteListTk.insert(chCand->track());
}
}
}
}

Expand Down Expand Up @@ -245,7 +255,9 @@ void pat::PATPackedCandidateProducer::produce(edm::StreamID, edm::Event& iEvent,
outPtrP->back().setLostInnerHits( lostHits );
if(outPtrP->back().pt() > minPtForTrackProperties_ ||
outPtrP->back().ptTrk() > minPtForTrackProperties_ ||
whiteList.find(ic)!=whiteList.end()) {
whiteList.find(ic)!=whiteList.end() ||
(cand.trackRef().isNonnull() && whiteListTk.find(cand.trackRef())!=whiteListTk.end())
) {
if(abs(outPtrP->back().pdgId())==22) {outPtrP->back().setTrackProperties(*ctrack,covariancePackingSchemas_[4],covarianceVersion_);}
else {
if( ctrack->hitPattern().numberOfValidPixelHits() >0) { outPtrP->back().setTrackProperties(*ctrack,covariancePackingSchemas_[0],covarianceVersion_);} //high quality
Expand Down
44 changes: 40 additions & 4 deletions PhysicsTools/PatAlgos/plugins/PATSecondaryVertexSlimmer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@
#include "DataFormats/Candidate/interface/VertexCompositePtrCandidate.h"
#include "DataFormats/PatCandidates/interface/PackedCandidate.h"
#include "DataFormats/Common/interface/RefToPtr.h"
#include "DataFormats/Candidate/interface/VertexCompositeCandidate.h"
#include "DataFormats/Candidate/interface/VertexCompositeCandidateFwd.h"
#include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"


namespace pat {
class PATSecondaryVertexSlimmer : public edm::global::EDProducer<> {
Expand All @@ -24,6 +28,7 @@ namespace pat {
private:
const edm::EDGetTokenT<reco::VertexCompositePtrCandidateCollection> src_;
const edm::EDGetTokenT<std::vector<reco::Vertex> > srcLegacy_;
const edm::EDGetTokenT<reco::VertexCompositeCandidateCollection> srcV0s_;
const edm::EDGetTokenT<edm::Association<pat::PackedCandidateCollection> > map_;
const edm::EDGetTokenT<edm::Association<pat::PackedCandidateCollection> > map2_;
};
Expand All @@ -32,6 +37,7 @@ namespace pat {
pat::PATSecondaryVertexSlimmer::PATSecondaryVertexSlimmer(const edm::ParameterSet& iConfig) :
src_(consumes<reco::VertexCompositePtrCandidateCollection>(iConfig.getParameter<edm::InputTag>("src"))),
srcLegacy_(mayConsume<std::vector<reco::Vertex> >(iConfig.getParameter<edm::InputTag>("src"))),
srcV0s_(mayConsume<reco::VertexCompositeCandidateCollection>(iConfig.getParameter<edm::InputTag>("src"))),
map_(consumes<edm::Association<pat::PackedCandidateCollection> >(iConfig.getParameter<edm::InputTag>("packedPFCandidates"))),
map2_(mayConsume<edm::Association<pat::PackedCandidateCollection> >(iConfig.existsAs<edm::InputTag>("lostTracksCandidates") ? iConfig.getParameter<edm::InputTag>("lostTracksCandidates") : edm::InputTag("lostTracks") ))
{
Expand All @@ -46,7 +52,7 @@ void pat::PATSecondaryVertexSlimmer::produce(edm::StreamID, edm::Event& iEvent,

edm::Handle<reco::VertexCompositePtrCandidateCollection> candVertices;
iEvent.getByToken(src_, candVertices);

edm::Handle<edm::Association<pat::PackedCandidateCollection> > pf2pc;
iEvent.getByToken(map_,pf2pc);

Expand All @@ -73,8 +79,10 @@ void pat::PATSecondaryVertexSlimmer::produce(edm::StreamID, edm::Event& iEvent,
// otherwise fallback to reco::Vertex secondary vertices
else
{
edm::Handle<std::vector<reco::Vertex> > vertices;
iEvent.getByToken(srcLegacy_, vertices);
edm::Handle<std::vector<reco::Vertex> > vertices;
iEvent.getByToken(srcLegacy_, vertices);

if( vertices.isValid() ){

edm::Handle<edm::Association<pat::PackedCandidateCollection> > pf2pc2;
iEvent.getByToken(map2_,pf2pc2);
Expand All @@ -98,7 +106,35 @@ void pat::PATSecondaryVertexSlimmer::produce(edm::StreamID, edm::Event& iEvent,
}
}
}
}
}else {
///Must be V0s VertexCompositeCandidate format
edm::Handle<reco::VertexCompositeCandidateCollection> srcV0s;
iEvent.getByToken( srcV0s_, srcV0s );

edm::Handle<edm::Association<pat::PackedCandidateCollection> > pf2pc2;
iEvent.getByToken(map2_,pf2pc2);

outPtr->reserve(srcV0s->size());
for (unsigned int i = 0, n = srcV0s->size(); i < n; ++i) {
const reco::VertexCompositeCandidate &v = (*srcV0s)[i];
outPtr->push_back(reco::VertexCompositePtrCandidate(0,v.p4(),v.vertex(), v.vertexCovariance(), v.vertexChi2(), v.vertexNdof()));

for(size_t dIdx=0; dIdx< v.numberOfDaughters() ; dIdx++){
reco::TrackRef trackRef = (dynamic_cast<const reco::RecoChargedCandidate*>(v.daughter(dIdx)))->track();
if((*pf2pc)[trackRef].isNonnull() && (*pf2pc)[trackRef]->numberOfHits() > 0) {
outPtr->back().addDaughter(reco::CandidatePtr(edm::refToPtr((*pf2pc)[trackRef]) ));
}
else {
if((*pf2pc2)[trackRef].isNonnull()) {
outPtr->back().addDaughter(reco::CandidatePtr(edm::refToPtr((*pf2pc2)[trackRef]) ));
}
else { edm::LogError("PATSecondaryVertexSlimmer") << "HELPME" << std::endl;}
}
}
}

} // if reco::Vertex
} // if Candidate

iEvent.put(std::move(outPtr));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
'keep *_slimmedMETsNoHF_*_*',
'keep *_slimmedMETsPuppi_*_*',
'keep *_slimmedSecondaryVertices_*_*',
'keep *_slimmedLambdaVertices_*_*',
'keep *_slimmedKshortVertices_*_*',
'keep *_slimmedJetsAK8PFPuppiSoftDropPacked_SubJets_*',

'keep recoPhotonCores_reducedEgamma_*_*',
Expand Down
2 changes: 2 additions & 0 deletions PhysicsTools/PatAlgos/python/slimming/lostTracks_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
packedPFCandidates = cms.InputTag("packedPFCandidates"),
inputTracks = cms.InputTag("generalTracks"),
secondaryVertices = cms.InputTag("inclusiveSecondaryVertices"),
kshorts=cms.InputTag("generalV0Candidates","Kshort"),
lambdas=cms.InputTag("generalV0Candidates","Lambda"),
primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"),
originalVertices = cms.InputTag("offlinePrimaryVertices"),
minPt = cms.double(0.95),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
secondaryVerticesForWhiteList = cms.VInputTag(
cms.InputTag("inclusiveCandidateSecondaryVertices"),
cms.InputTag("inclusiveCandidateSecondaryVerticesCvsL"),
cms.InputTag("generalV0Candidates","Kshort"),
cms.InputTag("generalV0Candidates","Lambda"),
),
minPtForTrackProperties = cms.double(0.95),
covarianceVersion = cms.int32(0), #so far: 0 is Phase0, 1 is Phase1
Expand Down
4 changes: 4 additions & 0 deletions PhysicsTools/PatAlgos/python/slimming/slimmedV0s_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import FWCore.ParameterSet.Config as cms
from PhysicsTools.PatAlgos.slimming.slimmedSecondaryVertices_cfi import *
slimmedKshortVertices=slimmedSecondaryVertices.clone(src=cms.InputTag("generalV0Candidates","Kshort"))
slimmedLambdaVertices=slimmedSecondaryVertices.clone(src=cms.InputTag("generalV0Candidates","Lambda"))
3 changes: 3 additions & 0 deletions PhysicsTools/PatAlgos/python/slimming/slimming_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from PhysicsTools.PatAlgos.slimming.slimmedTaus_cfi import *
from PhysicsTools.PatAlgos.slimming.slimmedSecondaryVertices_cfi import *
from PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi import *
from PhysicsTools.PatAlgos.slimming.slimmedV0s_cff import *
from PhysicsTools.PatAlgos.slimming.metFilterPaths_cff import *
from PhysicsTools.PatAlgos.slimming.MicroEventContent_cff import *
from RecoEgamma.EgammaPhotonProducers.reducedEgamma_cfi import *
Expand All @@ -35,6 +36,8 @@
slimmedPhotons,
slimmedTaus,
slimmedSecondaryVertices,
slimmedKshortVertices,
slimmedLambdaVertices,
slimmedMETs,
metFilterPathsTask,
reducedEgamma,
Expand Down

0 comments on commit 74bf290

Please sign in to comment.