def main(argv): print argv f = RootFile(fn=argv[1], hn=argv[2]) f.fillUpAllVariables() f.fileObj.Print() f.writePlanesToPngFiles() title="title..." h2_sum_x = ROOT.TH2D("h2_sum_x","Cumulative yz-projection",f.binN.y,f.minL.y,f.maxL.y,f.binN.z,f.minL.z,f.maxL.z) h2_sum_y = ROOT.TH2D("h2_sum_y","Cumulative xz-projection",f.binN.x,f.minL.x,f.maxL.x,f.binN.z,f.minL.z,f.maxL.z) h2_sum_z = ROOT.TH2D("h2_sum_z","Cumulative xy-projection",f.binN.x,f.minL.x,f.maxL.x,f.binN.y,f.minL.y,f.maxL.y) dose_max=f.histObj.Project3D("xy").GetBinContent(f.histObj.Project3D("xy").GetMaximumBin()) c1=ROOT.TCanvas("c1", title ,2000,2000) c1.Divide(3,2) c1.cd(1) hist2Dxy=f.histObj.Project3D("yz") h2_sum_x.Add(hist2Dxy,1.); h2_sum_x.Smooth() # h2_sum_x.Smooth() # h2_sum_x.Smooth() h2_sum_x.SetTitle(title+"dose deposition yz projection") h2_sum_x.DrawCopy("colz") h2_sum_x.SetContour(10) h2_sum_x.GetXaxis().SetTitle("Distance in mm") h2_sum_x.Draw("cont3 same") xmin = h2_sum_x.GetXaxis().GetXmin() xmax = h2_sum_x.GetXaxis().GetXmax() line_x=ROOT.TLine(xmin,0,xmax,0) line_x.SetLineColor(ROOT.kRed) line_x.Draw() c1.cd(2) hist2Dxz=f.histObj.Project3D("xz") h2_sum_y.Add(hist2Dxz,1.); h2_sum_y.Smooth() # h2_sum_x.Smooth() # h2_sum_x.Smooth() h2_sum_y.SetTitle(title+"dose deposition xz projection") h2_sum_y.DrawCopy("colz") h2_sum_y.SetContour(10) h2_sum_y.GetXaxis().SetTitle("Distance in mm") h2_sum_y.Draw("cont3 same") xmin = h2_sum_y.GetXaxis().GetXmin() xmax = h2_sum_y.GetXaxis().GetXmax() line_x=ROOT.TLine(xmin,0,xmax,0) line_x.SetLineColor(ROOT.kRed) line_x.Draw() c1.cd(3) hist2Dxy=f.histObj.Project3D("xy") h2_sum_z.Add(hist2Dxy,1.); h2_sum_z.Smooth() # h2_sum_z.Smooth() # h2_sum_z.Smooth() h2_sum_z.SetTitle(title+ "dose deposition xy projection") h2_sum_z.DrawCopy("colz") h2_sum_z.SetContour(10) h2_sum_z.GetXaxis().SetTitle("Distance in mm") h2_sum_z.Draw("cont3 same") zmin = h2_sum_z.GetXaxis().GetXmin() zmax = h2_sum_z.GetXaxis().GetXmax() line_z=ROOT.TLine(zmin,0,zmax,0) line_z.SetLineColor(ROOT.kViolet) line_z.Draw() c1.cd(4) projX=h2_sum_x.ProjectionX("Profile x-axis",f.binN.x/2,f.binN.x/2) projX.SetTitle("Profile x-axis; Position [u.u]; Intensity [u.u]") projX.GetXaxis().SetTitle("Distance in mm") projX.SetLineColor(ROOT.kRed) projX.Draw() maxiX=projX.GetMaximum() print "maxiX=",maxiX c1.cd(5) projY=h2_sum_y.ProjectionX("Profile y-axis",f.binN.y/2,f.binN.y/2) projY.SetTitle("Profile y-axis; Position [u.u]; Intensity [u.u]") projY.GetXaxis().SetTitle("Distance in mm") projY.SetLineColor(ROOT.kRed) projY.Draw() maxiY=projY.GetMaximum() print "maxiX=",maxiX c1.cd(6) projZ=h2_sum_z.ProjectionX("Profile z-axis",f.binN.z/2,f.binN.z/2)#.Clone("projX") projZ.SetTitle("Profile z-axis; Position [u.u]; Intensity [u.u]") projZ.GetXaxis().SetTitle("Distance in mm") projZ.SetLineColor(ROOT.kViolet) projZ.Draw() maxiZ=projZ.GetMaximum() print "maxiZ=",maxiZ c1.Print("doseline.png")
def main(argv): currentDir=getcwd().split("/")[-1] inputfile = 'Dosimetry_detector_complete1_tot.root' outputfile = 'voigt.png' function=voigt fname="voigt" myFitFunc=r.TF1("voigt",function,0,120, 4) try: opts, args = getopt.getopt(argv[1:],"hi:o:f:",["ifile=","ofile=","function="]) except getopt.GetoptError: print argv[0],'-i <inputfile> -o <outputfile> -f <function>' sys.exit(2) for opt, arg in opts: if opt == '-h': print argv[0],'-i <inputfile> -o <outputfile> -f <function>' sys.exit() elif opt in ("-i", "--ifile"): inputfile = arg elif opt in ("-o", "--ofile"): outputfile = arg elif opt in ("-f", "--function"): if arg == "voigt": function = voigt fname="voigt" myFitFunc=r.TF1("voigt",function,0,120, 4) myFitFunc.SetParName(0, "norm") myFitFunc.SetParName(1, "sigma") myFitFunc.SetParName(2, "lg") myFitFunc.SetParName(3, "max") elif arg == "tripleGaussian": function = tripleGaussian fname="tripleGaussian" myFitFunc=r.TF1("tripleGaussian",function,0,120, 9) myFitFunc.SetParName(0, "norm") myFitFunc.SetParName(1, "mu1") myFitFunc.SetParName(2, "sigma1") myFitFunc.SetParName(3, "mu2") myFitFunc.SetParName(4, "sigma2") myFitFunc.SetParName(5, "mu3") myFitFunc.SetParName(6, "sigma3") myFitFunc.SetParName(7, "frac1") myFitFunc.SetParName(8, "frac2") else: print "you can choose from voigt,tripleGaussian" print 'Input file is "', inputfile print 'Output file is "', outputfile print 'Function is "', fname print "working dir is ", getcwd().split("/")[-1] f = RootFile(fn=inputfile, hn="edepXYZ_Tot") f.loadFile() f.loadHist() f.histObj.Rebin3D(2,2,2) f.getNbinsXYZ() f.getMinXYZ() f.getMaxXYZ() f.initTH2DforXYPlane() f.getXYPlane() f.initTH2DforYZPlane() f.getYZPlane() f.initTH1DforEachAxis() f.getTH1DforEachAxis() f.fileObj.Print() f.writePlanesToPngFiles() print "f.binN.x:",f.binN.x,"f.binN.y:",f.binN.y,"f.binN.z:",f.binN.z # pdb.set_trace() # r.gStyle.SetEndErrorSize(3) r.gStyle.SetErrorX(0.) c1=r.TCanvas("c1", "", 1000,1000) c1.Divide(1,3) c1.cd(1) if function==tripleGaussian: myFitFunc.SetParameters(1500, 5, .5, 6, 1.5, 5, 5, .4, .3) elif function==voigt: maxbin=f.rootValX.GetMaximumBin() print "maxbin:", maxbin,"maxbincontent:",f.rootValX.GetBinContent(maxbin) myFitFunc.SetParameters(f.rootValX.GetBinContent(maxbin), 5, .5, maxbin) f.rootValX.Fit(fname, "I") f.rootValX.SetMarkerStyle(20) f.rootValX.Draw("E1") printInfo(myFitFunc, "x") c1.cd(2) if function==tripleGaussian: myFitFunc.SetParameters(150, 5, .5, 6, 1.5, 5, 5, .4, .3) elif function==voigt: maxbin=f.rootValY.GetMaximumBin() print "maxbin:", maxbin,"maxbincontent:",f.rootValY.GetBinContent(maxbin) myFitFunc.SetParameters(f.rootValY.GetBinContent(maxbin), 5, .5, maxbin) f.rootValY.Fit(fname, "I") f.rootValY.SetMarkerStyle(20) f.rootValY.Draw("E1") printInfo(myFitFunc,"y") c1.cd(3) if function==tripleGaussian: myFitFunc.SetParameters(1500, 5, .5, 6, 1.5, 5, 5, .4, .3) elif function==voigt: maxbin=f.rootValZ.GetMaximumBin() print "maxbin:", maxbin,"maxbincontent:",f.rootValZ.GetBinContent(maxbin) myFitFunc.SetParameters(f.rootValZ.GetBinContent(maxbin), 5, .5, maxbin) f.rootValZ.Fit(fname,"I") f.rootValZ.SetMarkerStyle(20) f.rootValZ.Draw("E1") printInfo(myFitFunc,"z") c1.Print(outputfile)
def main(argv): print argv f = RootFile(fn=argv[1], hn=argv[2]) f.fillUpAllVariables() f.fileObj.Print() f.writePlanesToPngFiles() title = "title..." h2_sum_x = ROOT.TH2D("h2_sum_x", "Cumulative yz-projection", f.binN.y, f.minL.y, f.maxL.y, f.binN.z, f.minL.z, f.maxL.z) h2_sum_y = ROOT.TH2D("h2_sum_y", "Cumulative xz-projection", f.binN.x, f.minL.x, f.maxL.x, f.binN.z, f.minL.z, f.maxL.z) h2_sum_z = ROOT.TH2D("h2_sum_z", "Cumulative xy-projection", f.binN.x, f.minL.x, f.maxL.x, f.binN.y, f.minL.y, f.maxL.y) dose_max = f.histObj.Project3D("xy").GetBinContent( f.histObj.Project3D("xy").GetMaximumBin()) c1 = ROOT.TCanvas("c1", title, 2000, 2000) c1.Divide(3, 2) c1.cd(1) hist2Dxy = f.histObj.Project3D("yz") h2_sum_x.Add(hist2Dxy, 1.) h2_sum_x.Smooth() # h2_sum_x.Smooth() # h2_sum_x.Smooth() h2_sum_x.SetTitle(title + "dose deposition yz projection") h2_sum_x.DrawCopy("colz") h2_sum_x.SetContour(10) h2_sum_x.GetXaxis().SetTitle("Distance in mm") h2_sum_x.Draw("cont3 same") xmin = h2_sum_x.GetXaxis().GetXmin() xmax = h2_sum_x.GetXaxis().GetXmax() line_x = ROOT.TLine(xmin, 0, xmax, 0) line_x.SetLineColor(ROOT.kRed) line_x.Draw() c1.cd(2) hist2Dxz = f.histObj.Project3D("xz") h2_sum_y.Add(hist2Dxz, 1.) h2_sum_y.Smooth() # h2_sum_x.Smooth() # h2_sum_x.Smooth() h2_sum_y.SetTitle(title + "dose deposition xz projection") h2_sum_y.DrawCopy("colz") h2_sum_y.SetContour(10) h2_sum_y.GetXaxis().SetTitle("Distance in mm") h2_sum_y.Draw("cont3 same") xmin = h2_sum_y.GetXaxis().GetXmin() xmax = h2_sum_y.GetXaxis().GetXmax() line_x = ROOT.TLine(xmin, 0, xmax, 0) line_x.SetLineColor(ROOT.kRed) line_x.Draw() c1.cd(3) hist2Dxy = f.histObj.Project3D("xy") h2_sum_z.Add(hist2Dxy, 1.) h2_sum_z.Smooth() # h2_sum_z.Smooth() # h2_sum_z.Smooth() h2_sum_z.SetTitle(title + "dose deposition xy projection") h2_sum_z.DrawCopy("colz") h2_sum_z.SetContour(10) h2_sum_z.GetXaxis().SetTitle("Distance in mm") h2_sum_z.Draw("cont3 same") zmin = h2_sum_z.GetXaxis().GetXmin() zmax = h2_sum_z.GetXaxis().GetXmax() line_z = ROOT.TLine(zmin, 0, zmax, 0) line_z.SetLineColor(ROOT.kViolet) line_z.Draw() c1.cd(4) projX = h2_sum_x.ProjectionX("Profile x-axis", f.binN.x / 2, f.binN.x / 2) projX.SetTitle("Profile x-axis; Position [u.u]; Intensity [u.u]") projX.GetXaxis().SetTitle("Distance in mm") projX.SetLineColor(ROOT.kRed) projX.Draw() maxiX = projX.GetMaximum() print "maxiX=", maxiX c1.cd(5) projY = h2_sum_y.ProjectionX("Profile y-axis", f.binN.y / 2, f.binN.y / 2) projY.SetTitle("Profile y-axis; Position [u.u]; Intensity [u.u]") projY.GetXaxis().SetTitle("Distance in mm") projY.SetLineColor(ROOT.kRed) projY.Draw() maxiY = projY.GetMaximum() print "maxiX=", maxiX c1.cd(6) projZ = h2_sum_z.ProjectionX("Profile z-axis", f.binN.z / 2, f.binN.z / 2) #.Clone("projX") projZ.SetTitle("Profile z-axis; Position [u.u]; Intensity [u.u]") projZ.GetXaxis().SetTitle("Distance in mm") projZ.SetLineColor(ROOT.kViolet) projZ.Draw() maxiZ = projZ.GetMaximum() print "maxiZ=", maxiZ c1.Print("doseline.png")