Functions
genie::utils::ghep Namespace Reference

GHEP event record utilities. More...

Functions

int NeutReactionCode (const GHepRecord *evrec)
 
int NuanceReactionCode (const GHepRecord *evrec)
 

Detailed Description

GHEP event record utilities.

Author
Costas Andreopoulos <costas.andreopoulos stfc.ac.uk> University of Liverpool & STFC Rutherford Appleton Lab

Nov 30, 2008

Copyright (c) 2003-2019, The GENIE Collaboration For the full text of the license visit http://copyright.genie-mc.org or see $GENIE/LICENSE

Function Documentation

int genie::utils::ghep::NeutReactionCode ( const GHepRecord evrec)

Definition at line 30 of file GHepUtils.cxx.

References genie::Interaction::ExclTag(), genie::GHepParticle::FirstMother(), genie::Target::HitNucIsSet(), genie::Target::HitNucPdg(), genie::Interaction::InitState(), genie::pdg::IsAntiNeutrino(), genie::XclsTag::IsCharmEvent(), genie::ProcessInfo::IsCoherent(), genie::ProcessInfo::IsDeepInelastic(), genie::ProcessInfo::IsInverseMuDecay(), genie::ProcessInfo::IsMEC(), genie::pdg::IsNeutrino(), genie::Target::IsNucleus(), genie::ProcessInfo::IsNuElectronElastic(), genie::ProcessInfo::IsQuasiElastic(), genie::ProcessInfo::IsResonant(), genie::ProcessInfo::IsSingleKaon(), genie::ProcessInfo::IsWeakCC(), genie::ProcessInfo::IsWeakNC(), genie::Interaction::Kine(), genie::kIStDecayedState, genie::kIStHadronInTheNucleus, genie::kIStStableFinalState, genie::kKVW, genie::kPdgAntiK0, genie::kPdgAntiLambda, genie::kPdgEta, genie::kPdgGamma, genie::kPdgK0, genie::kPdgKM, genie::kPdgKP, genie::kPdgLambda, genie::kPdgNeutron, genie::kPdgPi0, genie::kPdgPiM, genie::kPdgPiP, genie::kPdgProton, genie::Kinematics::KVSet(), LOG, genie::GHepRecord::Particle(), genie::GHepParticle::Pdg(), pNOTICE, genie::InitialState::ProbePdg(), genie::Interaction::ProcInfo(), pWARN, genie::GHepParticle::Status(), genie::InitialState::Tgt(), and genie::Kinematics::W().

Referenced by ConvertToGRooTracker(), ConvertToGST(), and ConvertToGTracker().

