17 """ From https://arxiv.org/abs/0910.5589 """
19 f1ra = 0.6165340033101271
20 f1rb = 0.22320420111672623
21 f1rc = -0.33973820442685326
22 f1wa = 1.0117544786579074
23 f1wb = -0.8816565944110686
24 f1wc = 0.3699021157531611
25 f1prho = f1ra*0.77**2/(0.77**2-m**2-0.77*0.15j)
26 f1prhop = f1rb*1.25**2/(1.25**2-m**2-1.25*0.3j)
27 f1prhopp = f1rc*1.45**2/(1.45**2-m**2-1.45*0.5j)
28 f1pomega = f1wa*0.77**2/(0.77**2-m**2-0.77*0.0085j)
29 f1pomegap = f1wb*1.25**2/(1.25**2-m**2-1.25*0.3j)
30 f1pomegapp = f1wc*1.45**2/(1.45**2-m**2-1.45*0.5j)
31 return abs(f1prho+f1prhop+f1prhopp+f1pomega+f1pomegap+f1pomegapp)
66def wba(p, theta, mDarkPhoton, epsilon):
67 """ Cross section weighting function in the Fermi-Weizsaeker-Williams approximation """
68 const = epsilon*epsilon*alphaQED / (2.*math.pi*
H(p,theta,mDarkPhoton))
70 h2 = pow(
H(p,theta,mDarkPhoton),2.)
71 oneMinusZSquare = pow(1.-
zeta(p,theta),2.)
73 mA2 = mDarkPhoton*mDarkPhoton
75 p1 = (1. + oneMinusZSquare) /
zeta(p,theta)
76 p2 = ( 2. *
zeta(p,theta) * (1.-
zeta(p,theta)) * ( (2.*mp2 + mA2)/
H(p,theta,mDarkPhoton)
77 - pow(
zeta(p,theta),2.)*2.*mp2*mp2/h2 ) )
79 p3 = 2.*
zeta(p,theta)*(1.-
zeta(p,theta))*(1+oneMinusZSquare)*mp2*mA2/h2
80 p4 = 2.*
zeta(p,theta)*oneMinusZSquare*mA2*mA2/h2
81 return const*(p1-p2+p3+p4)
140def prodRate(mDarkPhoton, epsilon, tmin = -0.5 * math.pi, tmax = 0.5 * math.pi):
141 """ dNdPdTheta integrated over p and theta """
142 integral = dblquad( dNdPdTheta,
144 lambda x:
pMin(mDarkPhoton),
lambda x:
pMax(mDarkPhoton),
145 args=(mDarkPhoton, epsilon) )
165def hProdPDF(mDarkPhoton, epsilon, norm, binsp, binstheta, tmin = -0.5 * math.pi, tmax = 0.5 * math.pi, suffix=""):
166 """ Histogram of the PDF for A' production in SHIP """
167 angles = np.linspace(tmin,tmax,binstheta).tolist()
168 anglestep = 2.*(tmax - tmin)/binstheta
169 momentumStep = (
pMax(mDarkPhoton)-
pMin(mDarkPhoton))/(binsp-1)
170 momenta = np.linspace(
pMin(mDarkPhoton),
pMax(mDarkPhoton),binsp,endpoint=
False).tolist()
171 hPDF = r.TH2F(
"hPDF_eps%s_m%s"%(epsilon,mDarkPhoton) ,
"hPDF_eps%s_m%s"%(epsilon,mDarkPhoton),
172 binsp,
pMin(mDarkPhoton)-0.5*momentumStep,
pMax(mDarkPhoton)-0.5*momentumStep,
173 binstheta,tmin-0.5*anglestep,tmax-0.5*anglestep)
174 hPDF.SetTitle(
"PDF for A' production (m_{A'}=%s GeV, #epsilon =%s)"%(mDarkPhoton,epsilon))
175 hPDF.GetXaxis().SetTitle(
"P_{A'} [GeV]")
176 hPDF.GetYaxis().SetTitle(
"#theta_{A'} [rad]")
177 hPDFtheta = r.TH1F(
"hPDFtheta_eps%s_m%s"%(epsilon,mDarkPhoton),
178 "hPDFtheta_eps%s_m%s"%(epsilon,mDarkPhoton),
179 binstheta,tmin-0.5*anglestep,tmax-0.5*anglestep)
180 hPDFp = r.TH1F(
"hPDFp_eps%s_m%s"%(epsilon,mDarkPhoton),
181 "hPDFp_eps%s_m%s"%(epsilon,mDarkPhoton),
182 binsp,
pMin(mDarkPhoton)-0.5*momentumStep,
pMax(mDarkPhoton)-0.5*momentumStep)
183 hPDFp.GetXaxis().SetTitle(
"P_{A'} [GeV]")
184 hPDFtheta.GetXaxis().SetTitle(
"#theta_{A'} [rad]")
189 hPDFtheta.Fill(theta,w)
191 hPdfFilename = sys.modules[
'__main__'].outputDir+
"/ParaPhoton_eps%s_m%s%s.root"%(epsilon,mDarkPhoton,suffix)
192 outfile = r.TFile(hPdfFilename,
"recreate")