import ROOT,sys,argparse sys.path.append('$PANDAPATH/macro/tpc/FOPI/mberger') from functions import set_palette def setHist(hist,zmin=0,zmax=1.5): hist.GetXaxis().SetTitle("Theta") hist.GetYaxis().SetTitle("Z (cm)") hist.GetZaxis().SetRangeUser(zmin,zmax) hist.SetStats(0) parser=argparse.ArgumentParser(description='plot the scalefunc lookuptable') parser.add_argument('--lookupfile',help='the file with lookup info',type=str,default="./outfiles_e12/error_lookup.txt") parser.add_argument('--single_svg',help='path to where to store the svg files',default='NONE') parser.add_argument('--zscale0',help='scale for z axis, axis 0',type=float,nargs=2,default=[0.1,0.5]) parser.add_argument('--zscale1',help='scale for z axis, axis 1',type=float,nargs=2,default=[0.2,1.5]) args=parser.parse_args() ROOT.gROOT.ProcessLine(".x rootlogon.C") ROOT.gROOT.ProcessLine('gStyle->SetPalette(1)') ROOT.gROOT.ProcessLine('gROOT->SetStyle("Plain")') scaler=ROOT.TpcClusterErrorScaler.getInstance() scaler.init(args.lookupfile,56) set_palette() lookup=[] histcoll=[] lcounter=-1 for line in open(args.lookupfile): lcounter+=1 if lcounter==0: lookup_sizes=line.split() scalemap_original_0=ROOT.TH2D("scalemap_original_0", "scaling map from file (axis 0)", int(lookup_sizes[0]),0,int(lookup_sizes[0])*int(lookup_sizes[1]), int(lookup_sizes[2]),0,int(lookup_sizes[2])*int(lookup_sizes[3])) histcoll.append(scalemap_original_0) scalemap_original_1=ROOT.TH2D("scalemap_original_1", "scaling map from file (axis1)", int(lookup_sizes[0]),0,int(lookup_sizes[0])*int(lookup_sizes[1]), int(lookup_sizes[2]),0,int(lookup_sizes[2])*int(lookup_sizes[3])) histcoll.append(scalemap_original_1) for i in range(2): lookup.append([]) for th in range(int(lookup_sizes[0])): lookup[i].append([]) for z in range(int(lookup_sizes[2])): lookup[i][th].append([]) continue tmp=line.split() lookup[ int(tmp[0]) ][ int(tmp[1])/5 ][ int(float(tmp[2])) ].append(float(tmp[3])) if int(tmp[0])==0: scalemap_original_0.Fill(int(tmp[1]),int(float(tmp[2])),float(tmp[3])) elif int(tmp[0])==1: scalemap_original_1.Fill(int(tmp[1]),int(float(tmp[2])),float(tmp[3])) cmain=ROOT.TCanvas("cmain","main",2000,2000) cmain.Divide(3,2) cmain.cd(1) #c1=ROOT.TCanvas() setHist(scalemap_original_0,args.zscale0[0],args.zscale0[1]) scalemap_original_0.Draw("colz") #c2=ROOT.TCanvas() cmain.cd(4) setHist(scalemap_original_1,args.zscale1[0],args.zscale1[1]) scalemap_original_1.Draw("colz") resol=10 scalemap_interpol_0=ROOT.TH2D("scalemap_interpol_0", "scaling from interpolation (axis 0)", int(lookup_sizes[0])*resol,0,int(lookup_sizes[0])*int(lookup_sizes[1]), int(lookup_sizes[2])*resol,0,int(lookup_sizes[2])*int(lookup_sizes[3])) histcoll.append(scalemap_interpol_0) scalemap_interpol_1=ROOT.TH2D("scalemap_interpol_1", "scaling from interpolation (axis 1)", int(lookup_sizes[0])*resol,0,int(lookup_sizes[0])*int(lookup_sizes[1]), int(lookup_sizes[2])*resol,0,int(lookup_sizes[2])*int(lookup_sizes[3])) histcoll.append(scalemap_interpol_1) for theta in range(int(lookup_sizes[0])*resol): for z in range(int(lookup_sizes[2])*resol): scalemap_interpol_0.SetBinContent(theta+1,z+1, scaler.scaleFunc(float((z*int(lookup_sizes[3]))/resol) ,float((theta*int(lookup_sizes[1]))/resol),0)) scalemap_interpol_1.SetBinContent(theta+1,z+1, scaler.scaleFunc(float( (z*int(lookup_sizes[3]))/resol ) , float( (theta*int(lookup_sizes[1]))/resol),1)) #c3=ROOT.TCanvas() cmain.cd(2) setHist(scalemap_interpol_0,args.zscale0[0],args.zscale0[1]) scalemap_interpol_0.Draw("colz") #c4=ROOT.TCanvas() cmain.cd(5) setHist(scalemap_interpol_1,args.zscale1[0],args.zscale1[1]) scalemap_interpol_1.Draw("colz") scalemap_interpol2_0=ROOT.TH2D("scalemap_interpol2_0", "scaling from interpolation2 (axis 0)", int(lookup_sizes[0])*resol,0,int(lookup_sizes[0])*int(lookup_sizes[1]), int(lookup_sizes[2])*resol,0,int(lookup_sizes[2])*int(lookup_sizes[3])) histcoll.append(scalemap_interpol2_0) scalemap_interpol2_1=ROOT.TH2D("scalemap_interpol2_1", "scaling from interpolation2 (axis 1)", int(lookup_sizes[0])*resol,0,int(lookup_sizes[0])*int(lookup_sizes[1]), int(lookup_sizes[2])*resol,0,int(lookup_sizes[2])*int(lookup_sizes[3])) histcoll.append(scalemap_interpol2_1) for theta in range(int(lookup_sizes[0])*resol): for z in range(int(lookup_sizes[2])*resol): scalemap_interpol2_0.SetBinContent(theta+1,z+1, scaler.scaleFunc(float((z*int(lookup_sizes[3]))/resol) ,float((theta*int(lookup_sizes[1]))/resol),0,True)) scalemap_interpol2_1.SetBinContent(theta+1,z+1, scaler.scaleFunc(float( (z*int(lookup_sizes[3]))/resol ) , float( (theta*int(lookup_sizes[1]))/resol),1,True)) #c5=ROOT.TCanvas() cmain.cd(3) setHist(scalemap_interpol2_0,args.zscale0[0],args.zscale0[1]) scalemap_interpol2_0.Draw("colz") #c6=ROOT.TCanvas() cmain.cd(6) setHist(scalemap_interpol2_1,args.zscale1[0],args.zscale1[1]) scalemap_interpol2_1.Draw("colz") if args.single_svg!='NONE': tmpcanv=ROOT.TCanvas() for h in histcoll: h.Draw('colz') tmpcanv.SaveAs("{0}/{1}.svg".format(args.single_svg,h.GetName())) #c1.Update() #c2.Update() #c3.Update() #c4.Update() #c5.Update() #c6.Update() cmain.Update() u=raw_input("done?")