Skip to content

Commit

Permalink
Change getByLabel to use tokens in Alignment/OfflineValidation
Browse files Browse the repository at this point in the history
Code check
  • Loading branch information
Sunanda committed Nov 12, 2022
1 parent 0c2b667 commit b48f0d0
Show file tree
Hide file tree
Showing 6 changed files with 238 additions and 299 deletions.
99 changes: 40 additions & 59 deletions Alignment/OfflineValidation/plugins/MuonAlignmentAnalyzer.cc
Expand Up @@ -16,22 +16,12 @@
#include "FWCore/Framework/interface/Event.h"

#include "Geometry/CommonDetUnit/interface/GeomDet.h"
#include "DataFormats/DetId/interface/DetId.h"
#include "DataFormats/MuonDetId/interface/DTChamberId.h"
#include "DataFormats/MuonDetId/interface/CSCDetId.h"
#include "DataFormats/Math/interface/deltaR.h"

#include "TrackingTools/TransientTrack/interface/TransientTrack.h"
#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
#include "DataFormats/TrackReco/interface/Track.h"

#include "SimDataFormats/Track/interface/SimTrackContainer.h"

#include "DataFormats/TrackingRecHit/interface/RecSegment.h"
#include "DataFormats/DTRecHit/interface/DTRecSegment4D.h"
#include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h"
#include "DataFormats/CSCRecHit/interface/CSCSegment.h"
#include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h"
#include "TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h"
#include "DataFormats/GeometryVector/interface/GlobalVector.h"

