import sys,copy sys.path.append('/home/mberger/fopiroot/fopiroot_dev/macro/tpc/FOPI/mberger') import ROOT,glob,math,argparse from anaFile import anaFile from functions import * parser=argparse.ArgumentParser(description="compare digiresiduals with theoretical values") parser.add_argument('infiles',help='inupt files. root files from calib_gemSpread.py',type=str,nargs='+') parser.add_argument('--titles',help='the titles to use',default='',type=str,nargs='+') args=parser.parse_args() ROOT.gROOT.ProcessLine(".x rootlogon.C") ROOT.gROOT.ProcessLine('gROOT->SetStyle("Plain")') set_palette() canvas=ROOT.TCanvas('canvas','Comparison',1000,1000) canvas.Divide(2,2) vargraphs=[] diffgraphs=[] fracgraphs=[] ifile=-1 thetas=[] anafiles=[] opt='AP' for f in args.infiles: ifile+=1 anafiles.append(anaFile(f)) vargraphs.append(anafiles[-1].getDigiStdDef()) setGraph(vargraphs[-1]['Digivariance'],'Standard Deviation',20,1,getColors()[ifile],'Z-Pos (cm)','Standard Deviation(cm)',1,1.2) setGraph(vargraphs[-1]['Digidiffusion'],'Theoretical Diffusion',24,1,getColors()[ifile],'Z-Pos (cm)','Diffusion (cm)',1,1.2) setGraph(vargraphs[-1]['DigivarDifFrac'],'Fraction',20,1,getColors()[ifile],'Z-Pos (cm)','Fraction',1,1.2) thetas.append(float(anafiles[-1].getInfos()['angle'])) leg=ROOT.TLegend(0,0,1,1) anglename='theta' dvmax,dvmin=getGraphYMaxMin([e['Digivariance'] for e in vargraphs]+[e['Digidiffusion'] for e in vargraphs]) vargraphs[0]['Digivariance'].GetYaxis().SetRangeUser(dvmin,dvmax) canvas.cd(1) opt='AP' fitfuncs=[] par0graph=ROOT.TGraphErrors() par1graph=ROOT.TGraphErrors() counter=-1 for g in [e['Digivariance'] for e in vargraphs]: counter+=1 if anafiles[counter].getInfos()['generator']=='const': anglename='phi' leg.AddEntry(g,'{0} {1}'.format(anglename,anafiles[counter].getInfos()['angle']),'p') g.Draw(opt) opt='P' for g in [e['Digidiffusion'] for e in vargraphs]: g.Draw(opt) opt='AP' canvas.cd(2) ig=-1 fracmax,fracmin=getGraphYMaxMin([e['DigivarDifFrac'] for e in vargraphs]) vargraphs[0]['DigivarDifFrac'].GetYaxis().SetRangeUser(fracmin,fracmax) for g in [e['DigivarDifFrac'] for e in vargraphs]: ig+=1 fitfuncs.append(ROOT.TF1('fitfunc','[0]+[1]*sqrt(x)',0,75)) g.Fit(fitfuncs[-1]) par0graph.SetPoint(ig,thetas[ig],fitfuncs[-1].GetParameter(0)) par0graph.SetPointError(ig,1,fitfuncs[-1].GetParError(0)) par1graph.SetPoint(ig,thetas[ig],fitfuncs[-1].GetParameter(1)) par1graph.SetPointError(ig,1,fitfuncs[-1].GetParError(1)) g.Draw(opt) opt='P' setGraph(par0graph,'Fit Parameter 0',20,1,1,'Theta','Value',1,1.2) setGraph(par1graph,'Fit Parameter 1',20,1,1,'Theta','Value',1,1.2) canvas.cd(3) par0graph.Draw('AP') canvas.cd(4) par1graph.Draw('AP') legcanv=ROOT.TCanvas('legend','legend',300,1000) leg.SetFillColor(0) leg.Draw() thisIsTheEnd()