Skip to content

Commit

Permalink
Merge pull request cms-sw#3 from gem-sw/master
Browse files Browse the repository at this point in the history
Update
  • Loading branch information
Sven Dildick committed Sep 16, 2013
2 parents 7350a75 + c397537 commit 5b6183e
Show file tree
Hide file tree
Showing 8 changed files with 980 additions and 75 deletions.
597 changes: 567 additions & 30 deletions GEMValidation/plugins/GEMRecHitAnalyzer.cc

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions GEMValidation/python/GEMRecHitAnalyzer_cfi.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import FWCore.ParameterSet.Config as cms

from GEMCode.GEMValidation.simTrackMatching_cfi import SimTrackMatching

GEMRecHitAnalyzer = cms.EDAnalyzer("GEMRecHitAnalyzer",
verbose = cms.untracked.int32(0),
## simInputLabel = cms.untracked.string("g4SimHits")
verbose = cms.untracked.int32(5),
inputTagGEM = cms.untracked.InputTag("simMuonGEMDigis"),
simInputLabel = cms.untracked.string("g4SimHits"),
minPt = cms.untracked.double(5.),
simTrackMatching = SimTrackMatching
)
5 changes: 2 additions & 3 deletions GEMValidation/scripts/cuts.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,11 @@
ok_gL2dg = TCut("gem_dg_layer2 > 0")
ok_gL1pad = TCut("gem_pad_layer1 > 0")
ok_gL2pad = TCut("gem_pad_layer2 > 0")
ok_gL1rh = TCut("gem_rh_layer1 > 0")
ok_gL2rh = TCut("gem_rh_layer2 > 0")

ok_trk_gL1sh = TCut("has_gem_sh_l1 > 0")
ok_trk_gL2sh = TCut("has_gem_sh_l2 > 0")

ok_lx_odd = TCut("TMath::Abs(TMath::ASin(gem_lx_odd/gem_trk_rho)) < 5*TMath::Pi()/180.")
ok_lx_even = TCut("TMath::Abs(TMath::ASin(gem_lx_even/gem_trk_rho)) < 5*TMath::Pi()/180.")



