Skip to content

Commit

Permalink
Merge pull request #11467 from VinInn/TkDQM2
Browse files Browse the repository at this point in the history
Fix Tracking Seed and Candidate Plots, add DCA and SIP to global Muons
  • Loading branch information
cmsbuild committed Sep 29, 2015
2 parents 85bae3c + 08b3daf commit 8f7ce9a
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 14 deletions.
6 changes: 6 additions & 0 deletions DQM/TrackingMonitor/interface/TrackAnalyzer.h
Expand Up @@ -194,6 +194,10 @@ class TrackAnalyzer

MonitorElement* TrackPhi;
MonitorElement* TrackEta;
MonitorElement* TrackEtaPhi=nullptr;
MonitorElement* TrackEtaPhiInner=nullptr;
MonitorElement* TrackEtaPhiOuter=nullptr;

MonitorElement* TrackTheta;

MonitorElement* TrackPhiErr;
Expand Down Expand Up @@ -273,6 +277,8 @@ class TrackAnalyzer
MonitorElement* NumberOfMORecHitsPerTrackVsEta = nullptr;
MonitorElement* NumberOfMORecHitVsPhiVsEtaPerTrack = nullptr;

MonitorElement* ValidFractionPerTrack = nullptr;
MonitorElement* ValidFractionVsPhiVsEtaPerTrack = nullptr;


MonitorElement* NumberOfLayersPerTrack[4] = {nullptr,nullptr,nullptr,nullptr};
Expand Down
6 changes: 6 additions & 0 deletions DQM/TrackingMonitor/python/MonitorTrackGLBMuons_cfi.py
Expand Up @@ -13,3 +13,9 @@
MonitorTrackGLBMuons.doGeneralPropertiesPlots = True
MonitorTrackGLBMuons.doHitPropertiesPlots = True
MonitorTrackGLBMuons.doTrackerSpecific = True
MonitorTrackGLBMuons.doDCAPlots = True
MonitorTrackGLBMuons.doDCAwrtPVPlots = True
MonitorTrackGLBMuons.doDCAwrt000Plots = False
MonitorTrackGLBMuons.doSIPPlots = True
MonitorTrackGLBMuons.doEffFromHitPattern = False