Expand All @@ -46,6 +36,36 @@
MuonAlignmentAnalyzer::MuonAlignmentAnalyzer(const edm::ParameterSet &pset)
: magFieldToken_(esConsumes()),
trackingGeometryToken_(esConsumes()),
theSTAMuonTag(pset.getParameter<edm::InputTag>("StandAloneTrackCollectionTag")),
theGLBMuonTag(pset.getParameter<edm::InputTag>("GlobalMuonTrackCollectionTag")),
theRecHits4DTagDT(pset.getParameter<edm::InputTag>("RecHits4DDTCollectionTag")),
theRecHits4DTagCSC(pset.getParameter<edm::InputTag>("RecHits4DCSCCollectionTag")),
theDataType(pset.getUntrackedParameter<std::string>("DataType")),
doSAplots(pset.getUntrackedParameter<bool>("doSAplots")),
doGBplots(pset.getUntrackedParameter<bool>("doGBplots")),
doResplots(pset.getUntrackedParameter<bool>("doResplots")),
ptRangeMin(pset.getUntrackedParameter<double>("ptRangeMin")),
ptRangeMax(pset.getUntrackedParameter<double>("ptRangeMax")),
invMassRangeMin(pset.getUntrackedParameter<double>("invMassRangeMin")),
invMassRangeMax(pset.getUntrackedParameter<double>("invMassRangeMax")),
resLocalXRangeStation1(pset.getUntrackedParameter<double>("resLocalXRangeStation1")),
resLocalXRangeStation2(pset.getUntrackedParameter<double>("resLocalXRangeStation2")),
resLocalXRangeStation3(pset.getUntrackedParameter<double>("resLocalXRangeStation3")),
resLocalXRangeStation4(pset.getUntrackedParameter<double>("resLocalXRangeStation4")),
resLocalYRangeStation1(pset.getUntrackedParameter<double>("resLocalYRangeStation1")),
resLocalYRangeStation2(pset.getUntrackedParameter<double>("resLocalYRangeStation2")),
resLocalYRangeStation3(pset.getUntrackedParameter<double>("resLocalYRangeStation3")),
resLocalYRangeStation4(pset.getUntrackedParameter<double>("resLocalYRangeStation4")),
resPhiRange(pset.getUntrackedParameter<double>("resPhiRange")),
resThetaRange(pset.getUntrackedParameter<double>("resThetaRange")),
nbins(pset.getUntrackedParameter<unsigned int>("nbins")),
min1DTrackRecHitSize(pset.getUntrackedParameter<unsigned int>("min1DTrackRecHitSize")),
min4DTrackSegmentSize(pset.getUntrackedParameter<unsigned int>("min4DTrackSegmentSize")),
simTrackToken_(consumes<edm::SimTrackContainer>(edm::InputTag("g4SimHits"))),
staTrackToken_(consumes<reco::TrackCollection>(theSTAMuonTag)),
glbTrackToken_(consumes<reco::TrackCollection>(theGLBMuonTag)),
allDTSegmentToken_(consumes<DTRecSegment4DCollection>(theRecHits4DTagDT)),
allCSCSegmentToken_(consumes<CSCSegmentCollection>(theRecHits4DTagCSC)),
hGBNmuons(nullptr),
hSANmuons(nullptr),
hSimNmuons(nullptr),
Expand Down Expand Up @@ -195,36 +215,6 @@ MuonAlignmentAnalyzer::MuonAlignmentAnalyzer(const edm::ParameterSet &pset)
hprofGlobalRCSC(nullptr) {
usesResource(TFileService::kSharedResource);

theSTAMuonTag = pset.getParameter<edm::InputTag>("StandAloneTrackCollectionTag");
theGLBMuonTag = pset.getParameter<edm::InputTag>("GlobalMuonTrackCollectionTag");

theRecHits4DTagDT = pset.getParameter<edm::InputTag>("RecHits4DDTCollectionTag");
theRecHits4DTagCSC = pset.getParameter<edm::InputTag>("RecHits4DCSCCollectionTag");

theDataType = pset.getUntrackedParameter<std::string>("DataType");
ptRangeMin = pset.getUntrackedParameter<double>("ptRangeMin");
ptRangeMax = pset.getUntrackedParameter<double>("ptRangeMax");
invMassRangeMin = pset.getUntrackedParameter<double>("invMassRangeMin");
invMassRangeMax = pset.getUntrackedParameter<double>("invMassRangeMax");

doSAplots = pset.getUntrackedParameter<bool>("doSAplots");
doGBplots = pset.getUntrackedParameter<bool>("doGBplots");
doResplots = pset.getUntrackedParameter<bool>("doResplots");

resLocalXRangeStation1 = pset.getUntrackedParameter<double>("resLocalXRangeStation1");
resLocalXRangeStation2 = pset.getUntrackedParameter<double>("resLocalXRangeStation2");
resLocalXRangeStation3 = pset.getUntrackedParameter<double>("resLocalXRangeStation3");
resLocalXRangeStation4 = pset.getUntrackedParameter<double>("resLocalXRangeStation4");
resLocalYRangeStation1 = pset.getUntrackedParameter<double>("resLocalYRangeStation1");
resLocalYRangeStation2 = pset.getUntrackedParameter<double>("resLocalYRangeStation2");
resLocalYRangeStation3 = pset.getUntrackedParameter<double>("resLocalYRangeStation3");
resLocalYRangeStation4 = pset.getUntrackedParameter<double>("resLocalYRangeStation4");
resPhiRange = pset.getUntrackedParameter<double>("resPhiRange");
resThetaRange = pset.getUntrackedParameter<double>("resThetaRange");
nbins = pset.getUntrackedParameter<unsigned int>("nbins");
min1DTrackRecHitSize = pset.getUntrackedParameter<unsigned int>("min1DTrackRecHitSize");
min4DTrackSegmentSize = pset.getUntrackedParameter<unsigned int>("min4DTrackSegmentSize");

if (theDataType != "RealData" && theDataType != "SimData")
edm::LogError("MuonAlignmentAnalyzer") << "Error in Data Type!!" << std::endl;

Expand All @@ -234,9 +224,6 @@ MuonAlignmentAnalyzer::MuonAlignmentAnalyzer(const edm::ParameterSet &pset)
numberOfHits = 0;
}

/// Destructor
MuonAlignmentAnalyzer::~MuonAlignmentAnalyzer() {}

