ATLAS Offline Software
createDCubeDigitHistograms.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2021 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 
5 import os, sys, ROOT, argparse
6 
7 if __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("NSWValTree")
27  if not inputTree:
28  print ('ERROR: NSWValTree does not exist in file %s'%Options.inputFile)
29  sys.exit(1)
30 
31  nEntries = inputTree.GetEntries()
32  if nEntries==0:
33  print ('ERROR: NSWValTree 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))
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195