31 return (a->pt() > b->pt());
39 moduleName_(parameters_.getUntrackedParameter<
std::
string>(
"ModuleName",
"TrackTypeMonitor")),
40 folderName_(parameters_.getUntrackedParameter<
std::
string>(
"FolderName",
"highPurityTracks")),
41 verbose_(parameters_.getUntrackedParameter<
bool>(
"verbose",
false)),
42 muonTag_(ps.getUntrackedParameter<
edm::InputTag>(
"muonInputTag",
edm::InputTag(
"muons"))),
43 electronTag_(ps.getUntrackedParameter<
edm::InputTag>(
"electronInputTag",
edm::InputTag(
"gedGsfElectrons"))),
44 trackTag_(parameters_.getUntrackedParameter<
edm::InputTag>(
"trackInputTag",
edm::InputTag(
"generalTracks"))),
45 bsTag_(parameters_.getUntrackedParameter<
edm::InputTag>(
"offlineBeamSpot",
edm::InputTag(
"offlineBeamSpot"))),
46 vertexTag_(parameters_.getUntrackedParameter<
edm::InputTag>(
"vertexTag",
edm::InputTag(
"offlinePrimaryVertices"))),
52 trackQuality_(parameters_.getUntrackedParameter<
std::
string>(
"trackQuality",
"highPurity"))
95 TrackPhiHistoPar.getParameter<int32_t>(
"Xbins"),
96 TrackPhiHistoPar.getParameter<
double>(
"Xmin"),
97 TrackPhiHistoPar.getParameter<
double>(
"Xmax")));
99 TrackPhiHistoPar.getParameter<int32_t>(
"Xbins"),
100 TrackPhiHistoPar.getParameter<
double>(
"Xmin"),
101 TrackPhiHistoPar.getParameter<
double>(
"Xmax")));
103 TrackPhiHistoPar.getParameter<int32_t>(
"Xbins"),
104 TrackPhiHistoPar.getParameter<
double>(
"Xmin"),
105 TrackPhiHistoPar.getParameter<
double>(
"Xmax")));
107 TrackPhiHistoPar.getParameter<int32_t>(
"Xbins"),
108 TrackPhiHistoPar.getParameter<
double>(
"Xmin"),
109 TrackPhiHistoPar.getParameter<
double>(
"Xmax")));
112 TrackPHistoPar.getParameter<int32_t>(
"Xbins"),
113 TrackPHistoPar.getParameter<
double>(
"Xmin"),
114 TrackPHistoPar.getParameter<
double>(
"Xmax")));
116 TrackPHistoPar.getParameter<int32_t>(
"Xbins"),
117 TrackPHistoPar.getParameter<
double>(
"Xmin"),
118 TrackPHistoPar.getParameter<
double>(
"Xmax")));
120 TrackPHistoPar.getParameter<int32_t>(
"Xbins"),
121 TrackPHistoPar.getParameter<
double>(
"Xmin"),
122 TrackPHistoPar.getParameter<
double>(
"Xmax")));
124 TrackPHistoPar.getParameter<int32_t>(
"Xbins"),
125 TrackPHistoPar.getParameter<
double>(
"Xmin"),
126 TrackPHistoPar.getParameter<
double>(
"Xmax")));
129 TrackPtHistoPar.getParameter<int32_t>(
"Xbins"),
130 TrackPtHistoPar.getParameter<
double>(
"Xmin"),
131 TrackPtHistoPar.getParameter<
double>(
"Xmax")));
133 TrackPtHistoPar.getParameter<int32_t>(
"Xbins"),
134 TrackPtHistoPar.getParameter<
double>(
"Xmin"),
135 TrackPtHistoPar.getParameter<
double>(
"Xmax")));
137 TrackPtHistoPar.getParameter<int32_t>(
"Xbins"),
138 TrackPtHistoPar.getParameter<
double>(
"Xmin"),
139 TrackPtHistoPar.getParameter<
double>(
"Xmax")));
141 TrackPtHistoPar.getParameter<int32_t>(
"Xbins"),
142 TrackPtHistoPar.getParameter<
double>(
"Xmin"),
143 TrackPtHistoPar.getParameter<
double>(
"Xmax")));
146 TrackPterrHistoPar.getParameter<int32_t>(
"Xbins"),
147 TrackPterrHistoPar.getParameter<
double>(
"Xmin"),
148 TrackPterrHistoPar.getParameter<
double>(
"Xmax")));
150 TrackPterrHistoPar.getParameter<int32_t>(
"Xbins"),
151 TrackPterrHistoPar.getParameter<
double>(
"Xmin"),
152 TrackPterrHistoPar.getParameter<
double>(
"Xmax")));
154 TrackPterrHistoPar.getParameter<int32_t>(
"Xbins"),
155 TrackPterrHistoPar.getParameter<
double>(
"Xmin"),
156 TrackPterrHistoPar.getParameter<
double>(
"Xmax")));
158 TrackPterrHistoPar.getParameter<int32_t>(
"Xbins"),
159 TrackPterrHistoPar.getParameter<
double>(
"Xmin"),
160 TrackPterrHistoPar.getParameter<
double>(
"Xmax")));
163 TrackqOverpHistoPar.getParameter<int32_t>(
"Xbins"),
164 TrackqOverpHistoPar.getParameter<
double>(
"Xmin"),
165 TrackqOverpHistoPar.getParameter<
double>(
"Xmax")));
167 TrackqOverpHistoPar.getParameter<int32_t>(
"Xbins"),
168 TrackqOverpHistoPar.getParameter<
double>(
"Xmin"),
169 TrackqOverpHistoPar.getParameter<
double>(
"Xmax")));
171 TrackqOverpHistoPar.getParameter<int32_t>(
"Xbins"),
172 TrackqOverpHistoPar.getParameter<
double>(
"Xmin"),
173 TrackqOverpHistoPar.getParameter<
double>(
"Xmax")));
175 TrackqOverpHistoPar.getParameter<int32_t>(
"Xbins"),
176 TrackqOverpHistoPar.getParameter<
double>(
"Xmin"),
177 TrackqOverpHistoPar.getParameter<
double>(
"Xmax")));
180 TrackdzHistoPar.getParameter<int32_t>(
"Xbins"),
181 TrackdzHistoPar.getParameter<
double>(
"Xmin"),
182 TrackdzHistoPar.getParameter<
double>(
"Xmax")));
184 TrackdzHistoPar.getParameter<int32_t>(
"Xbins"),
185 TrackdzHistoPar.getParameter<
double>(
"Xmin"),
186 TrackdzHistoPar.getParameter<
double>(
"Xmax")));
188 TrackdzHistoPar.getParameter<int32_t>(
"Xbins"),
189 TrackdzHistoPar.getParameter<
double>(
"Xmin"),
190 TrackdzHistoPar.getParameter<
double>(
"Xmax")));
192 TrackdzHistoPar.getParameter<int32_t>(
"Xbins"),
193 TrackdzHistoPar.getParameter<
double>(
"Xmin"),
194 TrackdzHistoPar.getParameter<
double>(
"Xmax")));
197 TrackChi2bynDOFHistoPar.getParameter<int32_t>(
"Xbins"),
198 TrackChi2bynDOFHistoPar.getParameter<
double>(
"Xmin"),
199 TrackChi2bynDOFHistoPar.getParameter<
double>(
"Xmax")));
201 TrackChi2bynDOFHistoPar.getParameter<int32_t>(
"Xbins"),
202 TrackChi2bynDOFHistoPar.getParameter<
double>(
"Xmin"),
203 TrackChi2bynDOFHistoPar.getParameter<
double>(
"Xmax")));
205 TrackChi2bynDOFHistoPar.getParameter<int32_t>(
"Xbins"),
206 TrackChi2bynDOFHistoPar.getParameter<
double>(
"Xmin"),
207 TrackChi2bynDOFHistoPar.getParameter<
double>(
"Xmax")));
209 TrackChi2bynDOFHistoPar.getParameter<int32_t>(
"Xbins"),
210 TrackChi2bynDOFHistoPar.getParameter<
double>(
"Xmin"),
211 TrackChi2bynDOFHistoPar.getParameter<
double>(
"Xmax")));
214 nTracksHistoPar.getParameter<int32_t>(
"Xbins"),
215 nTracksHistoPar.getParameter<
double>(
"Xmin"),
216 nTracksHistoPar.getParameter<
double>(
"Xmax")));
218 nTracksHistoPar.getParameter<int32_t>(
"Xbins"),
219 nTracksHistoPar.getParameter<
double>(
"Xmin"),
220 nTracksHistoPar.getParameter<
double>(
"Xmax")));
222 nTracksHistoPar.getParameter<int32_t>(
"Xbins"),
223 nTracksHistoPar.getParameter<
double>(
"Xmin"),
224 nTracksHistoPar.getParameter<
double>(
"Xmax")));
226 nTracksHistoPar.getParameter<int32_t>(
"Xbins"),
227 nTracksHistoPar.getParameter<
double>(
"Xmin"),
228 nTracksHistoPar.getParameter<
double>(
"Xmax")));
240 std::vector<const reco::Track*> isoTrkList;
247 for (
auto const& muo : *muonColl) {
248 if (muo.isGlobalMuon() && muo.isPFMuon() && std::fabs(muo.eta()) <= 2.1 && muo.pt() > 1) {
254 double chbyndof = (ndof > 0) ? chi2/ndof : 0;
263 double trkd0 = tk->
d0();
264 double trkdz = tk->
dz();
271 int nChambers = muo.numberOfChambers();
272 int nMatches = muo.numberOfMatches();
273 int nMatchedStations = muo.numberOfMatchedStations();
279 && std::fabs(trkd0) < 0.02
280 && std::fabs(trkdz) < 20
285 && nMatchedStations > 2
286 && absiso/muo.pt() < 0.3)
288 isoTrkList.push_back(gtk);
300 for (
auto const& ele : *electronColl) {
301 if (!ele.ecalDriven())
continue;
302 if (ele.pt() < 5)
continue;
305 double hOverE = ele.hadronicOverEm();
306 double sigmaee = ele.sigmaIetaIeta();
307 double deltaPhiIn = ele.deltaPhiSuperClusterTrackAtVtx();
308 double deltaEtaIn = ele.deltaEtaSuperClusterTrackAtVtx();
311 if (std::fabs(deltaPhiIn) >= .15
312 && std::fabs(deltaEtaIn) >= .007
314 && sigmaee >= .01)
continue;
316 else if (ele.isEE()) {
317 if (std::fabs(deltaPhiIn) >= .10
318 && std::fabs(deltaEtaIn) >= .009
320 && sigmaee >= .03)
continue;
327 double trkd0 = trk->
d0();
328 double trkdz = trk->
dz();
335 double chbyndof = (ndof > 0) ? chi2/ndof : 0;
336 if (chbyndof >= 10)
continue;
339 if (std::fabs(trkd0) >= 0.02 || std::fabs(trkdz) >= 20)
continue;
344 if (nPixelHits < 1)
continue;
348 if (nStripHits < 8)
continue;
353 float eiso = absiso/ele.pt();
354 if (eiso > 0.2)
continue;
357 isoTrkList.push_back(trk);
372 std::vector<const reco::Track*> nisoTrkList;
377 int nTracks = 0, nMBTracks = 0;
378 for (
auto const&
track: *tracks) {
379 if (!
track.quality(quality))
continue;
386 if (std::fabs(dxy) < 0.02 && std::fabs(dz) < 20) {
389 for (
auto const& tk : isoTrkList) {
391 if (dr < drmin) drmin =
dr;
395 edm::LogInfo(
"TrackTypeMonitor") <<
" Match: " << ++nmatch <<
" drmin = " << drmin;
397 for (
auto const& isotk : isoTrkList) {
398 edm::LogInfo(
"TrackTypeMonitor") <<
" Lepton Pt: " << isotk->pt() <<
" Eta: " << isotk->eta() <<
" Phi: " << isotk->phi();
405 nisoTrkList.push_back(&
track);
418 for (
auto const&
obj : nisoTrkList) {
436 if (indx >= 0 && indx < static_cast<int>(
trackPHList_.size()))
439 if (indx >= 0 && indx < static_cast<int>(
trackPtHList_.size()))
453 double chbyndof = (ndof > 0) ? chi2/ndof : 0;
std::vector< MonitorElement * > nTracksHList_
double qoverp() const
q / p
double p() const
momentum vector magnitude
T getParameter(std::string const &) const
const edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
bool operator()(const T *a, const T *b) const
const unsigned int nTracks(const reco::Vertex &sv)
bool isNonnull() const
Checks for non-null.
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
TrackQuality
track quality
const edm::EDGetTokenT< reco::MuonCollection > muonToken_
std::vector< MonitorElement * > trackChi2bynDOFHList_
std::vector< MonitorElement * > trackPterrHList_
const edm::EDGetTokenT< reco::BeamSpot > bsToken_
std::vector< Track > TrackCollection
collection of Tracks
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
int numberOfValidStripHits() const
double phi() const
azimuthal angle of momentum vector
std::vector< Vertex > VertexCollection
collection of Vertex objects
std::vector< MonitorElement * > trackPtHList_
std::vector< MonitorElement * > trackEtaHList_
float sumPhotonEt
sum pt of PF photons
const edm::EDGetTokenT< reco::TrackCollection > trackToken_
std::vector< MonitorElement * > trackdzHList_
const Point & position() const
position
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
void fillHistograms(const reco::Track &track, int indx)
std::vector< Muon > MuonCollection
collection of Muon objects
float sumNeutralHadronEt
sum pt of neutral hadrons
float sumChargedParticlePt
sum-pt of charged Particles(inludes e/mu)
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
#define DEFINE_FWK_MODULE(type)
double eta() const
pseudorapidity of momentum vector
void setCurrentFolder(std::string const &fullpath)
std::vector< MonitorElement * > trackPhiHList_
double chi2() const
chi-squared of the fit
double ndof() const
number of degrees of freedom of the fit
double pt() const
track transverse momentum
float sumPhotonEt
sum pt of PF photons // old float photonIso ;
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
MonitorElement * book1D(Args &&...args)
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
float sumNeutralHadronEt
sum pt of neutral hadrons // old float neutralHadronIso ;
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
static TrackQuality qualityByName(const std::string &name)
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
const edm::EDGetTokenT< reco::VertexCollection > vertexToken_
edm::ParameterSet parameters_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
int numberOfValidPixelHits() const
const Point & position() const
position
TrackTypeMonitor(const edm::ParameterSet &)
std::vector< MonitorElement * > trackqOverpHList_
std::vector< MonitorElement * > trackPHList_
MonitorElement * hcounterH_
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;
const std::string trackQuality_