#def sort_signals(signal): import ROOT,argparse parser=argparse.ArgumentParser(description='plot frontent pulse and timing behavior') parser.add_argument('--hlp',help='show help',action='store_true') parser.add_argument('--tint',help='integration time',type=float,default=50) parser.add_argument('--tdiff',help='differentation time',type=float,default=100) parser.add_argument('--tsig',help='',type=float,default=2) parser.add_argument('--adcthres',help='',type=float,default=2) parser.add_argument('--adcmax',help='',type=float,default=100000) parser.add_argument('--adcbits',help='',type=float,default=11) parser.add_argument('--samplefreq',help='',type=float,default=15.55) parser.add_argument('--t0',help='',type=float,default=0) parser.add_argument('--timebits',help='',type=int,default=9) parser.add_argument('--psathres',help='',type=float,default=0) parser.add_argument('rawfile',help='the raw file',type=str) args=parser.parse_args() if args.hlp: parser.show_help() exit(0) ROOT.gROOT.ProcessLine(".x rootlogon.C") ROOT.gROOT.LoadMacro("stlPYROOT.h+") rfile=ROOT.TFile(args.rawfile,'read') tree=rfile.Get("cbmsim") frontend=ROOT.TpcFrontend(args.tint,args.tdiff,args.tsig, args.adcthres,args.adcmax,args.adcbits, args.samplefreq,args.t0,args.timebits, args.psathres) MCID=ROOT.McIdCollection() t2kPulse=ROOT.TpcT2KPulseshape(args.tdiff) crrcPulse=ROOT.TpcCRRCPulseshape(args.tdiff,args.tint,args.tsig) pulse=ROOT.TH1D("pulse","pulse",300,0,30000) pulse2=ROOT.TH1D("pulse2","pulse2",300,0,30000) fullpulse=ROOT.TH1D("fullpulse","fullpulse T2K",1000,0,1000) fullpulseCRRC=ROOT.TH1D("fullpulseCRRC","fullpulse CRRC",1000,0,1000) signal=ROOT.TH1D("signal","signal",300,0,30000) timething=ROOT.TH1D("timeatclock","Clock(Clock2Time(t))",512,0,512) signals={} #cs=ROOT.TCanvas() cp=ROOT.TCanvas("cp","cp",700,1000) cp.Divide(1,3) for i in range(1000): amp=t2kPulse(i,1000,0) fullpulse.Fill(i,amp) fullpulseCRRC.Fill(i,crrcPulse(i,1000,0)) ct=ROOT.TCanvas() fullpulse.SetStats(0) fullpulse.Draw() fullpulseCRRC.SetLineColor(2) fullpulseCRRC.Draw('same') legend1=ROOT.TLegend(0.8,0.8,0.9,0.9) legend1.AddEntry(fullpulse,"T2K",'l') legend1.AddEntry(fullpulseCRRC,"CRRC",'l') legend1.Draw() #u=raw_input("bla") for i in range(511): timething.Fill(frontend.Clock(frontend.Clock2Time(i))) ctt=ROOT.TCanvas() timething.Draw() u=raw_input("mm") for e in tree: t0Lines =[] t02Lines=[] for sig in e.TpcSignal: if signals.get(str(sig.padId()),None)==None: signals[str(sig.padId())]=[] signals[str(sig.padId())].append(sig) for pad in signals: padcounter=-1 sign=sorted(signals[pad],key=lambda TpcSignal: TpcSignal.t()) for sig in sign: padcounter+=1 if padcounter==0: t0=sig.t() t02=frontend.TimeAtClock(sig.t()) t00=sig.t() pamp=t2kPulse(t02,sig.amp(),sig.t()) pamp2=crrcPulse(t02,sig.amp(),sig.t()) t0Lines.append(ROOT.TLine(t0-t00,0,t0-t00,sig.amp())) t02Lines.append(ROOT.TLine(t02-t00,0,t02-t00,sig.amp())) print "amp=",sig.amp(),"padId=",sig.padId(),"t=",sig.t(),"t0=",t0,"t02=",t02,"dt=",t0-sig.t(),"pamp=", pamp signal.Fill(sig.t()-t00,sig.amp()) pulse.Fill(sig.t()-t00,pamp) pulse2.Fill(sig.t()-t00,pamp2) t0+=frontend.dt() t02+=frontend.dt() # cp.Clear() # cp.cd(1) # cp.GetPad(1).Clear() cp.cd(1) signal.Draw() for l in t0Lines: l.SetLineColor(2) # l.Draw("same") for l in t02Lines: l.SetLineColor(3) # l.Draw("same") cp.cd(2) pulse.Draw() cp.cd(3) pulse2.Draw() cp.Update() u=raw_input('next signal?') if u=='q': exit() signal.Reset() pulse.Reset() pulse2.Reset()