-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathpractice1.py
More file actions
47 lines (37 loc) · 1.79 KB
/
Copy pathpractice1.py
File metadata and controls
47 lines (37 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import ROOT
from DataFormats.FWLite import Events, Handle
gemRecHitsLabel, gemRecHits = "gemRecHits", Handle("edm::RangeMap<GEMDetId,edm::OwnVector<GEMRecHit,edm::ClonePolicy<GEMRecHit> >,edm::ClonePolicy<GEMRecHit> >")
simHitsLabel, simHits = ("g4SimHits", "MuonGEMHits"), Handle("vector<PSimHit>")
h_cls = ROOT.TH2D("GEM RecHit Cluster size", "GEM RecHit Cluster size; Cluster size; i#eta", 10, 0, 10, 8, 1, 9)
h_dx = ROOT.TH1D("GEM RecHit Resolution X", "GEM RecHit Resolution X; #delta x; i#eta", 30, -5, 5)
h_sim_ieta = ROOT.TH1D("GEM SimHit i#eta", "GEM SimHit i#eta; i#eta; Number of GEMSimHit", 8, 1, 9)
h_sim_ieta_matched = ROOT.TH1D("GEM SimHit i#eta matched", "GEM SimHit i#eta matched; #ieta; Number of GEMSimHit", 8, 1, 9)
fdir = "../step3.root"
events = Events(fdir)
for iev, event in enumerate(events):
print "iev", iev
event.getByLabel(simHitsLabel, simHits)
event.getByLabel(gemRecHitsLabel, gemRecHits)
for rh in gemRecHits.product():
h_cls.Fill(rh.gemId().roll(), rh.clusterSize())
for sh in simHits.product():
detId = ROOT.DetId(sh.detUnitId())
if detId.det() != 2: continue # Muon detector
if detId.subdetId() != 4: continue # GEM detector
gemDetId = ROOT.GEMDetId(detId)
if gemDetId.station() != 1: continue # GE1/1
h_sim_ieta.Fill(gemDetId.roll())
matched = False
for rh in gemRecHits.product():
if sh.detUnitId() == rh.gemId().rawId():
dx = sh.localPosition().x() - rh.localPosition().x()
h_dx.Fill(dx)
if abs(dx) < 0.5:
matched = True
if matched: h_sim_ieta_matched.Fill(gemDetId.roll())
c = ROOT.TCanvas()
eff = ROOT.TEfficiency(h_sim_ieta_matched, h_sim_ieta)
eff.Draw()
c.Print("eff.png")
h_dx.Fit("gaus")
h_dx.Draw()