44 changes: 43 additions & 1 deletion DQM/TrackingMonitor/src/TrackAnalyzer.cc
Expand Up @@ -313,6 +313,12 @@ void TrackAnalyzer::bookHistosForHitProperties(DQMStore::IBooker & ibooker) {
NumberOfMORecHitsPerTrack->setAxisTitle("Number of missing-outer RecHits for each Track");
NumberOfMORecHitsPerTrack->setAxisTitle("Number of Tracks", 2);

histname = "ValidFractionPerTrack_";
ValidFractionPerTrack = ibooker.book1D(histname+CategoryName, histname+CategoryName, 101, 0., 1.01);
ValidFractionPerTrack->setAxisTitle("ValidFraction of RecHits for each Track");
ValidFractionPerTrack->setAxisTitle("Number of Tracks", 2);



if ( doRecHitVsPhiVsEtaPerTrack_ || doAllPlots_ ){

Expand Down Expand Up @@ -341,6 +347,12 @@ void TrackAnalyzer::bookHistosForHitProperties(DQMStore::IBooker & ibooker) {
NumberOfMORecHitVsPhiVsEtaPerTrack->setAxisTitle("Track #eta ", 1);
NumberOfMORecHitVsPhiVsEtaPerTrack->setAxisTitle("Track #phi ", 2);

histname = "ValidFractionVsPhiVsEtaPerTrack_";
ValidFractionVsPhiVsEtaPerTrack = ibooker.bookProfile2D(histname+CategoryName, histname+CategoryName,
EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax, 0, 2., "");
ValidFractionVsPhiVsEtaPerTrack->setAxisTitle("Track #eta ", 1);
ValidFractionVsPhiVsEtaPerTrack->setAxisTitle("Track #phi ", 2);


}

Expand Down Expand Up @@ -830,13 +842,16 @@ void TrackAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSe
NumberOfLostRecHitsPerTrack -> Fill(nLostRecHits);
NumberOfMIRecHitsPerTrack -> Fill(nLostIn);
NumberOfMORecHitsPerTrack -> Fill(nLostOut);
ValidFractionPerTrack -> Fill(track.validFraction());


// 2D plots
if ( doRecHitVsPhiVsEtaPerTrack_ || doAllPlots_ ) {
NumberOfValidRecHitVsPhiVsEtaPerTrack->Fill(etaIn,phiIn,nValidRecHits);
NumberOfLostRecHitVsPhiVsEtaPerTrack->Fill(etaIn,phiIn,nLostRecHits);
NumberOfMIRecHitVsPhiVsEtaPerTrack->Fill(etaIn,phiIn,nLostIn);
NumberOfMORecHitVsPhiVsEtaPerTrack->Fill(etaOut,phiOut,nLostOut);
ValidFractionVsPhiVsEtaPerTrack -> Fill(etaIn,phiIn,track.validFraction());
}

int nLayers[4] = { track.hitPattern().trackerLayersWithMeasurement(),
Expand Down Expand Up @@ -958,7 +973,7 @@ void TrackAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSe
if(doDCAPlots_ || doPVPlots_ || doSIPPlots_ || doAllPlots_) {
edm::Handle<reco::VertexCollection> recoPrimaryVerticesHandle;
iEvent.getByToken(pvToken_,recoPrimaryVerticesHandle);
if (recoPrimaryVerticesHandle->size() > 0) {
if (recoPrimaryVerticesHandle.isValid() && recoPrimaryVerticesHandle->size() > 0) {
const reco::Vertex& pv = (*recoPrimaryVerticesHandle)[0];


Expand Down Expand Up @@ -1227,6 +1242,23 @@ void TrackAnalyzer::bookHistosForState(std::string sname, DQMStore::IBooker & ib
tkmes.TrackEta->setAxisTitle("Track #eta", 1);
tkmes.TrackEta->setAxisTitle("Number of Tracks",2);

histname = "TrackEtaPhi_" + histTag;
tkmes.TrackEtaPhi = ibooker.book2D(histname, histname, EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax);
tkmes.TrackEtaPhi->setAxisTitle("Track #eta", 1);
tkmes.TrackEtaPhi->setAxisTitle("Track #phi", 2);

histname = "TrackEtaPhiInner_" + histTag;
tkmes.TrackEtaPhiInner = ibooker.book2D(histname, histname, EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax);
tkmes.TrackEtaPhiInner->setAxisTitle("Track #eta", 1);
tkmes.TrackEtaPhiInner->setAxisTitle("Track #phi", 2);

histname = "TrackEtaPhiOuter_" + histTag;
tkmes.TrackEtaPhiOuter = ibooker.book2D(histname, histname, EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax);
tkmes.TrackEtaPhiOuter->setAxisTitle("Track #eta", 1);
tkmes.TrackEtaPhiOuter->setAxisTitle("Track #phi", 2);



if (doThetaPlots_) {
histname = "TrackTheta_" + histTag;
tkmes.TrackTheta = ibooker.book1D(histname, histname, ThetaBin, ThetaMin, ThetaMax);
Expand Down Expand Up @@ -1367,6 +1399,12 @@ void TrackAnalyzer::fillHistosForState(const edm::EventSetup& iSetup, const reco
double p, px, py, pz, pt, theta, phi, eta, q;
double pxerror, pyerror, pzerror, pterror, perror, phierror, etaerror;

auto phiIn = track.innerPosition().phi();
auto etaIn = track.innerPosition().eta();
auto phiOut = track.outerPosition().phi();
auto etaOut = track.outerPosition().eta();


if (sname == "default") {

p = track.p();
Expand Down Expand Up @@ -1439,6 +1477,10 @@ void TrackAnalyzer::fillHistosForState(const edm::EventSetup& iSetup, const reco
// angles
tkmes.TrackPhi->Fill(phi);
tkmes.TrackEta->Fill(eta);
tkmes.TrackEtaPhi->Fill(eta,phi);
tkmes.TrackEtaPhiInner->Fill(etaIn,phiIn);
tkmes.TrackEtaPhiOuter->Fill(etaOut,phiOut);

if (doThetaPlots_) {
tkmes.TrackTheta->Fill(theta);
}
Expand Down
23 changes: 13 additions & 10 deletions DQM/TrackingMonitor/src/TrackBuildingAnalyzer.cc
Expand Up @@ -5,6 +5,7 @@
#include "TrackingTools/TransientTrack/interface/TransientTrack.h"
#include "TrackingTools/PatternTools/interface/TSCBLBuilderNoMaterial.h"
#include "TrackingTools/PatternTools/interface/TSCPBuilderNoMaterial.h"
#include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h"
#include "DataFormats/BeamSpot/interface/BeamSpot.h"
#include "MagneticField/Engine/interface/MagneticField.h"

Expand Down Expand Up @@ -284,8 +285,9 @@ void TrackBuildingAnalyzer::analyze
TSCBLBuilderNoMaterial tscblBuilder;

//get parameters and errors from the candidate state
TransientTrackingRecHit::RecHitPointer recHit = theTTRHBuilder->build(&*(candidate.recHits().second-1));
TrajectoryStateOnSurface state = trajectoryStateTransform::transientState( candidate.startingState(), recHit->surface(), theMF.product());
auto const & theG = ((TkTransientTrackingRecHitBuilder const *)(theTTRHBuilder.product()))->geometry();
auto const & candSS = candidate.startingState();
TrajectoryStateOnSurface state = trajectoryStateTransform::transientState( candSS, &(theG->idToDet(candSS.detId())->surface()), theMF.product());
TrajectoryStateClosestToBeamLine tsAtClosestApproachSeed = tscblBuilder(*state.freeState(),bs);//as in TrackProducerAlgorithm
if(!(tsAtClosestApproachSeed.isValid())) {
edm::LogVerbatim("TrackBuilding") << "TrajectoryStateClosestToBeamLine not valid";
Expand All @@ -296,9 +298,9 @@ void TrackBuildingAnalyzer::analyze
GlobalPoint v(v0.x()-bs.x0(),v0.y()-bs.y0(),v0.z()-bs.z0());

double pt = sqrt(state.globalMomentum().perp2());
double eta = state.globalMomentum().eta();
double phi = state.globalMomentum().phi();
double theta = state.globalMomentum().theta();
double eta = state.globalPosition().eta();
double phi = state.globalPosition().phi();
double theta = state.globalPosition().theta();
//double pm = sqrt(state.globalMomentum().mag2());
//double pz = state.globalMomentum().z();
//double qoverp = tsAtClosestApproachSeed.trackStateAtPCA().charge()/p.mag();
Expand Down Expand Up @@ -338,8 +340,9 @@ void TrackBuildingAnalyzer::analyze
TSCBLBuilderNoMaterial tscblBuilder;

//get parameters and errors from the candidate state
TransientTrackingRecHit::RecHitPointer recHit = theTTRHBuilder->build(&*(candidate.recHits().second-1));
TrajectoryStateOnSurface state = trajectoryStateTransform::transientState( candidate.trajectoryStateOnDet(), recHit->surface(), theMF.product());
auto const & theG = ((TkTransientTrackingRecHitBuilder const *)(theTTRHBuilder.product()))->geometry();
auto const & candSS = candidate.trajectoryStateOnDet();
TrajectoryStateOnSurface state = trajectoryStateTransform::transientState( candSS, &(theG->idToDet(candSS.detId())->surface()), theMF.product());
TrajectoryStateClosestToBeamLine tsAtClosestApproachTrackCand = tscblBuilder(*state.freeState(),bs);//as in TrackProducerAlgorithm
if(!(tsAtClosestApproachTrackCand.isValid())) {
edm::LogVerbatim("TrackBuilding") << "TrajectoryStateClosestToBeamLine not valid";
Expand All @@ -350,9 +353,9 @@ void TrackBuildingAnalyzer::analyze
GlobalPoint v(v0.x()-bs.x0(),v0.y()-bs.y0(),v0.z()-bs.z0());

double pt = sqrt(state.globalMomentum().perp2());
double eta = state.globalMomentum().eta();
double phi = state.globalMomentum().phi();
double theta = state.globalMomentum().theta();
double eta = state.globalPosition().eta();
double phi = state.globalPosition().phi();
double theta = state.globalPosition().theta();
//double pm = sqrt(state.globalMomentum().mag2());
//double pz = state.globalMomentum().z();
//double qoverp = tsAtClosestApproachTrackCand.trackStateAtPCA().charge()/p.mag();
Expand Down
15 changes: 12 additions & 3 deletions DQMOffline/RecoB/plugins/PrimaryVertexMonitor.cc
Expand Up @@ -81,14 +81,22 @@ PrimaryVertexMonitor::bookHistograms(DQMStore::IBooker &iBooker,
auto vposx = conf_.getParameter<double>("Xpos");
auto vposy = conf_.getParameter<double>("Ypos");

nbtksinvtx[0] = iBooker.book1D("otherVtxTrksNbr","Reconstructed Tracks in Vertex (other Vtx)",40,-0.5,99.5);
nbtksinvtx[0] = iBooker.book1D("otherVtxTrksNbr","Reconstructed Tracks in Vertex (other Vtx)",40,-0.5,99.5);
ntracksVsZ[0] = iBooker.bookProfile("otherVtxTrksVsZ","Reconstructed Tracks in Vertex (other Vtx) vs Z",80,-20.,20.,50,0,100,"");
ntracksVsZ[0]->setAxisTitle("z-bs",1);
ntracksVsZ[0]->setAxisTitle("#tracks",2);

trksWeight[0] = iBooker.book1D("otherVtxTrksWeight","Total weight of Tracks in Vertex (other Vtx)",40,0,100.);
vtxchi2[0] = iBooker.book1D("otherVtxChi2","#chi^{2} (other Vtx)",100,0.,200.);
vtxndf[0] = iBooker.book1D("otherVtxNdf","ndof (other Vtx)",100,0.,200.);
vtxprob[0] = iBooker.book1D("otherVtxProb","#chi^{2} probability (other Vtx)",100,0.,1.);
nans[0] = iBooker.book1D("otherVtxNans","Illegal values for x,y,z,xx,xy,xz,yy,yz,zz (other Vtx)",9,0.5,9.5);

nbtksinvtx[1] = iBooker.book1D("tagVtxTrksNbr","Reconstructed Tracks in Vertex (tagged Vtx)",100,-0.5,99.5);
nbtksinvtx[1] = iBooker.book1D("tagVtxTrksNbr","Reconstructed Tracks in Vertex (tagged Vtx)",100,-0.5,99.5);
ntracksVsZ[1] = iBooker.bookProfile("tagVtxTrksVsZ","Reconstructed Tracks in Vertex (tagged Vtx) vs Z",80,-20.,20.,50,0,100,"");
ntracksVsZ[1]->setAxisTitle("z-bs",1);
ntracksVsZ[1]->setAxisTitle("#tracks",2);

trksWeight[1] = iBooker.book1D("tagVtxTrksWeight","Total weight of Tracks in Vertex (tagged Vtx)",100,0,100.);
vtxchi2[1] = iBooker.book1D("tagVtxChi2","#chi^{2} (tagged Vtx)",100,0.,200.);
vtxndf[1] = iBooker.book1D("tagVtxNdf","ndof (tagged Vtx)",100,0.,200.);
Expand Down Expand Up @@ -355,7 +363,8 @@ void PrimaryVertexMonitor::vertexPlots(const Vertex & v, const BeamSpot& beamSpo
t!=v.tracks_end(); t++) weight+= v.trackWeight(*t);
trksWeight[i]->Fill(weight);
nbtksinvtx[i]->Fill(v.tracksSize());

ntracksVsZ[i]->Fill(v.position().z()- beamSpot.z0(),v.tracksSize());

vtxchi2[i]->Fill(v.chi2());
vtxndf[i]->Fill(v.ndof());
vtxprob[i]->Fill(ChiSquaredProbability(v.chi2() ,v.ndof()));
Expand Down
1 change: 1 addition & 0 deletions DQMOffline/RecoB/plugins/PrimaryVertexMonitor.h
Expand Up @@ -53,6 +53,7 @@ class PrimaryVertexMonitor : public DQMEDAnalyzer {
MonitorElement *tt[2];
MonitorElement *xrec[2] , *yrec[2], *zrec[2], *xDiff[2] , *yDiff[2], *xerr[2] , *yerr[2], *zerr[2] ;
MonitorElement *xerrVsTrks[2] , *yerrVsTrks[2], *zerrVsTrks[2] ;
MonitorElement * ntracksVsZ[2];
MonitorElement *vtxchi2[2] , *vtxndf[2], *vtxprob[2] , *nans[2];
MonitorElement *type[2];
MonitorElement *bsX, *bsY, *bsZ, *bsSigmaZ, *bsDxdz, *bsDydz, *bsBeamWidthX, *bsBeamWidthY, *bsType;
Expand Down

0 comments on commit 8f7ce9a

Please sign in to comment.