FairShip
Loading...
Searching...
No Matches
dpProductionRates Namespace Reference

Functions

def isDP (pdg)
 
def pbremProdRateVDM (mass, epsilon, doprint=True)
 
def pbremProdRateDipole (mass, epsilon, doprint=False)
 
def getAverageMesonRate (mumPdg)
 
def mesonBRtoPhoton (mumPdg, doprint=False)
 
def brMesonToGammaDP (mass, epsilon, mumPdg, doprint=False)
 
def brMesonToMesonDP (mass, epsilon, mumPdg, dauPdg, doprint=False)
 
def brMesonToDP (mass, epsilon, mumPdg, doprint=False)
 
def mesonProdRate (mass, epsilon, mumPdg, doprint=False)
 
def qcdprodRate (mass, epsilon, doprint=False)
 
def getDPprodRate (mass, epsilon, prodMode, mumPdg, doprint=False)
 

Variables

ROOT PDG = ROOT.TDatabasePDG.Instance()
 
int protonFlux = 2e20
 

Function Documentation

◆ brMesonToDP()

def dpProductionRates.brMesonToDP (   mass,
  epsilon,
  mumPdg,
  doprint = False 
)

Definition at line 103 of file dpProductionRates.py.

103def brMesonToDP(mass, epsilon, mumPdg, doprint=False):
104 if mumPdg == 223:
105 return brMesonToMesonDP(mass, epsilon, mumPdg, 111, doprint)
106 elif mumPdg == 111 or mumPdg == 221:
107 return brMesonToGammaDP(mass, epsilon, mumPdg, doprint)
108 elif mumPdg == 331:
109 return brMesonToMesonDP(mass, epsilon, mumPdg, 113, doprint), brMesonToGammaDP(mass, epsilon, mumPdg, doprint)
110 else:
111 print("Warning! Unknown mother pdgId %d, not implemented. Setting br to 0." % mumPdg)
112 return 1
113
114

◆ brMesonToGammaDP()

def dpProductionRates.brMesonToGammaDP (   mass,
  epsilon,
  mumPdg,
  doprint = False 
)

Definition at line 71 of file dpProductionRates.py.

71def brMesonToGammaDP(mass, epsilon, mumPdg, doprint=False):
72 mMeson = PDG.GetParticle(mumPdg).Mass()
73 if doprint:
74 print("Mass of mother %d meson is %3.3f" % (mumPdg, mMeson))
75 if mass < mMeson:
76 br = 2 * epsilon**2 * pow((1 - mass**2 / mMeson**2), 3) * mesonBRtoPhoton(mumPdg, doprint)
77 else:
78 br = 0
79 if doprint:
80 print("Branching ratio of %d meson to DP is %.8g" % (mumPdg, br))
81 return br
82
83

◆ brMesonToMesonDP()

def dpProductionRates.brMesonToMesonDP (   mass,
  epsilon,
  mumPdg,
  dauPdg,
  doprint = False 
)

Definition at line 84 of file dpProductionRates.py.

84def brMesonToMesonDP(mass, epsilon, mumPdg, dauPdg, doprint=False):
85 mMeson = PDG.GetParticle(mumPdg).Mass()
86 mDaughterMeson = PDG.GetParticle(dauPdg).Mass()
87 if doprint:
88 print("Mass of mother %d meson is %3.3f" % (mumPdg, mMeson))
89 if doprint:
90 print("Mass of daughter %d meson is %3.3f" % (dauPdg, mDaughterMeson))
91 if mass < (mMeson - mDaughterMeson):
92 fac1 = pow(mMeson**2.0 - mDaughterMeson**2.0, -3.0)
93 fac2 = pow((mass**2.0 - (mMeson + mDaughterMeson) ** 2.0) * (mass**2.0 - (mMeson - mDaughterMeson) ** 2.0), 1.5)
94 massfactor = fac1 * fac2
95 br = (epsilon**2.0) * mesonBRtoPhoton(mumPdg, doprint) * massfactor
96 else:
97 br = 0
98 if doprint:
99 print("Branching ratio of %d meson to DP is %.8g" % (mumPdg, br))
100 return br
101
102

◆ getAverageMesonRate()

def dpProductionRates.getAverageMesonRate (   mumPdg)

Definition at line 42 of file dpProductionRates.py.

42def getAverageMesonRate(mumPdg):
43 if mumPdg == 111:
44 return 6.166
45 if mumPdg == 221:
46 return 0.7012
47 if mumPdg == 223:
48 return 0.8295
49 if mumPdg == 331:
50 return 0.07825
51 print(" -- ERROR, unknown mother pdgId %d" % mumPdg)
52 return 0
53
54
55# from the PDG, decay to photon channels available for mixing with DP

◆ getDPprodRate()

def dpProductionRates.getDPprodRate (   mass,
  epsilon,
  prodMode,
  mumPdg,
  doprint = False 
)

Definition at line 139 of file dpProductionRates.py.

