import sys,os sys.path.append('/home/mberger/fopiroot/fopiroot_dev/macro/tpc/FOPI/mberger') pandapath=os.environ.get('PANDAPATH') sys.path.append(pandapath+'/macro/tpc/FOPI/python/argparse-1.2.1') import glob,math,argparse from functions import Divideh,set_palette,setRange,getColors,getColors2 from anaFile import anaFile import ROOT parser=argparse.ArgumentParser(description='plot chi2cdf for a list of files or a single file') parser.add_argument('files',help='the files or a file list',type=str,nargs='+') parser.add_argument('--list',help='files are in a file list',action='store_true') parser.add_argument('--titles',help='the titles if not read from filelist',type=str,nargs='+',default=['None']) parser.add_argument('--pfile',help='the file to save the canvases',type=str,default='None') args=parser.parse_args() if args.list: listfile=open(args.files[0],'r') files=[] titles=[] for line in listfile: if line[0]=='#' or line[0]=='\n': continue words=line.split(';') files.append(str(words[0])) titles.append(str(words[1])) listfile.close() else: files=args.files titles=[] if args.titles[0]=='None': for i in range(len(files)): titles.append(str(i)) else: titles=args.titles canv1=ROOT.TCanvas('cdf','cdf',1500,1000) canv1.SetLogy() if args.pfile!='None': canv1.SaveAs(args.pfile+'[') if len(files)<10: colors=getColors2() else: colors=getColors() cdfhists=[] fcounter=-1 for f in files: fcounter+=1 print f rfile=ROOT.TFile.Open(f,'read') cdfhists.append(rfile.FindObjectAny('hchi2cdf')) canv1.cd() cdfhists[-1].SetLineColor(colors[fcounter]) cdfhists[-1].SetTitle(titles[fcounter]) cdfhists[-1].Draw() canv1.Update() if args.pfile!='None': canv1.SaveAs(args.pfile) canv2=ROOT.TCanvas('allcdf','allcdf',1500,1000) canv2.Divide(2,1) canv2.cd(1).SetPad(0,0,0.8,1) canv2.cd(2).SetPad(0.8,0,1,1) canv2.cd(1) canv2.cd(1).SetLogy() leg=ROOT.TLegend(0,0,1,1) leg.SetFillColor(0) leg.SetTextSize(0.1) hcounter=-1 opt='' legp=[] maxim=0 for h in cdfhists: hcounter+=1 h.SetStats(0) legp.append(ROOT.TPolyMarker()) legp[-1].SetMarkerStyle(20) legp[-1].SetMarkerSize(3) legp[-1].SetMarkerColor(h.GetLineColor()) leg.AddEntry(legp[-1],titles[hcounter]) h.Draw(opt) maxim=max(maxim,h.GetMaximum()) opt='same' print maxim,h.GetMaximum() cdfhists[0].GetYaxis().SetRangeUser(0.1,maxim*5) canv2.cd(2) leg.Draw() canv2.Update() if args.pfile!='None': canv2.SaveAs(args.pfile+')') u=raw_input('done?')