Ejemplo n.º 1
0
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"
Ejemplo n.º 2
0
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")
'''