void MuonAlignmentAnalyzer::beginJob() {
// eventSetup.get<IdealMagneticFieldRecord>().get(theMGField);

Expand Down Expand Up @@ -1729,8 +1716,7 @@ void MuonAlignmentAnalyzer::analyze(const edm::Event &event, const edm::EventSet
int i = 0, ie = 0, ib = 0;

// Get the SimTrack collection from the event
edm::Handle<edm::SimTrackContainer> simTracks;
event.getByLabel("g4SimHits", simTracks);
const edm::Handle<edm::SimTrackContainer> &simTracks = event.getHandle(simTrackToken_);

edm::SimTrackContainer::const_iterator simTrack;

Expand Down Expand Up @@ -1794,8 +1780,7 @@ void MuonAlignmentAnalyzer::analyze(const edm::Event &event, const edm::EventSet
double ich = 0;

// Get the RecTrack collection from the event
edm::Handle<reco::TrackCollection> staTracks;
event.getByLabel(theSTAMuonTag, staTracks);
const edm::Handle<reco::TrackCollection> &staTracks = event.getHandle(staTrackToken_);
numberOfSARecTracks += staTracks->size();

reco::TrackCollection::const_iterator staTrack;
Expand Down Expand Up @@ -1890,8 +1875,7 @@ void MuonAlignmentAnalyzer::analyze(const edm::Event &event, const edm::EventSet

if (doGBplots) {
// Get the RecTrack collection from the event
edm::Handle<reco::TrackCollection> glbTracks;
event.getByLabel(theGLBMuonTag, glbTracks);
const edm::Handle<reco::TrackCollection> &glbTracks = event.getHandle(glbTrackToken_);
numberOfGBRecTracks += glbTracks->size();

double GBrecPt = 0;
Expand Down Expand Up @@ -1994,20 +1978,17 @@ void MuonAlignmentAnalyzer::analyze(const edm::Event &event, const edm::EventSet

if (doResplots) {
const MagneticField *theMGField = &eventSetup.getData(magFieldToken_);
edm::ESHandle<GlobalTrackingGeometry> theTrackingGeometry = eventSetup.getHandle(trackingGeometryToken_);
const edm::ESHandle<GlobalTrackingGeometry> &theTrackingGeometry = eventSetup.getHandle(trackingGeometryToken_);

// Get the RecTrack collection from the event
edm::Handle<reco::TrackCollection> staTracks;
event.getByLabel(theSTAMuonTag, staTracks);
const edm::Handle<reco::TrackCollection> &staTracks = event.getHandle(staTrackToken_);

// Get the 4D DTSegments
edm::Handle<DTRecSegment4DCollection> all4DSegmentsDT;
event.getByLabel(theRecHits4DTagDT, all4DSegmentsDT);
const edm::Handle<DTRecSegment4DCollection> &all4DSegmentsDT = event.getHandle(allDTSegmentToken_);
DTRecSegment4DCollection::const_iterator segmentDT;

// Get the 4D CSCSegments
edm::Handle<CSCSegmentCollection> all4DSegmentsCSC;
event.getByLabel(theRecHits4DTagCSC, all4DSegmentsCSC);
const edm::Handle<CSCSegmentCollection> &all4DSegmentsCSC = event.getHandle(allCSCSegmentToken_);
CSCSegmentCollection::const_iterator segmentCSC;

//Vectors used to perform the matching between Segments and hits from Track
Expand Down Expand Up @@ -2464,11 +2445,11 @@ void MuonAlignmentAnalyzer::analyze(const edm::Event &event, const edm::EventSet
}

RecHitVector MuonAlignmentAnalyzer::doMatching(const reco::Track &staTrack,
edm::Handle<DTRecSegment4DCollection> &all4DSegmentsDT,
edm::Handle<CSCSegmentCollection> &all4DSegmentsCSC,
const edm::Handle<DTRecSegment4DCollection> &all4DSegmentsDT,
const edm::Handle<CSCSegmentCollection> &all4DSegmentsCSC,
intDVector *indexCollectionDT,
intDVector *indexCollectionCSC,
edm::ESHandle<GlobalTrackingGeometry> &theTrackingGeometry) {
const edm::ESHandle<GlobalTrackingGeometry> &theTrackingGeometry) {
DTRecSegment4DCollection::const_iterator segmentDT;
CSCSegmentCollection::const_iterator segmentCSC;

Expand Down
51 changes: 33 additions & 18 deletions Alignment/OfflineValidation/plugins/MuonAlignmentAnalyzer.h
Expand Up @@ -14,9 +14,17 @@

// Base Class Headers
#include "CommonTools/UtilAlgos/interface/TFileService.h"
#include "DataFormats/DetId/interface/DetId.h"
#include "DataFormats/MuonDetId/interface/DTChamberId.h"
#include "DataFormats/MuonDetId/interface/CSCDetId.h"
#include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h"
#include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "DataFormats/DTRecHit/interface/DTRecSegment4D.h"
#include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h"
#include "DataFormats/CSCRecHit/interface/CSCSegment.h"
#include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h"
#include "FWCore/Framework/interface/one/EDAnalyzer.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/Utilities/interface/InputTag.h"
Expand All @@ -25,6 +33,7 @@
#include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
#include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
#include "SimDataFormats/Track/interface/SimTrackContainer.h"
#include "TrackingTools/GeomPropagators/interface/Propagator.h"
#include <vector>

Expand All @@ -45,7 +54,7 @@ class MuonAlignmentAnalyzer : public edm::one::EDAnalyzer<edm::one::SharedResour
MuonAlignmentAnalyzer(const edm::ParameterSet &pset);

/// Destructor
~MuonAlignmentAnalyzer() override;
~MuonAlignmentAnalyzer() override = default;

// Operations

Expand All @@ -59,29 +68,43 @@ class MuonAlignmentAnalyzer : public edm::one::EDAnalyzer<edm::one::SharedResour
const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magFieldToken_;
const edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> trackingGeometryToken_;
RecHitVector doMatching(const reco::Track &,
edm::Handle<DTRecSegment4DCollection> &,
edm::Handle<CSCSegmentCollection> &,
const edm::Handle<DTRecSegment4DCollection> &,
const edm::Handle<CSCSegmentCollection> &,
intDVector *,
intDVector *,
edm::ESHandle<GlobalTrackingGeometry> &);
const edm::ESHandle<GlobalTrackingGeometry> &);

edm::Service<TFileService> fs;

// InputTags
edm::InputTag theGLBMuonTag;
edm::InputTag theSTAMuonTag;
const edm::InputTag theSTAMuonTag;
const edm::InputTag theGLBMuonTag;

// Collections needed
edm::InputTag theRecHits4DTagDT;
edm::InputTag theRecHits4DTagCSC;
const edm::InputTag theRecHits4DTagDT;
const edm::InputTag theRecHits4DTagCSC;

// To switch between real data and MC
std::string theDataType;
const std::string theDataType;

bool doSAplots, doGBplots, doResplots;
const bool doSAplots, doGBplots, doResplots;

// Histograms

// hist kinematic range
const double ptRangeMin, ptRangeMax, invMassRangeMin, invMassRangeMax;
// hist residual range
const double resLocalXRangeStation1, resLocalXRangeStation2, resLocalXRangeStation3, resLocalXRangeStation4;
const double resLocalYRangeStation1, resLocalYRangeStation2, resLocalYRangeStation3, resLocalYRangeStation4;
const double resPhiRange, resThetaRange;
const unsigned int nbins, min1DTrackRecHitSize, min4DTrackSegmentSize;

const edm::EDGetTokenT<edm::SimTrackContainer> simTrackToken_;
const edm::EDGetTokenT<reco::TrackCollection> staTrackToken_;
const edm::EDGetTokenT<reco::TrackCollection> glbTrackToken_;
const edm::EDGetTokenT<DTRecSegment4DCollection> allDTSegmentToken_;
const edm::EDGetTokenT<CSCSegmentCollection> allCSCSegmentToken_;

//# muons per event
TH1F *hGBNmuons;
TH1F *hSANmuons;
Expand Down Expand Up @@ -270,13 +293,5 @@ class MuonAlignmentAnalyzer : public edm::one::EDAnalyzer<edm::one::SharedResour
int numberOfGBRecTracks;
int numberOfSARecTracks;
int numberOfHits;

// hist kinematic range
double ptRangeMin, ptRangeMax, invMassRangeMin, invMassRangeMax;
// hist residual range
double resLocalXRangeStation1, resLocalXRangeStation2, resLocalXRangeStation3, resLocalXRangeStation4;
double resLocalYRangeStation1, resLocalYRangeStation2, resLocalYRangeStation3, resLocalYRangeStation4;
double resPhiRange, resThetaRange;
unsigned int nbins, min1DTrackRecHitSize, min4DTrackSegmentSize;
};
#endif

0 comments on commit b48f0d0

Please sign in to comment.