5 ROOT.gStyle.SetOptStat(0)
10 print(
"Usage: %s <name of root ntuple>" % sys.argv[0])
13 f = ROOT.TFile.Open(sys.argv[1])
18 calChannel =
"ch % 8 == 0"
19 signalChannel =
"ch % 8 != 0"
22 nTRDHist = ROOT.TH1D(
"nTRDHist",
"all channels;number of TOPRawDigits;waveforms", 1000, 0, 30)
23 t.Draw(
"nTOPRawDigits>>nTRDHist")
24 c.SaveAs(
"nTOPRawDigits_All.pdf")
26 c.SaveAs(
"nTOPRawDigits_All_logy.pdf")
31 t.Draw(
"nTOPRawDigits>>nTRDHist", calChannel)
32 c.SaveAs(
"nTOPRawDigits_cal.pdf")
34 c.SaveAs(
"nTOPRawDigits_cal_logy.pdf")
39 t.Draw(
"nTOPRawDigits>>nTRDHist", signalChannel)
40 c.SaveAs(
"nTOPRawDigits_sig.pdf")
42 c.SaveAs(
"nTOPRawDigits_sig_logy.pdf")
46 t.Draw(
"fePeakHt:fePeak1Ht", calChannel,
"hist")
47 c.SaveAs(
"fePeakHt_vs_fePeak1Ht_cal.pdf")
50 wd_adcHist = ROOT.TH2D(
"wd_adcHist",
"Width vs Pulse height;width;height", 130, 0, 130, 1100, 50, 1150)
51 t.Draw(
"fePeakHt:fePeakWd>>wd_adcHist",
"",
"colz")
52 c.SaveAs(
"fePeakWd_vs_fePeakHt.pdf")
56 wd_adcHist.SetTitle(
"Width vs Pulse height in the calibration channel;width;height")
57 t.Draw(
"fePeakHt:fePeakWd>>wd_adcHist", calChannel,
"colz")
58 c.SaveAs(
"fePeakWd_vs_fePeakHt_cal.pdf")
62 wd_adcHist.SetTitle(
"Width vs Pulse height in the signal channel;width;height")
63 t.Draw(
"fePeakHt:fePeakWd>>wd_adcHist", signalChannel,
"colz")
64 c.SaveAs(
"fePeakWd_vs_fePeakHt_sig.pdf")
68 wd_tdcHist = ROOT.TH2D(
"wd_tdcHist",
"Width vs TDC;TDC;width", 256, 1, 257, 130, 0, 130)
69 t.Draw(
"fePeakWd:fePeakTDC>>wd_tdcHist",
"",
"colz")
70 c.SaveAs(
"fePeakWd_vs_TDC.pdf")
73 ht_tdcHist = ROOT.TH2D(
"ht_tdcHist",
"Height vs TDC;TDC;height", 256, 1, 257, 1100, 50, 1150)
74 t.Draw(
"fePeakHt:fePeakTDC>>ht_tdcHist",
"",
"colz")
75 c.SaveAs(
"fePeakHt_vs_TDC.pdf")
79 ch_tdcHist = ROOT.TH2D(
"ch_tdcHist",
"Channel vs TDC;TDC;channel number", 256, 1, 257, 512, 0, 512)
80 t.Draw(
"ch:fePeakTDC>>ch_tdcHist",
"",
"colz")
82 c.SaveAs(
"fePeakTDC_vs_ch.pdf")
85 adcHist = ROOT.TH1D(
"adcHist",
"ADC counts;ADC", 1000, 0, 1000)
86 adcHist.SetLineWidth(2)
87 adcHist.SetLineColor(4)
88 t.Draw(
"fePeakHt>>adcHist", calChannel)
89 adcHist.SetTitle(
"ADC counts in the calibration channel")
90 c.SaveAs(
"ADC_distribution_peak0_cal.pdf")
94 adcHist.SetLineWidth(2)
95 adcHist.SetLineColor(4)
96 t.Draw(
"fePeakHt>>adcHist", signalChannel)
97 adcHist.SetTitle(
"ADC counts in the signal channels")
98 c.SaveAs(
"ADC_distribution_peak0_sig.pdf")
101 tdcHist = ROOT.TH1D(
"tdcHist",
"tdcHist;TDC;waveforms", 256, 1, 257)
102 tdcHist.SetLineWidth(2)
103 tdcHist.SetLineColor(4)
104 t.Draw(
"fePeakTDC>>tdcHist", calChannel)
105 tdcHist.SetTitle(
"TDC distribution calibration channel")
106 c.SaveAs(
"TDC_distribution_peak0_cal.pdf")
110 tdcHist.SetLineWidth(2)
111 tdcHist.SetLineColor(4)
112 t.Draw(
"fePeakTDC>>tdcHist", signalChannel)
113 tdcHist.SetTitle(
"TDC distribution signal channels")
114 c.SaveAs(
"TDC_distribution_peak0_signal.pdf")
118 tdcHist.SetLineWidth(2)
119 tdcHist.SetLineColor(4)
120 t.Draw(
"fePeak1TDC>>tdcHist", calChannel +
"&& nTOPRawDigits > 2")
121 tdcHist.SetTitle(
"TDC distribution 2nd peak calibration channel")
123 c.SaveAs(
"fePeak1TDC_calChannel.pdf")
128 tdcHist.SetLineWidth(2)
129 tdcHist.SetLineColor(4)
130 t.Draw(
"fePeak1TDC>>tdcHist", signalChannel +
"&& nTOPRawDigits > 1")
131 tdcHist.SetTitle(
"TDC distribution 2nd peak signal channel")
133 c.SaveAs(
"fePeak1TDC_signalChannel.pdf")
142 h0 = ROOT.TH1D(
"feh0",
"all Channels", 1000, 50, 1050)
143 t.Draw(
"fePeakHt>>feh0")
144 for iCanv
in range(1, 9):
146 h = ROOT.TH1D(
"feh%d" % iCanv,
"channel %d;ADC;waveforms" % iCanv, 1000, 50, 1050)
147 t.Draw(
"fePeakHt>>feh%d" % iCanv,
"ch %% 8 == %d" % (iCanv - 1))
149 c.SaveAs(
"fePeakHt_byChannel.pdf")
155 h0 = ROOT.TH1D(
"fe_asic0",
"all ASICs", 1000, 50, 1050)
156 t.Draw(
"fePeakHt>>fe_asic0")
157 for iASIC, iCanv
in enumerate([1, 3, 7, 9]):
159 h = ROOT.TH1D(
"fe_asic%d" % iCanv,
"ASIC %d;ADC;waveforms" % iASIC, 1000, 50, 1050)
160 t.Draw(
"fePeakHt>>fe_asic%d" % iCanv,
"(ch/8) %% 4 == %d" % (iASIC))
162 c.SaveAs(
"fePeakHt_byASIC.pdf")
168 h0 = ROOT.TH1D(
"fe_carrier0",
"all Carriers", 1000, 50, 1050)
169 t.Draw(
"fePeakHt>>fe_carrier0")
170 for iCarrier, iCanv
in enumerate([1, 3, 7, 9]):
172 h = ROOT.TH1D(
"fe_carrier%d" % iCanv,
"Carrier %d;ADC;waveforms" % iCarrier, 1000, 50, 1050)
173 t.Draw(
"fePeakHt>>fe_carrier%d" % iCanv,
"(ch/8/4) %% 4 == %d" % (iCarrier))
175 c.SaveAs(
"fePeakHt_byCarrier.pdf")
181 h0 = ROOT.TH1D(
"fe_boardstack0",
"all board stacks", 1000, 50, 1050)
182 t.Draw(
"fePeakHt>>fe_boardstack0")
183 for iBS, iCanv
in enumerate([1, 3, 7, 9]):
185 h = ROOT.TH1D(
"fe_boardstack%d" % iCanv,
"board stack %d;ADC;waveforms" % iBS, 1000, 50, 1050)
186 t.Draw(
"fePeakHt>>fe_boardstack%d" % iCanv,
"(ch/8/4/4) %% 4 == %d" % (iBS))
188 c.SaveAs(
"fePeakHt_byBoardStack.pdf")
191 total = t.GetEntries()
193 print(
"Fraction with width > 30: %.3f" % (1.0 * t.Draw(
"fePeakWd",
"fePeakWd>30",
"goff") / total))
194 print(
"Fraction with peaks at window borders: (average occupancy / bin = %.3f)" % (1. / 256))
195 print(
"\ttdc < 2 : %.3f" % (1.0 * t.Draw(
"fePeakWd",
"fePeakTDC<2",
"goff") / total))
196 print(
"\t63 < tdc < 66 : %.3f" % (1.0 * t.Draw(
"fePeakWd",
"fePeakTDC>63 && fePeakTDC<66",
"goff") / total))
197 print(
"\t127 < tdc < 130: %.3f" % (1.0 * t.Draw(
"fePeakWd",
"fePeakTDC>127 && fePeakTDC<130",
"goff") / total))
198 print(
"\t191 < tdc < 194: %.3f" % (1.0 * t.Draw(
"fePeakWd",
"fePeakTDC>191 && fePeakTDC<194",
"goff") / total))
199 print(
"\ttdc > 255 : %.3f" % (1.0 * t.Draw(
"fePeakWd",
"fePeakTDC>255",
"goff") / total))