31 {
32 // Ryan Terri, Yoshinari Hayato, Costas Andreopoulos
33 //
34 // A description of NEUT event types can be seen here:
35 // http://t2k.phy.duke.edu/bin/view/Main/NeutModes
36 // Any extension used here has been agreed with SK (Hayato et al)
37 //
38 // Updated for NEUT 5.4.0 by Christophe Bronner
39 
40 
41  if(!event) {
42  LOG("GHepUtils", pWARN) << "Null event!";
43  return 0;
44  }
45 
46  int evtype = 0;
47 
48  Interaction * interaction = event->Summary();
49 
50  const ProcessInfo & proc = interaction->ProcInfo();
51  const InitialState & init = interaction->InitState();
52  const XclsTag & xcls = interaction->ExclTag();
53  const Kinematics & kine = interaction->Kine();
54  const Target & tgt = init.Tgt();
55 
56  bool is_cc = proc.IsWeakCC();
57  bool is_nc = proc.IsWeakNC();
58  bool is_charm = xcls.IsCharmEvent();
59  bool is_qel = proc.IsQuasiElastic();
60  bool is_dis = proc.IsDeepInelastic();
61  bool is_res = proc.IsResonant();
62  bool is_cohpi = proc.IsCoherent();
63  bool is_ve = proc.IsNuElectronElastic();
64  bool is_mec = proc.IsMEC();
65  bool is_imd = proc.IsInverseMuDecay();
66  bool is_ask = proc.IsSingleKaon();
67  bool is_p = tgt.HitNucIsSet() ? tgt.HitNucPdg()==kPdgProton : false;
68  bool is_n = tgt.HitNucIsSet() ? tgt.HitNucPdg()==kPdgNeutron : false;
69  bool is_nu = pdg::IsNeutrino (init.ProbePdg());
70  bool is_nubar = pdg::IsAntiNeutrino(init.ProbePdg());
71  bool W_gt_2 = kine.KVSet(kKVW) ? (kine.W() > 2.0) : false;
72 
73  // (quasi-)elastic, nc+cc, nu+nubar
74  //
75  if (is_qel && !is_charm && is_cc && is_nu ) evtype = 1;
76  else if (is_qel && !is_charm && is_nc && is_nu && is_p ) evtype = 51;
77  else if (is_qel && !is_charm && is_nc && is_nu && is_n ) evtype = 52;
78  else if (is_qel && !is_charm && is_cc && is_nubar ) evtype = -1;
79  else if (is_qel && !is_charm && is_nc && is_nubar && is_p) evtype = -51;
80  else if (is_qel && !is_charm && is_nc && is_nubar && is_n) evtype = -52;
81 
82  // MEC - only CC implemented in NEUT
83  else if (is_mec && !is_charm && is_cc && is_nu ) evtype = 2;
84  else if (is_mec && !is_charm && is_cc && is_nubar ) evtype = -2;
85 
86  // quasi-elastic charm production
87  // Part of the DIS W>2GeV mode in NEUT - CB
88  else if (is_qel && is_charm && is_cc && is_nu ) evtype = 26;
89  else if (is_qel && is_charm && is_cc && is_nubar ) evtype = -26;
90 
91  // inverse mu- (tau-) decay and ve- elastic
92  //Those modes don't actually exist in NEUT, 9 and 59 used as place holders
93  else if ( is_imd ) evtype = 9;
94  else if ( is_ve ) evtype = 59;
95 
96  // coherent pi, nc+cc, nu+nubar
97  //
98  else if (is_cohpi && is_cc && is_nu ) evtype = 16;
99  else if (is_cohpi && is_cc && is_nubar) evtype = -16;
100  else if (is_cohpi && is_nc && is_nu ) evtype = 36;
101  else if (is_cohpi && is_nc && is_nubar) evtype = -36;
102 
103  // dis, W>2, nc+cc, nu+nubar
104  // (charm DIS not simulated by NEUT, will bundle GENIE charm DIS into this category)
105  //
106  else if (is_dis && W_gt_2 && is_cc && is_nu ) evtype = 26;
107  else if (is_dis && W_gt_2 && is_nc && is_nu ) evtype = 46;
108  else if (is_dis && W_gt_2 && is_cc && is_nubar) evtype = -26;
109  else if (is_dis && W_gt_2 && is_nc && is_nubar) evtype = -46;
110 
111  // resonance or dis with W < 2 GeV or single kaon
112  //
113  else if ( is_res || (is_dis && !W_gt_2) || is_ask ) {
114 
115  LOG("GHepUtils", pNOTICE) << "Current event is RES or DIS with W<2";
116 
117  // check the number of pions and nucleons in the primary hadronic system
118  // (_before_ intranuclear rescattering)
119  //
120  int nn=0, np=0, npi0=0, npip=0, npim=0, nKp=0, nKm=0, nK0=0, neta=0, nlambda=0, ngamma=0;
121  bool nuclear_target = init.Tgt().IsNucleus();
122 
123  TIter event_iter(event);
124  GHepParticle * p = 0;
125 
126  while ( (p = dynamic_cast<GHepParticle *>(event_iter.Next())) )
127  {
128  GHepStatus_t ghep_ist = (GHepStatus_t) p->Status();
129  int ghep_pdgc = p->Pdg();
130  int ghep_fm = p->FirstMother();
131  int ghep_fmpdgc = (ghep_fm==-1) ? 0 : event->Particle(ghep_fm)->Pdg();
132 
133  // For nuclear targets use hadrons marked as 'hadron in the nucleus'
134  // which are the ones passed in the intranuclear rescattering
135  // For free nucleon targets use particles marked as 'final state'
136  // but make an exception for decayed pi0's,eta's (count them and not their daughters)
137 
138  bool decayed = (ghep_ist==kIStDecayedState && (ghep_pdgc==kPdgPi0 || ghep_pdgc==kPdgEta));
139  bool parent_included = (ghep_fmpdgc==kPdgPi0 || ghep_fmpdgc==kPdgEta);
140 
141  bool count_it =
142  ( nuclear_target && ghep_ist==kIStHadronInTheNucleus) ||
143  (!nuclear_target && decayed) ||
144  (!nuclear_target && ghep_ist==kIStStableFinalState && !parent_included);
145 
146  if(!count_it) continue;
147 
148  if(ghep_pdgc == kPdgProton ) np++; // p
149  if(ghep_pdgc == kPdgNeutron) nn++; // n
150  if(ghep_pdgc == kPdgPiP) npip++; // pi+
151  if(ghep_pdgc == kPdgPiM) npim++; // pi-
152  if(ghep_pdgc == kPdgPi0) npi0++; // pi0
153  if(ghep_pdgc == kPdgEta) neta++; // eta0
154  if(ghep_pdgc == kPdgKP) nKp++; // K+
155  if(ghep_pdgc == kPdgKM) nKm++; // K-
156  if(ghep_pdgc == kPdgK0) nK0++; // K0
157  if(ghep_pdgc == kPdgAntiK0) nK0++; // K0
158  if(ghep_pdgc == kPdgLambda) nlambda++; // Lamda
159  if(ghep_pdgc == kPdgAntiLambda) nlambda++; // Lamda
160  if(ghep_pdgc == kPdgGamma) ngamma++; // photon
161  }
162  LOG("GHepUtils", pNOTICE)
163  << "Num of primary particles: \n p = " << np << ", n = " << nn
164  << ", pi+ = " << npip << ", pi- = " << npim << ", pi0 = " << npi0
165  << ", eta = " << neta
166  << ", K+ = " << nKp << ", K- = " << nKm << ", K0 = " << nK0
167  << ", Lambda's = " << nlambda
168  << ", gamma's = " << ngamma;
169 
170  int nnuc = np + nn;
171  int npi = npi0 + npip + npim;
172  int nK = nK0 + nKp + nKm;
173  int neKL = neta + nK + nlambda;
174 
175  bool is_radiative_dec = (nnuc==1) && (npi==0) && (ngamma==1);
176 
177  //
178  // single gamma from resonances
179  //
180 
181  if (is_res && is_nu && is_cc && is_n && is_radiative_dec) evtype = 17;
182  else if (is_res && is_nu && is_nc && is_n && is_radiative_dec) evtype = 38;
183  else if (is_res && is_nu && is_nc && is_p && is_radiative_dec) evtype = 39;
184 
185  else if (is_res && is_nubar && is_cc && is_p && is_radiative_dec) evtype = -17;
186  else if (is_res && is_nubar && is_nc && is_n && is_radiative_dec) evtype = -38;
187  else if (is_res && is_nubar && is_nc && is_p && is_radiative_dec) evtype = -39;
188 
189  //
190  // single pi (res + non-res bkg)
191  //
192 
193  // nu CC
194  else if (is_nu && is_cc && is_p && np==1 && nn==0 && npip==1 && npim==0 && npi0==0 && neKL==0) evtype = 11;
195  else if (is_nu && is_cc && is_n && np==1 && nn==0 && npip==0 && npim==0 && npi0==1 && neKL==0) evtype = 12;
196  else if (is_nu && is_cc && is_n && np==0 && nn==1 && npip==1 && npim==0 && npi0==0 && neKL==0) evtype = 13;
197 
198  // nu NC
199  else if (is_nu && is_nc && is_n && np==0 && nn==1 && npip==0 && npim==0 && npi0==1 && neKL==0) evtype = 31;
200  else if (is_nu && is_nc && is_p && np==1 && nn==0 && npip==0 && npim==0 && npi0==1 && neKL==0) evtype = 32;
201  else if (is_nu && is_nc && is_n && np==1 && nn==0 && npip==0 && npim==1 && npi0==0 && neKL==0) evtype = 33;
202  else if (is_nu && is_nc && is_p && np==0 && nn==1 && npip==1 && npim==0 && npi0==0 && neKL==0) evtype = 34;
203 
204  //nubar CC
205  else if (is_nubar && is_cc && is_n && np==0 && nn==1 && npip==0 && npim==1 && npi0==0 && neKL==0) evtype = -11;
206  else if (is_nubar && is_cc && is_p && np==0 && nn==1 && npip==0 && npim==0 && npi0==1 && neKL==0) evtype = -12;
207  else if (is_nubar && is_cc && is_p && np==1 && nn==0 && npip==0 && npim==1 && npi0==0 && neKL==0) evtype = -13;
208 
209  //nubar NC
210  else if (is_nubar && is_nc && is_n && np==0 && nn==1 && npip==0 && npim==0 && npi0==1 && neKL==0) evtype = -31;
211  else if (is_nubar && is_nc && is_p && np==1 && nn==0 && npip==0 && npim==0 && npi0==1 && neKL==0) evtype = -32;
212  else if (is_nubar && is_nc && is_n && np==1 && nn==0 && npip==0 && npim==1 && npi0==0 && neKL==0) evtype = -33;
213  else if (is_nubar && is_nc && is_p && np==0 && nn==1 && npip==1 && npim==0 && npi0==0 && neKL==0) evtype = -34;
214 
215  //
216  // single eta from res
217  //
218 
219  else if (is_res && is_nu && is_cc && is_n && np==1 && nn==0 && npi==0 && nK==0 && nlambda==0 && neta==1) evtype = 22;
220  else if (is_res && is_nu && is_nc && is_n && np==0 && nn==1 && npi==0 && nK==0 && nlambda==0 && neta==1) evtype = 42;
221  else if (is_res && is_nu && is_nc && is_p && np==1 && nn==0 && npi==0 && nK==0 && nlambda==0 && neta==1) evtype = 43;
222 
223  else if (is_res && is_nubar && is_cc && is_p && np==0 && nn==1 && npi==0 && nK==0 && nlambda==0 && neta==1) evtype = -22;
224  else if (is_res && is_nubar && is_nc && is_n && np==0 && nn==1 && npi==0 && nK==0 && nlambda==0 && neta==1) evtype = -42;
225  else if (is_res && is_nubar && is_nc && is_p && np==1 && nn==0 && npi==0 && nK==0 && nlambda==0 && neta==1) evtype = -43;
226 
227  //
228  // single K from res (dS=0)
229  //
230 
231  else if (is_res && is_nu && is_cc && is_n && nnuc==0 && npi==0 && nK==1 && nlambda==1 && neta==0) evtype = 23;
232  else if (is_res && is_nu && is_nc && is_n && nnuc==0 && npi==0 && nK==1 && nlambda==1 && neta==0) evtype = 44;
233  else if (is_res && is_nu && is_nc && is_p && nnuc==0 && npi==0 && nK==1 && nlambda==1 && neta==0) evtype = 45;
234 
235  else if (is_res && is_nubar && is_cc && is_p && nnuc==0 && npi==0 && nK==1 && nlambda==1 && neta==0) evtype = -23;
236  else if (is_res && is_nubar && is_nc && is_n && nnuc==0 && npi==0 && nK==1 && nlambda==1 && neta==0) evtype = -44;
237  else if (is_res && is_nubar && is_nc && is_p && nnuc==0 && npi==0 && nK==1 && nlambda==1 && neta==0) evtype = -45;
238 
239  //
240  // single K from AtharSingleKaon (dS=1)
241  //
242  //Those modes are assigned but not used (xsec=0) in NEUT
243  else if (is_ask && is_nu && is_cc && is_n && nn==1 && np==0 && nKp==1 && neKL==1) evtype = 18;
244  else if (is_ask && is_nu && is_cc && is_n && nn==0 && np==1 && nK0==1 && neKL==1) evtype = 19;
245  else if (is_ask && is_nu && is_cc && is_p && nn==0 && np==1 && nKp==1 && neKL==1) evtype = 20;
246 
247 
248  // antineutrino modes not yet implemented
249  //else if (is_ask && is_nubar && is_cc && is_n && nn==1 && np==0 && nKp==1 && neKL==1) evtype = -18;
250  //else if (is_ask && is_nubar && is_cc && is_n && nn==0 && np==1 && nK0==1 && neKL==1) evtype = -19;
251  //else if (is_ask && is_nubar && is_cc && is_p && nn==0 && np==1 && nKp==1 && neKL==1) evtype = -20;
252 
253  //
254  // multi-pi (res or dis (W<2GeV)
255  //
256 
257  else if (is_nu && is_cc && npi>1) evtype = 21;
258  else if (is_nu && is_nc && npi>1) evtype = 41;
259  else if (is_nubar && is_cc && npi>1) evtype = -21;
260  else if (is_nubar && is_nc && npi>1) evtype = -41;
261 
262  //
263  // rare final state for RES or low-W (<2GeV) DIS events
264  // (eg K0\bar{K0} final states, N0(1720) -> Sigma- K+ res decays, etc)
265  // bundled-in with multi-pi
266  //
267  else {
268  LOG("GHepUtils", pWARN)
269  << "Rare RES/low-W DIS final state: Bundled-in with multi-pi events";
270 
271  if (is_nu && is_cc) evtype = 21;
272  else if (is_nu && is_nc) evtype = 41;
273  else if (is_nubar && is_cc) evtype = -21;
274  else if (is_nubar && is_nc) evtype = -41;
275  }
276  }
277 
278  return evtype;
279 }
bool IsNeutrino(int pdgc)
Definition: PDGUtils.cxx:108
const int kPdgLambda
Definition: PDGCodes.h:69
enum genie::EGHepStatus GHepStatus_t
const char * p
Definition: xmltok.h:285
const int kPdgK0
Definition: PDGCodes.h:151
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
Definition: Messenger.h:97
const int kPdgKM
Definition: PDGCodes.h:150
const int kPdgGamma
Definition: PDGCodes.h:166
bool IsAntiNeutrino(int pdgc)
Definition: PDGUtils.cxx:116
const int kPdgKP
Definition: PDGCodes.h:149
const int kPdgEta
Definition: PDGCodes.h:138
const int kPdgPiP
Definition: PDGCodes.h:135
const int kPdgPi0
Definition: PDGCodes.h:137
const int kPdgAntiK0
Definition: PDGCodes.h:152
#define pWARN
Definition: Messenger.h:61
const int kPdgPiM
Definition: PDGCodes.h:136
const int kPdgProton
Definition: PDGCodes.h:65
#define pNOTICE
Definition: Messenger.h:62
const int kPdgAntiLambda
Definition: PDGCodes.h:70
const int kPdgNeutron
Definition: PDGCodes.h:67
int genie::utils::ghep::NuanceReactionCode ( const GHepRecord evrec)