139def getDPprodRate(mass, epsilon, prodMode, mumPdg, doprint=False):
140 if "pbrem" in prodMode:
141 print("VDM")
142 return pbremProdRateVDM(mass, epsilon, doprint)
143 elif "pbrem1" in prodMode:
144 print("Dipole")
145 return pbremProdRateDipole(mass, epsilon, doprint)
146 elif "meson" in prodMode:
147 return mesonProdRate(mass, epsilon, mumPdg, doprint)
148 elif "qcd" in prodMode:
149 return qcdprodRate(mass, epsilon, doprint)
150 else:
151 print("Unknown production mode! Choose among pbrem, meson or qcd.")
152 return 1

◆ isDP()

def dpProductionRates.isDP (   pdg)

Definition at line 13 of file dpProductionRates.py.

13def isDP(pdg):
14 return bool(pdg == 9900015 or pdg == 4900023)
15
16

◆ mesonBRtoPhoton()

def dpProductionRates.mesonBRtoPhoton (   mumPdg,
  doprint = False 
)

Definition at line 56 of file dpProductionRates.py.

56def mesonBRtoPhoton(mumPdg, doprint=False):
57 br = 1
58 if mumPdg == 111:
59 br = 0.9879900
60 if mumPdg == 221:
61 br = 0.3931181
62 if mumPdg == 223:
63 br = 0.0834941
64 if mumPdg == 331:
65 br = 0.0219297
66 if doprint:
67 print("BR of %d meson to photons: %.8g" % (mumPdg, br))
68 return br
69
70

◆ mesonProdRate()

def dpProductionRates.mesonProdRate (   mass,
  epsilon,
  mumPdg,
  doprint = False 
)

Definition at line 115 of file dpProductionRates.py.

115def mesonProdRate(mass, epsilon, mumPdg, doprint=False):
116 brM2DP = brMesonToDP(mass, epsilon, mumPdg, doprint)
117 if mumPdg == 331:
118 avgMeson = getAverageMesonRate(mumPdg) * brM2DP[0]
119 avgMeson1 = getAverageMesonRate(mumPdg) * brM2DP[1]
120 return avgMeson * 0.6, avgMeson1 * 0.6
121 # return avgMeson + avgMeson1
122 if mumPdg != 331:
123 avgMeson = getAverageMesonRate(mumPdg) * brM2DP
124 return avgMeson * 0.6
125
126
127# from interpolation of Pythia XS, normalised to epsilon^2

◆ pbremProdRateDipole()

def dpProductionRates.pbremProdRateDipole (   mass,
  epsilon,
  doprint = False 
)

Definition at line 29 of file dpProductionRates.py.

29def pbremProdRateDipole(mass, epsilon, doprint=False):
30 xswg = proton_bremsstrahlung.prodRate(mass, epsilon)
31 if doprint:
32 print("A' production rate per p.o.t: \t %.8g" % (xswg))
34 if doprint:
35 print("A' penalty factor: \t %.8g" % penalty)
36 if doprint:
37 print("A' rescaled production rate per p.o.t:\t %.8g" % (xswg * penalty))
38 return xswg * penalty
39
40
41# obtained with Pythia8: average number of meson expected per p.o.t from inclusive pp to X production, 100k events produced
def prodRate(mDarkPhoton, epsilon, tmin=-0.5 *math.pi, tmax=0.5 *math.pi)

◆ pbremProdRateVDM()

def dpProductionRates.pbremProdRateVDM (   mass,
  epsilon,
  doprint = True 
)

Definition at line 17 of file dpProductionRates.py.

17def pbremProdRateVDM(mass, epsilon, doprint=True):
18 xswg = proton_bremsstrahlung.prodRate(mass, epsilon)
19 if doprint:
20 print("A' production rate per p.o.t: \t %.8g" % (xswg))
22 if doprint:
23 print("A' rho form factor: \t %.8g" % rhoff)
24 if doprint:
25 print("A' rescaled production rate per p.o.t:\t %.8g" % (xswg * rhoff))
26 return xswg * rhoff
27
28

◆ qcdprodRate()

def dpProductionRates.qcdprodRate (   mass,
  epsilon,
  doprint = False 
)

Definition at line 128 of file dpProductionRates.py.

128def qcdprodRate(mass, epsilon, doprint=False):
129 xs = 0.0
130 if mass > 3.0:
131 xs = math.exp(-5.928 - 0.8669 * mass)
132 elif mass > 1.4:
133 xs = math.exp(-4.1477 - 1.4745 * mass)
134 else:
135 xs = 0.0
136 return xs * epsilon * epsilon
137
138

Variable Documentation

◆ PDG

ROOT dpProductionRates.PDG = ROOT.TDatabasePDG.Instance()

Definition at line 9 of file dpProductionRates.py.

◆ protonFlux

int dpProductionRates.protonFlux = 2e20

Definition at line 10 of file dpProductionRates.py.