9#include "std_make_vector.h"
11Meson::Meson(
double mass,
double lifetime = 5.e29,
double decayconst = 0.,
12 double lambdaM = 0.,
double gegenalpha1 = 0.,
double gegenalpha2 = 0.)
38 if (
name.compare(
"P_0") == 0) {
39 ModelParamMap.insert(std::make_pair(
"MP0", std::cref(
mass)));
40 ModelParamMap.insert(std::make_pair(
"tP0", std::cref(
lifetime)));
41 ModelParamMap.insert(std::make_pair(
"FP0", std::cref(
decayconst)));
44 if (
name.compare(
"P_P") == 0) {
45 ModelParamMap.insert(std::make_pair(
"MPp", std::cref(
mass)));
46 ModelParamMap.insert(std::make_pair(
"tPp", std::cref(
lifetime)));
47 ModelParamMap.insert(std::make_pair(
"FPp", std::cref(
decayconst)));
50 if (
name.compare(
"K_0") == 0) {
51 ModelParamMap.insert(std::make_pair(
"MK0", std::cref(
mass)));
52 ModelParamMap.insert(std::make_pair(
"tKl", std::cref(
lifetime)));
53 ModelParamMap.insert(std::make_pair(
"FK", std::cref(
decayconst)));
56 if (
name.compare(
"K_S") == 0) {
57 ModelParamMap.insert(std::make_pair(
"MK0", std::cref(
mass)));
58 ModelParamMap.insert(std::make_pair(
"tKs", std::cref(
lifetime)));
59 ModelParamMap.insert(std::make_pair(
"FK", std::cref(
decayconst)));
62 if (
name.compare(
"K_P") == 0) {
63 ModelParamMap.insert(std::make_pair(
"MKp", std::cref(
mass)));
64 ModelParamMap.insert(std::make_pair(
"tKp", std::cref(
lifetime)));
65 ModelParamMap.insert(std::make_pair(
"FK", std::cref(
decayconst)));
66 ModelParamMap.insert(std::make_pair(
"alpha1kp", std::cref(
gegenalpha[0])));
67 ModelParamMap.insert(std::make_pair(
"alpha2kp", std::cref(
gegenalpha[1])));
70 if (
name.compare(
"D_0") == 0) {
71 ModelParamMap.insert(std::make_pair(
"MD0", std::cref(
mass)));
72 ModelParamMap.insert(std::make_pair(
"tD0", std::cref(
lifetime)));
73 ModelParamMap.insert(std::make_pair(
"FD", std::cref(
decayconst)));
76 if (
name.compare(
"D_P") == 0) {
77 ModelParamMap.insert(std::make_pair(
"MDP", std::cref(
mass)));
78 ModelParamMap.insert(std::make_pair(
"tDP", std::cref(
lifetime)));
79 ModelParamMap.insert(std::make_pair(
"FDP", std::cref(
decayconst)));
82 if (
name.compare(
"D_S") == 0) {
83 ModelParamMap.insert(std::make_pair(
"MDs", std::cref(
mass)));
84 ModelParamMap.insert(std::make_pair(
"tDs", std::cref(
lifetime)));
85 ModelParamMap.insert(std::make_pair(
"FDs", std::cref(
decayconst)));
88 if (
name.compare(
"B_D") == 0) {
89 ModelParamMap.insert(std::make_pair(
"MBd", std::cref(
mass)));
90 ModelParamMap.insert(std::make_pair(
"tBd", std::cref(
lifetime)));
91 ModelParamMap.insert(std::make_pair(
"FBd", std::cref(
decayconst)));
92 ModelParamMap.insert(std::make_pair(
"FBsoFBd", std::cref(
FBsoFBd)));
93 ModelParamMap.insert(std::make_pair(
"lambdaB", std::cref(
lambdaM)));
96 if (
name.compare(
"B_P") == 0) {
97 ModelParamMap.insert(std::make_pair(
"MBp", std::cref(
mass)));
98 ModelParamMap.insert(std::make_pair(
"tBp", std::cref(
lifetime)));
99 ModelParamMap.insert(std::make_pair(
"FBp", std::cref(
decayconst)));
100 ModelParamMap.insert(std::make_pair(
"FBsoFBd", std::cref(
FBsoFBd)));
101 ModelParamMap.insert(std::make_pair(
"lambdaB", std::cref(
lambdaM)));
104 if (
name.compare(
"B_S") == 0) {
105 ModelParamMap.insert(std::make_pair(
"MBs", std::cref(
mass)));
106 ModelParamMap.insert(std::make_pair(
"tBs", std::cref(
lifetime)));
107 ModelParamMap.insert(std::make_pair(
"FBs", std::cref(
decayconst)));
108 ModelParamMap.insert(std::make_pair(
"lambdaB", std::cref(
lambdaM)));
109 ModelParamMap.insert(std::make_pair(
"DGs_Gs", std::cref(
Dgamma_gamma)));
112 if (
name.compare(
"B_C") == 0) {
113 ModelParamMap.insert(std::make_pair(
"MBc", std::cref(
mass)));
114 ModelParamMap.insert(std::make_pair(
"tBc", std::cref(
lifetime)));
115 ModelParamMap.insert(std::make_pair(
"FBc", std::cref(
decayconst)));
118 if (
name.compare(
"PHI") == 0) {
119 ModelParamMap.insert(std::make_pair(
"Mphi", std::cref(
mass)));
120 ModelParamMap.insert(std::make_pair(
"tphi", std::cref(
lifetime)));
121 ModelParamMap.insert(std::make_pair(
"Fphi", std::cref(
decayconst)));
122 ModelParamMap.insert(std::make_pair(
"Fphip", std::cref(
decayconst_p)));
123 ModelParamMap.insert(std::make_pair(
"alpha2phi", std::cref(
gegenalpha[1])));
126 if (
name.compare(
"K_star") == 0) {
127 ModelParamMap.insert(std::make_pair(
"MKstar", std::cref(
mass)));
128 ModelParamMap.insert(std::make_pair(
"tKstar", std::cref(
lifetime)));
129 ModelParamMap.insert(std::make_pair(
"FKstar", std::cref(
decayconst)));
130 ModelParamMap.insert(std::make_pair(
"FKstarp", std::cref(
decayconst_p)));
131 ModelParamMap.insert(std::make_pair(
"alpha1kst", std::cref(
gegenalpha[0])));
132 ModelParamMap.insert(std::make_pair(
"alpha2kst", std::cref(
gegenalpha[1])));
135 if (
name.compare(
"K_star_P") == 0) {
136 ModelParamMap.insert(std::make_pair(
"MKstarP", std::cref(
mass)));
137 ModelParamMap.insert(std::make_pair(
"tKstarP", std::cref(
lifetime)));
138 ModelParamMap.insert(std::make_pair(
"FKstar", std::cref(
decayconst)));
139 ModelParamMap.insert(std::make_pair(
"FKstarp", std::cref(
decayconst_p)));
140 ModelParamMap.insert(std::make_pair(
"alpha1kst", std::cref(
gegenalpha[0])));
141 ModelParamMap.insert(std::make_pair(
"alpha2kst", std::cref(
gegenalpha[1])));
144 if (
name.compare(
"D_star_P") == 0) {
145 ModelParamMap.insert(std::make_pair(
"MDstarP", std::cref(
mass)));
146 ModelParamMap.insert(std::make_pair(
"tDstarP", std::cref(
lifetime)));
147 ModelParamMap.insert(std::make_pair(
"FDstarP", std::cref(
decayconst)));
150 if (
name.compare(
"RHO") == 0) {
151 ModelParamMap.insert(std::make_pair(
"Mrho", std::cref(
mass)));
152 ModelParamMap.insert(std::make_pair(
"trho", std::cref(
lifetime)));
153 ModelParamMap.insert(std::make_pair(
"Frho", std::cref(
decayconst)));
156 if (
name.compare(
"RHO_P") == 0) {
157 ModelParamMap.insert(std::make_pair(
"MrhoP", std::cref(
mass)));
158 ModelParamMap.insert(std::make_pair(
"trho", std::cref(
lifetime)));
159 ModelParamMap.insert(std::make_pair(
"Frho", std::cref(
decayconst)));
162 if (
name.compare(
"OMEGA") == 0) {
163 ModelParamMap.insert(std::make_pair(
"Momega", std::cref(
mass)));
164 ModelParamMap.insert(std::make_pair(
"tomega", std::cref(
lifetime)));
165 ModelParamMap.insert(std::make_pair(
"Fomega", std::cref(
decayconst)));
167 }
else throw std::runtime_error(
name +
" is not implemented in Meson class");
172 if (name_i.compare(
"P_0") == 0)
return make_vector<std::string>() <<
"MP0" <<
"tP0" <<
"FP0";
173 if (name_i.compare(
"P_P") == 0)
return make_vector<std::string>() <<
"MPp" <<
"tPp" <<
"FPp";
174 if (name_i.compare(
"K_0") == 0)
return make_vector<std::string>() <<
"MK0" <<
"tKl" <<
"FK";
175 if (name_i.compare(
"K_P") == 0)
return make_vector<std::string>() <<
"MKp" <<
"tKp" <<
"FK" <<
"alpha1kp" <<
"alpha2kp";
176 if (name_i.compare(
"K_S") == 0)
return make_vector<std::string>() <<
"MK0" <<
"tKs" <<
"FK";
177 if (name_i.compare(
"D_0") == 0)
return make_vector<std::string>() <<
"MD" <<
"tD" <<
"FD";
178 if (name_i.compare(
"D_P") == 0)
return make_vector<std::string>() <<
"MDP" <<
"tDP" <<
"FDP";
179 if (name_i.compare(
"D_S") == 0)
return make_vector<std::string>() <<
"MDs" <<
"tDs" <<
"FDs";
180 if (name_i.compare(
"B_D") == 0)
return make_vector<std::string>() <<
"MBd" <<
"tBd" <<
"FBsoFBd" <<
"lambdaB";
181 if (name_i.compare(
"B_P") == 0)
return make_vector<std::string>() <<
"MBp" <<
"tBp" <<
"FBsoFBd" <<
"lambdaB";
182 if (name_i.compare(
"B_S") == 0)
return make_vector<std::string>() <<
"MBs" <<
"tBs" <<
"FBs" <<
"lambdaB" <<
"DGs_Gs";
183 if (name_i.compare(
"B_C") == 0)
return make_vector<std::string>() <<
"MBc" <<
"tBc" <<
"FBc";
184 if (name_i.compare(
"PHI") == 0)
return make_vector<std::string>() <<
"Mphi" <<
"tphi" <<
"Fphi" <<
"Fphip" <<
"alpha2phi";
185 if (name_i.compare(
"K_star") == 0)
return make_vector<std::string>() <<
"MKstar" <<
"tKstar" <<
"FKstar" <<
"FKstarp" <<
"alpha1kst" <<
"alpha2kst";
186 if (name_i.compare(
"K_star_P") == 0)
return make_vector<std::string>() <<
"MKstarP" <<
"tKstar" <<
"FKstar" <<
"FKstarp" <<
"alpha1kst" <<
"alpha2kst";
187 if (name_i.compare(
"D_star_P") == 0)
return make_vector<std::string>() <<
"MDstarP" <<
"tDstarP" <<
"FDstarP";
188 if (name_i.compare(
"RHO") == 0)
return make_vector<std::string>() <<
"Mrho" <<
"trho" <<
"Frho";
189 if (name_i.compare(
"RHO_P") == 0)
return make_vector<std::string>() <<
"MrhoP" <<
"trho" <<
"Frho";
190 if (name_i.compare(
"OMEGA") == 0)
return make_vector<std::string>() <<
"Momega" <<
"tomega" <<
"Fomega";
191 else throw std::runtime_error(name_i +
" is not implemented in Meson class");
196 if (
name.compare(
"P_0") == 0) {
197 if (name_i.compare(
"MP0") == 0) {
201 if (name_i.compare(
"tP0") == 0) {
205 if (name_i.compare(
"FP0") == 0) {
210 if (
name.compare(
"P_P") == 0) {
211 if (name_i.compare(
"MPp") == 0) {
215 if (name_i.compare(
"tPp") == 0) {
219 if (name_i.compare(
"FPp") == 0) {
224 if (
name.compare(
"K_0") == 0) {
225 if (name_i.compare(
"MK0") == 0) {
229 if (name_i.compare(
"tKl") == 0) {
233 if (name_i.compare(
"FK") == 0) {
238 if (
name.compare(
"K_S") == 0) {
239 if (name_i.compare(
"MK0") == 0) {
243 if (name_i.compare(
"tKs") == 0) {
247 if (name_i.compare(
"FK") == 0) {
252 if (
name.compare(
"K_P") == 0) {
253 if (name_i.compare(
"MKp") == 0) {
257 if (name_i.compare(
"tKp") == 0) {
261 if (name_i.compare(
"FK") == 0) {
265 if (name_i.compare(
"alpha1kp") == 0) {
269 if (name_i.compare(
"alpha2kp") == 0) {
274 if (
name.compare(
"D_0") == 0) {
275 if (name_i.compare(
"MD") == 0) {
279 if (name_i.compare(
"tD") == 0) {
283 if (name_i.compare(
"FD") == 0) {
288 if (
name.compare(
"D_P") == 0) {
289 if (name_i.compare(
"MDP") == 0) {
293 if (name_i.compare(
"tDP") == 0) {
297 if (name_i.compare(
"FDP") == 0) {
302 if (
name.compare(
"D_S") == 0) {
303 if (name_i.compare(
"MDs") == 0) {
307 if (name_i.compare(
"tDs") == 0) {
311 if (name_i.compare(
"FDs") == 0) {
316 if (
name.compare(
"B_D") == 0) {
317 if (name_i.compare(
"MBd") == 0) {
321 if (name_i.compare(
"tBd") == 0) {
325 if (name_i.compare(
"FBsoFBd") == 0) {
329 if (name_i.compare(
"lambdaB") == 0) {
334 if (
name.compare(
"B_P") == 0) {
335 if (name_i.compare(
"MBp") == 0) {
339 if (name_i.compare(
"tBp") == 0) {
343 if (name_i.compare(
"FBsoFBd") == 0) {
347 if (name_i.compare(
"lambdaB") == 0) {
352 if (
name.compare(
"B_S") == 0) {
353 if (name_i.compare(
"MBs") == 0) {
357 if (name_i.compare(
"tBs") == 0) {
361 if (name_i.compare(
"FBs") == 0) {
365 if (name_i.compare(
"lambdaB") == 0) {
369 if (name_i.compare(
"DGs_Gs") == 0) {
374 if (
name.compare(
"B_C") == 0) {
375 if (name_i.compare(
"MBc") == 0) {
379 if (name_i.compare(
"tBc") == 0) {
383 if (name_i.compare(
"FBc") == 0) {
388 if (
name.compare(
"PHI") == 0) {
389 if (name_i.compare(
"Mphi") == 0) {
393 if (name_i.compare(
"tphi") == 0) {
397 if (name_i.compare(
"Fphi") == 0) {
401 if (name_i.compare(
"Fphip") == 0) {
405 if (name_i.compare(
"alpha2phi") == 0) {
410 if (
name.compare(
"K_star") == 0) {
411 if (name_i.compare(
"MKstar") == 0) {
415 if (name_i.compare(
"tKstar") == 0) {
419 if (name_i.compare(
"FKstar") == 0) {
423 if (name_i.compare(
"FKstarp") == 0) {
427 if (name_i.compare(
"alpha1kst") == 0) {
431 if (name_i.compare(
"alpha2kst") == 0) {
436 if (
name.compare(
"K_star_P") == 0) {
437 if (name_i.compare(
"MKstarP") == 0) {
441 if (name_i.compare(
"tKstar") == 0) {
445 if (name_i.compare(
"FKstar") == 0) {
449 if (name_i.compare(
"FKstarp") == 0) {
453 if (name_i.compare(
"alpha1kst") == 0) {
457 if (name_i.compare(
"alpha2kst") == 0) {
462 if (
name.compare(
"D_star_P") == 0) {
463 if (name_i.compare(
"MDstarP") == 0) {
467 if (name_i.compare(
"tDstarP") == 0) {
471 if (name_i.compare(
"FDstarP") == 0) {
476 if (
name.compare(
"RHO") == 0) {
477 if (name_i.compare(
"Mrho") == 0) {
481 if (name_i.compare(
"trho") == 0) {
485 if (name_i.compare(
"Frho") == 0) {
490 if (
name.compare(
"RHO_P") == 0) {
491 if (name_i.compare(
"MrhoP") == 0) {
495 if (name_i.compare(
"trho") == 0) {
499 if (name_i.compare(
"Frho") == 0) {
504 if (
name.compare(
"OMEGA") == 0) {
505 if (name_i.compare(
"Momega") == 0) {
509 if (name_i.compare(
"tomega") == 0) {
513 if (name_i.compare(
"Fomega") == 0) {
Meson()
The default constructor.
double Dgamma_gamma
Dgamma/gamma for neutral mesons.
virtual ~Meson()
The default destructor.
double computeWidth() const
A method to compute the width of the meson from its lifetime.
double lambdaM
First moment of LCDA.
double gegenalpha[2]
Gegenbauer moments.
bool setParameter(std::string name_i, double value)
std::vector< std::string > parameterList(std::string name_i)
void ModelParameterMapInsert(std::map< std::string, std::reference_wrapper< const double > > &ModelParamMap)
double decayconst_p
The perpendicular decay constant of a vector meson.
double decayconst
The decay constant of the meson.
double lifetime
The lifetime of the meson.
std::string name
The particle name.
double mass
The particle mass in GeV.