Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4QPDGToG4Particle.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// $Id$
27//
28// ---------------- G4QG4ToG4Particle singletone class ------------------
29// by Mikhail Kossov, December 2003.
30// PDGCode->G4Particle convertor of the CHIPS Simulation Branch in GEANT4
31// ----------------------------------------------------------------------
32// ****************************************************************************************
33// ********** This CLASS is temporary moved from the photolepton_hadron directory *********
34// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ******
35// ****************************************************************************************
36// Short description: This is a helper class, which converts the PDG-defined
37// G4QHadrons of the CHIPS model to the G4 particles, defined by the singetones.
38// -----------------------------------------------------------------------------
39
40
41//#define pdebug
42
43#include "G4QPDGToG4Particle.hh"
45
46
48{
49 G4HadronicDeprecate("G4QPDGToG4Particle");
50}
51
52G4QPDGToG4Particle::~G4QPDGToG4Particle() // The map is distructed only in the EndOfJob
53{
54}
55
56// Returns Pointer to the G4QPDGToG4Particle
58{
59 static G4QPDGToG4Particle theMap; // *** Static body of the G4QPDGToG4Particle ***
60 return &theMap;
61}
62
64{
65 if(!PDG) return 0;
66 else if(PDG>0) // Positive PDG Code
67 {
68 if(PDG<100)
69 {
70 if(PDG==22) return G4Gamma::Gamma();
71 else if(PDG>10 && PDG<17)
72 {
73 if(PDG<13)
74 {
75 if(PDG==11) return G4Electron::Electron();
76 else return G4NeutrinoE::NeutrinoE();
77 }
78 else
79 {
80 if(PDG<15)
81 {
82 if(PDG==13) return G4MuonMinus::MuonMinus();
83 else return G4NeutrinoMu::NeutrinoMu();
84 }
85 else
86 {
87 if(PDG==15) return G4TauMinus::TauMinus();
88 else return G4NeutrinoTau::NeutrinoTau();
89 }
90 }
91 }
92 else return 0; // @@ Warning can be added
93 } // End of the Lepton definition
94 else if(PDG<1000)
95 {
96 if(PDG<420)
97 {
98 if(PDG<320)
99 {
100 if(PDG==211) return G4PionPlus::PionPlus();
101 else if(PDG==111) return G4PionZero::PionZero();
102 else if(PDG==130) return G4KaonZeroLong::KaonZeroLong();
103 else if(PDG==221) return G4Eta::Eta();
104 else if(PDG==311) return G4KaonZero::KaonZero();
105 else return 0; // @@ Warning can be added
106 }
107 else
108 {
109 if(PDG==321) return G4KaonPlus::KaonPlus();
110 else if(PDG==331) return G4EtaPrime::EtaPrime();
111 else if(PDG==310) return G4KaonZeroShort::KaonZeroShort();
112 else if(PDG==411) return G4DMesonPlus::DMesonPlus();
113 else return 0; // @@ Warning can be added
114 }
115 }
116 else
117 {
118 if(PDG<500)
119 {
120 if(PDG==421) return G4DMesonZero::DMesonZero();
121 else if(PDG==431) return G4DsMesonPlus::DsMesonPlus();
122 else if(PDG==443) return G4JPsi::JPsi();
123 else return 0; // @@ Warning can be added
124 }
125 else
126 {
127 if(PDG==521) return G4BMesonPlus::BMesonPlus();
128 else if(PDG==511) return G4BMesonZero::BMesonZero();
129 else if(PDG==531) return G4BsMesonZero::BsMesonZero();
130 else return 0; // @@ Warning can be added
131 }
132 }
133 } // Emd of the Meson definition
134 else
135 {
136 if(PDG<3333)
137 {
138 if(PDG<3211)
139 {
140 if(PDG<3111)
141 {
142 if(PDG==2112) return G4Neutron::Neutron();
143 else if(PDG==2212) return G4Proton::Proton();
144 else return 0; // @@ Warning can be added
145 }
146 else
147 {
148 if(PDG==3112) return G4SigmaMinus::SigmaMinus();
149 else if(PDG==3122) return G4Lambda::Lambda();
150 else return 0; // @@ Warning can be added
151 }
152 }
153 else
154 {
155 if(PDG<3311)
156 {
157 if(PDG==3222) return G4SigmaPlus::SigmaPlus();
158 else if(PDG==3212) return G4SigmaZero::SigmaZero();
159 else return 0; // @@ Warning can be added
160 }
161 else
162 {
163 if(PDG==3312) return G4XiMinus::XiMinus();
164 else if(PDG==3322) return G4XiZero::XiZero();
165 else return 0; // @@ Warning can be added
166 }
167 }
168 }
169 else
170 {
171 if(PDG<4221)
172 {
173 if(PDG<4121)
174 {
175 if(PDG==3334) return G4OmegaMinus::OmegaMinus();
176 else if(PDG==4112) return G4SigmacZero::SigmacZero();
177 else return 0; // @@ Warning can be added
178 }
179 else
180 {
181 if(PDG==4122) return G4LambdacPlus::LambdacPlus();
182 else if(PDG==4212) return G4SigmacPlus::SigmacPlus();
183 else return 0; // @@ Warning can be added
184 }
185 }
186 else
187 {
188 if(PDG<4231)
189 {
190 if(PDG==4222) return G4SigmacPlusPlus::SigmacPlusPlus();
191 else if(PDG==4232) return G4XicPlus::XicPlus();
192 else return 0; // @@ Warning can be added
193 }
194 else
195 {
196 if(PDG==4132) return G4XicZero::XicZero();
197 else if(PDG==4332) return G4OmegacZero::OmegacZero();
198 else return 0; // @@ Warning can be added
199 }
200 }
201 }
202 } // End of Baryon definition
203 }
204 else // Negative PDG Code
205 {
206 G4int aPDG=-PDG;
207#ifdef pdebug
208 G4cout<<"G4QPDGToG4Particle:Antiparticle PDG="<<PDG<<G4endl;
209#endif
210 if(aPDG<100)
211 {
212 if(aPDG>10 && aPDG<17)
213 {
214 if(aPDG<13)
215 {
216 if(aPDG==11) return G4Positron::Positron();
217 else return G4AntiNeutrinoE::AntiNeutrinoE();
218 }
219 else
220 {
221 if(aPDG<15)
222 {
223 if(aPDG==13) return G4MuonPlus::MuonPlus();
225 }
226 else
227 {
228 if(aPDG==15) return G4TauPlus::TauPlus();
230 }
231 }
232 }
233 else return 0; // @@ Warning can be added
234 } // End of the Anti-Lepton definition
235 else if(aPDG<1000)
236 {
237#ifdef pdebug
238 G4cout<<"G4QPDGToG4Particle:AntiMesons aPDG="<<aPDG<<G4endl;
239#endif
240 if(aPDG<420)
241 {
242#ifdef pdebug
243 G4cout<<"G4QPDGToG4Particle:AntiSU(3)Mesons aPDG="<<aPDG<<G4endl;
244#endif
245 if(aPDG<320)
246 {
247#ifdef pdebug
248 G4cout<<"G4QPDGToG4Particle:AntiPi&KMesons aPDG="<<aPDG<<G4endl;
249#endif
250 if(aPDG==211) return G4PionMinus::PionMinus();
251 else if(aPDG==311) return G4AntiKaonZero::AntiKaonZero();
252 else return 0; // @@ Warning can be added
253 }
254 else
255 {
256#ifdef pdebug
257 G4cout<<"G4QPDGToG4Particle:AntiK&DMesons aPDG="<<aPDG<<G4endl;
258#endif
259 if(aPDG==321)
260 {
261#ifdef pdebug
262 G4cout<<"G4QPDGToG4Particle:KaonMinus aPDG="<<aPDG<<G4endl;
263#endif
264 return G4KaonMinus::KaonMinus();
265 }
266 else if(aPDG==411) return G4DMesonMinus::DMesonMinus();
267 else return 0; // @@ Warning can be added
268 }
269 }
270 else
271 {
272 if(aPDG<500)
273 {
274 if(aPDG==421) return G4AntiDMesonZero::AntiDMesonZero();
275 else if(aPDG==431) return G4DsMesonMinus::DsMesonMinus();
276 else return 0; // @@ Warning can be added
277 }
278 else
279 {
280 if(aPDG==521) return G4BMesonMinus::BMesonMinus();
281 else if(aPDG==511) return G4AntiBMesonZero::AntiBMesonZero();
282 else if(aPDG==531) return G4AntiBsMesonZero::AntiBsMesonZero();
283 else return 0; // @@ Warning can be added
284 }
285 }
286 } // Emd of the Anti-Meson definition
287 else
288 {
289 if(aPDG<3333)
290 {
291 if(aPDG<3211)
292 {
293 if(aPDG<3111)
294 {
295 if(aPDG==2112) return G4AntiNeutron::AntiNeutron();
296 else if(aPDG==2212) return G4AntiProton::AntiProton();
297 else return 0; // @@ Warning can be added
298 }
299 else
300 {
301 if(aPDG==3112) return G4AntiSigmaMinus::AntiSigmaMinus();
302 else if(aPDG==3122) return G4AntiLambda::AntiLambda();
303 else return 0; // @@ Warning can be added
304 }
305 }
306 else
307 {
308 if(aPDG<3311)
309 {
310 if(aPDG==3222) return G4AntiSigmaPlus::AntiSigmaPlus();
311 else if(aPDG==3212) return G4AntiSigmaZero::AntiSigmaZero();
312 else return 0; // @@ Warning can be added
313 }
314 else
315 {
316 if(aPDG==3312) return G4AntiXiMinus::AntiXiMinus();
317 else if(aPDG==3322) return G4AntiXiZero::AntiXiZero();
318 else return 0; // @@ Warning can be added
319 }
320 }
321 }
322 else
323 {
324 if(aPDG<4221)
325 {
326 if(aPDG<4121)
327 {
328 if(aPDG==3334) return G4AntiOmegaMinus::AntiOmegaMinus();
329 else if(aPDG==4112) return G4AntiSigmacZero::AntiSigmacZero();
330 else return 0; // @@ Warning can be added
331 }
332 else
333 {
334 if(aPDG==4122) return G4AntiLambdacPlus::AntiLambdacPlus();
335 else if(aPDG==4212) return G4AntiSigmacPlus::AntiSigmacPlus();
336 else return 0; // @@ Warning can be added
337 }
338 }
339 else
340 {
341 if(aPDG<4231)
342 {
343 if(aPDG==4222) return G4AntiSigmacPlusPlus::AntiSigmacPlusPlus();
344 else if(aPDG==4232) return G4AntiXicPlus::AntiXicPlus();
345 else return 0; // @@ Warning can be added
346 }
347 else
348 {
349 if(aPDG==4132) return G4AntiXicZero::AntiXicZero();
350 else if(aPDG==4332) return G4AntiOmegacZero::AntiOmegacZero();
351 else return 0; // @@ Warning can be added
352 }
353 }
354 }
355 } // End of Anti-Baryon definition
356 } // End of Anti-particle definition
357 return 0;
358}
359
361{
362 //=---------= LEPTONS =---------------=
376 //=--------------= MESONS =---------------=
401 // =---------= BARYONS =-----------=
434}
#define G4HadronicDeprecate(name)
int G4int
Definition: G4Types.hh:66
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
static G4AntiBMesonZero * AntiBMesonZero()
static G4AntiBMesonZero * AntiBMesonZeroDefinition()
static G4AntiBsMesonZero * AntiBsMesonZeroDefinition()
static G4AntiBsMesonZero * AntiBsMesonZero()
static G4AntiDMesonZero * AntiDMesonZero()
static G4AntiDMesonZero * AntiDMesonZeroDefinition()
static G4AntiKaonZero * AntiKaonZero()
static G4AntiKaonZero * AntiKaonZeroDefinition()
static G4AntiLambda * AntiLambdaDefinition()
static G4AntiLambda * AntiLambda()
static G4AntiLambdacPlus * AntiLambdacPlusDefinition()
static G4AntiLambdacPlus * AntiLambdacPlus()
static G4AntiNeutrinoE * AntiNeutrinoE()
static G4AntiNeutrinoE * AntiNeutrinoEDefinition()
static G4AntiNeutrinoMu * AntiNeutrinoMu()
static G4AntiNeutrinoMu * AntiNeutrinoMuDefinition()
static G4AntiNeutrinoTau * AntiNeutrinoTau()
static G4AntiNeutrinoTau * AntiNeutrinoTauDefinition()
static G4AntiNeutron * AntiNeutronDefinition()
static G4AntiNeutron * AntiNeutron()
static G4AntiOmegaMinus * AntiOmegaMinus()
static G4AntiOmegaMinus * AntiOmegaMinusDefinition()
static G4AntiOmegacZero * AntiOmegacZeroDefinition()
static G4AntiOmegacZero * AntiOmegacZero()
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:93
static G4AntiProton * AntiProtonDefinition()
Definition: G4AntiProton.cc:88
static G4AntiSigmaMinus * AntiSigmaMinus()
static G4AntiSigmaMinus * AntiSigmaMinusDefinition()
static G4AntiSigmaPlus * AntiSigmaPlusDefinition()
static G4AntiSigmaPlus * AntiSigmaPlus()
static G4AntiSigmaZero * AntiSigmaZero()
static G4AntiSigmaZero * AntiSigmaZeroDefinition()
static G4AntiSigmacPlusPlus * AntiSigmacPlusPlusDefinition()
static G4AntiSigmacPlusPlus * AntiSigmacPlusPlus()
static G4AntiSigmacPlus * AntiSigmacPlus()
static G4AntiSigmacPlus * AntiSigmacPlusDefinition()
static G4AntiSigmacZero * AntiSigmacZeroDefinition()
static G4AntiSigmacZero * AntiSigmacZero()
static G4AntiXiMinus * AntiXiMinusDefinition()
static G4AntiXiMinus * AntiXiMinus()
static G4AntiXiZero * AntiXiZero()
static G4AntiXiZero * AntiXiZeroDefinition()
static G4AntiXicPlus * AntiXicPlusDefinition()
static G4AntiXicPlus * AntiXicPlus()
static G4AntiXicZero * AntiXicZero()
static G4AntiXicZero * AntiXicZeroDefinition()
static G4BMesonMinus * BMesonMinus()
static G4BMesonMinus * BMesonMinusDefinition()
static G4BMesonPlus * BMesonPlusDefinition()
Definition: G4BMesonPlus.cc:79
static G4BMesonPlus * BMesonPlus()
Definition: G4BMesonPlus.cc:84
static G4BMesonZero * BMesonZero()
Definition: G4BMesonZero.cc:84
static G4BMesonZero * BMesonZeroDefinition()
Definition: G4BMesonZero.cc:79
static G4BsMesonZero * BsMesonZeroDefinition()
static G4BsMesonZero * BsMesonZero()
static G4DMesonMinus * DMesonMinus()
static G4DMesonMinus * DMesonMinusDefinition()
static G4DMesonPlus * DMesonPlusDefinition()
Definition: G4DMesonPlus.cc:80
static G4DMesonPlus * DMesonPlus()
Definition: G4DMesonPlus.cc:85
static G4DMesonZero * DMesonZero()
Definition: G4DMesonZero.cc:84
static G4DMesonZero * DMesonZeroDefinition()
Definition: G4DMesonZero.cc:79
static G4DsMesonMinus * DsMesonMinus()
static G4DsMesonMinus * DsMesonMinusDefinition()
static G4DsMesonPlus * DsMesonPlus()
static G4DsMesonPlus * DsMesonPlusDefinition()
static G4Electron * ElectronDefinition()
Definition: G4Electron.cc:89
static G4Electron * Electron()
Definition: G4Electron.cc:94
static G4EtaPrime * EtaPrimeDefinition()
Definition: G4EtaPrime.cc:100
static G4EtaPrime * EtaPrime()
Definition: G4EtaPrime.cc:105
static G4Eta * Eta()
Definition: G4Eta.cc:109
static G4Eta * EtaDefinition()
Definition: G4Eta.cc:104
static G4Gamma * GammaDefinition()
Definition: G4Gamma.cc:81
static G4Gamma * Gamma()
Definition: G4Gamma.cc:86
static G4JPsi * JPsiDefinition()
Definition: G4JPsi.cc:79
static G4JPsi * JPsi()
Definition: G4JPsi.cc:84
static G4KaonMinus * KaonMinusDefinition()
Definition: G4KaonMinus.cc:108
static G4KaonMinus * KaonMinus()
Definition: G4KaonMinus.cc:113
static G4KaonPlus * KaonPlus()
Definition: G4KaonPlus.cc:113
static G4KaonPlus * KaonPlusDefinition()
Definition: G4KaonPlus.cc:108
static G4KaonZeroLong * KaonZeroLong()
static G4KaonZeroLong * KaonZeroLongDefinition()
static G4KaonZeroShort * KaonZeroShortDefinition()
static G4KaonZeroShort * KaonZeroShort()
static G4KaonZero * KaonZero()
Definition: G4KaonZero.cc:104
static G4KaonZero * KaonZeroDefinition()
Definition: G4KaonZero.cc:99
static G4Lambda * Lambda()
Definition: G4Lambda.cc:108
static G4Lambda * LambdaDefinition()
Definition: G4Lambda.cc:103
static G4LambdacPlus * LambdacPlus()
static G4LambdacPlus * LambdacPlusDefinition()
static G4MuonMinus * MuonMinus()
Definition: G4MuonMinus.cc:100
static G4MuonMinus * MuonMinusDefinition()
Definition: G4MuonMinus.cc:95
static G4MuonPlus * MuonPlusDefinition()
Definition: G4MuonPlus.cc:94
static G4MuonPlus * MuonPlus()
Definition: G4MuonPlus.cc:99
static G4NeutrinoE * NeutrinoEDefinition()
Definition: G4NeutrinoE.cc:80
static G4NeutrinoE * NeutrinoE()
Definition: G4NeutrinoE.cc:85
static G4NeutrinoMu * NeutrinoMu()
Definition: G4NeutrinoMu.cc:85
static G4NeutrinoMu * NeutrinoMuDefinition()
Definition: G4NeutrinoMu.cc:80
static G4NeutrinoTau * NeutrinoTauDefinition()
static G4NeutrinoTau * NeutrinoTau()
static G4Neutron * NeutronDefinition()
Definition: G4Neutron.cc:99
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
static G4OmegaMinus * OmegaMinus()
static G4OmegaMinus * OmegaMinusDefinition()
static G4OmegacZero * OmegacZeroDefinition()
Definition: G4OmegacZero.cc:83
static G4OmegacZero * OmegacZero()
Definition: G4OmegacZero.cc:88
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:98
static G4PionMinus * PionMinusDefinition()
Definition: G4PionMinus.cc:93
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:98
static G4PionPlus * PionPlusDefinition()
Definition: G4PionPlus.cc:93
static G4PionZero * PionZeroDefinition()
Definition: G4PionZero.cc:99
static G4PionZero * PionZero()
Definition: G4PionZero.cc:104
static G4Positron * Positron()
Definition: G4Positron.cc:94
static G4Positron * PositronDefinition()
Definition: G4Positron.cc:89
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:88
static G4Proton * Proton()
Definition: G4Proton.cc:93
G4ParticleDefinition * GetParticleDefinition(G4int PDGCode)
static G4QPDGToG4Particle * Get()
static G4SigmaMinus * SigmaMinus()
static G4SigmaMinus * SigmaMinusDefinition()
static G4SigmaPlus * SigmaPlusDefinition()
Definition: G4SigmaPlus.cc:103
static G4SigmaPlus * SigmaPlus()
Definition: G4SigmaPlus.cc:108
static G4SigmaZero * SigmaZeroDefinition()
Definition: G4SigmaZero.cc:94
static G4SigmaZero * SigmaZero()
Definition: G4SigmaZero.cc:99
static G4SigmacPlusPlus * SigmacPlusPlus()
static G4SigmacPlusPlus * SigmacPlusPlusDefinition()
static G4SigmacPlus * SigmacPlus()
static G4SigmacPlus * SigmacPlusDefinition()
Definition: G4SigmacPlus.cc:95
static G4SigmacZero * SigmacZeroDefinition()
Definition: G4SigmacZero.cc:95
static G4SigmacZero * SigmacZero()
static G4TauMinus * TauMinusDefinition()
Definition: G4TauMinus.cc:130
static G4TauMinus * TauMinus()
Definition: G4TauMinus.cc:135
static G4TauPlus * TauPlus()
Definition: G4TauPlus.cc:134
static G4TauPlus * TauPlusDefinition()
Definition: G4TauPlus.cc:129
static G4XiMinus * XiMinusDefinition()
Definition: G4XiMinus.cc:101
static G4XiMinus * XiMinus()
Definition: G4XiMinus.cc:106
static G4XiZero * XiZero()
Definition: G4XiZero.cc:106
static G4XiZero * XiZeroDefinition()
Definition: G4XiZero.cc:101
static G4XicPlus * XicPlus()
Definition: G4XicPlus.cc:88
static G4XicPlus * XicPlusDefinition()
Definition: G4XicPlus.cc:83
static G4XicZero * XicZeroDefinition()
Definition: G4XicZero.cc:83
static G4XicZero * XicZero()
Definition: G4XicZero.cc:88