import ROOT, glob, math, sys, os pandapath=os.environ.get('PANDAPATH') sys.path.append(pandapath+'/macro/tpc/FOPI/python/argparse-1.2.1') import argparse from ROOT import std from array import array parser=argparse.ArgumentParser(description="compare two deviation maps") parser.add_argument("devmap1",help='the first devmap',type=str) parser.add_argument("devmap2",help='the second devmap',type=str) parser.add_argument("parfile1",help="the parameter file for devmap1",type=str) parser.add_argument("parfile2",help="the parameter file for devmap2",type=str) args=parser.parse_args() ROOT.gROOT.ProcessLine(".x rootlogon.C") for line in open(args.parfile1): if line.find("ManDriftVel")!=-1: vd1=float(line.split(":")[1].replace("Double_t","")) for line in open(args.parfile2): if line.find("ManDriftVel")!=-1: vd2=float(line.split(":")[1].replace("Double_t","")) print vd1,vd2 fdevMap1=ROOT.TpcDevmapCylWrapper(args.devmap1,float(vd2),False) fdevMap2=ROOT.TpcDevmapCylWrapper(args.devmap2,float(vd2),False) nRbin=fdevMap1.getLengthR() nZbin=fdevMap1.getLengthZ() rmax = fdevMap1.getRMax() rmin = fdevMap1.getRMin() zmax = fdevMap1.getZMax() zmin = fdevMap1.getZMin() rwidth = fdevMap1.getRWidth() zwidth = fdevMap1.getZWidth() diffhistsZ=[] diffhistsZ.append(ROOT.TH2D("hdiffX_Z","DiffX_Z",72,0,72,100,-0.02,0.02)) diffhistsZ.append(ROOT.TH2D("hdiffY_Z","DiffY_Z",72,0,72,100,-0.02,0.02)) diffhistsZ.append(ROOT.TH2D("hdiffZ_Z","DiffZ_Z",72,0,72,100,-0.02,0.02)) devdiffmap=[] devdiffmap.append(ROOT.TH2D("hdevdiffR","DevDiffR",72,0,72,10,5,15)) devdiffmap.append(ROOT.TH2D("hdevdiffP","DevDiffP",72,0,72,10,5,15)) devdiffmap.append(ROOT.TH2D("hdevdiffZ","DevDiffZ",72,0,72,10,5,15)) corrfac1=vd2/vd1 for nr in range(nRbin): for nz in range(nZbin): zpos=(nz+0.5)*zwidth+zmin rpos=(nr+0.5)*rwidth+rmin point=ROOT.TVector3(rpos,0.,zpos) value1=fdevMap1.value(point) value2=fdevMap2.value(point) diffhistsZ[0].Fill(zpos,(value1.X()*corrfac1)-value2.X()) diffhistsZ[1].Fill(zpos,(value1.Y()*corrfac1)-value2.Y()) diffhistsZ[2].Fill(zpos,(value1.Z()*corrfac1)-value2.Z()) devdiffmap[0].SetBinContent(nz+1,nr+1,(value1.X()*corrfac1)-value2.X()) devdiffmap[1].SetBinContent(nz+1,nr+1,(value1.Y()*corrfac1)-value2.Y()) devdiffmap[2].SetBinContent(nz+1,nr+1,(value1.Z()*corrfac1)-value2.Z()) canvZ=ROOT.TCanvas("c1","Z",500,1000) canvZ.Divide(1,3) for i in range(3): canvZ.cd(i+1) diffhistsZ[i].SetStats(0) diffhistsZ[i].Draw("colz") canvdiff=ROOT.TCanvas("c2","diff",500,1000) canvdiff.Divide(1,3) for i in range(3): canvdiff.cd(i+1) devdiffmap[i].SetStats(0) devdiffmap[i].Draw("colz") u=raw_input("done?")