ATLAS Offline Software
Loading...
Searching...
No Matches
createDCubeDigitHistograms.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3# this script can be used to create DCube histograms from the output ntuples of NSWPRDValAlg
4
5import os, sys, ROOT, argparse
6
7if __name__ == "__main__":
8 parser = argparse.ArgumentParser(prog='createDCubeDigiHistograms', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
9 parser.add_argument('-i', '--inputFile', help='choose input ROOT file', default='NSWPRDValAlg.digi.ntuple.root', type=str)
10 parser.add_argument('-o', '--outputFile', help='choose output ROOT file', default='NSWPRDValAlg.digi.dcube.root', type=str)
11 parser.add_argument('--doRPC', help='turn off BIS78 RPC if using Run2 input ROOT file', default=True, action='store_true')
12 parser.add_argument('--doMDT', help='turn off sMDT if using Run2 input ROOT file', default=True, action='store_true')
13
14 Options = parser.parse_args()
15
16 ROOT.gROOT.SetBatch(True)
17
18 if not os.path.exists(Options.inputFile):
19 print ('ERROR: File %s does not exist'%Options.inputFile)
20 sys.exit(1)
21
22 inputFile = ROOT.TFile(Options.inputFile, "READ")
23 if not inputFile:
24 print ('ERROR: Failed to open file %s'%Options.inputFile)
25 sys.exit(1)
26 inputTree = inputFile.Get("HitValidTree")
27 if not inputTree:
28 print ('ERROR: HitValidTree does not exist in file %s'%Options.inputFile)
29 sys.exit(1)
30
31 nEntries = inputTree.GetEntries()
32 if nEntries==0:
33 print ('ERROR: HitValidTree of file %s has 0 entries'%Options.inputFile)
34 sys.exit(1)
35
36 outputFile = ROOT.TFile(Options.outputFile, "RECREATE")
37 if not outputFile:
38 print ('ERROR: Failed to open file %s'%Options.outputFile)
39 sys.exit(1)
40
41 outputFile.cd()
42 outputFile.mkdir("digitisation/")
43 ODir = outputFile.GetDirectory("digitisation/")
44 ODir.cd()
45
46
48 truthPt = ROOT.TH1F("truthPt","truthPt;p_{T} [MeV]",100,0,1000)
49 truthEta = ROOT.TH1F("truthEta","truthEta;#eta",20,-10,10)
50 truthPhi = ROOT.TH1F("truthPhi","truthPhi;#phi",20,-10,10)
51
53 rpclocalX = ROOT.TH1F("rpclocalX","rpclocalX;Digits_RPC_localPosX [mm]",100,-1200,1200)
54 rpclocalY = ROOT.TH1F("rpclocalY","rpclocalY;Digits_RPC_localPosY [mm]",100,-1200,1200)
55 rpcStationEta = ROOT.TH1F("rpcStationEta","rpcStationEta;Digits_RPC_stationEta",20,-10,10)
56 rpcStationPhi = ROOT.TH1F("rpcStationPhi","rpcStationPhi;Digits_RPC_stationPhi",10,0,10)
57 rpcglobalX = ROOT.TH1F("rpcglobalX","rpcglobalX;Digits_RPC_globalPosX [mm]",100,-13000,12000)
58 rpcglobalY = ROOT.TH1F("rpcglobalY","rpcglobalY;Digits_RPC_globalPosY [mm]",100,-15000,14000)
59 rpcglobalZ = ROOT.TH1F("rpcglobalZ","rpcglobalZ;Digits_RPC_globalPosZ [mm]",100,-15000,15000)
60 rpcGasGap = ROOT.TH1F("rpcGasGap","rpcGasGap;Digits_RPC_GasGap",5,0,5)
61 rpcdoubletR = ROOT.TH1F("rpcdoubletR","rpcdoubletR;Digits_RPC_doubletR",4,0,4)
62 rpcdoubletZ = ROOT.TH1F("rpcdoubletZ","rpcdoubletZ;Digits_RPC_doubletZ",4,0,4)
63 rpcdoubletPhi = ROOT.TH1F("rpcdoubletPhi","rpcdoubletPhi;Digits_RPC_doubletPhi",4,0,4)
64 rpcTime = ROOT.TH1F("rpcTime","rpcTime;Digits_RPC_time",100,0,100)
65 rpcStrip = ROOT.TH1F("rpcStrip","rpcStrip;Digits_RPC_strip",10,0,80)
66 rpcStripNumber = ROOT.TH1F("rpcStripNumber","rpcStripNumber;Digits_RPC_stripNumber",10,0,80)
67 rpcMeasuresPhi = ROOT.TH1F("rpcMeasuresPhi","rpcMeasuresPhi;Digits_RPC_measuresPhi",2,0,2)
68 rpcChannel = ROOT.TH1F("rpcChannel","rpcChannel;Digits_RPC_channel",10,0,10)
69 rpcglobalXY = ROOT.TH2F("rpcglobalXY","rpcglobalXY;Digits_rpc_globalPosX [mm];Digits_rpc_globalPosY [mm]",100,-15000,15000,100,-15000,15000)
70 rpcglobalZY = ROOT.TH2F("rpcglobalZY","rpcglobalZY;Digits_rpc_globalPosZ [mm];Digits_rpc_globalPosY [mm]",100,-15000,15000,100,-15000,15000)
71 rpcglobalZX = ROOT.TH2F("rpcglobalZX","rpcglobalZX;Digits_rpc_globalPosZ [mm];Digits_rpc_globalPosX [mm]",100,-15000,15000,100,-15000,15000)
72
73 # BIS RPCs only
74 bis_rpclocalX = ROOT.TH1F("bis_rpclocalX","bis_rpclocalX;Digits_bis_rpc_localPosX [mm]",100,-1000,1000)
75 bis_rpclocalY = ROOT.TH1F("bis_rpclocalY","bis_rpclocalY;Digits_bis_rpc_localPosY [mm]",100,-1000,1000)
76 bis7_rpclocalX = ROOT.TH1F("bis7_rpclocalX","bis7_rpclocalX;Digits_bis7_rpc_localPosX [mm]",100,-1000,1000)
77 bis7_rpclocalY = ROOT.TH1F("bis7_rpclocalY","bis7_rpclocalY;Digits_bis7_rpc_localPosY [mm]",100,-1000,1000)
78 bis8_rpclocalX = ROOT.TH1F("bis8_rpclocalX","bis8_rpclocalX;Digits_bis8_rpc_localPosX [mm]",100,-1000,1000)
79 bis8_rpclocalY = ROOT.TH1F("bis8_rpclocalY","bis8_rpclocalY;Digits_bis8_rpc_localPosY [mm]",100,-1000,1000)
80 bis_rpcStationEta = ROOT.TH1F("bis_rpcStationEta","bis_rpcStationEta;Digits_bis_rpc_stationEta",20,-10,10)
81 bis_rpcStationPhi = ROOT.TH1F("bis_rpcStationPhi","bis_rpcStationPhi;Digits_bis_rpc_stationPhi",10,0,10)
82 bis_rpcglobalX = ROOT.TH1F("bis_rpcglobalX","bis_rpcglobalX;Digits_bis_rpc_globalPosX [mm]",100,-5000,5000)
83 bis_rpcglobalY = ROOT.TH1F("bis_rpcglobalY","bis_rpcglobalY;Digits_bis_rpc_globalPosY [mm]",100,-5000,5000)
84 bis_rpcglobalZ = ROOT.TH1F("bis_rpcglobalZ","bis_rpcglobalZ;Digits_bis_rpc_globalPosZ [mm]",100,-10000,10000)
85 bis_rpcGasGap = ROOT.TH1F("bis_rpcGasGap","bis_rpcGasGap;Digits_bis_rpc_GasGap",5,0,5)
86 bis_rpcdoubletR = ROOT.TH1F("bis_rpcdoubletR","bis_rpcdoubletR;Digits_bis_rpc_doubletR",4,0,4)
87 bis_rpcdoubletZ = ROOT.TH1F("bis_rpcdoubletZ","bis_rpcdoubletZ;Digits_bis_rpc_doubletZ",4,0,4)
88 bis_rpcdoubletPhi = ROOT.TH1F("bis_rpcdoubletPhi","bis_rpcdoubletPhi;Digits_bis_rpc_doubletPhi",4,0,4)
89 bis_rpcTime = ROOT.TH1F("bis_rpcTime","bis_rpcTime;Digits_bis_rpc_time [ns]",80,0,40)
90 bis7_rpcTime = ROOT.TH1F("bis7_rpcTime","bis7_rpcTime;Digits_bis7_rpc_time [ns]",80,0,40)
91 bis8_rpcTime = ROOT.TH1F("bis8_rpcTime","bis8_rpcTime;Digits_bis8_rpc_time [ns]",80,0,40)
92 bis_rpcStrip = ROOT.TH1F("bis_rpcStrip","bis_rpcStrip;Digits_bis_rpc_strip",10,0,10)
93 bis_rpcStripNumber = ROOT.TH1F("bis_rpcStripNumber","bis_rpcStripNumber;Digits_bis_rpc_stripNumber",10,0,80)
94 bis_rpcMeasuresPhi = ROOT.TH1F("bis_rpcMeasuresPhi","bis_rpcMeasuresPhi;Digits_bis_rpc_measuresPhi",2,0,2)
95 bis_rpcChannel = ROOT.TH1F("bis_rpcChannel","bis_rpcChannel;Digits_bis_rpc_channel",10,0,10)
96 bis_rpcglobalXY = ROOT.TH2F("bis_rpcglobalXY","bis_rpcglobalXY;Digits_bis_rpc_globalPosX [mm];Digits_bis_rpc_globalPosY [mm]",100,-5000,5000,100,-5000,5000)
97 bis_rpcglobalZY = ROOT.TH2F("bis_rpcglobalZY","bis_rpcglobalZY;Digits_bis_rpc_globalPosZ [mm];Digits_bis_rpc_globalPosY [mm]",100,-15000,15000,100,-5000,5000)
98 bis_rpcglobalZX = ROOT.TH2F("bis_rpcglobalZX","bis_rpcglobalZX;Digits_bis_rpc_globalPosZ [mm];Digits_bis_rpc_globalPosX [mm]",100,-15000,15000,100,-5000,5000)
99
100
102 mdtlocalX = ROOT.TH1F("mdtlocalX","mdtlocalX;Digits_MDT_localPosX [mm]",100,-1500,1500)
103 mdtlocalY = ROOT.TH1F("mdtlocalY","mdtlocalY;Digits_MDT_localPosY [mm]",100,-1500,1500)
104 mdtStationEta = ROOT.TH1F("mdtStationEta","mdtStationEta;Digits_MDT_stationEta",20,-10,10)
105 mdtStationPhi = ROOT.TH1F("mdtStationPhi","mdtStationPhi;Digits_MDT_stationPhi",10,0,10)
106 mdtglobalX = ROOT.TH1F("mdtglobalX","mdtglobalX;Digits_MDT_globalPosX [mm]",100,-13000,12000)
107 mdtglobalY = ROOT.TH1F("mdtglobalY","mdtglobalY;Digits_MDT_globalPosY [mm]",100,-15000,14000)
108 mdtglobalZ = ROOT.TH1F("mdtglobalZ","mdtglobalZ;Digits_MDT_globalPosZ [mm]",100,-26000,26000)
109 mdtNumberOfMultilayers = ROOT.TH1F("mdtNumberOfMultilayers","mdtNumberOfMultilayers;Digits_MDT_numberOfMultilayers",4,0,4)
110 mdtTube = ROOT.TH1F("mdtTube","mdtTube;Digits_MDT_tube",100,0,100)
111 mdtTubeLayer = ROOT.TH1F("mdtTubeLayer","mdtTubeLayer;Digits_MDT_tubeLayer",6,0,6)
112 mdtMultilayer = ROOT.TH1F("mdtMultilayer","mdtMultilayer;Digits_MDT_Multilayer",4,0,4)
113 mdtTime = ROOT.TH1F("mdtTime","mdtTime;Digits_MDT_time [ns]",100,0,2000)
114 mdtCharge = ROOT.TH1F("mdtCharge","mdtCharge;Digits_MDT_charge [e]",100,0,600)
115 mdtChannel = ROOT.TH1F("mdtChannel","mdtChannel;Digits_MDT_channel",10,0,10)
116 mdtglobalXY = ROOT.TH2F("mdtglobalXY","mdtglobalXY;Digits_mdt_globalPosX [mm];Digits_mdt_globalPosY [mm]",100,-15000,15000,100,-15000,15000)
117 mdtglobalZY = ROOT.TH2F("mdtglobalZY","mdtglobalZY;Digits_mdt_globalPosZ [mm];Digits_mdt_globalPosY [mm]",100,-15000,15000,100,-15000,15000)
118 mdtglobalZX = ROOT.TH2F("mdtglobalZX","mdtglobalZX;Digits_mdt_globalPosZ [mm];Digits_mdt_globalPosX [mm]",100,-15000,15000,100,-15000,15000)
119 mdtlocalTubePosX = ROOT.TH1F("mdtlocalTubePosX","mdtlocalTubePosX;Digits_MDT_localTubePosX [mm]",100,-100,100)
120 mdtlocalTubePosY = ROOT.TH1F("mdtlocalTubePosY","mdtlocalTubePosY;Digits_MDT_localTubePosY [mm]",100,-100,100)
121 mdtlocalTubePosZ = ROOT.TH1F("mdtlocalTubePosZ","mdtlocalTubePosZ;Digits_MDT_localTubePosZ [mm]",100,-100,100)
122
123 # BIS MDTs only
124 bis_mdtlocalX = ROOT.TH1F("bis_mdtlocalX","bis_mdtlocalX;Digits_bis_mdt_localPosX [mm]",100,-1500,1500)
125 bis_mdtlocalY = ROOT.TH1F("bis_mdtlocalY","bis_mdtlocalY;Digits_bis_mdt_localPosY [mm]",100,-1500,1500)
126 bis_mdtlocalZ = ROOT.TH1F("bis_mdtlocalZ","bis_mdtlocalZ;Digits_bis_mdt_localPosZ [mm]",960,-900,900)
127 bis_mdtStationEta = ROOT.TH1F("bis_mdtStationEta","bis_mdtStationEta;Digits_bis_mdt_stationEta",20,-10,10)
128 bis_mdtStationPhi = ROOT.TH1F("bis_mdtStationPhi","bis_mdtStationPhi;Digits_bis_mdt_stationPhi",10,0,10)
129 bis_mdtglobalX = ROOT.TH1F("bis_mdtglobalX","bis_mdtglobalX;Digits_bis_mdt_globalPosX [mm]",100,-5000,5000)
130 bis_mdtglobalY = ROOT.TH1F("bis_mdtglobalY","bis_mdtglobalY;Digits_bis_mdt_globalPosY [mm]",100,-5000,5000)
131 bis_mdtglobalZ = ROOT.TH1F("bis_mdtglobalZ","bis_mdtglobalZ;Digits_bis_mdt_globalPosZ [mm]",100,-10000,10000)
132 bis_mdtNumberOfMultilayers = ROOT.TH1F("bis_mdtNumberOfMultilayers","bis_mdtNumberOfMultilayers;Digits_bis_mdt_numberOfMultilayers",4,0,4)
133 bis_mdtTube = ROOT.TH1F("bis_mdtTube","bis_mdtTube;Digits_bis_mdt_tube",100,0,100)
134 bis_mdtTubeLayer = ROOT.TH1F("bis_mdtTubeLayer","bis_mdtTubeLayer;Digits_bis_mdt_tubeLayer",6,0,6)
135 bis_mdtMultilayer = ROOT.TH1F("bis_mdtMultilayer","bis_mdtMultilayer;Digits_bis_mdt_Multilayer",4,0,4)
136 bis_mdtTime = ROOT.TH1F("bis_mdtTime","bis_mdtTime;Digits_bis_mdt_time [ns]",100,0,2000)
137 bis_mdtCharge = ROOT.TH1F("bis_mdtCharge","bis_mdtCharge;Digits_bis_mdt_charge [e]",100,0,600)
138 bis_mdtChannel = ROOT.TH1F("bis_mdtChannel","bis_mdtChannel;Digits_bis_mdt_channel",10,0,10)
139 bis_mdtglobalXY = ROOT.TH2F("bis_mdtglobalXY","bis_mdtglobalXY;Digits_bis_mdt_globalPosX [mm];Digits_bis_mdt_globalPosY [mm]",100,-5000,5000,100,-5000,5000)
140 bis_mdtglobalZY = ROOT.TH2F("bis_mdtglobalZY","bis_mdtglobalZY;Digits_bis_mdt_globalPosZ [mm];Digits_bis_mdt_globalPosY [mm]",100,-15000,15000,100,-5000,5000)
141 bis_mdtglobalZX = ROOT.TH2F("bis_mdtglobalZX","bis_mdtglobalZX;Digits_bis_mdt_globalPosZ [mm];Digits_bis_mdt_globalPosX [mm]",100,-15000,15000,100,-5000,5000)
142 bis_mdtlocalTubePosX = ROOT.TH1F("bis_mdtlocalTubePosX","bis_mdtlocalTubePosX;Digits_MDT_localTubePosX [mm]",120,-60,60)
143 bis_mdtlocalTubePosY = ROOT.TH1F("bis_mdtlocalTubePosY","bis_mdtlocalTubePosY;Digits_MDT_localTubePosY [mm]",960,-900,900)
144 bis_mdtlocalTubePosZ = ROOT.TH1F("bis_mdtlocalTubePosZ","bis_mdtlocalTubePosZ;Digits_MDT_localTubePosZ [mm]",960,-900,900)
145
146 bis_mdtlocalTubePosXY = ROOT.TH2F("bis_mdtlocalTubePosXY","bis_mdtlocalTubePosXY;Digits_MDT_localTubePosX [mm];Digits_MDT_localTubePosY [mm]",60,-30,30,100,-100,100)
147 bis_mdtlocalTubePosZY = ROOT.TH2F("bis_mdtlocalTubePosZY","bis_mdtlocalTubePosZY;Digits_MDT_localTubePosZ [mm];Digits_MDT_localTubePosY [mm]",100,-1200,1200,100,-100,100)
148 bis_mdtlocalTubePosZX = ROOT.TH2F("bis_mdtlocalTubePosZX","bis_mdtlocalTubePosZX;Digits_MDT_localTubePosZ [mm];Digits_MDT_localTubePosX [mm]",48,1,180,60,-30,30)
149
150 for i in range(nEntries):
151 inputTree.GetEntry(i)
152
153# Truth
154 for ntruth in range(0,len(inputTree.MuEntry_ParticlePt)):
155 truthPt.Fill(inputTree.MuEntry_ParticlePt[ntruth])
156 truthEta.Fill(inputTree.MuEntry_ParticleEta[ntruth])
157 truthPhi.Fill(inputTree.MuEntry_ParticlePhi[ntruth])
158# RPC
159 if Options.doRPC == True:
160 for nrpcHit in range(0,inputTree.Digits_RPC):
161 rpclocalX.Fill(inputTree.Digits_RPC_localPosX[nrpcHit])
162 rpclocalY.Fill(inputTree.Digits_RPC_localPosY[nrpcHit])
163 rpcStationEta.Fill(inputTree.Digits_RPC_stationEta[nrpcHit])
164 rpcStationPhi.Fill(inputTree.Digits_RPC_stationPhi[nrpcHit])
165 rpcglobalX.Fill(inputTree.Digits_RPC_globalPosX[nrpcHit])
166 rpcglobalY.Fill(inputTree.Digits_RPC_globalPosY[nrpcHit])
167 rpcglobalZ.Fill(inputTree.Digits_RPC_globalPosZ[nrpcHit])
168 rpcGasGap.Fill(inputTree.Digits_RPC_GasGap[nrpcHit])
169 rpcdoubletR.Fill(inputTree.Digits_RPC_doubletR[nrpcHit])
170 rpcdoubletZ.Fill(inputTree.Digits_RPC_doubletZ[nrpcHit])
171 rpcdoubletPhi.Fill(inputTree.Digits_RPC_doubletPhi[nrpcHit])
172 rpcMeasuresPhi.Fill(inputTree.Digits_RPC_measuresPhi[nrpcHit])
173 rpcTime.Fill(inputTree.Digits_RPC_time[nrpcHit])
174 rpcStrip.Fill(inputTree.Digits_RPC_strip[nrpcHit])
175 rpcStripNumber.Fill(inputTree.Digits_RPC_stripNumber[nrpcHit])
176 rpcglobalXY.Fill(inputTree.Digits_RPC_globalPosX[nrpcHit],inputTree.Digits_RPC_globalPosY[nrpcHit])
177 rpcglobalZY.Fill(inputTree.Digits_RPC_globalPosZ[nrpcHit],inputTree.Digits_RPC_globalPosY[nrpcHit])
178 rpcglobalZX.Fill(inputTree.Digits_RPC_globalPosZ[nrpcHit],inputTree.Digits_RPC_globalPosX[nrpcHit])
179
180 # Cut on BIS78 modules only -- remove stationEta condition to also plot BIS16 in the future
181 if inputTree.Digits_RPC_stationName[nrpcHit]=="BIS" and inputTree.Digits_RPC_stationEta[nrpcHit]>6:
182 #use measuresPhi=0 to extract local eta/Y coordinate from localX
183 if inputTree.Digits_RPC_measuresPhi[nrpcHit]==0:
184 bis_rpclocalY.Fill(inputTree.Digits_RPC_localPosX[nrpcHit])
185 #use measuresPhi=1 to extract local phi/X coordinate from localX
186 elif inputTree.Digits_RPC_measuresPhi[nrpcHit]==1:
187 bis_rpclocalX.Fill(inputTree.Digits_RPC_localPosX[nrpcHit])
188
189 #use globalZ<6700 to get BIS7
190 if inputTree.Digits_RPC_globalPosZ[nrpcHit]<6700:
191 bis7_rpcTime.Fill(inputTree.Digits_RPC_time[nrpcHit])
192 if inputTree.Digits_RPC_measuresPhi[nrpcHit]==0:
193 bis7_rpclocalY.Fill(inputTree.Digits_RPC_localPosX[nrpcHit])
194 elif inputTree.Digits_RPC_measuresPhi[nrpcHit]==1:
195 bis7_rpclocalX.Fill(inputTree.Digits_RPC_localPosX[nrpcHit])
196 else:
197 #use globalZ>6700 to get BIS8
198 bis8_rpcTime.Fill(inputTree.Digits_RPC_time[nrpcHit])
199 if inputTree.Digits_RPC_measuresPhi[nrpcHit]==0:
200 bis8_rpclocalY.Fill(inputTree.Digits_RPC_localPosX[nrpcHit])
201 elif inputTree.Digits_RPC_measuresPhi[nrpcHit]==1:
202 bis8_rpclocalX.Fill(inputTree.Digits_RPC_localPosX[nrpcHit])
203
204 bis_rpcStationEta.Fill(inputTree.Digits_RPC_stationEta[nrpcHit])
205 bis_rpcStationPhi.Fill(inputTree.Digits_RPC_stationPhi[nrpcHit])
206 bis_rpcglobalX.Fill(inputTree.Digits_RPC_globalPosX[nrpcHit])
207 bis_rpcglobalY.Fill(inputTree.Digits_RPC_globalPosY[nrpcHit])
208 bis_rpcglobalZ.Fill(inputTree.Digits_RPC_globalPosZ[nrpcHit])
209 bis_rpcGasGap.Fill(inputTree.Digits_RPC_GasGap[nrpcHit])
210 bis_rpcdoubletR.Fill(inputTree.Digits_RPC_doubletR[nrpcHit])
211 bis_rpcdoubletZ.Fill(inputTree.Digits_RPC_doubletZ[nrpcHit])
212 bis_rpcdoubletPhi.Fill(inputTree.Digits_RPC_doubletPhi[nrpcHit])
213 bis_rpcMeasuresPhi.Fill(inputTree.Digits_RPC_measuresPhi[nrpcHit])
214 bis_rpcTime.Fill(inputTree.Digits_RPC_time[nrpcHit])
215 bis_rpcStrip.Fill(inputTree.Digits_RPC_strip[nrpcHit])
216 bis_rpcStripNumber.Fill(inputTree.Digits_RPC_stripNumber[nrpcHit])
217 bis_rpcglobalXY.Fill(inputTree.Digits_RPC_globalPosX[nrpcHit],inputTree.Digits_RPC_globalPosY[nrpcHit])
218 bis_rpcglobalZY.Fill(inputTree.Digits_RPC_globalPosZ[nrpcHit],inputTree.Digits_RPC_globalPosY[nrpcHit])
219 bis_rpcglobalZX.Fill(inputTree.Digits_RPC_globalPosZ[nrpcHit],inputTree.Digits_RPC_globalPosX[nrpcHit])
220
221 else: continue
222# MDT
223 if Options.doMDT == True:
224 for nmdtHit in range(0,inputTree.Digits_MDT):
225 mdtlocalTubePosX.Fill(inputTree.Digits_MDT_localTubePosX[nmdtHit])
226 mdtlocalTubePosY.Fill(inputTree.Digits_MDT_localTubePosY[nmdtHit])
227 mdtlocalTubePosZ.Fill(inputTree.Digits_MDT_localTubePosZ[nmdtHit])
228 mdtStationEta.Fill(inputTree.Digits_MDT_stationEta[nmdtHit])
229 mdtStationPhi.Fill(inputTree.Digits_MDT_stationPhi[nmdtHit])
230 mdtglobalX.Fill(inputTree.Digits_MDT_globalPosX[nmdtHit])
231 mdtglobalY.Fill(inputTree.Digits_MDT_globalPosY[nmdtHit])
232 mdtglobalZ.Fill(inputTree.Digits_MDT_globalPosZ[nmdtHit])
233 mdtNumberOfMultilayers.Fill(inputTree.Digits_MDT_numberOfMultilayers[nmdtHit])
234 mdtTube.Fill(inputTree.Digits_MDT_tube[nmdtHit])
235 mdtTubeLayer.Fill(inputTree.Digits_MDT_tubeLayer[nmdtHit])
236 mdtMultilayer.Fill(inputTree.Digits_MDT_multilayer[nmdtHit])
237 mdtTime.Fill(inputTree.Digits_MDT_time[nmdtHit])
238 mdtCharge.Fill(inputTree.Digits_MDT_charge[nmdtHit])
239 mdtglobalXY.Fill(inputTree.Digits_MDT_globalPosX[nmdtHit],inputTree.Digits_MDT_globalPosY[nmdtHit])
240 mdtglobalZY.Fill(inputTree.Digits_MDT_globalPosZ[nmdtHit],inputTree.Digits_MDT_globalPosY[nmdtHit])
241 mdtglobalZX.Fill(inputTree.Digits_MDT_globalPosZ[nmdtHit],inputTree.Digits_MDT_globalPosX[nmdtHit])
242
243 # Cut on BIS78 modules only
244 if inputTree.Digits_MDT_stationName[nmdtHit]=="BIS" and inputTree.Digits_MDT_stationEta[nmdtHit]>6:
245 bis_mdtlocalTubePosX.Fill(inputTree.Digits_MDT_localTubePosX[nmdtHit])
246 bis_mdtlocalTubePosY.Fill(inputTree.Digits_MDT_localTubePosY[nmdtHit])
247 bis_mdtlocalTubePosZ.Fill(inputTree.Digits_MDT_localTubePosZ[nmdtHit])
248 bis_mdtStationEta.Fill(inputTree.Digits_MDT_stationEta[nmdtHit])
249 bis_mdtStationPhi.Fill(inputTree.Digits_MDT_stationPhi[nmdtHit])
250 bis_mdtglobalX.Fill(inputTree.Digits_MDT_globalPosX[nmdtHit])
251 bis_mdtglobalY.Fill(inputTree.Digits_MDT_globalPosY[nmdtHit])
252 bis_mdtglobalZ.Fill(inputTree.Digits_MDT_globalPosZ[nmdtHit])
253 bis_mdtNumberOfMultilayers.Fill(inputTree.Digits_MDT_numberOfMultilayers[nmdtHit])
254 bis_mdtTube.Fill(inputTree.Digits_MDT_tube[nmdtHit])
255 bis_mdtTubeLayer.Fill(inputTree.Digits_MDT_tubeLayer[nmdtHit])
256 bis_mdtMultilayer.Fill(inputTree.Digits_MDT_multilayer[nmdtHit])
257 bis_mdtTime.Fill(inputTree.Digits_MDT_time[nmdtHit])
258 bis_mdtCharge.Fill(inputTree.Digits_MDT_charge[nmdtHit])
259 bis_mdtglobalXY.Fill(inputTree.Digits_MDT_globalPosX[nmdtHit],inputTree.Digits_MDT_globalPosY[nmdtHit])
260 bis_mdtglobalZY.Fill(inputTree.Digits_MDT_globalPosZ[nmdtHit],inputTree.Digits_MDT_globalPosY[nmdtHit])
261 bis_mdtglobalZX.Fill(inputTree.Digits_MDT_globalPosZ[nmdtHit],inputTree.Digits_MDT_globalPosX[nmdtHit])
262 bis_mdtlocalTubePosXY.Fill(inputTree.Digits_MDT_localTubePosX[nmdtHit],inputTree.Digits_MDT_localTubePosY[nmdtHit])
263 bis_mdtlocalTubePosZY.Fill(inputTree.Digits_MDT_localTubePosZ[nmdtHit],inputTree.Digits_MDT_localTubePosY[nmdtHit])
264 bis_mdtlocalTubePosZX.Fill(inputTree.Digits_MDT_localTubePosZ[nmdtHit],inputTree.Digits_MDT_localTubePosX[nmdtHit])
265
266 else: continue
267
268
269# Truth
270 ODir.WriteTObject(truthPt, truthPt.GetName())
271 ODir.WriteTObject(truthEta, truthEta.GetName())
272 ODir.WriteTObject(truthPhi, truthPhi.GetName())
273# RPC
274 ODir.WriteTObject(rpclocalX, rpclocalX.GetName())
275 ODir.WriteTObject(rpclocalY, rpclocalY.GetName())
276 ODir.WriteTObject(rpcStationEta, rpcStationEta.GetName())
277 ODir.WriteTObject(rpcStationPhi, rpcStationPhi.GetName())
278 ODir.WriteTObject(rpcglobalX, rpcglobalX.GetName())
279 ODir.WriteTObject(rpcglobalY, rpcglobalY.GetName())
280 ODir.WriteTObject(rpcglobalZ, rpcglobalZ.GetName())
281 ODir.WriteTObject(rpcGasGap, rpcGasGap.GetName())
282 ODir.WriteTObject(rpcStrip, rpcStrip.GetName())
283 ODir.WriteTObject(rpcStripNumber, rpcStripNumber.GetName())
284 ODir.WriteTObject(rpcMeasuresPhi, rpcMeasuresPhi.GetName())
285 ODir.WriteTObject(rpcChannel, rpcChannel.GetName())
286 ODir.WriteTObject(rpcTime, rpcTime.GetName())
287 ODir.WriteTObject(rpcdoubletR, rpcdoubletR.GetName())
288 ODir.WriteTObject(rpcdoubletZ, rpcdoubletZ.GetName())
289 ODir.WriteTObject(rpcdoubletPhi, rpcdoubletPhi.GetName())
290 ODir.WriteTObject(rpcglobalXY, rpcglobalXY.GetName())
291 ODir.WriteTObject(rpcglobalZY, rpcglobalZY.GetName())
292 ODir.WriteTObject(rpcglobalZX, rpcglobalZX.GetName())
293# BIS RPC
294 ODir.WriteTObject(bis_rpclocalX, bis_rpclocalX.GetName())
295 ODir.WriteTObject(bis_rpclocalY, bis_rpclocalY.GetName())
296 ODir.WriteTObject(bis_rpcStationEta, bis_rpcStationEta.GetName())
297 ODir.WriteTObject(bis_rpcStationPhi, bis_rpcStationPhi.GetName())
298 ODir.WriteTObject(bis_rpcglobalX, bis_rpcglobalX.GetName())
299 ODir.WriteTObject(bis_rpcglobalY, bis_rpcglobalY.GetName())
300 ODir.WriteTObject(bis_rpcglobalZ, bis_rpcglobalZ.GetName())
301 ODir.WriteTObject(bis_rpcGasGap, bis_rpcGasGap.GetName())
302 ODir.WriteTObject(bis_rpcStrip, bis_rpcStrip.GetName())
303 ODir.WriteTObject(bis_rpcStripNumber, bis_rpcStripNumber.GetName())
304 ODir.WriteTObject(bis_rpcMeasuresPhi, bis_rpcMeasuresPhi.GetName())
305 ODir.WriteTObject(bis_rpcChannel, bis_rpcChannel.GetName())
306 ODir.WriteTObject(bis_rpcTime, bis_rpcTime.GetName())
307 ODir.WriteTObject(bis7_rpcTime, bis7_rpcTime.GetName())
308 ODir.WriteTObject(bis8_rpcTime, bis8_rpcTime.GetName())
309 ODir.WriteTObject(bis_rpcdoubletR, bis_rpcdoubletR.GetName())
310 ODir.WriteTObject(bis_rpcdoubletZ, bis_rpcdoubletZ.GetName())
311 ODir.WriteTObject(bis_rpcdoubletPhi, bis_rpcdoubletPhi.GetName())
312 ODir.WriteTObject(bis_rpcglobalXY, bis_rpcglobalXY.GetName())
313 ODir.WriteTObject(bis_rpcglobalZY, bis_rpcglobalZY.GetName())
314 ODir.WriteTObject(bis_rpcglobalZX, bis_rpcglobalZX.GetName())
315# MDT
316 ODir.WriteTObject(mdtlocalTubePosX, mdtlocalTubePosX.GetName())
317 ODir.WriteTObject(mdtlocalTubePosY, mdtlocalTubePosY.GetName())
318 ODir.WriteTObject(mdtlocalTubePosZ, mdtlocalTubePosZ.GetName())
319 ODir.WriteTObject(mdtStationEta, mdtStationEta.GetName())
320 ODir.WriteTObject(mdtStationPhi, mdtStationPhi.GetName())
321 ODir.WriteTObject(mdtglobalX, mdtglobalX.GetName())
322 ODir.WriteTObject(mdtglobalY, mdtglobalY.GetName())
323 ODir.WriteTObject(mdtglobalZ, mdtglobalZ.GetName())
324 ODir.WriteTObject(mdtNumberOfMultilayers, mdtNumberOfMultilayers.GetName())
325 ODir.WriteTObject(mdtTube, mdtTube.GetName())
326 ODir.WriteTObject(mdtTubeLayer, mdtTubeLayer.GetName())
327 ODir.WriteTObject(mdtMultilayer, mdtMultilayer.GetName())
328 ODir.WriteTObject(mdtTime, mdtTime.GetName())
329 ODir.WriteTObject(mdtCharge, mdtCharge.GetName())
330 ODir.WriteTObject(mdtChannel, mdtChannel.GetName())
331 ODir.WriteTObject(mdtglobalXY, mdtglobalXY.GetName())
332 ODir.WriteTObject(mdtglobalZY, mdtglobalZY.GetName())
333 ODir.WriteTObject(mdtglobalZX, mdtglobalZX.GetName())
334# BIS MDT
335 ODir.WriteTObject(bis_mdtlocalTubePosX, bis_mdtlocalTubePosX.GetName())
336 ODir.WriteTObject(bis_mdtlocalTubePosY, bis_mdtlocalTubePosY.GetName())
337 ODir.WriteTObject(bis_mdtlocalTubePosZ, bis_mdtlocalTubePosZ.GetName())
338 ODir.WriteTObject(bis_mdtStationEta, bis_mdtStationEta.GetName())
339 ODir.WriteTObject(bis_mdtStationPhi, bis_mdtStationPhi.GetName())
340 ODir.WriteTObject(bis_mdtglobalX, bis_mdtglobalX.GetName())
341 ODir.WriteTObject(bis_mdtglobalY, bis_mdtglobalY.GetName())
342 ODir.WriteTObject(bis_mdtglobalZ, bis_mdtglobalZ.GetName())
343 ODir.WriteTObject(bis_mdtNumberOfMultilayers, bis_mdtNumberOfMultilayers.GetName())
344 ODir.WriteTObject(bis_mdtTube, bis_mdtTube.GetName())
345 ODir.WriteTObject(bis_mdtTubeLayer, bis_mdtTubeLayer.GetName())
346 ODir.WriteTObject(bis_mdtMultilayer, bis_mdtMultilayer.GetName())
347 ODir.WriteTObject(bis_mdtTime, bis_mdtTime.GetName())
348 ODir.WriteTObject(bis_mdtCharge, bis_mdtCharge.GetName())
349 ODir.WriteTObject(bis_mdtChannel, bis_mdtChannel.GetName())
350 ODir.WriteTObject(bis_mdtglobalXY, bis_mdtglobalXY.GetName())
351 ODir.WriteTObject(bis_mdtglobalZY, bis_mdtglobalZY.GetName())
352 ODir.WriteTObject(bis_mdtglobalZX, bis_mdtglobalZX.GetName())
353 ODir.WriteTObject(bis_mdtlocalTubePosXY, bis_mdtlocalTubePosXY.GetName())
354 ODir.WriteTObject(bis_mdtlocalTubePosZY, bis_mdtlocalTubePosZY.GetName())
355 ODir.WriteTObject(bis_mdtlocalTubePosZX, bis_mdtlocalTubePosZX.GetName())
356
357 print ('INFO: Written histograms to file %s'%(Options.outputFile))