10 def readModule(part, mod, runnumber, datadir, outdir):
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)