File Coverage

blib/lib/HEP/MCNS.pm
Criterion Covered Total %
statement 17 17 100.0
branch 4 6 66.6
condition 2 3 66.6
subroutine 5 5 100.0
pod 2 2 100.0
total 30 33 90.9


line stmt bran cond sub pod time code
1 2     2   22012 use strict;
  2         3  
  2         66  
2 2     2   6 use warnings;
  2         3  
  2         90  
3              
4             package HEP::MCNS;
5             $HEP::MCNS::VERSION = '0.022';
6             # ABSTRACT: converts HEP MC numbers into particle names and vice versa
7              
8              
9 2     2   7 use Exporter qw( import );
  2         5  
  2         2315  
10              
11             our @EXPORT_OK = qw( particle_name particle_code );
12              
13             my %particles = (
14              
15             0 => "-",
16             1 => "d",
17             -1 => "anti-d",
18             2 => "u",
19             -2 => "anti-u",
20             3 => "s",
21             -3 => "anti-s",
22             4 => "c",
23             -4 => "anti-c",
24             5 => "b",
25             -5 => "anti-b",
26             6 => "t",
27             -6 => "anti-t",
28             7 => "b'",
29             -7 => "anti-b'",
30             8 => "t'",
31             -8 => "anti-t'",
32             11 => "e-",
33             -11 => "e+",
34             12 => "nu_e",
35             -12 => "anti-nu_e",
36             13 => "mu-",
37             -13 => "mu+",
38             14 => "nu_mu",
39             -14 => "anti-nu_mu",
40             15 => "tau-",
41             -15 => "tau+",
42             16 => "nu_tau",
43             -16 => "anti-nu_tau",
44             17 => "L-",
45             -17 => "L+",
46             18 => "nu_L",
47             -18 => "anti-nu_L",
48             21 => "g",
49             22 => "gamma",
50             10022 => "vpho",
51             20022 => "Cerenkov",
52             30022 => "radgam",
53             23 => "Z0",
54             24 => "W+",
55             -24 => "W-",
56             25 => "Higgs0",
57             110 => "reggeon",
58             990 => "pomeron",
59             32 => "Z'0",
60             33 => "Z''0",
61             34 => "W'+",
62             -34 => "W'-",
63             35 => "Higgs'0",
64             36 => "A0",
65             37 => "Higgs+",
66             -37 => "Higgs-",
67             41 => "R0",
68             -41 => "anti-R0",
69             61 => "Xu0",
70             62 => "Xu+",
71             -62 => "Xu-",
72             81 => "specflav",
73             82 => "rndmflav",
74             -82 => "anti-rndmflav",
75             83 => "phasespa",
76             84 => "c-hadron",
77             -84 => "anti-c-hadron",
78             85 => "b-hadron",
79             -85 => "anti-b-hadron",
80             86 => "t-hadron",
81             -86 => "anti-t-hadron",
82             87 => "b'-hadron",
83             -87 => "anti-b'-hadron",
84             88 => "t'-hadron",
85             -88 => "anti-t'-hadron",
86             89 => "Wvirt+",
87             -89 => "Wvirt-",
88             90 => "diquark",
89             -90 => "anti-diquark",
90             91 => "cluster",
91             92 => "string",
92             93 => "indep",
93             94 => "CMshower",
94             95 => "SPHEaxis",
95             96 => "THRUaxis",
96             97 => "CLUSjet",
97             98 => "CELLjet",
98             99 => "table",
99             100 => "geantino",
100             1101 => "dd_0",
101             -1101 => "anti-dd_0",
102             2101 => "ud_0",
103             -2101 => "anti-ud_0",
104             2201 => "uu_0",
105             -2201 => "anti-uu_0",
106             3101 => "sd_0",
107             -3101 => "anti-sd_0",
108             3201 => "su_0",
109             -3201 => "anti-su_0",
110             3301 => "ss_0",
111             -3301 => "anti-ss_0",
112             4101 => "cd_0",
113             -4101 => "anti-cd_0",
114             4201 => "cu_0",
115             -4201 => "anti-cu_0",
116             4301 => "cs_0",
117             -4301 => "anti-cs_0",
118             4401 => "cc_0",
119             -4401 => "anti-cc_0",
120             5101 => "bd_0",
121             -5101 => "anti-bd_0",
122             5201 => "bu_0",
123             -5201 => "anti-bu_0",
124             5301 => "bs_0",
125             -5301 => "anti-bs_0",
126             5401 => "bc_0",
127             -5401 => "anti-bc_0",
128             5501 => "bb_0",
129             -5501 => "anti-bb_0",
130             1103 => "dd_1",
131             -1103 => "anti-dd_1",
132             2103 => "ud_1",
133             -2103 => "anti-ud_1",
134             2203 => "uu_1",
135             -2203 => "anti-uu_1",
136             3103 => "sd_1",
137             -3103 => "anti-sd_1",
138             3203 => "su_1",
139             -3203 => "anti-su_1",
140             3303 => "ss_1",
141             -3303 => "anti-ss_1",
142             4103 => "cd_1",
143             -4103 => "anti-cd_1",
144             4203 => "cu_1",
145             -4203 => "anti-cu_1",
146             4303 => "cs_1",
147             -4303 => "anti-cs_1",
148             4403 => "cc_1",
149             -4403 => "anti-cc_1",
150             5103 => "bd_1",
151             -5103 => "anti-bd_1",
152             5203 => "bu_1",
153             -5203 => "anti-bu_1",
154             5303 => "bs_1",
155             -5303 => "anti-bs_1",
156             5403 => "bc_1",
157             -5403 => "anti-bc_1",
158             5503 => "bb_1",
159             -5503 => "anti-bb_1",
160             9910113 => "rho_diff0",
161             9910211 => "pi_diff+",
162             -9910211 => "pi_diff-",
163             9910223 => "omega_diff",
164             9910333 => "phi_diff",
165             9910443 => "psi_diff",
166             9912112 => "n_diffr",
167             -9912112 => "anti-n_diffr",
168             9912212 => "p_diff+",
169             -9912212 => "anti-p_diff-",
170             1011 => "deuteron",
171             -1011 => "anti-deuteron",
172             1021 => "tritium",
173             -1021 => "anti-tritium",
174             1012 => "He3",
175             -1012 => "anti-He3",
176             1022 => "alpha",
177             -1022 => "anti-alpha",
178             111 => "pi0",
179             211 => "pi+",
180             -211 => "pi-",
181             10111 => "a_00",
182             10211 => "a_0+",
183             -10211 => "a_0-",
184             100111 => "pi(2S)0",
185             100211 => "pi(2S)+",
186             -100211 => "pi(2S)-",
187             113 => "rho0",
188             213 => "rho+",
189             -213 => "rho-",
190             10113 => "b_10",
191             10213 => "b_1+",
192             -10213 => "b_1-",
193             20113 => "a_10",
194             20213 => "a_1+",
195             -20213 => "a_1-",
196             100113 => "rho(2S)0",
197             100213 => "rho(2S)+",
198             -100213 => "rho(2S)-",
199             30113 => "rho(3S)0",
200             30213 => "rho(3S)+",
201             -30213 => "rho(3S)-",
202             115 => "a_20",
203             215 => "a_2+",
204             -215 => "a_2-",
205             9000221 => "f_0(600)",
206             221 => "eta",
207             331 => "eta'",
208             10221 => "f_0",
209             100221 => "eta(2S)",
210             10331 => "f'_0",
211             9020221 => "eta(1405)",
212             9030221 => "f_0(1500)",
213             223 => "omega",
214             333 => "phi",
215             10223 => "h_1",
216             20223 => "f_1",
217             10333 => "h'_1",
218             20333 => "f'_1",
219             100223 => "omega(2S)",
220             100333 => "phi(1680)",
221             225 => "f_2",
222             335 => "f'_2",
223             310 => "K_S0",
224             130 => "K_L0",
225             311 => "K0",
226             -311 => "anti-K0",
227             321 => "K+",
228             -321 => "K-",
229             90000311 => "K_0*(800)0",
230             -90000311 => "anti-K_0*(800)0",
231             90000321 => "K_0*(800)+",
232             -90000321 => "K_0*(800)-",
233             10311 => "K_0*0",
234             -10311 => "anti-K_0*0",
235             10321 => "K_0*+",
236             -10321 => "K_0*-",
237             30343 => "Xsd",
238             -30343 => "anti-Xsd",
239             30353 => "Xsu",
240             -30353 => "anti-Xsu",
241             30363 => "Xss",
242             -30363 => "anti-Xss",
243             30643 => "Xdd",
244             -30643 => "anti-Xdd",
245             30653 => "Xdu+",
246             -30653 => "anti-Xdu-",
247             313 => "K*0",
248             -313 => "anti-K*0",
249             323 => "K*+",
250             -323 => "K*-",
251             10313 => "K_10",
252             -10313 => "anti-K_10",
253             10323 => "K_1+",
254             -10323 => "K_1-",
255             20313 => "K'_10",
256             -20313 => "anti-K'_10",
257             20323 => "K'_1+",
258             -20323 => "K'_1-",
259             100313 => "K'*0",
260             -100313 => "anti-K'*0",
261             100323 => "K'*+",
262             -100323 => "K'*-",
263             30313 => "K''*0",
264             -30313 => "anti-K''*0",
265             30323 => "K''*+",
266             -30323 => "K''*-",
267             315 => "K_2*0",
268             -315 => "anti-K_2*0",
269             325 => "K_2*+",
270             -325 => "K_2*-",
271             10315 => "K_2(1770)0",
272             -10315 => "anti-K_2(1770)0",
273             10325 => "K_2(1770)+",
274             -10325 => "K_2(1770)-",
275             20315 => "K_2(1820)0",
276             -20315 => "anti-K_2(1820)0",
277             20325 => "K_2(1820)+",
278             -20325 => "K_2(1820)-",
279             317 => "K_3*0",
280             -317 => "anti-K_3*0",
281             327 => "K_3*+",
282             -327 => "K_3*-",
283             319 => "K_4*0",
284             -319 => "anti-K_4*0",
285             329 => "K_4*+",
286             -329 => "K_4*-",
287             411 => "D+",
288             -411 => "D-",
289             421 => "D0",
290             -421 => "anti-D0",
291             10411 => "D_0*+",
292             -10411 => "D_0*-",
293             10421 => "D_0*0",
294             -10421 => "anti-D_0*0",
295             100411 => "D(2S)+",
296             -100411 => "D(2S)-",
297             100421 => "D(2S)0",
298             -100421 => "anti-D(2S)0",
299             413 => "D*+",
300             -413 => "D*-",
301             423 => "D*0",
302             -423 => "anti-D*0",
303             10413 => "D_1+",
304             -10413 => "D_1-",
305             10423 => "D_10",
306             -10423 => "anti-D_10",
307             20413 => "D'_1+",
308             -20413 => "D'_1-",
309             20423 => "D'_10",
310             -20423 => "anti-D'_10",
311             100413 => "D*(2S)+",
312             -100413 => "D*(2S)-",
313             100423 => "D*(2S)0",
314             -100423 => "anti-D*(2S)0",
315             415 => "D_2*+",
316             -415 => "D_2*-",
317             425 => "D_2*0",
318             -425 => "anti-D_2*0",
319             431 => "D_s+",
320             -431 => "D_s-",
321             10431 => "D_s0*+",
322             -10431 => "D_s0*-",
323             433 => "D_s*+",
324             -433 => "D_s*-",
325             10433 => "D_s1+",
326             -10433 => "D_s1-",
327             20433 => "D'_s1+",
328             -20433 => "D'_s1-",
329             435 => "D_s2*+",
330             -435 => "D_s2*-",
331             9000433 => "D_sj(2700)+",
332             -9000433 => "D_sj(2700)-",
333             441 => "eta_c",
334             10441 => "chi_c0",
335             100441 => "eta_c(2S)",
336             443 => "J/psi",
337             10443 => "h_c",
338             20443 => "chi_c1",
339             100443 => "psi(2S)",
340             30443 => "psi(3770)",
341             9000443 => "psi(4040)",
342             9010443 => "psi(4160)",
343             9020443 => "psi(4415)",
344             445 => "chi_c2",
345             120443 => "X(3872)",
346             90000443 => "Y(3940)",
347             91000443 => "X(3940)",
348             511 => "B0",
349             -511 => "anti-B0",
350             521 => "B+",
351             -521 => "B-",
352             10511 => "B_0*0",
353             -10511 => "anti-B_0*0",
354             10521 => "B_0*+",
355             -10521 => "B_0*-",
356             513 => "B*0",
357             -513 => "anti-B*0",
358             523 => "B*+",
359             -523 => "B*-",
360             10513 => "B_10",
361             -10513 => "anti-B_10",
362             10523 => "B_1+",
363             -10523 => "B_1-",
364             20513 => "B'_10",
365             -20513 => "anti-B'_10",
366             20523 => "B'_1+",
367             -20523 => "B'_1-",
368             515 => "B_2*0",
369             -515 => "anti-B_2*0",
370             525 => "B_2*+",
371             -525 => "B_2*-",
372             531 => "B_s0",
373             -531 => "anti-B_s0",
374             10531 => "B_s0*0",
375             -10531 => "anti-B_s0*0",
376             533 => "B_s*0",
377             -533 => "anti-B_s*0",
378             10533 => "B_s10",
379             -10533 => "anti-B_s10",
380             20533 => "B'_s10",
381             -20533 => "anti-B'_s10",
382             535 => "B_s2*0",
383             -535 => "anti-B_s2*0",
384             541 => "B_c+",
385             -541 => "B_c-",
386             10541 => "B_c0*+",
387             -10541 => "B_c0*-",
388             543 => "B_c*+",
389             -543 => "B_c*-",
390             10543 => "B_c1+",
391             -10543 => "B_c1-",
392             20543 => "B'_c1+",
393             -20543 => "B'_c1-",
394             545 => "B_c2*+",
395             -545 => "B_c2*-",
396             551 => "eta_b",
397             10551 => "chi_b0",
398             100551 => "eta_b(2S)",
399             110551 => "chi_b0(2P)",
400             200551 => "eta_b(3S)",
401             210551 => "chi_b0(3P)",
402             553 => "Upsilon",
403             10553 => "h_b",
404             20553 => "chi_b1",
405             30553 => "Upsilon_1(1D)",
406             100553 => "Upsilon(2S)",
407             110553 => "h_b(2P)",
408             120553 => "chi_b1(2P)",
409             130553 => "Upsilon_1(2D)",
410             200553 => "Upsilon(3S)",
411             210553 => "h_b(3P)",
412             220553 => "chi_b1(3P)",
413             300553 => "Upsilon(4S)",
414             9000553 => "Upsilon(5S)",
415             555 => "chi_b2",
416             10555 => "eta_b2(1D)",
417             20555 => "Upsilon_2(1D)",
418             100555 => "chi_b2(2P)",
419             110555 => "eta_b2(2D)",
420             120555 => "Upsilon_2(2D)",
421             200555 => "chi_b2(3P)",
422             557 => "Upsilon_3(1D)",
423             100557 => "Upsilon_3(2D)",
424             2212 => "p+",
425             -2212 => "anti-p-",
426             2112 => "n0",
427             -2112 => "anti-n0",
428             12212 => "N(1440)+",
429             -12212 => "anti-N(1440)-",
430             12112 => "N(1440)0",
431             -12112 => "anti-N(1440)0",
432             2124 => "N(1520)+",
433             -2124 => "anti-N(1520)-",
434             1214 => "N(1520)0",
435             -1214 => "anti-N(1520)0",
436             22212 => "N(1535)+",
437             -22212 => "anti-N(1535)-",
438             22112 => "N(1535)0",
439             -22112 => "anti-N(1535)0",
440             2224 => "Delta++",
441             -2224 => "anti-Delta--",
442             2214 => "Delta+",
443             -2214 => "anti-Delta-",
444             2114 => "Delta0",
445             -2114 => "anti-Delta0",
446             1114 => "Delta-",
447             -1114 => "anti-Delta+",
448             32224 => "Delta(1600)++",
449             -32224 => "anti-Delta(1600)--",
450             32214 => "Delta(1600)+",
451             -32214 => "anti-Delta(1600)-",
452             32114 => "Delta(1600)0",
453             -32114 => "anti-Delta(1600)0",
454             31114 => "Delta(1600)-",
455             -31114 => "anti-Delta(1600)+",
456             2222 => "Delta(1620)++",
457             -2222 => "anti-Delta(1620)--",
458             2122 => "Delta(1620)+",
459             -2122 => "anti-Delta(1620)-",
460             1212 => "Delta(1620)0",
461             -1212 => "anti-Delta(1620)0",
462             1112 => "Delta(1620)-",
463             -1112 => "anti-Delta(1620)+",
464             3122 => "Lambda0",
465             -3122 => "anti-Lambda0",
466             13122 => "Lambda(1405)0",
467             -13122 => "anti-Lambda(1405)0",
468             3124 => "Lambda(1520)0",
469             -3124 => "anti-Lambda(1520)0",
470             23122 => "Lambda(1600)0",
471             -23122 => "anti-Lambda(1600)0",
472             33122 => "Lambda(1670)0",
473             -33122 => "anti-Lambda(1670)0",
474             13124 => "Lambda(1690)0",
475             -13124 => "anti-Lambda(1690)0",
476             43122 => "Lambda(1800)0",
477             -43122 => "anti-Lambda(1800)0",
478             53122 => "Lambda(1810)0",
479             -53122 => "anti-Lambda(1810)0",
480             3126 => "Lambda(1820)0",
481             -3126 => "anti-Lambda(1820)0",
482             13126 => "Lambda(1830)0",
483             -13126 => "anti-Lambda(1830)0",
484             3222 => "Sigma+",
485             -3222 => "anti-Sigma-",
486             3212 => "Sigma0",
487             -3212 => "anti-Sigma0",
488             3112 => "Sigma-",
489             -3112 => "anti-Sigma+",
490             3224 => "Sigma*+",
491             -3224 => "anti-Sigma*-",
492             3214 => "Sigma*0",
493             -3214 => "anti-Sigma*0",
494             3114 => "Sigma*-",
495             -3114 => "anti-Sigma*+",
496             13212 => "Sigma(1660)0",
497             -13212 => "anti-Sigma(1660)0",
498             13214 => "Sigma(1670)0",
499             -13214 => "anti-Sigma(1670)0",
500             23212 => "Sigma(1750)0",
501             -23212 => "anti-Sigma(1750)0",
502             3216 => "Sigma(1775)0",
503             -3216 => "anti-Sigma(1775)0",
504             3322 => "Xi0",
505             -3322 => "anti-Xi0",
506             3312 => "Xi-",
507             -3312 => "anti-Xi+",
508             3324 => "Xi*0",
509             -3324 => "anti-Xi*0",
510             3314 => "Xi*-",
511             -3314 => "anti-Xi*+",
512             13324 => "Xi(1820)0",
513             -13324 => "anti-Xi(1820)0",
514             13314 => "Xi(1820)-",
515             -13314 => "anti-Xi(1820)+",
516             3334 => "Omega-",
517             -3334 => "anti-Omega+",
518             13334 => "Omega(2250)-",
519             -13334 => "anti-Omega(2250)+",
520             4122 => "Lambda_c+",
521             -4122 => "anti-Lambda_c-",
522             14122 => "Lambda_c(2593)+",
523             -14122 => "anti-Lambda_c(2593)-",
524             4124 => "Lambda_c(2625)+",
525             -4124 => "anti-Lambda_c(2625)-",
526             14124 => "Lambda_c(2765)+",
527             -14124 => "anti-Lambda_c(2765)-",
528             24122 => "Lambda_c(2880)+",
529             -24122 => "anti-Lambda_c(2880)-",
530             34122 => "Lambda_c(2940)+",
531             -34122 => "anti-Lambda_c(2940)-",
532             4222 => "Sigma_c++",
533             -4222 => "anti-Sigma_c--",
534             4212 => "Sigma_c+",
535             -4212 => "anti-Sigma_c-",
536             4112 => "Sigma_c0",
537             -4112 => "anti-Sigma_c0",
538             4224 => "Sigma_c*++",
539             -4224 => "anti-Sigma_c*--",
540             4214 => "Sigma_c*+",
541             -4214 => "anti-Sigma_c*-",
542             4114 => "Sigma_c*0",
543             -4114 => "anti-Sigma_c*0",
544             14224 => "Sigma_c(2800)++",
545             -14224 => "anti-Sigma_c(2800)--",
546             14214 => "Sigma_c(2800)+",
547             -14214 => "anti-Sigma_c(2800)-",
548             14114 => "Sigma_c(2800)0",
549             -14114 => "anti-Sigma_c(2800)0",
550             4232 => "Xi_c+",
551             -4232 => "anti-Xi_c-",
552             4132 => "Xi_c0",
553             -4132 => "anti-Xi_c0",
554             4322 => "Xi'_c+",
555             -4322 => "anti-Xi'_c-",
556             4312 => "Xi'_c0",
557             -4312 => "anti-Xi'_c0",
558             4324 => "Xi_c*+",
559             -4324 => "anti-Xi_c*-",
560             4314 => "Xi_c*0",
561             -4314 => "anti-Xi_c*0",
562             14232 => "Xi_c(2790)+",
563             -14232 => "anti-Xi_c(2790)-",
564             #//14232 => "Xi_c(2790)0",
565             #//-14232 => "anti-Xi_c(2790)0",
566             24332 => "Xi_c(2815)+",
567             -24332 => "anti-Xi_c(2815)-",
568             24132 => "Xi_c(2815)0",
569             -24132 => "anti-Xi_c(2815)0",
570             34232 => "Xi_c(2980)+",
571             -34232 => "anti-Xi_c(2980)-",
572             34132 => "Xi_c(2980)0",
573             -34132 => "anti-Xi_c(2980)0",
574             44232 => "Xi_c(3080)+",
575             -44232 => "anti-Xi_c(3080)-",
576             44132 => "Xi_c(3080)0",
577             -44132 => "anti-Xi_c(3080)0",
578             4332 => "Omega_c0",
579             -4332 => "anti-Omega_c0",
580             4334 => "Omega_c*0",
581             -4334 => "anti-Omega_c*0",
582             5122 => "Lambda_b0",
583             -5122 => "anti-Lambda_b0",
584             5112 => "Sigma_b-",
585             -5112 => "anti-Sigma_b+",
586             5114 => "Sigma_b*-",
587             -5114 => "anti-Sigma_b*+",
588             5212 => "Sigma_b0",
589             -5212 => "anti-Sigma_b0",
590             5214 => "Sigma_b*0",
591             -5214 => "anti-Sigma_b*0",
592             5222 => "Sigma_b+",
593             -5222 => "anti-Sigma_b-",
594             5224 => "Sigma_b*+",
595             -5224 => "anti-Sigma_b*-",
596             5132 => "Xi_b-",
597             -5132 => "anti-Xi_b+",
598             5232 => "Xi_b0",
599             -5232 => "anti-Xi_b0",
600             5312 => "Xi'_b-",
601             -5312 => "anti-Xi'_b+",
602             5314 => "Xi_b*-",
603             -5314 => "anti-Xi_b*+",
604             5322 => "Xi'_b0",
605             -5322 => "anti-Xi'_b0",
606             5324 => "Xi_b*0",
607             -5324 => "anti-Xi_b*0",
608             5332 => "Omega_b-",
609             -5332 => "anti-Omega_b+",
610             5334 => "Omega_b*-",
611             -5334 => "anti-Omega_b*+",
612              
613             );
614              
615              
616             sub particle_name
617             {
618 3 50   3 1 12 return "" unless @_;
619              
620 3   66     17 return $particles{ $_[0] } || $_[0];
621             }
622              
623              
624             sub particle_code
625             {
626 4 50   4 1 13 return 0 unless @_;
627              
628 4         7 my $lcname = lc shift;
629 4         263 my @results = grep { lc( $particles{ $_ } ) eq $lcname } keys %particles;
  2380         2335  
630              
631             # 5.8.X is still used on some CentOS/SL ..., so // is not implemented yet
632 4 100       77 return 0 unless defined $results[0];
633 3         14 return $results[0];
634             }
635              
636             1;
637              
638             __END__