Rivet  3.1.5
ParticleName.hh
1 #ifndef RIVET_PARTICLENAME_HH
2 #define RIVET_PARTICLENAME_HH
3 
4 #include "Rivet/Particle.fhh"
5 #include "Rivet/Tools/Exceptions.hh"
6 
7 // cython includes termio.h on some systems,
8 // which #defines a B0 = 0 macro
9 #undef B0
10 
11 namespace Rivet {
12 
13  namespace PID {
14 
15 
17 
19  static const PdgId ANY = 10000;
20 
22 
23  static const PdgId ELECTRON = 11;
24  static const PdgId POSITRON = -ELECTRON;
25  static const PdgId EMINUS = ELECTRON;
26  static const PdgId EPLUS = POSITRON;
27  static const PdgId MUON = 13;
28  static const PdgId ANTIMUON = -MUON;
29  static const PdgId TAU = 15;
30  static const PdgId ANTITAU = -TAU;
32 
34 
35  static const PdgId NU_E = 12;
36  static const PdgId NU_EBAR = -NU_E;
37  static const PdgId NU_MU = 14;
38  static const PdgId NU_MUBAR = -NU_MU;
39  static const PdgId NU_TAU = 16;
40  static const PdgId NU_TAUBAR = -NU_TAU;
42 
44 
45  static const PdgId PHOTON = 22;
46  static const PdgId GAMMA = PHOTON;
47  static const PdgId GLUON = 21;
48  static const PdgId WPLUSBOSON = 24;
49  static const PdgId WMINUSBOSON = -WPLUSBOSON;
50  static const PdgId WPLUS = WPLUSBOSON;
51  static const PdgId WMINUS = WMINUSBOSON;
52  static const PdgId Z0BOSON = 23;
53  static const PdgId ZBOSON = Z0BOSON;
54  static const PdgId Z0 = Z0BOSON;
55  static const PdgId HIGGSBOSON = 25;
56  static const PdgId HIGGS = HIGGSBOSON;
57  static const PdgId H0BOSON = HIGGSBOSON;
58  static const PdgId HBOSON = HIGGSBOSON;
60 
62 
63  static const PdgId DQUARK = 1;
64  static const PdgId UQUARK = 2;
65  static const PdgId SQUARK = 3;
66  static const PdgId CQUARK = 4;
67  static const PdgId BQUARK = 5;
68  static const PdgId TQUARK = 6;
70 
72 
73  static const PdgId PROTON = 2212;
74  static const PdgId ANTIPROTON = -PROTON;
75  static const PdgId PBAR = ANTIPROTON;
76  static const PdgId NEUTRON = 2112;
77  static const PdgId ANTINEUTRON = -NEUTRON;
79 
81 
82  static const PdgId PI0 = 111;
83  static const PdgId PIPLUS = 211;
84  static const PdgId PIMINUS = -PIPLUS;
85  static const PdgId RHO0 = 113;
86  static const PdgId RHOPLUS = 213;
87  static const PdgId RHOMINUS = -RHOPLUS;
88  static const PdgId K0L = 130;
89  static const PdgId K0S = 310;
90  static const PdgId K0 = 311;
91  static const PdgId KPLUS = 321;
92  static const PdgId KMINUS = -KPLUS;
93  static const PdgId ETA = 221;
94  static const PdgId ETAPRIME = 331;
95  static const PdgId PHI = 333;
96  static const PdgId OMEGA = 223;
98 
100 
101  static const PdgId ETAC = 441;
102  static const PdgId JPSI = 443;
103  static const PdgId PSI2S = 100443;
105 
107 
108  static const PdgId D0 = 421;
109  static const PdgId D0BAR = -421;
110  static const PdgId DPLUS = 411;
111  static const PdgId DMINUS = -DPLUS;
112  static const PdgId DSTARPLUS = 413;
113  static const PdgId DSTARMINUS = -DSTARPLUS;
114  static const PdgId DSPLUS = 431;
115  static const PdgId DSMINUS = -DSPLUS;
117 
119 
120  static const PdgId ETAB = 551;
121  static const PdgId UPSILON1S = 553;
122  static const PdgId UPSILON2S = 100553;
123  static const PdgId UPSILON3S = 200553;
124  static const PdgId UPSILON4S = 300553;
126 
128 
129  static const PdgId B0 = 511;
130  static const PdgId B0BAR = -511;
131  static const PdgId BPLUS = 521;
132  static const PdgId BMINUS = -BPLUS;
133  static const PdgId B0S = 531;
134  static const PdgId BCPLUS = 541;
135  static const PdgId BCMINUS = -BCPLUS;
137 
139 
140  static const PdgId LAMBDA = 3122;
141  static const PdgId SIGMA0 = 3212;
142  static const PdgId SIGMAPLUS = 3222;
143  static const PdgId SIGMAMINUS = 3112;
144  static const PdgId SIGMAB = 5212;
145  static const PdgId SIGMABPLUS = 5222;
146  static const PdgId SIGMABMINUS = 5112;
147  static const PdgId LAMBDACPLUS = 4122;
148  static const PdgId LAMBDACMINUS = 4122;
149  static const PdgId LAMBDAB = 5122;
150  static const PdgId XI0 = 3322;
151  static const PdgId XIMINUS = 3312;
152  static const PdgId XIPLUS = -XIMINUS;
153  static const PdgId XI0B = 5232;
154  static const PdgId XIBMINUS = 5132;
155  static const PdgId XI0C = 4132;
156  static const PdgId XICPLUS = 4232;
157  static const PdgId OMEGAMINUS = 3334;
158  static const PdgId OMEGAPLUS = -OMEGAMINUS;
159  static const PdgId OMEGABMINUS = 5332;
160  static const PdgId OMEGA0C = 4332;
162 
164 
165  static const PdgId REGGEON = 110;
166  static const PdgId POMERON = 990;
167  static const PdgId ODDERON = 9990;
168  static const PdgId GRAVITON = 39;
169  static const PdgId NEUTRALINO1 = 1000022;
170  static const PdgId GRAVITINO = 1000039;
171  static const PdgId GLUINO = 1000021;
172  static const int BPRIME = 7;
173  static const int TPRIME = 8;
174  static const int LPRIME = 17;
175  static const int NUPRIME = 18;
176  // static const int DARKMATTERSCALAR = 1000051;
177  // static const int DARKMATTERFERMION = 1000052;
178  // static const int DARKMATTERVECTOR = 1000053;
180 
181 
183 
184  static const PdgId DEUTERON = 1000010020;
185  static const PdgId ALUMINIUM = 1000130270;
186  static const PdgId COPPER = 1000290630;
187  static const PdgId XENON = 1000541290;
188  static const PdgId GOLD = 1000791970;
189  static const PdgId LEAD = 1000822080;
190  static const PdgId URANIUM = 1000922380;
192 
193 
194 
195 
199  class ParticleNames {
200  public:
201 
202  static std::string particleName(PdgId pid) {
203  if (!_instance) _instance = unique_ptr<ParticleNames>(new ParticleNames);
204  return _instance->_particleName(pid);
205  }
206 
207  static PdgId particleId(const std::string& pname) {
208  if (!_instance) _instance = unique_ptr<ParticleNames>(new ParticleNames);
209  return _instance->_particleId(pname);
210  }
211 
212  std::string _particleName(PdgId pid);
213 
214  PdgId _particleId(const std::string& pname);
215 
216 
217  private:
218 
219  ParticleNames() {
220  _add_pid_name(ELECTRON, "ELECTRON");
221  _add_pid_name(POSITRON, "POSITRON");
222  _add_pid_name(PROTON, "PROTON");
223  _add_pid_name(ANTIPROTON, "ANTIPROTON");
224  _add_pid_name(PHOTON, "PHOTON");
225  _add_pid_name(NEUTRON, "NEUTRON");
226  _add_pid_name(ANTINEUTRON, "ANTINEUTRON");
227  _add_pid_name(MUON, "MUON");
228  _add_pid_name(ANTIMUON, "ANTIMUON");
229  _add_pid_name(NU_E, "NU_E");
230  _add_pid_name(NU_EBAR, "NU_EBAR");
231  _add_pid_name(NU_MU, "NU_MU");
232  _add_pid_name(NU_MUBAR, "NU_MUBAR");
233  _add_pid_name(NU_TAU, "NU_TAU");
234  _add_pid_name(NU_TAUBAR, "NU_TAUBAR");
235  _add_pid_name(PIPLUS, "PIPLUS");
236  _add_pid_name(PIMINUS, "PIMINUS");
237  _add_pid_name(TAU, "TAU");
238  _add_pid_name(WPLUSBOSON, "WPLUSBOSON");
239  _add_pid_name(WMINUSBOSON, "WMINUSBOSON");
240  _add_pid_name(ZBOSON, "ZBOSON");
241  _add_pid_name(HIGGS, "HIGGS");
242  _add_pid_name(ANTITAU, "ANTITAU");
243  _add_pid_name(DEUTERON, "DEUTERON");
244  _add_pid_name(ALUMINIUM, "ALUMINIUM");
245  _add_pid_name(COPPER, "COPPER");
246  _add_pid_name(XENON, "XENON");
247  _add_pid_name(GOLD, "GOLD");
248  _add_pid_name(LEAD, "LEAD");
249  _add_pid_name(URANIUM, "URANIUM");
250  _add_pid_name(ANY, "*");
251  }
252 
253  void _add_pid_name(PdgId pid, const std::string& pname) {
254  _ids_names[pid] = pname;
255  _names_ids[pname] = pid;
256  }
257 
258  static unique_ptr<ParticleNames> _instance;
259 
260  std::map<PdgId, std::string> _ids_names;
261 
262  std::map<std::string, PdgId> _names_ids;
263 
264  };
265 
266 
268  inline std::string toParticleName(PdgId p) {
269  return ParticleNames::particleName(p);
270  }
271 
272 
274  inline PdgId toParticleId(const std::string& pname) {
275  return ParticleNames::particleId(pname);
276  }
277 
278 
280  inline std::pair<PdgId,PdgId> make_pdgid_pair(PdgId a, PdgId b) {
281  return make_pair(a, b);
282  }
283 
284 
286  inline std::pair<PdgId,PdgId> make_pdgid_pair(const std::string& a, const std::string& b) {
287  const PdgId pa = toParticleId(a);
288  const PdgId pb = toParticleId(b);
289  return make_pair(pa, pb);
290  }
291 
292 
294  inline std::string toBeamsString(const PdgIdPair& pair) {
295  string out = "[" +
296  toParticleName(pair.first) + ", " +
297  toParticleName(pair.second) + "]";
298  return out;
299  }
300 
301 
302  }
303 
304 }
305 
306 #endif
Definition: MC_Cent_pPb.hh:10
int pid(const Particle &p)
Unbound function access to PID code.
Definition: ParticleUtils.hh:23