Definition at line 281 of file GHepUtils.cxx.

References genie::Interaction::InitState(), genie::ProcessInfo::IsCoherent(), genie::ProcessInfo::IsDeepInelastic(), genie::ProcessInfo::IsInverseMuDecay(), genie::InitialState::IsNuBarN(), genie::InitialState::IsNuBarP(), genie::Target::IsNucleus(), genie::ProcessInfo::IsNuElectronElastic(), genie::InitialState::IsNuN(), genie::InitialState::IsNuP(), genie::ProcessInfo::IsQuasiElastic(), genie::ProcessInfo::IsResonant(), genie::ProcessInfo::IsWeakCC(), genie::ProcessInfo::IsWeakNC(), genie::kIStHadronInTheNucleus, genie::kIStStableFinalState, genie::kPdgNeutron, genie::kPdgPi0, genie::kPdgPiM, genie::kPdgPiP, genie::kPdgProton, LOG, genie::GHepParticle::Pdg(), genie::Interaction::ProcInfo(), pWARN, genie::GHepParticle::Status(), and genie::InitialState::Tgt().

Referenced by ConvertToGST(), ConvertToGTracker(), and supernova::SnovaGen::MakeMCTruth().

282 {
283 // Josh Spitz, Costas Andreopoulos
284 //
285  if(!event) {
286  LOG("GHepUtils", pWARN) << "Null event!";
287  return 0;
288  }
289 
290  int evtype = 0;
291 
292  Interaction * interaction = event->Summary();
293 
294  const ProcessInfo & proc = interaction->ProcInfo();
295  const InitialState & init = interaction->InitState();
296  if (proc.IsQuasiElastic() && proc.IsWeakCC()) evtype = 1;
297  else if (proc.IsQuasiElastic() && proc.IsWeakNC()) evtype = 2;
298  else if (proc.IsDeepInelastic() && proc.IsWeakCC()) evtype = 91;
299  else if (proc.IsDeepInelastic() && proc.IsWeakNC()) evtype = 92;
300  else if (proc.IsCoherent() && proc.IsWeakNC()) evtype = 96;
301  else if (proc.IsCoherent() && proc.IsWeakCC()) evtype = 97;
302  else if (proc.IsNuElectronElastic()) evtype = 98;
303  else if (proc.IsInverseMuDecay()) evtype = 99;
304  else if (proc.IsResonant()) {
305  int nn=0, np=0, npi0=0, npip=0, npim=0;
306  bool nuclear_target = init.Tgt().IsNucleus();
307  GHepStatus_t matched_ist = (nuclear_target) ?
309 
310  TIter event_iter(event);
311  GHepParticle * p = 0;
312 
313  while ( (p = dynamic_cast<GHepParticle *>(event_iter.Next())) )
314  {
315  GHepStatus_t ghep_ist = (GHepStatus_t) p->Status();
316  if(ghep_ist != matched_ist) continue;
317 
318  int ghep_pdgc = p->Pdg();
319  if(ghep_pdgc == kPdgProton ) np++;
320  if(ghep_pdgc == kPdgNeutron) nn++;
321  if(ghep_pdgc == kPdgPi0) npi0++;
322  if(ghep_pdgc == kPdgPiP) npip++;
323  if(ghep_pdgc == kPdgPiM) npim++;
324  }
325  if(proc.IsWeakCC() && init.IsNuP()) {
326  // v p -> l- p pi+
327  if(np==1 && nn==0 && npip==1 && npi0==0 && npim==0) evtype = 3;
328  }
329  if(proc.IsWeakCC() && init.IsNuN()) {
330  // v n -> l- p pi0
331  if(np==1 && nn==0 && npip==0 && npi0==1 && npim==0) evtype = 4;
332  // v n -> l- n pi+
333  if(np==0 && nn==1 && npip==1 && npi0==0 && npim==0) evtype = 5;
334  }
335  if(proc.IsWeakNC() && init.IsNuP()) {
336  // v p -> v p pi0
337  if(np==1 && nn==0 && npip==0 && npi0==1 && npim==0) evtype = 6;
338  // v p -> v n pi+
339  if(np==0 && nn==1 && npip==1 && npi0==0 && npim==0) evtype = 7;
340  }
341  if(proc.IsWeakNC() && init.IsNuN()) {
342  // v n -> v n pi0
343  if(np==0 && nn==1 && npip==0 && npi0==1 && npim==0) evtype = 8;
344  // v n -> v p pi-
345  if(np==1 && nn==0 && npip==0 && npi0==0 && npim==1) evtype = 9;
346  }
347  if(proc.IsWeakCC() && init.IsNuBarN()) {
348  // \bar{v} n -> l+ n pi-
349  if(np==1 && nn==0 && npip==1 && npi0==0 && npim==0) evtype = 10;
350  }
351  if(proc.IsWeakCC() && init.IsNuBarP()) {
352  // \bar{v} p -> l+ n pi0
353  if(np==1 && nn==0 && npip==0 && npi0==1 && npim==0) evtype = 11;
354  // \bar{v} p -> l+ p pi-
355  if(np==0 && nn==1 && npip==1 && npi0==0 && npim==0) evtype = 12;
356  }
357  if(proc.IsWeakNC() && init.IsNuBarP()) {
358  // \bar{v} p -> \bar{v} p pi0
359  if(np==1 && nn==0 && npip==0 && npi0==1 && npim==0) evtype = 13;
360  // \bar{v} p -> \bar{v} n pi+
361  if(np==0 && nn==1 && npip==1 && npi0==0 && npim==0) evtype = 14;
362  }
363  if(proc.IsWeakNC() && init.IsNuBarN()) {
364  // \bar{v} n -> \bar{v} n pi0
365  if(np==0 && nn==1 && npip==0 && npi0==1 && npim==0) evtype = 15;
366  // \bar{v} n -> \bar{v} p pi-
367  if(np==1 && nn==0 && npip==0 && npi0==0 && npim==1) evtype = 16;
368  }
369  }
370 
371  return evtype;
372 }
enum genie::EGHepStatus GHepStatus_t
const char * p
Definition: xmltok.h:285
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
Definition: Messenger.h:97
const int kPdgPiP
Definition: PDGCodes.h:135
const int kPdgPi0
Definition: PDGCodes.h:137
#define pWARN
Definition: Messenger.h:61
const int kPdgPiM
Definition: PDGCodes.h:136
const int kPdgProton
Definition: PDGCodes.h:65
const int kPdgNeutron
Definition: PDGCodes.h:67