74 changes: 74 additions & 0 deletions GEMValidation/scripts/drawPlots.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,80 @@ def draw_geff(target_dir, c_title, ext, t, title, h_name, h_bins, to_draw,
pt.Draw("same")
c.Modified()
c.SaveAs(target_dir + c_title + ext)


def draw_geff2(target_dir, c_title, ext, t1, t2, title, h_name, h_bins, to_draw,
denom_cut, extra_num_cut, opt, color, marker_st = 1, marker_sz = 1):
c = TCanvas("c","c",600,600)
c.Clear()
gPad.SetGrid(1)
gStyle.SetStatStyle(0)
gStyle.SetOptStat(0)
gStyle.SetOptFit(0)
t1.Draw(to_draw + ">>num_" + h_name + h_bins,extra_num_cut + denom_cut, "goff")
num = TH1F(gDirectory.Get("num_" + h_name))
if not num:
sys.exit('num does not exist')
num = TH1F(num.Clone("eff_" + h_name))

t2.Draw(to_draw + ">>denom_" + h_name + h_bins, denom_cut, "goff")
den = TH1F(gDirectory.Get("denom_" + h_name).Clone("denom_" + h_name))
eff = TGraphAsymmErrors(num, den)
if not "same" in opt:
num.Reset()
num.GetYaxis().SetRangeUser(0.,1.05)
num.SetStats(0)
num.SetTitle(title)
num.Draw()

eff.SetLineWidth(2)
eff.SetLineColor(color)
eff.SetMarkerStyle(marker_st)
eff.SetMarkerColor(color)
eff.SetMarkerSize(marker_sz)
eff.Draw(opt + " same")

## Do fit in the flat region
if "eta" in c_title:
xmin = eta_min
xmax = eta_max
else:
xmin = -999.
xmax = 999.

f1 = TF1("fit1","pol0", xmin, xmax)
r = eff.Fit("fit1","RQS")
ptstats = TPaveStats(0.25,0.35,0.75,0.55,"brNDC")
ptstats.SetName("stats")
ptstats.SetBorderSize(0)
ptstats.SetLineWidth(0)
ptstats.SetFillColor(0)
ptstats.SetTextAlign(11)
ptstats.SetTextFont(42)
ptstats.SetTextSize(.05)
ptstats.SetTextColor(kRed)
ptstats.SetOptStat(0)
ptstats.SetOptFit(1111)
chi2 = int(r.Chi2())
ndf = int(r.Ndf())
## prob = r.Prob()
round(2.675, 2)
p0 = f1.GetParameter(0)
p0e = f1.GetParError(0)
ptstats.AddText("#chi^{2} / ndf: %d/%d" %(chi2,ndf))
## ptstats.AddText("Fit probability: %f %" %(prob))
ptstats.AddText("Efficiency: %f #pm %f %%"%(p0,p0e))
ptstats.Draw("same")
pt = TPaveText(0.09899329,0.9178322,0.8993289,0.9737762,"blNDC")
pt.SetName("title")
pt.SetBorderSize(1)
pt.SetFillColor(0)
pt.SetFillStyle(0)
pt.SetTextFont(42)
pt.AddText(eff.GetTitle())
pt.Draw("same")
c.Modified()
c.SaveAs(target_dir + c_title + ext)

def draw_bx(target_dir, c_title, ext, t, title, h_name, h_bins, to_draw, cut, opt = ""):
gStyle.SetStatStyle(0)
Expand Down
129 changes: 120 additions & 9 deletions GEMValidation/scripts/produceRecHitValidationPlots.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

if __name__ == "__main__":

inputFile = '/afs/cern.ch/user/d/dildick/work/GEM/CMSSW_6_2_0_pre5/src/gem_rh_ana.test.root'
inputFile = '/cmshome/calabria/ValidationPlots2/CMSSW_6_1_2_SLHC6_patch1/src/GEMCode/GEMValidation/test/gem_localrec_ana.root'
targetDir = './'

## extension for figures - add more?
Expand All @@ -31,7 +31,8 @@
## Trees
analyzer = "GEMRecHitAnalyzer"
recHits = "GEMRecHitTree"
simTracks = "Tracks"
simHits = "GEMSimHits"
simTracks = "TrackTree"

## Style
gStyle.SetStatStyle(0);
Expand All @@ -48,18 +49,128 @@
treeHits = dirAna.Get(recHits)
if not treeHits:
sys.exit('Tree %s does not exist.' %(treeHits))

draw_occ(targetDir, "localrh_xy_rm1_l1", ext, treeHits, " SimHit occupancy: region-1, layer1;globalX [cm];globalY [cm]",

treeSimHits = dirAna.Get(simHits)
if not treeSimHits:
sys.exit('Tree %s does not exist.' %(treeSimHits))

draw_geff2(targetDir, "recHitEfficiencyPerChamber", ext, treeHits, treeSimHits, "Local Reco Efficiency vs. chamber;chamber",
"h_", "(38,0,38)", "chamber", TCut(""), TCut(""), "P", kBlue);
draw_geff2(targetDir, "recHitEfficiencyGlobalPhi", ext, treeHits, treeSimHits, "Local Reco Efficiency vs. phi;#phi",
"h_", "(100,-TMath::Pi,+TMath::Pi)", "globalPhi", TCut(""), TCut(""), "P", kBlue);
draw_1D(targetDir, "recHitPullX", ext, treeHits, "(x_{sim} - x_{rec}) / #sigma_{rec}; (x_{sim} - x_{rec}) / #sigma_{rec}; entries",
"h_", "(100,-50,+50)", "pull", TCut(""), "");

draw_1D(targetDir, "recHitPullX_rm1_l1", ext, treeHits, "(x_{sim} - x_{rec}) / #sigma_{rec} region-1, layer1; (x_{sim} - x_{rec}) / #sigma_{rec}; entries",
"h_", "(100,-50,+50)", "pull", TCut("%s && %s" %(rm1.GetTitle(), l1.GetTitle())), "");
draw_1D(targetDir, "recHitPullX_rm1_l2", ext, treeHits, "(x_{sim} - x_{rec}) / #sigma_{rec} region-1, layer2; (x_{sim} - x_{rec}) / #sigma_{rec}; entries",
"h_", "(100,-50,+50)", "pull", TCut("%s && %s" %(rm1.GetTitle(), l2.GetTitle())), "");
draw_1D(targetDir, "recHitPullX_rp1_l1", ext, treeHits, "(x_{sim} - x_{rec}) / #sigma_{rec} region+1, layer1; (x_{sim} - x_{rec}) / #sigma_{rec}; entries",
"h_", "(100,-50,+50)", "pull", TCut("%s && %s" %(rp1.GetTitle(), l1.GetTitle())), "");
draw_1D(targetDir, "recHitPullX_rp1_l2", ext, treeHits, "(x_{sim} - x_{rec}) / #sigma_{rec} region'1, layer2; (x_{sim} - x_{rec}) / #sigma_{rec}; entries",
"h_", "(100,-50,+50)", "pull", TCut("%s && %s" %(rp1.GetTitle(), l2.GetTitle())), "");

draw_geff2(targetDir, "recHitEfficiencyPerChamber_rm1_l1", ext, treeHits, treeSimHits, "Local Reco Efficiency vs. chamber : region-1, layer1;chamber",
"h_", "(38,0,38)", "chamber", TCut("%s && %s" %(rm1.GetTitle(), l1.GetTitle())),TCut("%s && %s" %(rm1.GetTitle(), l1.GetTitle())), "P", kBlue);
draw_geff2(targetDir, "recHitEfficiencyPerChamber_rm1_l2", ext, treeHits, treeSimHits, "Local Reco Efficiency vs. chamber : region-1, layer2;chamber",
"h_", "(38,0,38)", "chamber", TCut("%s && %s" %(rm1.GetTitle(), l2.GetTitle())),TCut("%s && %s" %(rm1.GetTitle(), l2.GetTitle())), "P", kBlue);
draw_geff2(targetDir, "recHitEfficiencyPerChamber_rp1_l1", ext, treeHits, treeSimHits, "Local Reco Efficiency vs. chamber : region+1, layer1;chamber",
"h_", "(38,0,38)", "chamber", TCut("%s && %s" %(rp1.GetTitle(), l1.GetTitle())),TCut("%s && %s" %(rp1.GetTitle(), l1.GetTitle())), "P", kBlue);
draw_geff2(targetDir, "recHitEfficiencyPerChamber_rp1_l2", ext, treeHits, treeSimHits, "Local Reco Efficiency vs. chamber : region+1, layer2;chamber",
"h_", "(38,0,38)", "chamber", TCut("%s && %s" %(rp1.GetTitle(), l2.GetTitle())),TCut("%s && %s" %(rp1.GetTitle(), l2.GetTitle())), "P", kBlue);

draw_occ(targetDir, "localrh_xy_rm1_l1", ext, treeHits, " GEM RecHit occupancy: region-1, layer1;globalX [cm];globalY [cm]",
"h_", "(100,-260,260,100,-260,260)", "globalY:globalX", TCut("%s && %s" %(rm1.GetTitle(), l1.GetTitle())), "COLZ");
draw_occ(targetDir, "localrh_xy_rm1_l2", ext, treeHits, " SimHit occupancy: region-1, layer2;globalX [cm];globalY [cm]",
draw_occ(targetDir, "localrh_xy_rm1_l2", ext, treeHits, " GEM RecHit occupancy: region-1, layer2;globalX [cm];globalY [cm]",
"h_", "(100,-260,260,100,-260,260)", "globalY:globalX", TCut("%s && %s" %(rm1.GetTitle(), l2.GetTitle())), "COLZ");
draw_occ(targetDir, "localrh_xy_rp1_l1", ext, treeHits, " SimHit occupancy: region1, layer1;globalX [cm];globalY [cm]",
draw_occ(targetDir, "localrh_xy_rp1_l1", ext, treeHits, " GEM RecHit occupancy: region1, layer1;globalX [cm];globalY [cm]",
"h_", "(100,-260,260,100,-260,260)", "globalY:globalX", TCut("%s && %s" %(rp1.GetTitle(), l1.GetTitle())), "COLZ");
draw_occ(targetDir, "localrh_xy_rp1_l2", ext, treeHits, " SimHit occupancy: region1, layer2;globalX [cm];globalY [cm]",
draw_occ(targetDir, "localrh_xy_rp1_l2", ext, treeHits, " GEM RecHit occupancy: region1, layer2;globalX [cm];globalY [cm]",
"h_", "(100,-260,260,100,-260,260)", "globalY:globalX", TCut("%s && %s" %(rp1.GetTitle(), l2.GetTitle())), "COLZ");

draw_occ(targetDir, "localrh_zr_rm1", ext, treeHits, " SimHit occupancy: region-1;globalZ [cm];globalR [cm]",
draw_occ(targetDir, "localrh_zr_rm1", ext, treeHits, " GEM RecHit occupancy: region-1;globalZ [cm];globalR [cm]",
"h_", "(200,-573,-564,110,130,240)", "sqrt(globalX*globalX+globalY*globalY):globalZ", rm1, "COLZ");
draw_occ(targetDir, "localrh_zr_rp1", ext, treeHits, " SimHit occupancy: region1;globalZ [cm];globalR [cm]",
draw_occ(targetDir, "localrh_zr_rp1", ext, treeHits, " GEM RecHit occupancy: region1;globalZ [cm];globalR [cm]",
"h_", "(200,564,573,110,130,240)", "sqrt(globalX*globalX+globalY*globalY):globalZ", rp1, "COLZ");

draw_occ(targetDir, "strip_rh_phistrip_rm1_l1", ext, treeHits, "GEM RecHit occupancy: region-1 layer1; #phi [rad]; strip",
"h_", "(280,-3.141592654,3.141592654,192,0,384)", "firstClusterStrip:globalPhi", TCut("%s && %s" %(rm1.GetTitle(), l1.GetTitle())), "COLZ")
draw_occ(targetDir, "strip_rh_phistrip_rm1_l2", ext, treeHits, "GEM RecHit occupancy: region-1 layer2; #phi [rad]; strip",
"h_", "(280,-3.141592654,3.141592654,192,0,384)", "firstClusterStrip:globalPhi", TCut("%s && %s" %(rm1.GetTitle(), l2.GetTitle())), "COLZ")
draw_occ(targetDir, "strip_rh_phistrip_rp1_l1", ext, treeHits, "GEM RecHit occupancy: region1 layer1; #phi [rad]; strip",
"h_", "(280,-3.141592654,3.141592654,192,0,384)", "firstClusterStrip:globalPhi", TCut("%s && %s" %(rp1.GetTitle(), l1.GetTitle())), "COLZ")
draw_occ(targetDir, "strip_rh_phistrip_rp1_l2", ext, treeHits, "GEM RecHit occupancy: region1 layer2; #phi [rad]; strip",
"h_", "(280,-3.141592654,3.141592654,192,0,384)", "firstClusterStrip:globalPhi", TCut("%s && %s" %(rp1.GetTitle(), l2.GetTitle())), "COLZ")

draw_1D(targetDir, "strip_rh_rm1_l1", ext, treeHits, "GEM RecHit occupancy per strip number, region-1 layer1;strip number;entries",
"h_", "(384,0.5,384.5)", "firstClusterStrip", TCut("%s && %s" %(rm1.GetTitle(), l1.GetTitle())))
draw_1D(targetDir, "strip_rh_rm1_l2", ext, treeHits, "GEM RecHit occupancy per strip number, region-1 layer2;strip number;entries",
"h_", "(384,0.5,384.5)", "firstClusterStrip", TCut("%s && %s" %(rm1.GetTitle(), l2.GetTitle())))
draw_1D(targetDir, "strip_rh_rp1_l1", ext, treeHits, "GEM RecHit occupancy per strip number, region1 layer1;strip number;entries",
"h_", "(384,0.5,384.5)", "firstClusterStrip", TCut("%s && %s" %(rp1.GetTitle(), l1.GetTitle())))
draw_1D(targetDir, "strip_rh_rp1_l2", ext, treeHits, "GEM RecHit occupancy per strip number, region1 layer2;strip number;entries",
"h_", "(384,0.5,384.5)", "firstClusterStrip", TCut("%s && %s" %(rp1.GetTitle(), l2.GetTitle())))

## Tracks
treeTracks = dirAna.Get(simTracks)
if not treeTracks:
sys.exit('Tree %s does not exist.' %(treeTracks))

## recHits
draw_geff(targetDir, "eff_eta_track_rh_gem_l1", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1;SimTrack |#eta|;Eff.",
"h_", "(140,1.5,2.2)", "TMath::Abs(eta)", TCut(""), ok_gL1rh, "P", kBlue)
draw_geff(targetDir, "eff_eta_track_rh_gem_l2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l2;SimTrack |#eta|;Eff.",
"h_", "(140,1.5,2.2)", "TMath::Abs(eta)", TCut(""), ok_gL2rh, "P", kBlue)
draw_geff(targetDir, "eff_eta_track_rh_gem_l1or2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 or l2;SimTrack |#eta|;Eff.",
"h_", "(140,1.5,2.2)", "TMath::Abs(eta)", TCut(""), TCut("%s || %s" %(ok_gL2rh.GetTitle(), ok_gL1rh.GetTitle())), "P", kBlue)
draw_geff(targetDir, "eff_eta_track_rh_gem_l1and2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 and l2;SimTrack |#eta|;Eff.",
"h_", "(140,1.5,2.2)", "TMath::Abs(eta)", TCut(""), TCut("%s && %s" %(ok_gL2rh.GetTitle(), ok_gL1rh.GetTitle())), "P", kBlue)

draw_geff(targetDir, "eff_phi_track_rh_gem_l1", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1;SimTrack #phi [rad];Eff.",
"h_", "(100,-3.141592654,3.141592654)", "phi", ok_eta, ok_gL1rh, "P", kBlue)
draw_geff(targetDir, "eff_phi_track_rh_gem_l2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l2;SimTrack #phi [rad];Eff.",
"h_", "(100,-3.141592654,3.141592654)", "phi", ok_eta, ok_gL2rh, "P", kBlue)
draw_geff(targetDir, "eff_phi_track_rh_gem_l1or2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 or l2;SimTrack #phi [rad];Eff.",
"h_", "(100,-3.141592654,3.141592654)", "phi", ok_eta, TCut("%s || %s" %(ok_gL2rh.GetTitle(), ok_gL1rh.GetTitle())), "P", kBlue)
draw_geff(targetDir, "eff_phi_track_rh_gem_l1and2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 and l2;SimTrack #phi [rad];Eff.",
"h_", "(100,-3.141592654,3.141592654)", "phi", ok_eta, TCut("%s && %s" %(ok_gL2rh.GetTitle(), ok_gL1rh.GetTitle())), "P", kBlue)

## recHits with matched simhits
draw_geff(targetDir, "eff_eta_track_rh_sh_gem_l1", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 with a matched SimHit;SimTrack |#eta|;Eff.",
"h_", "(140,1.5,2.2)", "TMath::Abs(eta)", ok_gL1sh, ok_gL1rh, "P", kBlue)
draw_geff(targetDir, "eff_eta_track_rh_sh_gem_l2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l2 with a matched SimHit;SimTrack |#eta|;Eff.",
"h_", "(140,1.5,2.2)", "TMath::Abs(eta)", ok_gL2sh, ok_gL2rh, "P", kBlue)
draw_geff(targetDir, "eff_eta_track_rh_sh_gem_l1or2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 or l2 with a matched SimHit;SimTrack |#eta|;Eff.",
"h_", "(140,1.5,2.2)", "TMath::Abs(eta)", TCut("%s || %s" %(ok_gL2sh.GetTitle(), ok_gL1sh.GetTitle())),
TCut("%s || %s" %(ok_gL2rh.GetTitle(), ok_gL1rh.GetTitle())), "P", kBlue)
draw_geff(targetDir, "eff_eta_track_rh_sh_gem_l1and2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 and l2 with a matched SimHit;SimTrack |#eta|;Eff.",
"h_", "(140,1.5,2.2)", "TMath::Abs(eta)", TCut("%s && %s" %(ok_gL2sh.GetTitle(), ok_gL1sh.GetTitle())),
TCut("%s && %s" %(ok_gL2rh.GetTitle(), ok_gL1rh.GetTitle())), "P", kBlue)

draw_geff(targetDir, "eff_phi_track_rh_gem_l1", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 with a matched SimHit;SimTrack #phi [rad];Eff.",
"h_", "(100,-3.141592654,3.141592654)", "phi", TCut("%s && %s" %(ok_eta.GetTitle(), ok_gL1sh.GetTitle())), ok_gL1rh, "P", kBlue)
draw_geff(targetDir, "eff_phi_track_rh_gem_l2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l2 with a matched SimHit;SimTrack #phi [rad];Eff.",
"h_", "(100,-3.141592654,3.141592654)", "phi", TCut("%s && %s" %(ok_eta.GetTitle(), ok_gL2sh.GetTitle())), ok_gL2rh, "P", kBlue)
draw_geff(targetDir, "eff_phi_track_rh_gem_l1or2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 or l2 with a matched SimHit;SimTrack #phi [rad];Eff.",
"h_", "(100,-3.141592654,3.141592654)", "phi", TCut("%s && (%s || %s)"%(ok_eta.GetTitle(),ok_gL1sh.GetTitle(),ok_gL2sh.GetTitle())),
TCut("%s || %s" %(ok_gL2rh.GetTitle(), ok_gL1rh.GetTitle())), "P", kBlue)
draw_geff(targetDir, "eff_phi_track_rh_gem_l1and2", ext, treeTracks,
"Eff. for a SimTrack to have an associated GEM RecHit in l1 and l2 with a matched SimHit;SimTrack #phi [rad];Eff.",
"h_", "(100,-3.141592654,3.141592654)", "phi", TCut("%s && (%s && %s)"%(ok_eta.GetTitle(),ok_gL1sh.GetTitle(),ok_gL2sh.GetTitle())),
TCut("%s && %s" %(ok_gL2rh.GetTitle(), ok_gL1rh.GetTitle())), "P", kBlue)

Loading

0 comments on commit 5b6183e

Please sign in to comment.