34 theMuTrackCollectionLabel_ =
70 "(recHits_{notUsedForGLB}) / (recHits_{GLB}) [" +
trackCollection +
"]",
84 TrackSegm->setBinLabel(2,
"DT", 1);
85 TrackSegm->setBinLabel(3,
"CSC", 1);
93 hitStaProvenance->setBinLabel(2,
"CSC");
94 hitStaProvenance->setBinLabel(3,
"RPC");
95 hitStaProvenance->setBinLabel(4,
"DT+CSC");
96 hitStaProvenance->setBinLabel(5,
"DT+RPC");
97 hitStaProvenance->setBinLabel(6,
"CSC+RPC");
98 hitStaProvenance->setBinLabel(7,
"DT+CSC+RPC");
107 hitTkrProvenance->setBinLabel(2,
"PixEndCap");
108 hitTkrProvenance->setBinLabel(3,
"TIB");
109 hitTkrProvenance->setBinLabel(4,
"TID");
110 hitTkrProvenance->setBinLabel(5,
"TOB");
111 hitTkrProvenance->setBinLabel(6,
"TEC");
114 trackHitPercentualVsEta =
116 "(recHits_{Track} / recHits_{associatedSegm}) vs #eta [" +
trackCollection +
"]",
123 dtTrackHitPercentualVsEta =
125 "(recHits_{DTinTrack} / recHits_{associatedSegm}) vs #eta [" +
trackCollection +
"]",
132 cscTrackHitPercentualVsEta =
134 "(recHits_{CSCinTrack} / recHits_{associatedSegm}) vs #eta [" +
trackCollection +
"]",
142 trackHitPercentualVsPhi =
144 "(recHits_{Track} / recHits_{associatedSegm}) vs #phi [" +
trackCollection +
"]",
152 dtTrackHitPercentualVsPhi =
154 "(recHits_{DTinTrack} / recHits_{associatedSegm}) vs #phi [" +
trackCollection +
"]",
162 cscTrackHitPercentualVsPhi =
164 "(recHits_{CSCinTrack} / recHits_{associatedSegm}) vs #phi [" +
trackCollection +
"]",
173 trackHitPercentualVsPt =
175 "(recHits_{Track} / recHits_{associatedSegm}) vs 1/p_{t} [" +
trackCollection +
"]",
183 dtTrackHitPercentualVsPt =
185 "(recHits_{DTinTrack} / recHits_{associatedSegm}) vs 1/p_{t} [" +
trackCollection +
"]",
193 cscTrackHitPercentualVsPt =
195 "(recHits_{CSCinTrack} / recHits_{associatedSegm}) vs 1/p_{t} [" +
trackCollection +
"]",
206 theService->update(iSetup);
209 iEvent.
getByToken(theMuTrackCollectionLabel_, glbTracks);
211 for (reco::TrackCollection::const_iterator recoTrack = glbTracks->begin(); recoTrack != glbTracks->end();
214 theSegmentsAssociator->associate(iEvent, iSetup, *recoTrack);
217 cout <<
"[SegmentTrackAnalyzer] # of segments associated to the track: " << (segments).
size() << endl;
225 int hitsFromTrack = 0;
226 int hitsFromSegmDt = 0;
227 int hitsFromSegmCsc = 0;
232 for (MuonTransientTrackingRecHit::MuonRecHitContainer::const_iterator segment = segments.begin();
233 segment != segments.end();
235 DetId id = (*segment)->geographicalId();
241 if ((*seg4D).hasPhi())
243 if ((*seg4D).hasZed())
244 hitsFromSegmDt += (*seg4D).zSegment()->specificRecHits().size();
249 hitsFromSegmCsc += (*segment)->recHits().size();
257 DetId id = (*recHit)->geographicalId();
271 hitTkrProvenance->Fill(1);
273 hitTkrProvenance->Fill(2);
275 hitTkrProvenance->Fill(3);
277 hitTkrProvenance->Fill(4);
279 hitTkrProvenance->Fill(5);
281 hitTkrProvenance->Fill(6);
286 hitsNotUsed->Fill(hitsFromSegmDt + hitsFromSegmCsc + hitsFromRpc + hitsFromTk - hitsFromTrack);
287 hitsNotUsedPercentual->Fill(
double(hitsFromSegmDt + hitsFromSegmCsc + hitsFromRpc + hitsFromTk - hitsFromTrack) /
290 if (hitsFromDt != 0 && hitsFromCsc != 0)
291 TrackSegm->Fill(1, segmFromDt + segmFromCsc);
292 if (hitsFromDt != 0 && hitsFromCsc == 0)
293 TrackSegm->Fill(2, segmFromDt);
294 if (hitsFromDt == 0 && hitsFromCsc != 0)
295 TrackSegm->Fill(3, segmFromCsc);
297 if (hitsFromDt != 0 && hitsFromCsc == 0 && hitsFromRpc == 0)
298 hitStaProvenance->Fill(1);
299 if (hitsFromCsc != 0 && hitsFromDt == 0 && hitsFromRpc == 0)
300 hitStaProvenance->Fill(2);
301 if (hitsFromRpc != 0 && hitsFromDt == 0 && hitsFromCsc == 0)
302 hitStaProvenance->Fill(3);
303 if (hitsFromDt != 0 && hitsFromCsc != 0 && hitsFromRpc == 0)
304 hitStaProvenance->Fill(4);
305 if (hitsFromDt != 0 && hitsFromRpc != 0 && hitsFromCsc == 0)
306 hitStaProvenance->Fill(5);
307 if (hitsFromCsc != 0 && hitsFromRpc != 0 && hitsFromDt == 0)
308 hitStaProvenance->Fill(6);
309 if (hitsFromDt != 0 && hitsFromCsc != 0 && hitsFromRpc != 0)
310 hitStaProvenance->Fill(7);
312 if (hitsFromSegmDt + hitsFromSegmCsc != 0) {
313 trackHitPercentualVsEta->Fill(recoTrack->eta(),
314 double(hitsFromDt + hitsFromCsc) / (hitsFromSegmDt + hitsFromSegmCsc));
315 trackHitPercentualVsPhi->Fill(recoTrack->phi(),
316 double(hitsFromDt + hitsFromCsc) / (hitsFromSegmDt + hitsFromSegmCsc));
317 trackHitPercentualVsPt->Fill(recoTrack->pt(),
318 double(hitsFromDt + hitsFromCsc) / (hitsFromSegmDt + hitsFromSegmCsc));
321 if (hitsFromSegmDt != 0) {
322 dtTrackHitPercentualVsEta->Fill(recoTrack->eta(), double(hitsFromDt) / hitsFromSegmDt);
323 dtTrackHitPercentualVsPhi->Fill(recoTrack->phi(), double(hitsFromDt) / hitsFromSegmDt);
324 dtTrackHitPercentualVsPt->Fill(recoTrack->pt(), double(hitsFromDt) / hitsFromSegmDt);
327 if (hitsFromSegmCsc != 0) {
328 cscTrackHitPercentualVsEta->Fill(recoTrack->eta(), double(hitsFromCsc) / hitsFromSegmCsc);
329 cscTrackHitPercentualVsPhi->Fill(recoTrack->phi(), double(hitsFromCsc) / hitsFromSegmCsc);
330 cscTrackHitPercentualVsPt->Fill(recoTrack->pt(), double(hitsFromCsc) / hitsFromSegmCsc);
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
static PFTauRenderPlugin instance
bool getByToken(EDGetToken token, Handle< PROD > &result) const
static constexpr auto TID
void setCurrentFolder(std::string const &fullpath)
const DTChamberRecSegment2D * phiSegment() const
The superPhi segment: 0 if no phi projection available.
SegmentTrackAnalyzer(const edm::ParameterSet &)
Constructor.
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
static constexpr auto TOB
std::vector< DTRecHit1D > specificRecHits() const
Access to specific components.
void analyze(const edm::Event &, const edm::EventSetup &) override
static constexpr auto TIB
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
SegmentsTrackAssociatorParameters
std::vector< MuonRecHitPointer > MuonRecHitContainer
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
static constexpr auto TEC
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)