Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run3-sim118H Use tokens rather than labels in accessing collections in SimMuon/MCtruth #37943

Merged
merged 2 commits into from May 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 3 additions & 1 deletion SimMuon/MCTruth/interface/CSCTruthTest.h
@@ -1,6 +1,7 @@
#ifndef MCTruth_CSCTruthTest_h
#define MCTruth_CSCTruthTest_h

#include "DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h"
#include "FWCore/Framework/interface/ConsumesCollector.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/stream/EDAnalyzer.h"
Expand All @@ -9,12 +10,13 @@
class CSCTruthTest : public edm::stream::EDAnalyzer<> {
public:
explicit CSCTruthTest(const edm::ParameterSet &);
~CSCTruthTest() override;
~CSCTruthTest() override = default;

private:
void analyze(const edm::Event &, const edm::EventSetup &) override;
const edm::ParameterSet &conf_;
edm::ConsumesCollector consumeCollector_;
const edm::EDGetTokenT<CSCRecHit2DCollection> cscRecHitToken_;
};

#endif
19 changes: 12 additions & 7 deletions SimMuon/MCTruth/interface/MuonTruth.h
Expand Up @@ -62,15 +62,20 @@ class MuonTruth {
const DigiSimLinks *theDigiSimLinks;
const DigiSimLinks *theWireDigiSimLinks;

edm::InputTag linksTag;
edm::InputTag wireLinksTag;
const edm::InputTag linksTag;
const edm::InputTag wireLinksTag;

bool crossingframe;
edm::InputTag CSCsimHitsTag;
edm::InputTag CSCsimHitsXFTag;
const bool crossingframe;
const edm::InputTag CSCsimHitsTag;
const edm::InputTag CSCsimHitsXFTag;

edm::ESGetToken<CSCGeometry, MuonGeometryRecord> geomToken_;
edm::ESGetToken<CSCBadChambers, CSCBadChambersRcd> badToken_;
const edm::ESGetToken<CSCGeometry, MuonGeometryRecord> geomToken_;
const edm::ESGetToken<CSCBadChambers, CSCBadChambersRcd> badToken_;

const edm::EDGetTokenT<DigiSimLinks> linksToken_;
const edm::EDGetTokenT<DigiSimLinks> wireLinksToken_;
edm::EDGetTokenT<CrossingFrame<PSimHit>> simHitsXFToken_;
edm::EDGetTokenT<edm::PSimHitContainer> simHitsToken_;

std::map<unsigned int, edm::PSimHitContainer> theSimHitMap;

Expand Down
12 changes: 3 additions & 9 deletions SimMuon/MCTruth/interface/TrackerMuonHitExtractor.h
Expand Up @@ -18,20 +18,14 @@
class TrackerMuonHitExtractor {
public:
explicit TrackerMuonHitExtractor(const edm::ParameterSet &, edm::ConsumesCollector &&ic);
explicit TrackerMuonHitExtractor(const edm::ParameterSet &);
~TrackerMuonHitExtractor();
~TrackerMuonHitExtractor() = default;

void init(const edm::Event &);
std::vector<const TrackingRecHit *> getMuonHits(const reco::Muon &mu) const;

private:
edm::Handle<DTRecSegment4DCollection> dtSegmentCollectionH_;
edm::Handle<CSCSegmentCollection> cscSegmentCollectionH_;

edm::EDGetTokenT<DTRecSegment4DCollection> inputDTRecSegment4DToken_;
edm::EDGetTokenT<CSCSegmentCollection> inputCSCSegmentToken_;
edm::InputTag inputDTRecSegment4DCollection_;
edm::InputTag inputCSCSegmentCollection_;
const edm::EDGetTokenT<DTRecSegment4DCollection> inputDTRecSegment4DToken_;
const edm::EDGetTokenT<CSCSegmentCollection> inputCSCSegmentToken_;
};

#endif
13 changes: 5 additions & 8 deletions SimMuon/MCTruth/src/CSCTruthTest.cc
@@ -1,18 +1,15 @@
#include "DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "SimMuon/MCTruth/interface/CSCTruthTest.h"

CSCTruthTest::CSCTruthTest(const edm::ParameterSet &iConfig) : conf_(iConfig), consumeCollector_(consumesCollector()) {}

CSCTruthTest::~CSCTruthTest() {}
CSCTruthTest::CSCTruthTest(const edm::ParameterSet &iConfig)
: conf_(iConfig),
consumeCollector_(consumesCollector()),
cscRecHitToken_(consumes<CSCRecHit2DCollection>(edm::InputTag("csc2DRecHits"))) {}

void CSCTruthTest::analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) {
using namespace edm;

Handle<CSCRecHit2DCollection> cscRecHits;
iEvent.getByLabel("csc2DRecHits", cscRecHits);
const edm::Handle<CSCRecHit2DCollection> &cscRecHits = iEvent.getHandle(cscRecHitToken_);

MuonTruth theTruth(iEvent, iSetup, conf_, consumeCollector_);

Expand Down
28 changes: 12 additions & 16 deletions SimMuon/MCTruth/src/MuonAssociatorByHits.cc
Expand Up @@ -31,11 +31,11 @@ namespace muonAssociatorByHitsDiagnostics {

InputDumper(const edm::ParameterSet &conf, edm::ConsumesCollector &&iC) : InputDumper(conf) {
if (crossingframe) {
iC.consumes<CrossingFrame<SimTrack>>(simtracksXFTag);
iC.consumes<CrossingFrame<SimVertex>>(simtracksXFTag);
simtracksXFToken_ = iC.consumes<CrossingFrame<SimTrack>>(simtracksXFTag);
simvertexXFToken_ = iC.consumes<CrossingFrame<SimVertex>>(simtracksXFTag);
} else {
iC.consumes<edm::SimTrackContainer>(simtracksTag);
iC.consumes<edm::SimVertexContainer>(simtracksTag);
simtracksToken_ = iC.consumes<edm::SimTrackContainer>(simtracksTag);
simvertexToken_ = iC.consumes<edm::SimVertexContainer>(simtracksTag);
}
}

Expand All @@ -45,6 +45,10 @@ namespace muonAssociatorByHitsDiagnostics {
edm::InputTag const simtracksTag;
edm::InputTag const simtracksXFTag;
bool const crossingframe;
edm::EDGetTokenT<CrossingFrame<SimTrack>> simtracksXFToken_;
edm::EDGetTokenT<CrossingFrame<SimVertex>> simvertexXFToken_;
edm::EDGetTokenT<edm::SimTrackContainer> simtracksToken_;
edm::EDGetTokenT<edm::SimVertexContainer> simvertexToken_;
};

void InputDumper::dump(const TrackHitsCollection &tC,
Expand Down Expand Up @@ -73,16 +77,8 @@ namespace muonAssociatorByHitsDiagnostics {
}
}

// SimTrack collection
edm::Handle<CrossingFrame<SimTrack>> cf_simtracks;
edm::Handle<edm::SimTrackContainer> simTrackCollection;

// SimVertex collection
edm::Handle<CrossingFrame<SimVertex>> cf_simvertices;
edm::Handle<edm::SimVertexContainer> simVertexCollection;

if (crossingframe) {
event.getByLabel(simtracksXFTag, cf_simtracks);
const auto &cf_simtracks = event.getHandle(simtracksXFToken_);
unique_ptr<MixCollection<SimTrack>> SimTk(new MixCollection<SimTrack>(cf_simtracks.product()));
edm::LogVerbatim("MuonAssociatorByHits")
<< "\n"
Expand All @@ -96,7 +92,7 @@ namespace muonAssociatorByHitsDiagnostics {
<< ", pT = " << ITER->momentum().Pt() << ", eta = " << ITER->momentum().Eta()
<< ", phi = " << ITER->momentum().Phi() << "\n * " << *ITER << endl;
}
event.getByLabel(simtracksXFTag, cf_simvertices);
const auto &cf_simvertices = event.getHandle(simvertexXFToken_);
unique_ptr<MixCollection<SimVertex>> SimVtx(new MixCollection<SimVertex>(cf_simvertices.product()));
edm::LogVerbatim("MuonAssociatorByHits")
<< "\n"
Expand All @@ -107,7 +103,7 @@ namespace muonAssociatorByHitsDiagnostics {
edm::LogVerbatim("MuonAssociatorByHits") << "SimVertex " << kv << " : " << *VITER << endl;
}
} else {
event.getByLabel(simtracksTag, simTrackCollection);
const auto &simTrackCollection = event.getHandle(simtracksToken_);
const edm::SimTrackContainer simTC = *(simTrackCollection.product());
edm::LogVerbatim("MuonAssociatorByHits")
<< "\n"
Expand All @@ -121,7 +117,7 @@ namespace muonAssociatorByHitsDiagnostics {
<< ", pT = " << ITER->momentum().Pt() << ", eta = " << ITER->momentum().Eta()
<< ", phi = " << ITER->momentum().Phi() << "\n * " << *ITER << endl;
}
event.getByLabel(simtracksTag, simVertexCollection);
const auto &simVertexCollection = event.getHandle(simvertexToken_);
const edm::SimVertexContainer simVC = *(simVertexCollection.product());
edm::LogVerbatim("MuonAssociatorByHits") << "\n"
<< "SimVertex collection with InputTag = "
Expand Down
32 changes: 14 additions & 18 deletions SimMuon/MCTruth/src/MuonTruth.cc
Expand Up @@ -17,7 +17,9 @@ MuonTruth::MuonTruth(const edm::Event &event,
CSCsimHitsTag(conf.getParameter<edm::InputTag>("CSCsimHitsTag")),
CSCsimHitsXFTag(conf.getParameter<edm::InputTag>("CSCsimHitsXFTag")),
geomToken_(iC.esConsumes<CSCGeometry, MuonGeometryRecord>()),
badToken_(iC.esConsumes<CSCBadChambers, CSCBadChambersRcd>()) {
badToken_(iC.esConsumes<CSCBadChambers, CSCBadChambersRcd>()),
linksToken_(iC.consumes<DigiSimLinks>(linksTag)),
wireLinksToken_(iC.consumes<DigiSimLinks>(wireLinksTag)) {
initEvent(event, setup);
}

Expand All @@ -29,43 +31,38 @@ MuonTruth::MuonTruth(const edm::ParameterSet &conf, edm::ConsumesCollector &&iC)
// CrossingFrame used or not ?
crossingframe(conf.getParameter<bool>("crossingframe")),
CSCsimHitsTag(conf.getParameter<edm::InputTag>("CSCsimHitsTag")),
CSCsimHitsXFTag(conf.getParameter<edm::InputTag>("CSCsimHitsXFTag"))

{
iC.consumes<DigiSimLinks>(linksTag);
iC.consumes<DigiSimLinks>(wireLinksTag);
CSCsimHitsXFTag(conf.getParameter<edm::InputTag>("CSCsimHitsXFTag")),
linksToken_(iC.consumes<DigiSimLinks>(linksTag)),
wireLinksToken_(iC.consumes<DigiSimLinks>(wireLinksTag)) {
if (crossingframe) {
iC.consumes<CrossingFrame<PSimHit>>(CSCsimHitsXFTag);
simHitsXFToken_ = iC.consumes<CrossingFrame<PSimHit>>(CSCsimHitsXFTag);
} else if (!CSCsimHitsTag.label().empty()) {
iC.consumes<edm::PSimHitContainer>(CSCsimHitsTag);
simHitsToken_ = iC.consumes<edm::PSimHitContainer>(CSCsimHitsTag);
}
}

void MuonTruth::initEvent(const edm::Event &event, const edm::EventSetup &setup) {
edm::Handle<DigiSimLinks> digiSimLinks;
LogTrace("MuonTruth") << "getting CSC Strip DigiSimLink collection - " << linksTag;
event.getByLabel(linksTag, digiSimLinks);
const edm::Handle<DigiSimLinks> &digiSimLinks = event.getHandle(linksToken_);
theDigiSimLinks = digiSimLinks.product();

edm::Handle<DigiSimLinks> wireDigiSimLinks;
LogTrace("MuonTruth") << "getting CSC Wire DigiSimLink collection - " << wireLinksTag;
event.getByLabel(wireLinksTag, wireDigiSimLinks);
const edm::Handle<DigiSimLinks> &wireDigiSimLinks = event.getHandle(wireLinksToken_);
theWireDigiSimLinks = wireDigiSimLinks.product();

// get CSC Geometry to use CSCLayer methods
edm::ESHandle<CSCGeometry> mugeom = setup.getHandle(geomToken_);
const edm::ESHandle<CSCGeometry> &mugeom = setup.getHandle(geomToken_);
cscgeom = mugeom.product();

// get CSC Bad Chambers (ME4/2)
edm::ESHandle<CSCBadChambers> badChambers = setup.getHandle(badToken_);
const edm::ESHandle<CSCBadChambers> &badChambers = setup.getHandle(badToken_);
cscBadChambers = badChambers.product();

theSimHitMap.clear();

if (crossingframe) {
edm::Handle<CrossingFrame<PSimHit>> cf;
LogTrace("MuonTruth") << "getting CrossingFrame<PSimHit> collection - " << CSCsimHitsXFTag;
event.getByLabel(CSCsimHitsXFTag, cf);
const edm::Handle<CrossingFrame<PSimHit>> &cf = event.getHandle(simHitsXFToken_);

std::unique_ptr<MixCollection<PSimHit>> CSCsimhits(new MixCollection<PSimHit>(cf.product()));
LogTrace("MuonTruth") << "... size = " << CSCsimhits->size();
Expand All @@ -75,9 +72,8 @@ void MuonTruth::initEvent(const edm::Event &event, const edm::EventSetup &setup)
}

} else if (!CSCsimHitsTag.label().empty()) {
edm::Handle<edm::PSimHitContainer> CSCsimhits;
LogTrace("MuonTruth") << "getting PSimHit collection - " << CSCsimHitsTag;
event.getByLabel(CSCsimHitsTag, CSCsimhits);
const edm::Handle<edm::PSimHitContainer> &CSCsimhits = event.getHandle(simHitsToken_);
LogTrace("MuonTruth") << "... size = " << CSCsimhits->size();

for (edm::PSimHitContainer::const_iterator hitItr = CSCsimhits->begin(); hitItr != CSCsimhits->end(); ++hitItr) {
Expand Down
26 changes: 9 additions & 17 deletions SimMuon/MCTruth/src/TrackerMuonHitExtractor.cc
Expand Up @@ -17,24 +17,16 @@ TrackerMuonHitExtractor::TrackerMuonHitExtractor(const edm::ParameterSet &parset
: inputDTRecSegment4DToken_(
ic.consumes<DTRecSegment4DCollection>(parset.getParameter<edm::InputTag>("inputDTRecSegment4DCollection"))),
inputCSCSegmentToken_(
ic.consumes<CSCSegmentCollection>(parset.getParameter<edm::InputTag>("inputCSCSegmentCollection"))),
inputDTRecSegment4DCollection_(parset.getParameter<edm::InputTag>("inputDTRecSegment4DCollection")),
inputCSCSegmentCollection_(parset.getParameter<edm::InputTag>("inputCSCSegmentCollection")) {}

TrackerMuonHitExtractor::TrackerMuonHitExtractor(const edm::ParameterSet &parset)
: inputDTRecSegment4DCollection_(parset.getParameter<edm::InputTag>("inputDTRecSegment4DCollection")),
inputCSCSegmentCollection_(parset.getParameter<edm::InputTag>("inputCSCSegmentCollection")) {}

TrackerMuonHitExtractor::~TrackerMuonHitExtractor() {}
ic.consumes<CSCSegmentCollection>(parset.getParameter<edm::InputTag>("inputCSCSegmentCollection"))) {}

void TrackerMuonHitExtractor::init(const edm::Event &iEvent) {
iEvent.getByLabel(inputDTRecSegment4DCollection_, dtSegmentCollectionH_);
iEvent.getByLabel(inputCSCSegmentCollection_, cscSegmentCollectionH_);
const edm::Handle<DTRecSegment4DCollection> &dtSegmentCollectionH = iEvent.getHandle(inputDTRecSegment4DToken_);
const edm::Handle<CSCSegmentCollection> &cscSegmentCollectionH = iEvent.getHandle(inputCSCSegmentToken_);

edm::LogVerbatim("TrackerMuonHitExtractor") << "\nThere are " << dtSegmentCollectionH_->size() << " DT segments.";
edm::LogVerbatim("TrackerMuonHitExtractor") << "\nThere are " << dtSegmentCollectionH->size() << " DT segments.";
unsigned int index_dt_segment = 0;
for (DTRecSegment4DCollection::const_iterator segment = dtSegmentCollectionH_->begin();
segment != dtSegmentCollectionH_->end();
for (DTRecSegment4DCollection::const_iterator segment = dtSegmentCollectionH->begin();
segment != dtSegmentCollectionH->end();
++segment, index_dt_segment++) {
LocalPoint segmentLocalPosition = segment->localPosition();
LocalVector segmentLocalDirection = segment->localDirection();
Expand Down Expand Up @@ -63,10 +55,10 @@ void TrackerMuonHitExtractor::init(const edm::Event &iEvent) {
<< segmentdYdZerr << ")";
}

edm::LogVerbatim("TrackerMuonHitExtractor") << "\nThere are " << cscSegmentCollectionH_->size() << " CSC segments.";
edm::LogVerbatim("TrackerMuonHitExtractor") << "\nThere are " << cscSegmentCollectionH->size() << " CSC segments.";
unsigned int index_csc_segment = 0;
for (CSCSegmentCollection::const_iterator segment = cscSegmentCollectionH_->begin();
segment != cscSegmentCollectionH_->end();
for (CSCSegmentCollection::const_iterator segment = cscSegmentCollectionH->begin();
segment != cscSegmentCollectionH->end();
++segment, index_csc_segment++) {
LocalPoint segmentLocalPosition = segment->localPosition();
LocalVector segmentLocalDirection = segment->localDirection();
Expand Down
41 changes: 18 additions & 23 deletions SimMuon/MCTruth/test/testReader.cc
@@ -1,52 +1,47 @@
#include "SimDataFormats/Associations/interface/TrackAssociation.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
#include "SimMuon/MCTruth/test/testReader.h"

testReader::testReader(const edm::ParameterSet &parset)
: tracksTag(parset.getParameter<edm::InputTag>("tracksTag")),
tpTag(parset.getParameter<edm::InputTag>("tpTag")),
assoMapsTag(parset.getParameter<edm::InputTag>("assoMapsTag")) {}

testReader::~testReader() {}

void testReader::analyze(const edm::Event &event, const edm::EventSetup &setup) {
edm::Handle<edm::View<reco::Track>> trackCollectionH;
testReader::testReader(const edm::ParameterSet& parset)
: tracksTag_(parset.getParameter<edm::InputTag>("tracksTag")),
tpTag_(parset.getParameter<edm::InputTag>("tpTag")),
assoMapsTag_(parset.getParameter<edm::InputTag>("assoMapsTag")),
tracksToken_(consumes<edm::View<reco::Track>>(tracksTag_)),
tpToken_(consumes<TrackingParticleCollection>(tpTag_)),
recoToSimToken_(consumes<reco::RecoToSimCollection>(assoMapsTag_)),
simToRecoToken_(consumes<reco::SimToRecoCollection>(assoMapsTag_)) {}

void testReader::analyze(const edm::Event& event, const edm::EventSetup& setup) {
LogTrace("testReader") << "testReader::analyze : getting reco::Track collection, " << tracksTag_;
edm::View<reco::Track> trackCollection;
LogTrace("testReader") << "testReader::analyze : getting reco::Track collection, " << tracksTag;
event.getByLabel(tracksTag, trackCollectionH);
const edm::Handle<edm::View<reco::Track>>& trackCollectionH = event.getHandle(tracksToken_);
if (trackCollectionH.isValid()) {
trackCollection = *(trackCollectionH.product());
LogTrace("testReader") << "... size = " << trackCollection.size();
} else
LogTrace("testReader") << "... NOT FOUND.";

edm::Handle<TrackingParticleCollection> TPCollectionH;
LogTrace("testReader") << "testReader::analyze : getting TrackingParticle collection, " << tpTag_;
TrackingParticleCollection tPC;
LogTrace("testReader") << "testReader::analyze : getting TrackingParticle collection, " << tpTag;
event.getByLabel(tpTag, TPCollectionH);
const edm::Handle<TrackingParticleCollection>& TPCollectionH = event.getHandle(tpToken_);
if (TPCollectionH.isValid()) {
tPC = *(TPCollectionH.product());
LogTrace("testReader") << "... size = " << tPC.size();
} else
LogTrace("testReader") << "... NOT FOUND.";

edm::Handle<reco::RecoToSimCollection> recSimH;
LogTrace("testReader") << "testReader::analyze : getting RecoToSimCollection - " << assoMapsTag_;
reco::RecoToSimCollection recSimColl;
LogTrace("testReader") << "testReader::analyze : getting RecoToSimCollection - " << assoMapsTag;
event.getByLabel(assoMapsTag, recSimH);
const edm::Handle<reco::RecoToSimCollection>& recSimH = event.getHandle(recoToSimToken_);
if (recSimH.isValid()) {
recSimColl = *(recSimH.product());
LogTrace("testReader") << "... size = " << recSimColl.size();
} else {
LogTrace("testReader") << "... NOT FOUND.";
}

edm::Handle<reco::SimToRecoCollection> simRecH;
LogTrace("testReader") << "testReader::analyze : getting SimToRecoCollection - " << assoMapsTag_;
reco::SimToRecoCollection simRecColl;
LogTrace("testReader") << "testReader::analyze : getting SimToRecoCollection - " << assoMapsTag;
event.getByLabel(assoMapsTag, simRecH);
const edm::Handle<reco::SimToRecoCollection>& simRecH = event.getHandle(simToRecoToken_);
if (simRecH.isValid()) {
simRecColl = *(simRecH.product());
LogTrace("testReader") << "... size = " << simRecColl.size();
Expand Down
15 changes: 11 additions & 4 deletions SimMuon/MCTruth/test/testReader.h
Expand Up @@ -6,19 +6,26 @@
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "SimDataFormats/Associations/interface/TrackAssociation.h"
#include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
#include <memory>

class testReader : public edm::one::EDAnalyzer<> {
public:
testReader(const edm::ParameterSet &);
~testReader() override;
~testReader() override = default;
void beginJob() override {}
void analyze(const edm::Event &, const edm::EventSetup &) override;

private:
edm::InputTag tracksTag;
edm::InputTag tpTag;
edm::InputTag assoMapsTag;
const edm::InputTag tracksTag_;
const edm::InputTag tpTag_;
const edm::InputTag assoMapsTag_;
const edm::EDGetTokenT<edm::View<reco::Track>> tracksToken_;
const edm::EDGetTokenT<TrackingParticleCollection> tpToken_;
const edm::EDGetTokenT<reco::RecoToSimCollection> recoToSimToken_;
const edm::EDGetTokenT<reco::SimToRecoCollection> simToRecoToken_;
};

#endif