Import Geant4 11.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2023-12-08 10:43:34 +01:00
parent dd1f179cda
commit 860a2b92bf
3962 changed files with 139318 additions and 164259 deletions
+20 -27
View File
@@ -23,9 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
@@ -36,34 +33,32 @@
// ----------------------------------------------------------------------
#include "G4Alpha.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### ALPHA ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
G4Alpha* G4Alpha::theInstance = nullptr;
G4Alpha* G4Alpha::Definition()
{
if (theInstance !=nullptr) return theInstance;
if (theInstance != nullptr) return theInstance;
const G4String name = "alpha";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance ==nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// clang-format off
anInstance = new G4Ions(
name, 3.727379*GeV, 0.0*MeV, +2.0*eplus,
0, +1, 0,
@@ -73,21 +68,19 @@ G4Alpha* G4Alpha::Definition()
false, "static", -1000020040,
0.0, 0
);
// clang-format on
}
theInstance = static_cast<G4Alpha*>(anInstance);
return theInstance;
}
G4Alpha* G4Alpha::AlphaDefinition()
G4Alpha* G4Alpha::AlphaDefinition()
{
return Definition();
}
G4Alpha* G4Alpha::Alpha()
G4Alpha* G4Alpha::Alpha()
{
return Definition();
}
@@ -23,9 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
@@ -36,34 +33,33 @@
// ----------------------------------------------------------------------
#include "G4AntiAlpha.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### ANTI ALPHA ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
G4AntiAlpha* G4AntiAlpha::theInstance = nullptr;
G4AntiAlpha* G4AntiAlpha::Definition()
{
if (theInstance !=nullptr) return theInstance;
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_alpha";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance ==nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// clang-format off
anInstance = new G4Ions(
name, 3.727379*GeV, 0.0*MeV, -2.0*eplus,
0, +1, 0,
@@ -73,21 +69,19 @@ G4AntiAlpha* G4AntiAlpha::Definition()
false, "static", 1000020040,
0.0, 0
);
// clang-format on
}
theInstance = static_cast<G4AntiAlpha*>(anInstance);
return theInstance;
}
G4AntiAlpha* G4AntiAlpha::AntiAlphaDefinition()
G4AntiAlpha* G4AntiAlpha::AntiAlphaDefinition()
{
return Definition();
}
G4AntiAlpha* G4AntiAlpha::AntiAlpha()
G4AntiAlpha* G4AntiAlpha::AntiAlpha()
{
return Definition();
}
@@ -23,9 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
@@ -36,35 +33,35 @@
// ----------------------------------------------------------------------
#include "G4AntiDeuteron.hh"
#include "G4SystemOfUnits.hh"
#include "G4PhysicalConstants.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### ANTI DEUTERON ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
G4AntiDeuteron* G4AntiDeuteron::theInstance = nullptr;
G4AntiDeuteron* G4AntiDeuteron::Definition()
{
if (theInstance !=nullptr) return theInstance;
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_deuteron";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance ==nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// clang-format off
anInstance = new G4Ions(
name, 1.875613*GeV, 0.0*MeV, -1.0*eplus,
2, +1, 0,
@@ -74,24 +71,23 @@ G4AntiDeuteron* G4AntiDeuteron::Definition()
false, "static", 1000010020,
0.0, 0
);
// clang-format on
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2./(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( -0.857438230 * mN);
G4double mN = eplus * hbar_Planck / 2. / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(-0.857438230 * mN);
}
theInstance = static_cast<G4AntiDeuteron*>(anInstance);
return theInstance;
}
G4AntiDeuteron* G4AntiDeuteron::AntiDeuteronDefinition()
G4AntiDeuteron* G4AntiDeuteron::AntiDeuteronDefinition()
{
return Definition();
}
G4AntiDeuteron* G4AntiDeuteron::AntiDeuteron()
G4AntiDeuteron* G4AntiDeuteron::AntiDeuteron()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4AntiDoubleHyperDoubleNeutron.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ######################################################################
// ### ANTI DOUBLEHYPERDOUBLENEUTRON ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4AntiDoubleHyperDoubleNeutron* G4AntiDoubleHyperDoubleNeutron::theInstance = nullptr;
G4AntiDoubleHyperDoubleNeutron* G4AntiDoubleHyperDoubleNeutron::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4AntiDoubleHyperDoubleNeutron* G4AntiDoubleHyperDoubleNeutron::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_doublehyperdoubleneutron";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4AntiDoubleHyperDoubleNeutron* G4AntiDoubleHyperDoubleNeutron::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 4110.24*MeV, 2.501e-12*MeV, 0.0*eplus,
0, +1, 0,
0, 0, 0,
@@ -66,38 +67,44 @@ G4AntiDoubleHyperDoubleNeutron* G4AntiDoubleHyperDoubleNeutron::Definition() {
false, 0.2631*ns, nullptr,
false, "static", 1020000040,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
const G4double half_br_lambda_to_p_pim = 0.5 * 0.639;
const G4double br_lambda_to_n_piz = 0.358;
auto mode = new G4VDecayChannel*[3];
auto mode = new G4VDecayChannel*[3];
// anti_lambda -> anti_proton + pi+ , with 50% probability of capturing the anti_proton
mode[0] = new G4PhaseSpaceDecayChannel( "anti_doublehyperdoubleneutron", half_br_lambda_to_p_pim, 5,
"anti_neutron", "anti_neutron", "anti_lambda", "anti_proton", "pi+" );
mode[1] = new G4PhaseSpaceDecayChannel( "anti_doublehyperdoubleneutron", half_br_lambda_to_p_pim, 2,
"anti_hyperH4", "pi+" );
mode[0] = new G4PhaseSpaceDecayChannel("anti_doublehyperdoubleneutron", half_br_lambda_to_p_pim,
5, "anti_neutron", "anti_neutron", "anti_lambda",
"anti_proton", "pi+");
mode[1] = new G4PhaseSpaceDecayChannel("anti_doublehyperdoubleneutron", half_br_lambda_to_p_pim,
2, "anti_hyperH4", "pi+");
// anti_lambda -> anti_neutron + pi0 , without any possibility of capturing the anti_neutron
mode[2] = new G4PhaseSpaceDecayChannel( "anti_doublehyperdoubleneutron", br_lambda_to_n_piz, 5,
"anti_neutron", "anti_neutron", "anti_lambda", "anti_neutron", "pi0" );
for ( G4int index = 0; index < 3; ++index ) table->Insert( mode[index] );
delete [] mode;
anInstance->SetDecayTable( table );
mode[2] = new G4PhaseSpaceDecayChannel("anti_doublehyperdoubleneutron", br_lambda_to_n_piz, 5,
"anti_neutron", "anti_neutron", "anti_lambda",
"anti_neutron", "pi0");
for (G4int index = 0; index < 3; ++index)
table->Insert(mode[index]);
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4AntiDoubleHyperDoubleNeutron* >( anInstance );
theInstance = static_cast<G4AntiDoubleHyperDoubleNeutron*>(anInstance);
return theInstance;
}
G4AntiDoubleHyperDoubleNeutron* G4AntiDoubleHyperDoubleNeutron::AntiDoubleHyperDoubleNeutronDefinition() {
G4AntiDoubleHyperDoubleNeutron*
G4AntiDoubleHyperDoubleNeutron::AntiDoubleHyperDoubleNeutronDefinition()
{
return Definition();
}
G4AntiDoubleHyperDoubleNeutron* G4AntiDoubleHyperDoubleNeutron::AntiDoubleHyperDoubleNeutron() {
G4AntiDoubleHyperDoubleNeutron* G4AntiDoubleHyperDoubleNeutron::AntiDoubleHyperDoubleNeutron()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4AntiDoubleHyperH4.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ###############################################################
// ### ANTI DOUBLEHYPERH4 ###
// ###############################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4AntiDoubleHyperH4* G4AntiDoubleHyperH4::theInstance = nullptr;
G4AntiDoubleHyperH4* G4AntiDoubleHyperH4::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4AntiDoubleHyperH4* G4AntiDoubleHyperH4::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_doublehyperH4";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4AntiDoubleHyperH4* G4AntiDoubleHyperH4::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 4106.72*MeV, 2.501e-12*MeV, -1.0*eplus,
4, +1, 0,
0, 0, 0,
@@ -66,40 +67,43 @@ G4AntiDoubleHyperH4* G4AntiDoubleHyperH4::Definition() {
false, 0.2631*ns, nullptr,
false, "static", 1020010040,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
const G4double half_br_lambda_to_n_piz = 0.5*0.358;
auto mode = new G4VDecayChannel*[4];
const G4double half_br_lambda_to_p_pim = 0.5 * 0.639;
const G4double half_br_lambda_to_n_piz = 0.5 * 0.358;
auto mode = new G4VDecayChannel*[4];
// anti_lambda -> anti_proton + pi+ , with 50% probability of capturing the anti_proton
mode[0] = new G4PhaseSpaceDecayChannel( "anti_doublehyperH4", half_br_lambda_to_p_pim, 3,
"anti_hypertriton", "anti_proton", "pi+" );
mode[1] = new G4PhaseSpaceDecayChannel( "anti_doublehyperH4", half_br_lambda_to_p_pim, 2,
"anti_hyperalpha", "pi+" );
mode[0] = new G4PhaseSpaceDecayChannel("anti_doublehyperH4", half_br_lambda_to_p_pim, 3,
"anti_hypertriton", "anti_proton", "pi+");
mode[1] = new G4PhaseSpaceDecayChannel("anti_doublehyperH4", half_br_lambda_to_p_pim, 2,
"anti_hyperalpha", "pi+");
// anti_lambda -> anti_neutron + pi0 , with 50% probability of capturing the anti_neutron
mode[2] = new G4PhaseSpaceDecayChannel( "anti_doublehyperH4", half_br_lambda_to_n_piz, 3,
"anti_hypertriton", "anti_neutron", "pi0" );
mode[3] = new G4PhaseSpaceDecayChannel( "anti_doublehyperH4", half_br_lambda_to_n_piz, 2,
"anti_hyperH4", "pi0" );
for ( G4int index = 0; index < 4; ++index ) table->Insert( mode[index] );
delete [] mode;
anInstance->SetDecayTable( table );
mode[2] = new G4PhaseSpaceDecayChannel("anti_doublehyperH4", half_br_lambda_to_n_piz, 3,
"anti_hypertriton", "anti_neutron", "pi0");
mode[3] = new G4PhaseSpaceDecayChannel("anti_doublehyperH4", half_br_lambda_to_n_piz, 2,
"anti_hyperH4", "pi0");
for (G4int index = 0; index < 4; ++index)
table->Insert(mode[index]);
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4AntiDoubleHyperH4* >( anInstance );
theInstance = static_cast<G4AntiDoubleHyperH4*>(anInstance);
return theInstance;
}
G4AntiDoubleHyperH4* G4AntiDoubleHyperH4::AntiDoubleHyperH4Definition() {
G4AntiDoubleHyperH4* G4AntiDoubleHyperH4::AntiDoubleHyperH4Definition()
{
return Definition();
}
G4AntiDoubleHyperH4* G4AntiDoubleHyperH4::AntiDoubleHyperH4() {
G4AntiDoubleHyperH4* G4AntiDoubleHyperH4::AntiDoubleHyperH4()
{
return Definition();
}
+26 -31
View File
@@ -23,9 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
@@ -36,35 +33,35 @@
// ----------------------------------------------------------------------
#include "G4AntiHe3.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### ANTI He3 ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
G4AntiHe3* G4AntiHe3::theInstance = nullptr;
G4AntiHe3* G4AntiHe3::Definition()
{
if (theInstance !=nullptr) return theInstance;
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_He3";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance ==nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// clang-format off
anInstance = new G4Ions(
name, 2.808391*GeV, 0.0*MeV, -2.0*eplus,
1, +1, 0,
@@ -74,25 +71,23 @@ G4AntiHe3* G4AntiHe3::Definition()
false, "static", 1000020030,
0.0, 0
);
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2./(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.12762485 * mN);
// clang-format on
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2. / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.12762485 * mN);
}
theInstance = static_cast<G4AntiHe3*>(anInstance);
return theInstance;
}
G4AntiHe3* G4AntiHe3::AntiHe3Definition()
G4AntiHe3* G4AntiHe3::AntiHe3Definition()
{
return Definition();
}
G4AntiHe3* G4AntiHe3::AntiHe3()
G4AntiHe3* G4AntiHe3::AntiHe3()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4AntiHyperAlpha.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ######################################################################
// ### ANTI HYPERALPHA ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4AntiHyperAlpha* G4AntiHyperAlpha::theInstance = nullptr;
G4AntiHyperAlpha* G4AntiHyperAlpha::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4AntiHyperAlpha* G4AntiHyperAlpha::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_hyperalpha";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4AntiHyperAlpha* G4AntiHyperAlpha::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 3921.87*MeV, 2.501e-12*MeV, -2.0*eplus,
0, +1, 0,
0, 0, 0,
@@ -66,15 +67,17 @@ G4AntiHyperAlpha* G4AntiHyperAlpha::Definition() {
false, 0.2631*ns, nullptr,
false, "static", 1010020040,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
/*
// The decay "mode[1]" produces the secondary "anti_Li4" which is not existing
/*
// The decay "mode[1]" produces the secondary "anti_Li4" which is not existing
// in Geant4: we therefore skip it for the time being (similarly for hyperalpha,
// to keep the symmetry between particle and anti-particle).
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
@@ -94,31 +97,32 @@ G4AntiHyperAlpha* G4AntiHyperAlpha::Definition() {
*/
// Replacement decay for the time being
const G4double br_lambda_to_p_pim = 0.639;
const G4double half_br_lambda_to_n_piz = 0.5*0.358;
auto mode = new G4VDecayChannel*[3];
const G4double half_br_lambda_to_n_piz = 0.5 * 0.358;
auto mode = new G4VDecayChannel*[3];
// anti_lambda -> anti_proton + pi+ , with 0% probability of capturing the anti_proton
mode[0] = new G4PhaseSpaceDecayChannel( "anti_hyperalpha", br_lambda_to_p_pim, 3,
"anti_He3", "anti_proton", "pi+" );
mode[0] = new G4PhaseSpaceDecayChannel("anti_hyperalpha", br_lambda_to_p_pim, 3, "anti_He3",
"anti_proton", "pi+");
// anti_lambda -> anti_neutron + pi0 , with 50% probability of capturing the anti_neutron
mode[1] = new G4PhaseSpaceDecayChannel( "anti_hyperalpha", half_br_lambda_to_n_piz, 3,
"anti_He3", "anti_neutron", "pi0" );
mode[2] = new G4PhaseSpaceDecayChannel( "anti_hyperalpha", half_br_lambda_to_n_piz, 2,
"anti_alpha", "pi0" );
for ( G4int index = 0; index < 3; ++index ) table->Insert( mode[index] );
mode[1] = new G4PhaseSpaceDecayChannel("anti_hyperalpha", half_br_lambda_to_n_piz, 3,
"anti_He3", "anti_neutron", "pi0");
mode[2] = new G4PhaseSpaceDecayChannel("anti_hyperalpha", half_br_lambda_to_n_piz, 2,
"anti_alpha", "pi0");
for (G4int index = 0; index < 3; ++index)
table->Insert(mode[index]);
//---
delete [] mode;
anInstance->SetDecayTable( table );
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4AntiHyperAlpha* >( anInstance );
theInstance = static_cast<G4AntiHyperAlpha*>(anInstance);
return theInstance;
}
G4AntiHyperAlpha* G4AntiHyperAlpha::AntiHyperAlphaDefinition() {
G4AntiHyperAlpha* G4AntiHyperAlpha::AntiHyperAlphaDefinition()
{
return Definition();
}
G4AntiHyperAlpha* G4AntiHyperAlpha::AntiHyperAlpha() {
G4AntiHyperAlpha* G4AntiHyperAlpha::AntiHyperAlpha()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4AntiHyperH4.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ###############################################################
// ### ANTI HYPERH4 ###
// ###############################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4AntiHyperH4* G4AntiHyperH4::theInstance = nullptr;
G4AntiHyperH4* G4AntiHyperH4::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4AntiHyperH4* G4AntiHyperH4::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_hyperH4";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4AntiHyperH4* G4AntiHyperH4::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 3922.40*MeV, 2.501e-12*MeV, -1.0*eplus,
4, +1, 0,
0, 0, 0,
@@ -66,15 +67,17 @@ G4AntiHyperH4* G4AntiHyperH4::Definition() {
false, 0.2631*ns, nullptr,
false, "static", 1010010040,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
/*
// The decay "mode[3]" produces the secondary "anti_H4" which is not existing
// The decay "mode[3]" produces the secondary "anti_H4" which is not existing
// in Geant4: we therefore skip it for the time being (similarly for hyperH4,
// to keep the symmetry between particle and anti-particle).
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
@@ -92,33 +95,34 @@ G4AntiHyperH4* G4AntiHyperH4::Definition() {
"anti_H4", "pi0" );
for ( G4int index = 0; index < 4; ++index ) table->Insert( mode[index] );
*/
// Replacement decay for the time being
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
// Replacement decay for the time being
const G4double half_br_lambda_to_p_pim = 0.5 * 0.639;
const G4double br_lambda_to_n_piz = 0.358;
auto mode = new G4VDecayChannel*[3];
auto mode = new G4VDecayChannel*[3];
// anti_lambda -> anti_proton + pi+ , with 50% probability of capturing the anti_proton
mode[0] = new G4PhaseSpaceDecayChannel( "anti_hyperH4", half_br_lambda_to_p_pim, 3,
"anti_triton", "anti_proton", "pi+" );
mode[1] = new G4PhaseSpaceDecayChannel( "anti_hyperH4", half_br_lambda_to_p_pim, 2,
"anti_alpha", "pi+" );
mode[0] = new G4PhaseSpaceDecayChannel("anti_hyperH4", half_br_lambda_to_p_pim, 3,
"anti_triton", "anti_proton", "pi+");
mode[1] =
new G4PhaseSpaceDecayChannel("anti_hyperH4", half_br_lambda_to_p_pim, 2, "anti_alpha", "pi+");
// anti_lambda -> anti_neutron + pi0 , with 0% probability of capturing the anti_neutron
mode[2] = new G4PhaseSpaceDecayChannel( "anti_hyperH4", br_lambda_to_n_piz, 3,
"anti_triton", "anti_neutron", "pi0" );
for ( G4int index = 0; index < 3; ++index ) table->Insert( mode[index] );
mode[2] = new G4PhaseSpaceDecayChannel("anti_hyperH4", br_lambda_to_n_piz, 3, "anti_triton",
"anti_neutron", "pi0");
for (G4int index = 0; index < 3; ++index)
table->Insert(mode[index]);
//---
delete [] mode;
anInstance->SetDecayTable( table );
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4AntiHyperH4* >( anInstance );
theInstance = static_cast<G4AntiHyperH4*>(anInstance);
return theInstance;
}
G4AntiHyperH4* G4AntiHyperH4::AntiHyperH4Definition() {
G4AntiHyperH4* G4AntiHyperH4::AntiHyperH4Definition()
{
return Definition();
}
G4AntiHyperH4* G4AntiHyperH4::AntiHyperH4() {
G4AntiHyperH4* G4AntiHyperH4::AntiHyperH4()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4AntiHyperHe5.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ##################################################################
// ### ANTI HYPERHE5 ###
// ##################################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4AntiHyperHe5* G4AntiHyperHe5::theInstance = nullptr;
G4AntiHyperHe5* G4AntiHyperHe5::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4AntiHyperHe5* G4AntiHyperHe5::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_hyperHe5";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4AntiHyperHe5* G4AntiHyperHe5::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 4840.00*MeV, 2.501e-12*MeV, -2.0*eplus,
3, +1, 0,
0, 0, 0,
@@ -66,12 +67,14 @@ G4AntiHyperHe5* G4AntiHyperHe5::Definition() {
false, 0.2631*ns, nullptr,
false, "static", 1010020050,
0.0, 0 );
// clang-format on
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
auto table = new G4DecayTable;
// create decay channels
/*
// The decays "mode[1]" and "mode[3]" produce the secondaries "anti_Li5" and "anti_He5",
@@ -92,31 +95,32 @@ G4AntiHyperHe5* G4AntiHyperHe5::Definition() {
"anti_He5", "pi0" );
for ( G4int index = 0; index < 4; ++index ) table->Insert( mode[index] );
*/
// Replacement decay for the time being
// Replacement decay for the time being
const G4double br_lambda_to_p_pim = 0.639;
const G4double br_lambda_to_n_piz = 0.358;
auto mode = new G4VDecayChannel*[2];
auto mode = new G4VDecayChannel*[2];
// anti_lambda -> anti_proton + pi+ , with 0% probability of capturing the anti_proton
mode[0] = new G4PhaseSpaceDecayChannel( "anti_hyperHe5", br_lambda_to_p_pim, 3,
"anti_alpha", "anti_proton", "pi+" );
mode[0] = new G4PhaseSpaceDecayChannel("anti_hyperHe5", br_lambda_to_p_pim, 3, "anti_alpha",
"anti_proton", "pi+");
// anti_lambda -> anti_neutron + pi0 , with 0% probability of capturing the anti_neutron
mode[1] = new G4PhaseSpaceDecayChannel( "anti_hyperHe5", br_lambda_to_n_piz, 3,
"anti_alpha", "anti_neutron", "pi0" );
for ( G4int index = 0; index < 2; ++index ) table->Insert( mode[index] );
mode[1] = new G4PhaseSpaceDecayChannel("anti_hyperHe5", br_lambda_to_n_piz, 3, "anti_alpha",
"anti_neutron", "pi0");
for (G4int index = 0; index < 2; ++index)
table->Insert(mode[index]);
//---
delete [] mode;
anInstance->SetDecayTable( table );
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4AntiHyperHe5* >( anInstance );
theInstance = static_cast<G4AntiHyperHe5*>(anInstance);
return theInstance;
}
G4AntiHyperHe5* G4AntiHyperHe5::AntiHyperHe5Definition() {
G4AntiHyperHe5* G4AntiHyperHe5::AntiHyperHe5Definition()
{
return Definition();
}
G4AntiHyperHe5* G4AntiHyperHe5::AntiHyperHe5() {
G4AntiHyperHe5* G4AntiHyperHe5::AntiHyperHe5()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4AntiHyperTriton.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ######################################################################
// ### ANTI HYPERTRITON ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4AntiHyperTriton* G4AntiHyperTriton::theInstance = nullptr;
G4AntiHyperTriton* G4AntiHyperTriton::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4AntiHyperTriton* G4AntiHyperTriton::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_hypertriton";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4AntiHyperTriton* G4AntiHyperTriton::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 2991.17*MeV, 2.501e-12*MeV, -1.0*eplus,
1, +1, 0,
0, 0, 0,
@@ -66,40 +67,43 @@ G4AntiHyperTriton* G4AntiHyperTriton::Definition() {
false, 0.2631*ns, nullptr,
false, "static", 1010010030,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
const G4double half_br_lambda_to_n_piz = 0.5*0.358;
auto mode = new G4VDecayChannel*[4];
const G4double half_br_lambda_to_p_pim = 0.5 * 0.639;
const G4double half_br_lambda_to_n_piz = 0.5 * 0.358;
auto mode = new G4VDecayChannel*[4];
// anti_lambda -> anti_proton + pi+ , with 50% probability of capturing the anti_proton
mode[0] = new G4PhaseSpaceDecayChannel( "anti_hypertriton", half_br_lambda_to_p_pim, 3,
"anti_deuteron", "anti_proton", "pi+" );
mode[1] = new G4PhaseSpaceDecayChannel( "anti_hypertriton", half_br_lambda_to_p_pim, 2,
"anti_He3", "pi+" );
mode[0] = new G4PhaseSpaceDecayChannel("anti_hypertriton", half_br_lambda_to_p_pim, 3,
"anti_deuteron", "anti_proton", "pi+");
mode[1] = new G4PhaseSpaceDecayChannel("anti_hypertriton", half_br_lambda_to_p_pim, 2,
"anti_He3", "pi+");
// anti_lambda -> anti_neutron + pi0 , with 50% probability of capturing the anti_neutron
mode[2] = new G4PhaseSpaceDecayChannel( "anti_hypertriton", half_br_lambda_to_n_piz, 3,
"anti_deuteron", "anti_neutron", "pi0" );
mode[3] = new G4PhaseSpaceDecayChannel( "anti_hypertriton", half_br_lambda_to_n_piz, 2,
"anti_triton", "pi0" );
for ( G4int index = 0; index < 4; ++index ) table->Insert( mode[index] );
delete [] mode;
anInstance->SetDecayTable( table );
mode[2] = new G4PhaseSpaceDecayChannel("anti_hypertriton", half_br_lambda_to_n_piz, 3,
"anti_deuteron", "anti_neutron", "pi0");
mode[3] = new G4PhaseSpaceDecayChannel("anti_hypertriton", half_br_lambda_to_n_piz, 2,
"anti_triton", "pi0");
for (G4int index = 0; index < 4; ++index)
table->Insert(mode[index]);
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4AntiHyperTriton* >( anInstance );
theInstance = static_cast<G4AntiHyperTriton*>(anInstance);
return theInstance;
}
G4AntiHyperTriton* G4AntiHyperTriton::AntiHyperTritonDefinition() {
G4AntiHyperTriton* G4AntiHyperTriton::AntiHyperTritonDefinition()
{
return Definition();
}
G4AntiHyperTriton* G4AntiHyperTriton::AntiHyperTriton() {
G4AntiHyperTriton* G4AntiHyperTriton::AntiHyperTriton()
{
return Definition();
}
@@ -23,9 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
@@ -36,35 +33,35 @@
// ----------------------------------------------------------------------
#include "G4AntiTriton.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### ANTI TRITON ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
G4AntiTriton* G4AntiTriton::theInstance = nullptr;
G4AntiTriton* G4AntiTriton::Definition()
{
if (theInstance !=nullptr) return theInstance;
if (theInstance != nullptr) return theInstance;
const G4String name = "anti_triton";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance ==nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// clang-format off
anInstance = new G4Ions(
name, 2.808921*GeV, 0.0*MeV, -1.0*eplus,
1, +1, 0,
@@ -74,25 +71,23 @@ G4AntiTriton* G4AntiTriton::Definition()
false, "static", 1000010030,
0.0, 0
);
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2./(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( -2.97896248 * mN);
// clang-format on
}
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2. / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(-2.97896248 * mN);
}
theInstance = static_cast<G4AntiTriton*>(anInstance);
return theInstance;
}
G4AntiTriton* G4AntiTriton::AntiTritonDefinition()
G4AntiTriton* G4AntiTriton::AntiTritonDefinition()
{
return Definition();
}
G4AntiTriton* G4AntiTriton::AntiTriton()
G4AntiTriton* G4AntiTriton::AntiTriton()
{
return Definition();
}
+25 -30
View File
@@ -23,9 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
@@ -36,35 +33,35 @@
// ----------------------------------------------------------------------
#include "G4Deuteron.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### DEUTERON ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
G4Deuteron* G4Deuteron::theInstance = nullptr;
G4Deuteron* G4Deuteron::Definition()
{
if (theInstance !=nullptr) return theInstance;
if (theInstance != nullptr) return theInstance;
const G4String name = "deuteron";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance ==nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// clang-format off
anInstance = new G4Ions(
name, 1.875613*GeV, 0.0*MeV, +1.0*eplus,
2, +1, 0,
@@ -74,25 +71,23 @@ G4Deuteron* G4Deuteron::Definition()
false, "static", -1000010020,
0.0, 0
);
// clang-format on
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2./(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 0.857438230 * mN);
G4double mN = eplus * hbar_Planck / 2. / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(0.857438230 * mN);
}
theInstance = static_cast<G4Deuteron*>(anInstance);
return theInstance;
}
G4Deuteron* G4Deuteron::DeuteronDefinition()
G4Deuteron* G4Deuteron::DeuteronDefinition()
{
return Definition();
}
G4Deuteron* G4Deuteron::Deuteron()
G4Deuteron* G4Deuteron::Deuteron()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4DoubleHyperDoubleNeutron.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ######################################################################
// ### DOUBLEHYPERDOUBLENEUTRON ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4DoubleHyperDoubleNeutron* G4DoubleHyperDoubleNeutron::theInstance = nullptr;
G4DoubleHyperDoubleNeutron* G4DoubleHyperDoubleNeutron::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4DoubleHyperDoubleNeutron* G4DoubleHyperDoubleNeutron::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "doublehyperdoubleneutron";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4DoubleHyperDoubleNeutron* G4DoubleHyperDoubleNeutron::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 4110.24*MeV, 2.501e-12*MeV, 0.0*eplus,
0, +1, 0,
0, 0, 0,
@@ -66,38 +67,41 @@ G4DoubleHyperDoubleNeutron* G4DoubleHyperDoubleNeutron::Definition() {
false, 0.2631*ns, nullptr,
false, "static", -1020000040,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
const G4double half_br_lambda_to_p_pim = 0.5 * 0.639;
const G4double br_lambda_to_n_piz = 0.358;
auto mode = new G4VDecayChannel*[3];
auto mode = new G4VDecayChannel*[3];
// lambda -> proton + pi- , with 50% probability of capturing the proton
mode[0] = new G4PhaseSpaceDecayChannel( "doublehyperdoubleneutron", half_br_lambda_to_p_pim, 5,
"neutron", "neutron", "lambda", "proton", "pi-" );
mode[1] = new G4PhaseSpaceDecayChannel( "doublehyperdoubleneutron", half_br_lambda_to_p_pim, 2,
"hyperH4", "pi-" );
mode[0] = new G4PhaseSpaceDecayChannel("doublehyperdoubleneutron", half_br_lambda_to_p_pim, 5,
"neutron", "neutron", "lambda", "proton", "pi-");
mode[1] = new G4PhaseSpaceDecayChannel("doublehyperdoubleneutron", half_br_lambda_to_p_pim, 2,
"hyperH4", "pi-");
// lambda -> neutron + pi0 , without any possibility of capturing the neutron
mode[2] = new G4PhaseSpaceDecayChannel( "doublehyperdoubleneutron", br_lambda_to_n_piz, 5,
"neutron", "neutron", "lambda", "neutron", "pi0" );
for ( G4int index = 0; index < 3; ++index ) table->Insert( mode[index] );
delete [] mode;
anInstance->SetDecayTable( table );
mode[2] = new G4PhaseSpaceDecayChannel("doublehyperdoubleneutron", br_lambda_to_n_piz, 5,
"neutron", "neutron", "lambda", "neutron", "pi0");
for (G4int index = 0; index < 3; ++index)
table->Insert(mode[index]);
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4DoubleHyperDoubleNeutron* >( anInstance );
theInstance = static_cast<G4DoubleHyperDoubleNeutron*>(anInstance);
return theInstance;
}
G4DoubleHyperDoubleNeutron* G4DoubleHyperDoubleNeutron::DoubleHyperDoubleNeutronDefinition() {
G4DoubleHyperDoubleNeutron* G4DoubleHyperDoubleNeutron::DoubleHyperDoubleNeutronDefinition()
{
return Definition();
}
G4DoubleHyperDoubleNeutron* G4DoubleHyperDoubleNeutron::DoubleHyperDoubleNeutron() {
G4DoubleHyperDoubleNeutron* G4DoubleHyperDoubleNeutron::DoubleHyperDoubleNeutron()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4DoubleHyperH4.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ###############################################################
// ### DOUBLEHYPERH4 ###
// ###############################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4DoubleHyperH4* G4DoubleHyperH4::theInstance = nullptr;
G4DoubleHyperH4* G4DoubleHyperH4::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4DoubleHyperH4* G4DoubleHyperH4::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "doublehyperH4";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4DoubleHyperH4* G4DoubleHyperH4::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 4106.72*MeV, 2.501e-12*MeV, +1.0*eplus,
4, +1, 0,
0, 0, 0,
@@ -66,40 +67,43 @@ G4DoubleHyperH4* G4DoubleHyperH4::Definition() {
false, 0.2631*ns, nullptr,
false, "static", -1020010040,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
const G4double half_br_lambda_to_n_piz = 0.5*0.358;
auto mode = new G4VDecayChannel*[4];
const G4double half_br_lambda_to_p_pim = 0.5 * 0.639;
const G4double half_br_lambda_to_n_piz = 0.5 * 0.358;
auto mode = new G4VDecayChannel*[4];
// lambda -> proton + pi- , with 50% probability of capturing the proton
mode[0] = new G4PhaseSpaceDecayChannel( "doublehyperH4", half_br_lambda_to_p_pim, 3,
"hypertriton", "proton", "pi-" );
mode[1] = new G4PhaseSpaceDecayChannel( "doublehyperH4", half_br_lambda_to_p_pim, 2,
"hyperalpha", "pi-" );
mode[0] = new G4PhaseSpaceDecayChannel("doublehyperH4", half_br_lambda_to_p_pim, 3,
"hypertriton", "proton", "pi-");
mode[1] = new G4PhaseSpaceDecayChannel("doublehyperH4", half_br_lambda_to_p_pim, 2,
"hyperalpha", "pi-");
// lambda -> neutron + pi0 , with 50% probability of capturing the neutron
mode[2] = new G4PhaseSpaceDecayChannel( "doublehyperH4", half_br_lambda_to_n_piz, 3,
"hypertriton", "neutron", "pi0" );
mode[3] = new G4PhaseSpaceDecayChannel( "doublehyperH4", half_br_lambda_to_n_piz, 2,
"hyperH4", "pi0" );
for ( G4int index = 0; index < 4; ++index ) table->Insert( mode[index] );
delete [] mode;
anInstance->SetDecayTable( table );
mode[2] = new G4PhaseSpaceDecayChannel("doublehyperH4", half_br_lambda_to_n_piz, 3,
"hypertriton", "neutron", "pi0");
mode[3] =
new G4PhaseSpaceDecayChannel("doublehyperH4", half_br_lambda_to_n_piz, 2, "hyperH4", "pi0");
for (G4int index = 0; index < 4; ++index)
table->Insert(mode[index]);
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4DoubleHyperH4* >( anInstance );
theInstance = static_cast<G4DoubleHyperH4*>(anInstance);
return theInstance;
}
G4DoubleHyperH4* G4DoubleHyperH4::DoubleHyperH4Definition() {
G4DoubleHyperH4* G4DoubleHyperH4::DoubleHyperH4Definition()
{
return Definition();
}
G4DoubleHyperH4* G4DoubleHyperH4::DoubleHyperH4() {
G4DoubleHyperH4* G4DoubleHyperH4::DoubleHyperH4()
{
return Definition();
}
@@ -23,9 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
@@ -36,38 +33,37 @@
// ----------------------------------------------------------------------
#include "G4GenericIon.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### GenericIon ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
G4GenericIon* G4GenericIon::theInstance = nullptr;
G4GenericIon* G4GenericIon::Definition()
{
if (theInstance !=nullptr) return theInstance;
if (theInstance != nullptr) return theInstance;
const G4String name = "GenericIon";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance ==nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
//!!!!
//!!!! this particle should not be used for tracking
//!!!! all properties except name and type are meaningless
//!!!!
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
//!!!!
//!!!! this particle should not be used for tracking
//!!!! all properties except name and type are meaningless
//!!!!
// clang-format off
anInstance = new G4Ions(
name, 0.9382723*GeV, 0.0*MeV, eplus,
1, +1, 0,
@@ -77,6 +73,7 @@ G4GenericIon* G4GenericIon::Definition()
false, "generic", 0,
0.0
);
// clang-format on
}
theInstance = static_cast<G4GenericIon*>(anInstance);
@@ -84,13 +81,12 @@ G4GenericIon* G4GenericIon::Definition()
return theInstance;
}
G4GenericIon* G4GenericIon::GenericIonDefinition()
{
G4GenericIon* G4GenericIon::GenericIonDefinition()
{
return Definition();
}
G4GenericIon* G4GenericIon::GenericIon()
{
G4GenericIon* G4GenericIon::GenericIon()
{
return Definition();
}
@@ -23,25 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
// History:
// History:
// December 2016, K.L.Genser - first implementation
// based on G4GenericIon
// ----------------------------------------------------------------------
#include "G4GenericMuonicAtom.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### GenericMuonicAtom ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
G4GenericMuonicAtom* G4GenericMuonicAtom::theInstance = nullptr;
G4GenericMuonicAtom* G4GenericMuonicAtom::Definition()
@@ -50,23 +45,23 @@ G4GenericMuonicAtom* G4GenericMuonicAtom::Definition()
const G4String name = "GenericMuonicAtom";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4MuonicAtom*>(pTable->FindParticle(name));
if (anInstance == nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
//!!!!
//!!!! this particle should not be used for tracking
//!!!! all properties except the name and type are meaningless
//!!!!
auto anInstance = static_cast<G4MuonicAtom*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
//!!!!
//!!!! this particle should not be used for tracking
//!!!! all properties except the name and type are meaningless
//!!!!
// clang-format off
anInstance = new G4MuonicAtom(
name, 0.9382723*GeV, 0.0*MeV, eplus,
1, +1, 0,
@@ -76,13 +71,14 @@ G4GenericMuonicAtom* G4GenericMuonicAtom::Definition()
false, "generic", nullptr,
0.0
);
// clang-format on
}
theInstance = static_cast<G4GenericMuonicAtom*>(anInstance);
// static const int tmpVerbosityFlag = 2;
// static const int tmpVerbosityFlag = 2;
// if ( tmpVerbosityFlag > 1 ) {
// G4cout << __func__
// << " theInstance "
// G4cout << __func__
// << " theInstance "
// << theInstance
// << G4endl;
// if (theInstance!=nullptr) {
@@ -95,13 +91,12 @@ G4GenericMuonicAtom* G4GenericMuonicAtom::Definition()
}
// do not inline to avoid undefined reference
G4GenericMuonicAtom* G4GenericMuonicAtom::GenericMuonicAtomDefinition()
{
G4GenericMuonicAtom* G4GenericMuonicAtom::GenericMuonicAtomDefinition()
{
return Definition();
}
G4GenericMuonicAtom* G4GenericMuonicAtom::GenericMuonicAtom()
{
G4GenericMuonicAtom* G4GenericMuonicAtom::GenericMuonicAtom()
{
return Definition();
}
+26 -31
View File
@@ -23,9 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
@@ -36,35 +33,35 @@
// ----------------------------------------------------------------------
#include "G4He3.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### He3 ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
G4He3* G4He3::theInstance = nullptr;
G4He3* G4He3::Definition()
{
if (theInstance !=nullptr) return theInstance;
if (theInstance != nullptr) return theInstance;
const G4String name = "He3";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance ==nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// clang-format off
anInstance = new G4Ions(
name, 2.808391*GeV, 0.0*MeV, +2.0*eplus,
1, +1, 0,
@@ -74,25 +71,23 @@ G4He3* G4He3::Definition()
false, "static", -1000020030,
0.0, 0
);
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2./(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( -2.12762485 * mN);
// clang-format on
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2. / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(-2.12762485 * mN);
}
theInstance = static_cast<G4He3*>(anInstance);
return theInstance;
}
G4He3* G4He3::He3Definition()
G4He3* G4He3::He3Definition()
{
return Definition();
}
G4He3* G4He3::He3()
G4He3* G4He3::He3()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4HyperAlpha.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ######################################################################
// ### HYPERALPHA ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4HyperAlpha* G4HyperAlpha::theInstance = nullptr;
G4HyperAlpha* G4HyperAlpha::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4HyperAlpha* G4HyperAlpha::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "hyperalpha";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4HyperAlpha* G4HyperAlpha::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 3921.87*MeV, 2.501e-12*MeV, +2.0*eplus,
0, +1, 0,
0, 0, 0,
@@ -66,12 +67,14 @@ G4HyperAlpha* G4HyperAlpha::Definition() {
false, 0.2631*ns, nullptr,
false, "static", -1010020040,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
/*
// The decay "mode[1]" produces the secondary "Li4" whose corresponding anti-particle
@@ -82,43 +85,44 @@ G4HyperAlpha* G4HyperAlpha::Definition() {
G4VDecayChannel** mode = new G4VDecayChannel*[4];
// lambda -> proton + pi- , with 50% probability of capturing the proton
mode[0] = new G4PhaseSpaceDecayChannel( "hyperalpha", half_br_lambda_to_p_pim, 3,
"He3", "proton", "pi-" );
"He3", "proton", "pi-" );
mode[1] = new G4PhaseSpaceDecayChannel( "hyperalpha", half_br_lambda_to_p_pim, 2,
"Li4", "pi-" );
"Li4", "pi-" );
// lambda -> neutron + pi0 , with 50% probability of capturing the neutron
mode[2] = new G4PhaseSpaceDecayChannel( "hyperalpha", half_br_lambda_to_n_piz, 3,
"He3", "neutron", "pi0" );
"He3", "neutron", "pi0" );
mode[3] = new G4PhaseSpaceDecayChannel( "hyperalpha", half_br_lambda_to_n_piz, 2,
"alpha", "pi0" );
"alpha", "pi0" );
for ( G4int index = 0; index < 4; ++index ) table->Insert( mode[index] );
*/
// Replacement decay for the time being
const G4double br_lambda_to_p_pim = 0.639;
const G4double half_br_lambda_to_n_piz = 0.5*0.358;
auto mode = new G4VDecayChannel*[3];
const G4double half_br_lambda_to_n_piz = 0.5 * 0.358;
auto mode = new G4VDecayChannel*[3];
// lambda -> proton + pi- , with 0% probability of capturing the proton
mode[0] = new G4PhaseSpaceDecayChannel( "hyperalpha", br_lambda_to_p_pim, 3,
"He3", "proton", "pi-" );
mode[0] =
new G4PhaseSpaceDecayChannel("hyperalpha", br_lambda_to_p_pim, 3, "He3", "proton", "pi-");
// lambda -> neutron + pi0 , with 50% probability of capturing the neutron
mode[1] = new G4PhaseSpaceDecayChannel( "hyperalpha", half_br_lambda_to_n_piz, 3,
"He3", "neutron", "pi0" );
mode[2] = new G4PhaseSpaceDecayChannel( "hyperalpha", half_br_lambda_to_n_piz, 2,
"alpha", "pi0" );
for ( G4int index = 0; index < 3; ++index ) table->Insert( mode[index] );
mode[1] = new G4PhaseSpaceDecayChannel("hyperalpha", half_br_lambda_to_n_piz, 3, "He3",
"neutron", "pi0");
mode[2] =
new G4PhaseSpaceDecayChannel("hyperalpha", half_br_lambda_to_n_piz, 2, "alpha", "pi0");
for (G4int index = 0; index < 3; ++index)
table->Insert(mode[index]);
//---
delete [] mode;
anInstance->SetDecayTable( table );
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4HyperAlpha* >( anInstance );
theInstance = static_cast<G4HyperAlpha*>(anInstance);
return theInstance;
}
G4HyperAlpha* G4HyperAlpha::HyperAlphaDefinition() {
G4HyperAlpha* G4HyperAlpha::HyperAlphaDefinition()
{
return Definition();
}
G4HyperAlpha* G4HyperAlpha::HyperAlpha() {
G4HyperAlpha* G4HyperAlpha::HyperAlpha()
{
return Definition();
}
+44 -41
View File
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4HyperH4.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ###############################################################
// ### HYPERH4 ###
// ###############################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4HyperH4* G4HyperH4::theInstance = nullptr;
G4HyperH4* G4HyperH4::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4HyperH4* G4HyperH4::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "hyperH4";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4HyperH4* G4HyperH4::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 3922.40*MeV, 2.501e-12*MeV, +1.0*eplus,
4, +1, 0,
0, 0, 0,
@@ -66,59 +67,61 @@ G4HyperH4* G4HyperH4::Definition() {
false, 0.2631*ns, nullptr,
false, "static", -1010010040,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
/*
// The decay "mode[3]" produces the secondary "H4" whose corresponding
// anti-particle is not existing in Geant4: we therefore skip it for the time
// being, to keep the symmetry with the decays of anti_hyperH4.
// being, to keep the symmetry with the decays of anti_hyperH4.
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
const G4double half_br_lambda_to_n_piz = 0.5*0.358;
G4VDecayChannel** mode = new G4VDecayChannel*[4];
// lambda -> proton + pi- , with 50% probability of capturing the proton
mode[0] = new G4PhaseSpaceDecayChannel( "hyperH4", half_br_lambda_to_p_pim, 3,
"triton", "proton", "pi-" );
"triton", "proton", "pi-" );
mode[1] = new G4PhaseSpaceDecayChannel( "hyperH4", half_br_lambda_to_p_pim, 2,
"alpha", "pi-" );
"alpha", "pi-" );
// lambda -> neutron + pi0 , with 50% probability of capturing the neutron
mode[2] = new G4PhaseSpaceDecayChannel( "hyperH4", half_br_lambda_to_n_piz, 3,
"triton", "neutron", "pi0" );
"triton", "neutron", "pi0" );
mode[3] = new G4PhaseSpaceDecayChannel( "hyperH4", half_br_lambda_to_n_piz, 2,
"H4", "pi0" );
"H4", "pi0" );
for ( G4int index = 0; index < 4; ++index ) table->Insert( mode[index] );
*/
// Replacement decay for the time being
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
// Replacement decay for the time being
const G4double half_br_lambda_to_p_pim = 0.5 * 0.639;
const G4double br_lambda_to_n_piz = 0.358;
auto mode = new G4VDecayChannel*[3];
auto mode = new G4VDecayChannel*[3];
// lambda -> proton + pi- , with 50% probability of capturing the proton
mode[0] = new G4PhaseSpaceDecayChannel( "hyperH4", half_br_lambda_to_p_pim, 3,
"triton", "proton", "pi-" );
mode[1] = new G4PhaseSpaceDecayChannel( "hyperH4", half_br_lambda_to_p_pim, 2,
"alpha", "pi-" );
mode[0] = new G4PhaseSpaceDecayChannel("hyperH4", half_br_lambda_to_p_pim, 3, "triton",
"proton", "pi-");
mode[1] = new G4PhaseSpaceDecayChannel("hyperH4", half_br_lambda_to_p_pim, 2, "alpha", "pi-");
// lambda -> neutron + pi0 , with 0% probability of capturing the neutron
mode[2] = new G4PhaseSpaceDecayChannel( "hyperH4", br_lambda_to_n_piz, 3,
"triton", "neutron", "pi0" );
for ( G4int index = 0; index < 3; ++index ) table->Insert( mode[index] );
mode[2] =
new G4PhaseSpaceDecayChannel("hyperH4", br_lambda_to_n_piz, 3, "triton", "neutron", "pi0");
for (G4int index = 0; index < 3; ++index)
table->Insert(mode[index]);
//---
delete [] mode;
anInstance->SetDecayTable( table );
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4HyperH4* >( anInstance );
theInstance = static_cast<G4HyperH4*>(anInstance);
return theInstance;
}
G4HyperH4* G4HyperH4::HyperH4Definition() {
G4HyperH4* G4HyperH4::HyperH4Definition()
{
return Definition();
}
G4HyperH4* G4HyperH4::HyperH4() {
G4HyperH4* G4HyperH4::HyperH4()
{
return Definition();
}
+41 -37
View File
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4HyperHe5.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ###################################################################
// ### HYPERHE5 ###
// ###################################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4HyperHe5* G4HyperHe5::theInstance = nullptr;
G4HyperHe5* G4HyperHe5::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4HyperHe5* G4HyperHe5::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "hyperHe5";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4HyperHe5* G4HyperHe5::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 4840.00*MeV, 2.501e-12*MeV, +2.0*eplus,
3, +1, 0,
0, 0, 0,
@@ -66,58 +67,61 @@ G4HyperHe5* G4HyperHe5::Definition() {
false, 0.2631*ns, nullptr,
false, "static", -1010020050,
0.0, 0 );
// clang-format on
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
auto table = new G4DecayTable;
// create decay channels
/*
// The decays "mode[1]" and "mode[3]" produce the secondaries "Li5" and "He5",
// respectively, whose corresponding anti-particles are not existing in Geant4:
// respectively, whose corresponding anti-particles are not existing in Geant4:
// we therefore skip them for the time being, to keep the symmetry with the decays
// of anti_hyperHe5.
// of anti_hyperHe5.
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
const G4double half_br_lambda_to_n_piz = 0.5*0.358;
G4VDecayChannel** mode = new G4VDecayChannel*[4];
// lambda -> proton + pi- , with 50% probability of capturing the proton
mode[0] = new G4PhaseSpaceDecayChannel( "hyperHe5", half_br_lambda_to_p_pim, 3,
"alpha", "proton", "pi-" );
"alpha", "proton", "pi-" );
mode[1] = new G4PhaseSpaceDecayChannel( "hyperHe5", half_br_lambda_to_p_pim, 2,
"Li5", "pi-" );
"Li5", "pi-" );
// lambda -> neutron + pi0 , with 50% probability of capturing the neutron
mode[2] = new G4PhaseSpaceDecayChannel( "hyperHe5", half_br_lambda_to_n_piz, 3,
"alpha", "neutron", "pi0" );
"alpha", "neutron", "pi0" );
mode[3] = new G4PhaseSpaceDecayChannel( "hyperHe5", half_br_lambda_to_n_piz, 2,
"He5", "pi0" );
"He5", "pi0" );
for ( G4int index = 0; index < 4; ++index ) table->Insert( mode[index] );
*/
// Replacement decay for the time being
// Replacement decay for the time being
const G4double br_lambda_to_p_pim = 0.639;
const G4double br_lambda_to_n_piz = 0.358;
auto mode = new G4VDecayChannel*[2];
auto mode = new G4VDecayChannel*[2];
// lambda -> proton + pi- , with 0% probability of capturing the proton
mode[0] = new G4PhaseSpaceDecayChannel( "hyperHe5", br_lambda_to_p_pim, 3,
"alpha", "proton", "pi-" );
mode[0] =
new G4PhaseSpaceDecayChannel("hyperHe5", br_lambda_to_p_pim, 3, "alpha", "proton", "pi-");
// lambda -> neutron + pi0 , with 0% probability of capturing the neutron
mode[1] = new G4PhaseSpaceDecayChannel( "hyperHe5", br_lambda_to_n_piz, 3,
"alpha", "neutron", "pi0" );
for ( G4int index = 0; index < 2; ++index ) table->Insert( mode[index] );
mode[1] =
new G4PhaseSpaceDecayChannel("hyperHe5", br_lambda_to_n_piz, 3, "alpha", "neutron", "pi0");
for (G4int index = 0; index < 2; ++index)
table->Insert(mode[index]);
//---
delete [] mode;
anInstance->SetDecayTable( table );
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4HyperHe5* >( anInstance );
theInstance = static_cast<G4HyperHe5*>(anInstance);
return theInstance;
}
G4HyperHe5* G4HyperHe5::HyperHe5Definition() {
G4HyperHe5* G4HyperHe5::HyperHe5Definition()
{
return Definition();
}
G4HyperHe5* G4HyperHe5::HyperHe5() {
G4HyperHe5* G4HyperHe5::HyperHe5()
{
return Definition();
}
@@ -28,27 +28,26 @@
//----------------------------------------------------------------------------
#include "G4HyperTriton.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4DecayTable.hh"
// ######################################################################
// ### HYPERTRITON ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
#include "G4VDecayChannel.hh"
G4HyperTriton* G4HyperTriton::theInstance = nullptr;
G4HyperTriton* G4HyperTriton::Definition() {
if ( theInstance != nullptr ) return theInstance;
G4HyperTriton* G4HyperTriton::Definition()
{
if (theInstance != nullptr) return theInstance;
const G4String name = "hypertriton";
// search in particle table
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast< G4Ions* >( pTable->FindParticle( name ) );
if ( anInstance == nullptr ) {
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
@@ -58,7 +57,9 @@ G4HyperTriton* G4HyperTriton::Definition() {
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// excitation
// clang-format off
anInstance = new G4Ions( name, 2991.17*MeV, 2.501e-12*MeV, +1.0*eplus,
1, +1, 0,
0, 0, 0,
@@ -66,40 +67,42 @@ G4HyperTriton* G4HyperTriton::Definition() {
false, 0.2631*ns, nullptr,
false, "static", -1010010030,
0.0, 0 );
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2.0/(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN );
// clang-format on
// create Decay Table
auto table = new G4DecayTable;
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2.0 / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
// create Decay Table
auto table = new G4DecayTable;
// create decay channels
const G4double half_br_lambda_to_p_pim = 0.5*0.639;
const G4double half_br_lambda_to_n_piz = 0.5*0.358;
auto mode = new G4VDecayChannel*[4];
const G4double half_br_lambda_to_p_pim = 0.5 * 0.639;
const G4double half_br_lambda_to_n_piz = 0.5 * 0.358;
auto mode = new G4VDecayChannel*[4];
// lambda -> proton + pi- , with 50% probability of capturing the proton
mode[0] = new G4PhaseSpaceDecayChannel( "hypertriton", half_br_lambda_to_p_pim, 3,
"deuteron", "proton", "pi-" );
mode[1] = new G4PhaseSpaceDecayChannel( "hypertriton", half_br_lambda_to_p_pim, 2,
"He3", "pi-" );
mode[0] = new G4PhaseSpaceDecayChannel("hypertriton", half_br_lambda_to_p_pim, 3, "deuteron",
"proton", "pi-");
mode[1] = new G4PhaseSpaceDecayChannel("hypertriton", half_br_lambda_to_p_pim, 2, "He3", "pi-");
// lambda -> neutron + pi0 , with 50% probability of capturing the neutron
mode[2] = new G4PhaseSpaceDecayChannel( "hypertriton", half_br_lambda_to_n_piz, 3,
"deuteron", "neutron", "pi0" );
mode[3] = new G4PhaseSpaceDecayChannel( "hypertriton", half_br_lambda_to_n_piz, 2,
"triton", "pi0" );
for ( G4int index = 0; index < 4; ++index ) table->Insert( mode[index] );
delete [] mode;
anInstance->SetDecayTable( table );
mode[2] = new G4PhaseSpaceDecayChannel("hypertriton", half_br_lambda_to_n_piz, 3, "deuteron",
"neutron", "pi0");
mode[3] =
new G4PhaseSpaceDecayChannel("hypertriton", half_br_lambda_to_n_piz, 2, "triton", "pi0");
for (G4int index = 0; index < 4; ++index)
table->Insert(mode[index]);
delete[] mode;
anInstance->SetDecayTable(table);
}
theInstance = static_cast< G4HyperTriton* >( anInstance );
theInstance = static_cast<G4HyperTriton*>(anInstance);
return theInstance;
}
G4HyperTriton* G4HyperTriton::HyperTritonDefinition() {
G4HyperTriton* G4HyperTriton::HyperTritonDefinition()
{
return Definition();
}
G4HyperTriton* G4HyperTriton::HyperTriton() {
G4HyperTriton* G4HyperTriton::HyperTriton()
{
return Definition();
}
@@ -23,28 +23,22 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
// GEANT 4 class implementation file
//
#include "G4IonConstructor.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
// Nuclei
#include "G4Alpha.hh"
#include "G4Deuteron.hh"
#include "G4Triton.hh"
#include "G4He3.hh"
#include "G4GenericIon.hh"
#include "G4He3.hh"
#include "G4Triton.hh"
// AntiNuclei
#include "G4AntiAlpha.hh"
#include "G4AntiDeuteron.hh"
#include "G4AntiTriton.hh"
#include "G4AntiHe3.hh"
#include "G4AntiTriton.hh"
// Hyper-nuclei
#include "G4DoubleHyperDoubleNeutron.hh"
#include "G4DoubleHyperH4.hh"
@@ -60,7 +54,6 @@
#include "G4AntiHyperHe5.hh"
#include "G4AntiHyperTriton.hh"
void G4IonConstructor::ConstructParticle()
{
ConstructLightIons();
+27 -30
View File
@@ -23,9 +23,6 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
@@ -36,35 +33,35 @@
// ----------------------------------------------------------------------
#include "G4Triton.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleTable.hh"
// ######################################################################
// ### TRITON ###
// ######################################################################
#include "G4ParticleTable.hh"
#include "G4PhysicalConstants.hh"
#include "G4String.hh"
#include "G4SystemOfUnits.hh"
#include "G4Types.hh"
G4Triton* G4Triton::theInstance = nullptr;
G4Triton* G4Triton::Definition()
{
if (theInstance !=nullptr) return theInstance;
if (theInstance != nullptr) return theInstance;
const G4String name = "triton";
// search in particle table]
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance ==nullptr)
{
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
auto anInstance = static_cast<G4Ions*>(pTable->FindParticle(name));
if (anInstance == nullptr) {
// create particle
//
// Arguments for constructor are as follows
// name mass width charge
// 2*spin parity C-conjugation
// 2*Isospin 2*Isospin3 G-parity
// type lepton number baryon number PDG encoding
// stable lifetime decay table
// shortlived subType anti_encoding
// excitation
// clang-format off
anInstance = new G4Ions(
name, 2.808921*GeV, 0.0*MeV, +1.0*eplus,
1, +1, 0,
@@ -74,23 +71,23 @@ G4Triton* G4Triton::Definition()
false, "static", -1000010030,
0.0, 0
);
// Magnetic Moment
G4double mN = eplus*hbar_Planck/2./(proton_mass_c2 /c_squared);
anInstance->SetPDGMagneticMoment( 2.97896248 * mN);
// clang-format on
}
// Magnetic Moment
G4double mN = eplus * hbar_Planck / 2. / (proton_mass_c2 / c_squared);
anInstance->SetPDGMagneticMoment(2.97896248 * mN);
}
theInstance = static_cast<G4Triton*>(anInstance);
return theInstance;
}
G4Triton* G4Triton::TritonDefinition()
G4Triton* G4Triton::TritonDefinition()
{
return Definition();
}
G4Triton* G4Triton::Triton()
G4Triton* G4Triton::Triton()
{
return Definition();
}