def isobar_analysis_0pp(): """Does the 2D isobar analysis, based on 'print2DtoRoot', with all cuts, argands and what not""" root_name='isobar_analysis.root' outROOT=root_open('./ROOT/'+root_name,mode="RECREATE") isobar = 'f0_' jpcs = ['0-+','1++','2-+'] # jpcs = ['0-+'] M='0' iso_slices = { # do not use bin borders in definitions, a bin will be used, if any part of the defined interval overlaps with the bin #hence the *.**1 and *.**9 at the end of each definition '0-+':[[1.661,1.699,'below_resonance'],[1.781,1.819,'on_resonance'],[1.901,1.939,'above_resonance']], '1++':[[1.261,1.299,'below_resonance'],[1.381,1.419,'on_resonance'],[1.501,1.539,'above_resonance']], '2-+':[[1.781,1.819,'below_resonance'],[1.901,1.939,'on_resonance'],[2.021,2.059,'above_resonance']] } all_slices = True # Set True, if all 3pi slices shall be written out if all_slices: for i in range(50): mmin = 0.5 +i*0.04 + 0.001 mmax = 0.5 + (i+1)*0.04 - 0.001 name = "slice_"+str(i) iso_slices["0-+"].append([mmin,mmax,name]) iso_slices["1++"].append([mmin,mmax,name]) iso_slices["2-+"].append([mmin,mmax,name]) prefixes = {'0-+':'1-(0-+)0+ f0_','1++':'1-(1++)0+ f0_','2-+':'1-(2-+)0+ f0_'} suffixes = {'0-+':' pi S','1++':' pi P','2-+':' pi D'} X_slices = [[0.961,0.999,'f_0(980)'],[1.401,1.559,'f_0(1500)'],[0.2781,2.279,'Incoherent_sum']] suppressSigma=0 tbins=['0.10000-0.14077','0.14077-0.19435','0.19435-0.32617','0.32617-1.00000'] sumintens={} for tbin in tbins: dataSet = get2D('/nfs/mds/user/fkrinner/massIndepententFits/fits/4tbin_deisobarred/fit/'+tbin, '/nfs/mds/user/fkrinner/massIndepententFits/fits/4tbin_deisobarred/integrals/'+tbin ,normalizeToIntegrals = False, divide_key_intens = True) for jpc in jpcs: addString = '_'+isobar bins2Pi=[] bins3Pi=[] for i in range(0,len(dataSet[0])): if dataSet[0][i][4]==jpc and dataSet[0][i][13] == M and isobar in dataSet[0][i][14]: bins3Pi.append(dataSet[0][i][0]) bins3Pi.append(dataSet[0][i][1]) bins2Pi.append(dataSet[0][i][2]) bins2Pi.append(dataSet[0][i][3]) bins3Pi.sort() bins2Pi.sort() if not len(bins3Pi) + len(bins2Pi) == 0: binning2Pi=[bins2Pi[0]] binning3Pi=[bins3Pi[0]] for i in range(1,len(bins3Pi)-1): if binning3Pi[-1] != bins3Pi[i]: binning3Pi.append(bins3Pi[i]) if bins3Pi[i] != bins3Pi[i+1]: print "Warning: Binning in m(3Pi) is wrong." binning3Pi.append(bins3Pi[-1]) for i in range(1,len(bins2Pi)-1): if binning2Pi[-1] != bins2Pi[i]: binning2Pi.append(bins2Pi[i]) if bins2Pi[i] != bins2Pi[i+1]: print "Warning: Binning in m(2Pi) is wrong." binning2Pi.append(bins2Pi[-1]) binning2Pi= numpy.asarray(binning2Pi,dtype=numpy.float64) binning3Pi= numpy.asarray(binning3Pi,dtype=numpy.float64) histIn = TH2D("Intensity of "+jpc+'_'+M+addString+"_"+tbin,"Intensity of "+jpc+addString,len(binning3Pi)-1,binning3Pi,len(binning2Pi)-1,binning2Pi) histIn.SetDrawOption('col') histIn.GetXaxis().SetTitle("Mass of the #pi^{#font[122]{-}}#pi^{#font[122]{+}}#pi^{#font[122]{-}} System (GeV/#it{c}^{2})") histIn.GetYaxis().SetTitle("Mass of the #pi^{#font[122]{+}}#pi^{#font[122]{-}} System (GeV/#it{c}^{2})") histIn.GetZaxis().SetTitle("Intensity of "+jpc+addString) histRe = TH2D("Real part of "+jpc+'_'+M+addString+"_"+tbin,"Real part of "+jpc+addString,len(binning3Pi)-1,binning3Pi,len(binning2Pi)-1,binning2Pi) histRe.SetDrawOption('col') histRe.GetXaxis().SetTitle("Mass of the #pi^{#font[122]{-}}#pi^{#font[122]{+}}#pi^{#font[122]{-}} System (GeV/#it{c}^{2})") histRe.GetYaxis().SetTitle("Mass of the #pi^{#font[122]{+}}#pi^{#font[122]{-}} System (GeV/#it{c}^{2})") histRe.GetZaxis().SetTitle("Real part of "+jpc+addString) histIm = TH2D("Imag part of "+jpc+'_'+M+addString+"_"+tbin,"Imag part of "+jpc+addString,len(binning3Pi)-1,binning3Pi,len(binning2Pi)-1,binning2Pi) histIm.SetDrawOption('col') histIm.GetXaxis().SetTitle("Mass of the #pi^{#font[122]{-}}#pi^{#font[122]{+}}#pi^{#font[122]{-}} System (GeV/#it{c}^{2})") histIm.GetYaxis().SetTitle("Mass of the #pi^{#font[122]{+}}#pi^{#font[122]{-}} System (GeV/#it{c}^{2})") histIm.GetZaxis().SetTitle("Imag part of "+jpc+addString) histPh = TH2D("Phase of "+jpc+'_'+M+addString+"_"+tbin,"Phase of "+jpc+addString,len(binning3Pi)-1,binning3Pi,len(binning2Pi)-1,binning2Pi) histPh.SetDrawOption('col') histPh.GetXaxis().SetTitle("Mass of the #pi^{#font[122]{-}}#pi^{#font[122]{+}}#pi^{#font[122]{-}} System (GeV/#it{c}^{2})") histPh.GetYaxis().SetTitle("Mass of the #pi^{#font[122]{+}}#pi^{#font[122]{-}} System (GeV/#it{c}^{2})") histPh.GetZaxis().SetTitle("Phase of "+'_'+M+jpc+addString) for i in range(0,len(dataSet[0])): if dataSet[0][i][4] == jpc and dataSet[0][i][13] == M and isobar in dataSet[0][i][14]: m2Center = (dataSet[0][i][3] + dataSet[0][i][2])/2 m3Center = (dataSet[0][i][0] + dataSet[0][i][1])/2 n2 = histIn.GetYaxis().FindBin(m2Center) n3 = histIn.GetXaxis().FindBin(m3Center) histIn.SetBinContent(n3,n2,dataSet[0][i][5]) histRe.SetBinContent(n3,n2,dataSet[0][i][7]) histIm.SetBinContent(n3,n2,dataSet[0][i][9]) histPh.SetBinContent(n3,n2,dataSet[0][i][11]) histIn.SetBinError(n3,n2,dataSet[0][i][6]) histRe.SetBinError(n3,n2,dataSet[0][i][8]) histIm.SetBinError(n3,n2,dataSet[0][i][10]) histPh.SetBinError(n3,n2,dataSet[0][i][12]) if histIn.GetBinContent(n3,n2) < suppressSigma * histIn.GetBinError(n3,n2): histIn.SetBinContent(n3,n2,0.) histIn.SetBinError(n3,n2,0.) histPh=removePhaseAmbiguities(histPh) histIn.Write() histRe.Write() histIm.Write() histPh.Write() histIn.Draw("col") # canv.Print('./pdfs/'+histIn.GetName()+".pdf") for slic in iso_slices[jpc]: minm = slic[0] maxm = slic[1] name = slic[2] for i in range(len(binning3Pi)-1): bul = binning3Pi[i+1] bll = binning3Pi[i] if bul > maxm and bll < maxm: maxb = i+1 if bul > minm and bll < minm: minb = i+1 massstring = 'm3Pi='+str(binning3Pi[minb-1])+'-'+str(binning3Pi[maxb]) slcInt=histIn.ProjectionY('slice_of_'+jpc+'_intens_'+name+"_"+tbin ,minb,maxb) slcRe =histRe.ProjectionY('slice_of_'+jpc+'_real_part_'+name+"_"+tbin,minb,maxb) slcIm =histIm.ProjectionY('slice_of_'+jpc+'_imag_part_'+name+"_"+tbin,minb,maxb) slcPha=histPh.ProjectionY('slice_of_'+jpc+'_phase_'+name+"_"+tbin ,minb,maxb) adjust_phase_range(slcPha) slcInt.Draw() # canv.Print('./pdfs/'+slcInt.GetName()+".pdf") re = [] im = [] ree= [] ime= [] for i in range(1,slcRe.GetNbinsX()+1): e = slcRe.GetBinError(i)+ slcIm.GetBinError(i) if not e==0.: re.append(slcRe.GetBinContent(i)) im.append(slcIm.GetBinContent(i)) ree.append(slcRe.GetBinError(i)) ime.append(slcIm.GetBinError(i)) if len(re)>0 and len(re) == len(im) and len(re) == len(ree) and len(re) == len(ime): while re[-1] ==0. and im[-1]==0.: # Kill the last (zero) point re = re[:-1] im = im[:-1] ree=ree[:-1] ime=ime[:-1] re= numpy.asarray(re,dtype=numpy.float64) im= numpy.asarray(im,dtype=numpy.float64) ree= numpy.asarray(ree,dtype=numpy.float64) ime= numpy.asarray(ime,dtype=numpy.float64) argand = TGraphErrors(len(re),re,im,ree,ime) argand.SetName('slice_of_'+jpc+'_argand_'+name+"_"+tbin) # argand.Write() argand.Draw('apl') # canv.Print('./pdfs/'+argand.GetName()+".pdf") argand_wrapper = TMultiGraph() argand_wrapper.SetName(argand.GetName()) argand_wrapper.Add(argand) argand_wrapper.Write() slcInt.SetTitle(massstring) slcRe.SetTitle(massstring) slcIm.SetTitle(massstring) slcPha.SetTitle(massstring) slcInt.Write() slcRe.Write() slcIm.Write() slcPha.Write() for slic in X_slices: minm = slic[0] maxm = slic[1] name = slic[2] total_list = make_f0_wavelist(minm,maxm,prefixes[jpc],suffixes[jpc]) # if name == 'f_0(1500)': # print total_list # raise Exception total_data = getTotal('/nfs/mds/user/fkrinner/massIndepententFits/fits/4tbin_deisobarred/fit/'+tbin,total_list, '/nfs/mds/user/fkrinner/massIndepententFits/fits/4tbin_deisobarred/integrals/'+tbin,normalizeToDiag=True) total_binning = [total_data[0][0]] for total_point in total_data: total_binning.append(total_point[1]) total_binning= numpy.asarray(total_binning,dtype=numpy.float64) total_mmin = total_binning[0] total_mmax = total_binning[-1] total_hist = TH1D('coherent_sum_of_'+jpc+'_'+name+'_'+tbin,'coherent_sum_of_'+jpc+'_'+name+'_'+tbin,len(total_binning)-1,total_binning) total_hist.GetXaxis().SetTitle("Mass of the #pi^{#font[122]{-}}#pi^{#font[122]{+}}#pi^{#font[122]{-}} System (GeV/#it{c}^{2})") histIn.GetZaxis().SetTitle("Intensity of "+jpc+addString) for i in range(len(total_data)): total_hist.SetBinContent(i+1,total_data[i][2]) total_hist.SetBinError(i+1,total_data[i][3]) for i in range(len(binning2Pi)-1): bul = binning2Pi[i+1] bll = binning2Pi[i] if bul > maxm and bll < maxm: maxb = i+1 if bul > minm and bll < minm: minb = i+1 massstring = 'm2Pi='+str(binning2Pi[minb-1])+'-'+str(binning2Pi[maxb]) slcInt=histIn.ProjectionX('slice_of_'+jpc+'_intens_'+name+"_"+tbin ,minb,maxb) slcRe =histRe.ProjectionX('slice_of_'+jpc+'_real_part_'+name+"_"+tbin,minb,maxb) slcIm =histIm.ProjectionX('slice_of_'+jpc+'_imag_part_'+name+"_"+tbin,minb,maxb) slcPha=histPh.ProjectionX('slice_of_'+jpc+'_phase_'+name+"_"+tbin ,minb,maxb) slcInt.SetTitle(massstring) slcRe.SetTitle(massstring) slcIm.SetTitle(massstring) slcPha.SetTitle(massstring) total_hist.SetTitle(massstring) slcInt.Write() slcRe.Write() slcIm.Write() slcPha.Write() total_hist.Write() slcInt.Draw() # canv.Print('./pdfs/'+slcInt.GetName()+".pdf") if not sumintens.has_key(name+"_"+jpc): sumintens[name+"_"+jpc] = slcInt sumintens[name+"_"+jpc].SetName('incoherent_sum_'+jpc+'_'+name) else: sumintens[name+"_"+jpc].Add(slcInt) for key in sumintens.iterkeys(): sumintens[key].Write() sumintens[key].Draw() # canv.Print('./pdfs/'+sumintens[key].GetName()+".pdf") outROOT.close() print "ran with no exceptions"
limits[0].SetMinimum(2) limits[0].SetMaximum(8) limits[0].Draw("ape") icol = 0 leg = TLegend() leg.SetFillColor(0) leg.SetTextAlign(12) leg.SetX1NDC(0.5) leg.SetY1NDC(0.4) leg.SetX2NDC(0.8) leg.SetY2NDC(0.85) for limit in limits: limit.Draw("pe,same") sparse = limit.GetName().split("_") # print len(sparse) # print sparse[1] # print sparse[2] sentry = "#Delta#lambda_{S} = %+3d%-4s #Delta #Gamma = %+3d%s" % (int( sparse[1]), "%", int(sparse[2]), "%") # print sentry leg.AddEntry(limit, sentry, "f") leg.Draw("same") can.Update() can.SaveAs("gif/limitSys.gif") can.SaveAs("gif/limitSys.pdf") '''