17 def xAODHist(evt, phys=False, analysis=False, histfile=None):
20 histfilename = histfile
22 histfilename =
"hist.root"
25 hfile = ROOT.TFile( histfilename,
'RECREATE',
'ROOT file with histograms' )
28 hphys_nclus = ROOT.TH1F(
'phys_nclus',
'phys_nclus', 20, 0, 20 )
29 hphys_nidtracks = ROOT.TH1F(
'phys_nidtracks',
'phys_nidtracks', 20, 0, 20 )
30 hphys_ntautracks = ROOT.TH1F(
'phys_ntautracks',
'phys_ntautracks', 20, 0, 20 )
31 hphys_ntaus = ROOT.TH1F(
'phys_ntaus',
'phys_taus', 20, 0, 20 )
32 hphys_nmuons = ROOT.TH1F(
'phys_nmuons',
'phys_nmuons', 20, 0, 20 )
33 hphys_nelecs = ROOT.TH1F(
'phys_nelecs',
'phys_nelecs', 20, 0, 20 )
34 hphys_nphotons = ROOT.TH1F(
'phys_nphotons',
'phys_nphotons', 20, 0, 20 )
35 hphys_njets = ROOT.TH1F(
'phys_njets',
'phys_njets', 20, 0, 20 )
36 hphys_nfakeelectrons = ROOT.TH1F(
'phys_nfakeelectrons',
'phys_nfakeelectrons', 20, 0, 20 )
37 hphys_nfakephotons = ROOT.TH1F(
'phys_nfakephotons',
'phys_nfakephotons', 20, 0, 20 )
40 hntaujet = ROOT.TH1F(
'ana_ntaujet',
'ana_ntaujet', 20, 0, 20 )
41 htaujetpt = ROOT.TH1F(
'ana_taujet_pt',
'ana_taujet_pt', 200, 0, 200 )
42 htaujeteta = ROOT.TH1F(
'ana_taujet_eta',
'ana_taujet_eta', 100, -5, 5 )
43 htaujetphi = ROOT.TH1F(
'ana_taujet_phi',
'ana_taujet_phi', 70, -3.5, 3.5 )
45 hnelectron = ROOT.TH1F(
'ana_nelectron',
'ana_nelectron', 20, 0, 20 )
46 helectronpt = ROOT.TH1F(
'ana_electron_pt',
'ana_electron_pt', 200, 0, 200 )
47 helectroneta = ROOT.TH1F(
'ana_electron_eta',
'ana_electron_eta', 100, -5, 5 )
48 helectronphi = ROOT.TH1F(
'ana_electron_phi',
'ana_electron_phi', 70, -3.5, 3.5 )
50 hnmuon = ROOT.TH1F(
'ana_nmuon',
'ana_nmuon', 20, 0, 20 )
51 hmuonpt = ROOT.TH1F(
'ana_muon_pt',
'ana_muon_pt', 200, 0, 200 )
52 hmuoneta = ROOT.TH1F(
'ana_muon_eta',
'ana_muon_eta', 100, -5, 5 )
53 hmuonphi = ROOT.TH1F(
'ana_muon_phi',
'ana_muon_phi', 70, -3.5, 3.5 )
55 hnphoton = ROOT.TH1F(
'ana_nphoton',
'ana_nphoton', 20, 0, 20 )
56 hphotonpt = ROOT.TH1F(
'ana_photon_pt',
'ana_photon_pt', 200, 0, 200 )
57 hphotoneta = ROOT.TH1F(
'ana_photon_eta',
'ana_photon_eta', 100, -5, 5 )
58 hphotonphi = ROOT.TH1F(
'ana_photon_phi',
'ana_photon_phi', 70, -3.5, 3.5 )
60 hnjet = ROOT.TH1F(
'ana_njet',
'ana_njet', 20, 0, 20 )
61 hjetpt = ROOT.TH1F(
'ana_jet_pt',
'ana_jet_pt', 200, 0, 200 )
62 hjeteta = ROOT.TH1F(
'ana_jet_eta',
'ana_jet_eta', 100, -5, 5 )
63 hjetphi = ROOT.TH1F(
'ana_jet_phi',
'ana_jet_phi', 70, -3.5, 3.5 )
66 for i
in range(0, evt.getEntries()):
71 evt,
"xAOD::CaloClusterContainer",
"CaloCalTopoClusters")
73 hphys_nclus.Fill( nclus )
76 "xAOD::TrackParticleContainer",
"InDetTrackParticles")
77 nIdTracks = len(idTracks)
78 hphys_nidtracks.Fill( nIdTracks )
80 tautracks =
safeRetrieve(evt,
"xAOD::TauTrackContainer",
"TauTracks")
81 nTauTracks = len(tautracks)
82 hphys_ntautracks.Fill( nTauTracks )
84 taus =
safeRetrieve(evt,
"xAOD::TauJetContainer",
"TauJets")
86 hphys_ntaus.Fill( nTaus )
88 muons =
safeRetrieve(evt,
"xAOD::MuonContainer",
"Muons")
90 hphys_nmuons.Fill( nMuons )
92 electrons =
safeRetrieve(evt,
"xAOD::ElectronContainer",
"Electrons")
93 nElec = len(electrons)
94 hphys_nelecs.Fill( nElec )
96 photons =
safeRetrieve(evt,
"xAOD::PhotonContainer",
"Photons")
98 hphys_nphotons.Fill( nPhot )
100 jets =
safeRetrieve(evt,
"xAOD::JetContainer",
"AntiKt4EMPFlowJets")
102 hphys_njets.Fill( nJet )
106 acc = ROOT.SG.ConstAccessor(
107 'ElementLink< xAOD::TruthParticleContainer>')(
'truthParticleLink')
109 if nElec > 0
and acc.isAvailable(electrons.at(0)):
110 for i
in range(nElec):
111 truthLink =
acc(electrons.at(i))
112 if(truthLink.isValid()):
113 pdgId = truthLink.pdgId()
117 if nPhot > 0
and acc.isAvailable(photons.at(0)):
118 for i
in range(nPhot):
119 truthLink =
acc(photons.at(i))
120 if(truthLink.isValid()):
121 pdgId = truthLink.pdgId()
125 nFakeElectrons = nElec - nTrueElectrons
126 nFakePhotons = nPhot - nTruePhotons
127 hphys_nfakeelectrons.Fill( nFakeElectrons )
128 hphys_nfakephotons.Fill( nFakePhotons )
132 ana_taujets =
safeRetrieve(evt,
"xAOD::TauJetContainer",
"AnalysisTauJets")
133 ana_ntaujet = len(ana_taujets)
134 hntaujet.Fill( ana_ntaujet )
135 for j
in ana_taujets:
136 htaujetpt.Fill( j.pt()/1000. )
137 htaujeteta.Fill( j.eta() )
138 htaujetphi.Fill( j.phi() )
140 ana_muons =
safeRetrieve(evt,
"xAOD::MuonContainer",
"AnalysisMuons")
141 ana_nmuon = len(ana_muons)
142 hnmuon.Fill( ana_nmuon )
144 hmuonpt.Fill( j.pt()/1000. )
145 hmuoneta.Fill( j.eta() )
146 hmuonphi.Fill( j.phi() )
148 ana_electrons =
safeRetrieve(evt,
"xAOD::ElectronContainer",
"AnalysisElectrons")
149 ana_nelectron = len(ana_electrons)
150 hnelectron.Fill( ana_nelectron )
151 for j
in ana_electrons:
152 helectronpt.Fill( j.pt()/1000. )
153 helectroneta.Fill( j.eta() )
154 helectronphi.Fill( j.phi() )
156 ana_photons =
safeRetrieve(evt,
"xAOD::PhotonContainer",
"AnalysisPhotons")
157 ana_nPhot = len(ana_photons)
158 hnphoton.Fill( ana_nPhot )
159 for j
in ana_photons:
160 hphotonpt.Fill( j.pt()/1000. )
161 hphotoneta.Fill( j.eta() )
162 hphotonphi.Fill( j.phi() )
164 ana_jets =
safeRetrieve(evt,
"xAOD::JetContainer",
"AnalysisJets")
165 ana_nJet = len(ana_jets)
166 hnjet.Fill( ana_nJet )
168 hjetpt.Fill( j.pt()/1000. )
169 hjeteta.Fill( j.eta() )
170 hjetphi.Fill( j.phi() )
178 hphys_nidtracks.Write()
179 hphys_ntautracks.Write()
183 hphys_nphotons.Write()
185 hphys_nfakeelectrons.Write()
186 hphys_nfakephotons.Write()
190 hfile.mkdir(
"AnalysisJets")
191 hfile.cd(
"AnalysisJets")
198 hfile.mkdir(
"AnalysisPhotons")
199 hfile.cd(
"AnalysisPhotons")
206 hfile.mkdir(
"AnalysisTauJets")
207 hfile.cd(
"AnalysisTauJets")
214 hfile.mkdir(
"AnalysisElectrons")
215 hfile.cd(
"AnalysisElectrons")
222 hfile.mkdir(
"AnalysisMuons")
223 hfile.cd(
"AnalysisMuons")