7 from aux_functions
import *
14 print 'Checking', part, mod
16 filename =
'%stiletb_%d_MonoCis.%s%02d.0.aan.root' % (datadir, runnumber, part, mod)
18 partnames = [
'LBA',
'LBC',
'EBA',
'EBC']
19 partmap = {
'LBA':
'A',
'LBC':
'C',
'EBA':
'D',
'EBC':
'E'}
22 digi_histos = [ROOT.TH1F(
'',
'Run %d: %s%02d MB%02d' % (runnumber, part, mod, (digi/2)+1), 200, -25., 25.)
for digi
in range(8)]
27 for hist
in digi_histos:
31 outfile =
open(
'%s%d_bad_digi.txt' % (outdir, runnumber),
'a')
33 if os.path.exists(filename):
34 print 'Using', filename
35 file = ROOT.TFile.Open(filename)
36 if file
and not file.IsZombie():
37 tree = file.Get(
'h1000')
38 nevents = tree.GetEntries()
41 for ev
in range(1, nevents):
45 pha = tree.m_cispar[5]
46 dac = tree.m_cispar[6]
47 cap = tree.m_cispar[7]
48 tfit = getattr(tree,
'tfit%s%02d' % (partmap[part], mod))
50 if pha!=0
or dac!=120
or cap!=100:
60 digi_histos[7].Fill(pmt_tfit, 1.0)
62 digi_histos[6].Fill(pmt_tfit, 1.0)
66 digi_histos[5].Fill(pmt_tfit, 1.0)
68 digi_histos[4].Fill(pmt_tfit, 1.0)
72 digi_histos[3].Fill(pmt_tfit, 1.0)
74 digi_histos[2].Fill(pmt_tfit, 1.0)
78 digi_histos[1].Fill(pmt_tfit, 1.0)
80 digi_histos[0].Fill(pmt_tfit, 1.0)
84 pack = outdir +
'digi_%d_%s%02d.ps' % (runnumber, part, mod)
87 badcans =
'%s%d_bad_digi.ps' % (outdir, runnumber)
90 can.Print(
'%s[' % pack)
95 leg = ROOT.TLegend(0.8,0.8,0.95,1.0)
97 leg.AddEntry(digi_histos[digi],
'Digi %02d' % (digi+1),
'f')
98 if digi_histos[digi].GetMaximum()<digi_histos[digi+1].GetMaximum():
99 digi_histos[digi].SetMaximum(digi_histos[digi+1].GetMaximum()+1000)
100 digi_histos[digi].Draw()
106 digi_histos[digi].SetFillColor(ROOT.kRed)
107 leg.AddEntry(digi_histos[digi],
'Digi %02d' % (digi+1),
'f')
108 digi_histos[digi].Draw(
'same')
113 if abs(digi_histos[digi].
GetMean()-digi_histos[digi-1].
GetMean())>3:
114 outfile.write(
'%s %02d Digi %d-%d\n' % (part, mod, digi-1, digi))
115 can.Print(
'%s' % badcans)
120 can.Print(
'%s]' % pack)
128 hist.GetXaxis().CenterTitle()
129 hist.GetXaxis().CenterLabels(ROOT.kTRUE)
130 hist.GetXaxis().SetTitleOffset(1.2)
131 hist.GetXaxis().SetTitle(
't_{fit} [ns]')
134 hist.GetYaxis().CenterTitle()
135 hist.GetYaxis().SetTitleOffset(1.3)
138 hist.SetFillColor(ROOT.kGray)
145 ROOT.gROOT.SetStyle(
"Plain")
146 ROOT.gStyle.SetCanvasBorderMode(0)
147 ROOT.gStyle.SetPadBorderMode(0)
148 ROOT.gStyle.SetTitleX(0.12)
154 ROOT.gStyle.SetLabelFont(42,
"XYZ")
155 ROOT.gStyle.SetTextFont(42)
156 ROOT.gStyle.SetOptStat(111110)
157 ROOT.gStyle.SetOptStat(0)
158 ROOT.gStyle.SetPalette(1)
159 ROOT.gStyle.SetTitleFont(42,
"XYZ")
160 ROOT.gStyle.SetTitleBorderSize(0)
161 ROOT.gStyle.SetPadColor(0)
162 ROOT.gStyle.SetCanvasColor(0)
163 ROOT.gStyle.SetOptFit(0)
166 c1.SetFrameBorderMode(0)
180 datadir =
'/location/of/ntuples/'
181 outdir =
'/where/output/will/be/written/'
185 print "Please pass a run number."
188 runnumber =
int(sys.argv[1])
190 datadir = datadir +
str(runnumber) +
'/'
191 outdir = outdir +
str(runnumber) +
'/'
193 if not os.path.exists(outdir):
196 print 'Using data from', datadir
197 print 'Ouput will be sent to', outdir
201 if not os.path.exists(outdir):
204 ROOT.gROOT.SetBatch()
205 parts = [
'LBA',
'LBC',
'EBA',
'EBC']
208 badcans =
'%s%d_bad_digi.ps' % (outdir, runnumber)
209 can.Print(
'%s[' % badcans)
212 for module
in range(1,65):
213 badlist =
readModule(part, module, runnumber, datadir, outdir)
215 can.Print(
'%s]' % badcans)
218 if __name__ ==
'__main__':