9 #include "G4ParticleDefinition.hh"
10 #include "G4ParticleTypes.hh"
11 #include "G4DecayTable.hh"
15 #ifdef PDGTOG4PARTICLE_USE_SUSY
17 #include "Sleptons/G4SElectronMinus.hh"
18 #include "Sleptons/G4SElectronPlus.hh"
19 #include "Sleptons/G4SMuonMinus.hh"
20 #include "Sleptons/G4SMuonPlus.hh"
21 #include "Sleptons/G4STauMinus.hh"
22 #include "Sleptons/G4STauPlus.hh"
24 #include "Gauginos/G4Gravitino.hh"
25 #include "Gauginos/G4Neutralino.hh"
49 s_predefinedParticles.end());
57 PDGG4ParticleMap::const_iterator mapIt =
58 s_predefinedParticles.find( *pdgIt);
59 if( mapIt == s_predefinedParticles.end())
62 <<
" not found in list of predefined particles, ignoring" );
69 <<
" already loaded, ignoring" );
83 return StatusCode::SUCCESS;
94 G4ParticleDefinition* ret = 0;
96 PDGG4ParticleMap::const_iterator
it =
97 m_pdgG4ParticleMap.find( pdgCode);
99 if(
it != m_pdgG4ParticleMap.end()) ret =
it->second;
102 it = m_pdgG4ParticleMap.find( std::abs( pdgCode));
103 if(
it != m_pdgG4ParticleMap.end())
105 if( std::abs(
it->second->GetPDGCharge()) < 0.1)
110 <<
" " << -pdgCode <<
" exists but is charged!" );
122 std::vector<std::pair<int,std::string> >
125 std::vector<std::pair<int,std::string> > ret;
127 for( PDGG4ParticleMap::const_iterator
it = m_pdgG4ParticleMap.begin();
128 it != m_pdgG4ParticleMap.end(); ++
it)
133 ret.push_back( std::make_pair(
it->first,
it->second->GetParticleName()));
147 std::cout <<
"****************************************"
148 <<
"****************************************"
152 << std::setw( 8) <<
"PDG Code" <<
" "
153 << std::setw(16) <<
"Particle Name" <<
" "
154 << std::setw( 8) <<
"G4 PDGID" <<
" "
155 << std::setw( 8) <<
"Mass" <<
" "
156 << std::setw(16) <<
"Width" <<
" "
157 << std::setw( 6) <<
"Charge" <<
" "
158 << std::setw( 7) <<
"#DecChn" <<
" "
161 std::cout <<
"****************************************"
162 <<
"****************************************"
165 for( PDGG4ParticleMap::const_iterator
it = m_pdgG4ParticleMap.begin();
166 it != m_pdgG4ParticleMap.end(); ++
it)
168 G4DecayTable*
dt =
it->second->GetDecayTable();
169 int nDecayChannels = 0;
170 if(
dt) nDecayChannels =
dt->entries();
171 else if( withDecayTableOnly)
continue;
174 << std::setw( 8) <<
it->first <<
" "
175 << std::setw(16) <<
it->second->GetParticleName() <<
" "
176 << std::setw( 8) <<
it->second->GetPDGEncoding() <<
" "
177 << std::setw( 8) <<
it->second->GetPDGMass() <<
" "
178 << std::setw(16) <<
it->second->GetPDGWidth() <<
" "
179 << std::setw( 6) <<
it->second->GetPDGCharge() <<
" "
180 << std::setw( 7) << nDecayChannels <<
" "
184 std::cout <<
"****************************************"
185 <<
"****************************************"
193 std::map<int,G4ParticleDefinition*>
197 std::map<int,G4ParticleDefinition*> predefinedParticles;
200 auto addParticle = [&](G4ParticleDefinition* pDef) {
201 if (pDef) predefinedParticles[pDef->GetPDGEncoding()] = pDef;
205 addParticle( G4Gamma::GammaDefinition());
208 addParticle( G4Electron::ElectronDefinition());
209 addParticle( G4NeutrinoE::NeutrinoEDefinition());
210 addParticle( G4MuonMinus::MuonMinusDefinition());
211 addParticle( G4NeutrinoMu::NeutrinoMuDefinition());
212 addParticle( G4TauMinus::TauMinusDefinition());
213 addParticle( G4NeutrinoTau::NeutrinoTauDefinition());
214 addParticle( G4Positron::PositronDefinition());
215 addParticle( G4AntiNeutrinoE::AntiNeutrinoEDefinition());
216 addParticle( G4MuonPlus::MuonPlusDefinition());
217 addParticle( G4AntiNeutrinoMu::AntiNeutrinoMuDefinition());
218 addParticle( G4TauPlus::TauPlusDefinition());
219 addParticle( G4AntiNeutrinoTau::AntiNeutrinoTauDefinition());
222 addParticle( G4PionZero::PionZeroDefinition());
223 addParticle( G4PionPlus::PionPlusDefinition());
224 addParticle( G4PionMinus::PionMinusDefinition());
227 addParticle( G4Eta::EtaDefinition());
228 addParticle( G4EtaPrime::EtaPrimeDefinition());
231 addParticle( G4KaonZeroLong::KaonZeroLongDefinition());
232 addParticle( G4KaonZeroShort::KaonZeroShortDefinition());
233 addParticle( G4KaonZero::KaonZeroDefinition());
234 addParticle( G4KaonPlus::KaonPlusDefinition());
235 addParticle( G4AntiKaonZero::AntiKaonZeroDefinition());
236 addParticle( G4KaonMinus::KaonMinusDefinition());
239 addParticle( G4DMesonPlus::DMesonPlusDefinition());
240 addParticle( G4DMesonZero::DMesonZeroDefinition());
241 addParticle( G4DsMesonPlus::DsMesonPlusDefinition());
242 addParticle( G4DMesonMinus::DMesonMinusDefinition());
243 addParticle( G4AntiDMesonZero::AntiDMesonZeroDefinition());
244 addParticle( G4DsMesonMinus::DsMesonMinusDefinition());
247 addParticle( G4BMesonZero::BMesonZeroDefinition());
248 addParticle( G4BMesonPlus::BMesonPlusDefinition());
249 addParticle( G4BsMesonZero::BsMesonZeroDefinition());
250 addParticle( G4AntiBMesonZero::AntiBMesonZeroDefinition());
251 addParticle( G4BMesonMinus::BMesonMinusDefinition());
252 addParticle( G4AntiBsMesonZero::AntiBsMesonZeroDefinition());
255 addParticle( G4JPsi::JPsiDefinition());
258 addParticle( G4Proton::ProtonDefinition());
259 addParticle( G4Neutron::NeutronDefinition());
260 addParticle( G4AntiProton::AntiProtonDefinition());
261 addParticle( G4AntiNeutron::AntiNeutronDefinition());
264 addParticle( G4Lambda::LambdaDefinition());
265 addParticle( G4SigmaPlus::SigmaPlusDefinition());
266 addParticle( G4SigmaZero::SigmaZeroDefinition());
267 addParticle( G4SigmaMinus::SigmaMinusDefinition());
268 addParticle( G4XiZero::XiZeroDefinition());
269 addParticle( G4XiMinus::XiMinusDefinition());
270 addParticle( G4OmegaMinus::OmegaMinusDefinition());
271 addParticle( G4AntiLambda::AntiLambdaDefinition());
272 addParticle( G4AntiSigmaPlus::AntiSigmaPlusDefinition());
273 addParticle( G4AntiSigmaZero::AntiSigmaZeroDefinition());
274 addParticle( G4AntiSigmaMinus::AntiSigmaMinusDefinition());
275 addParticle( G4AntiXiZero::AntiXiZeroDefinition());
276 addParticle( G4AntiXiMinus::AntiXiMinusDefinition());
277 addParticle( G4AntiOmegaMinus::AntiOmegaMinusDefinition());
280 addParticle( G4LambdacPlus::LambdacPlusDefinition());
281 addParticle( G4SigmacPlusPlus::SigmacPlusPlusDefinition());
282 addParticle( G4SigmacPlus::SigmacPlusDefinition());
283 addParticle( G4SigmacZero::SigmacZeroDefinition());
284 addParticle( G4XicPlus::XicPlusDefinition());
285 addParticle( G4XicZero::XicZeroDefinition());
286 addParticle( G4OmegacZero::OmegacZeroDefinition());
287 addParticle( G4AntiLambdacPlus::AntiLambdacPlusDefinition());
288 addParticle( G4AntiSigmacPlusPlus::AntiSigmacPlusPlusDefinition());
289 addParticle( G4AntiSigmacPlus::AntiSigmacPlusDefinition());
290 addParticle( G4AntiSigmacZero::AntiSigmacZeroDefinition());
291 addParticle( G4AntiXicPlus::AntiXicPlusDefinition());
292 addParticle( G4AntiXicZero::AntiXicZeroDefinition());
293 addParticle( G4AntiOmegacZero::AntiOmegacZeroDefinition());
295 #ifdef PDGTOG4PARTICLE_USE_SUSY
297 addParticle( G4SElectronMinus::SElectronMinusDefinition());
298 addParticle( G4SElectronPlus::SElectronPlusDefinition());
299 addParticle( G4SMuonMinus::SMuonMinusDefinition());
300 addParticle( G4SMuonPlus::SMuonPlusDefinition());
301 addParticle( G4STauMinus::STauMinusDefinition());
302 addParticle( G4STauPlus::STauPlusDefinition());
305 return predefinedParticles;