def setHist(h,xtit,ytit,col=1): h.SetStats(0) h.GetXaxis().SetTitle(xtit) h.GetYaxis().SetTitle(ytit) colors=getColors() # h.SetLineColor(colors[col]) h.SetLineColor(col) return import sys sys.path.append('/home/mberger/fopiroot/fopiroot_dev/macro/tpc/FOPI/mberger') import ROOT,glob,math,argparse from functions import Divideh,set_palette,setRange,createGraph,getColors from anaFile import anaFile parser=argparse.ArgumentParser(description="plots track related infos like cluster per cm, cluster per track ...") parser.add_argument('anafiles',help='the histo file',type=str,nargs="+") parser.add_argument('--titles',help='the titles for',type=str,default=[""],nargs="+") parser.add_argument('--pdir',help='plot the fucking fuckpictures to stupid folder',type=str,default='none') parser.add_argument('--list',help='the anafiles are given as a list',action='store_true') parser.add_argument('--hlp',help='display help',action='store_true') args=parser.parse_args() if args.hlp: parser.print_help() exit(0) ROOT.gROOT.ProcessLine(".x rootlogon.C") ROOT.gROOT.ProcessLine('gROOT->SetStyle("Plain")') set_palette() rfiles=[] dslices=[] cl_per_track_zbins=[] cl_per_track=[] clsize3D=[] clsize3DU=[] clsize2D=[] cl_per_cm=[] tracklen=[] digis_per_track=[] graphs=[] gmax=[] gmin=[] canv=[] maximum={} offset=7 for c in range(offset): canv.append(ROOT.TCanvas()) canv[-1].Divide(3,2) canv[0].SetTitle("Cluster per track Zbins") canv[1].SetTitle("3D Clustersize") canv[2].SetTitle("2D Clustersize") canv[3].SetTitle("Cluster per cm") canv[4].SetTitle("Tracklength") canv[5].SetTitle("3D Clustersize unshared") canv[6].SetTitle("Digis per track") canv.append(ROOT.TCanvas()) canv[-1].SetTitle("Cluster per track") offset+=1 legcanv=ROOT.TCanvas("clegend",'Legend',300,1000) canv.append(ROOT.TCanvas()) canv[-1].SetTitle("Cluster per track mean") canv.append(ROOT.TCanvas()) canv[-1].SetTitle("Clustersize 3D mean") canv.append(ROOT.TCanvas()) canv[-1].SetTitle("Clustersize 3D int") canv.append(ROOT.TCanvas()) canv[-1].SetTitle("Cluster per cm mean") canv.append(ROOT.TCanvas()) canv[-1].SetTitle("Clustersize 3D Unshared Int") if args.list: listfile=open(args.anafiles[0],'r') files=[] titles=[] for line in listfile: if line[0]=='#': continue words=line.split(';') files.append(str(words[0])) titles.append(str(words[1]).replace('\n','')) listfile.close() else: files=args.anafiles titles=args.titles #legend=ROOT.TLegend(0.65,0.9-len(files)*0.075,0.9,0.9) legend=ROOT.TLegend(0,0,1,1) legend.SetTextSize(0.1) legend.SetFillColor(0) fcounter=-1 for ifile in range(len(files)): fcounter+=1 rfiles.append(anaFile(files[ifile])) dslices.append(rfiles[-1].getDriftSlices()) cl_per_track_zbins.append(rfiles[-1].getSlicedHist("hclusterpertrack")) for i in range(len(cl_per_track_zbins[-1])): maximum['cl_per_track_zbins']=max(maximum.get('cl_per_track_zbins',0),cl_per_track_zbins[-1][i].GetMaximum()) cl_per_track.append(rfiles[-1].getHist('hclusterpertrack')) maximum['cl_per_track']=max(maximum.get('cl_per_track',0),cl_per_track[-1].GetMaximum()) clsize3D.append(rfiles[-1].getSlicedHist("clustersize3D")) clsize3DU.append(rfiles[-1].getSlicedHist("clustersize3DU")) clsize2D.append(rfiles[-1].getSlicedHist("clustersize2D")) cl_per_cm.append(rfiles[-1].getSlicedHist("hclusterpercm")) tracklen.append(rfiles[-1].getSlicedHist("htracklength")) digis_per_track.append(rfiles[-1].getSlicedHist("hdigipertrack")) graphs.append([]) if fcounter==0: gmax.append(0) gmin.append(1000000) graphs[-1].append(createGraph(cl_per_track_zbins[-1],dslices[-1],"mean",fcounter+1)) graphs[-1][-1].SetTitle("Cluster per track Mean") gmax[0]=max(gmax[0],graphs[-1][-1].GetMaximum()) gmin[0]=min(gmin[0],graphs[-1][-1].GetMinimum()) if fcounter==0: gmax.append(0) gmin.append(1000000) graphs[-1].append(createGraph(clsize3D[-1],dslices[-1],"mean",fcounter+1)) graphs[-1][-1].SetTitle("Mean 3D cluster size") gmax[1]=max(gmax[1],graphs[-1][-1].GetMaximum()) gmin[1]=min(gmin[1],graphs[-1][-1].GetMinimum()) if fcounter==0: gmax.append(0) gmin.append(1000000) graphs[-1].append(createGraph(clsize3D[-1],dslices[-1],"int2",fcounter+1)) graphs[-1][-1].SetTitle("3D cluster size Integral") gmax[2]=max(gmax[2],graphs[-1][-1].GetMaximum()) gmin[2]=min(gmin[2],graphs[-1][-1].GetMinimum()) if fcounter==0: gmax.append(0) gmin.append(1000000) graphs[-1].append(createGraph(cl_per_cm[-1],dslices[-1],"mean",fcounter+1)) graphs[-1][-1].SetTitle("Cluster per cm Mean") gmax[3]=max(gmax[3],graphs[-1][-1].GetMaximum()) gmin[3]=min(gmin[3],graphs[-1][-1].GetMinimum()) if fcounter==0: gmax.append(0) gmin.append(1000000) graphs[-1].append(createGraph(clsize3DU[-1],dslices[-1],"int2",fcounter+1)) graphs[-1][-1].SetTitle("Unshared clustersize Int") gmax[4]=max(gmax[3],graphs[-1][-1].GetMaximum()) gmin[4]=min(gmin[3],graphs[-1][-1].GetMinimum()) for fcounter in range(len(files)): if fcounter==0: opt="" gopt="AP" else: opt="same" gopt="P" if titles[0]!="": legend.AddEntry(cl_per_track_zbins[fcounter][0],titles[fcounter],"L") for i in range(len(dslices[fcounter])): canv[0].cd(i+1) setHist(cl_per_track_zbins[fcounter][i],"cluster per track zbins","counts",fcounter+1) cl_per_track_zbins[fcounter][i].SetMaximum(maximum['cl_per_track_zbins']*1.1) cl_per_track_zbins[fcounter][i].Draw(opt) #legend.Draw() canv[1].cd(i+1) setHist(clsize3D[fcounter][i],"3D Clsutersize","counts",fcounter+1) clsize3D[fcounter][i].GetXaxis().SetRangeUser(0,50) clsize3D[fcounter][i].Draw(opt) #legend.Draw() canv[2].cd(i+1) setHist(clsize2D[fcounter][i],"2D Clsutersize","counts",fcounter+1) clsize2D[fcounter][i].GetXaxis().SetRangeUser(0,50) clsize2D[fcounter][i].Draw(opt) #legend.Draw() canv[3].cd(i+1) setHist(cl_per_cm[fcounter][i],"Cluster per cm","counts",fcounter+1) cl_per_cm[fcounter][i].GetXaxis().SetRangeUser(0,5) cl_per_cm[fcounter][i].Draw(opt) #legend.Draw() canv[4].cd(i+1) setHist(tracklen[fcounter][i],"Tracklength","counts",fcounter+1) tracklen[fcounter][i].Draw(opt) #legend.Draw() canv[5].cd(i+1) setHist(clsize3DU[fcounter][i],"3D Clustersize Unshared","counts",fcounter+1) clsize3DU[fcounter][i].Draw(opt) #legend.Draw() canv[6].cd(i+1) setHist(digis_per_track[fcounter][i],"Digis per Track","counts",fcounter+1) digis_per_track[fcounter][i].Draw(opt) #legend.Draw() canv[7].cd() setHist(cl_per_track[fcounter],"Cluster Per Track","counts",fcounter+1) cl_per_track[fcounter].SetMaximum(maximum['cl_per_track']*1.1) cl_per_track[fcounter].Draw(opt) legcanv.cd() legend.Draw() #print graphs counter=-1 for g1 in graphs: counter+=1 cc=-1 for g2 in g1: cc+=1 canv[cc+offset].cd() if counter==0: gopt="AP" else: gopt="P" g2.GetYaxis().SetRangeUser(gmin[cc]*0.9,gmax[cc]*1.1) g2.Draw(gopt) #legend.Draw() for c in canv: c.Update() if args.pdir!='none': for c in canv: c.SaveAs((args.pdir+'/'+c.GetTitle()+".eps").replace(" ","_")) u=raw_input("done?")