Import Geant4 0.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-01 15:25:35 +02:00
parent 54d6b71f95
commit b97f8d0df7
3237 changed files with 807095 additions and 0 deletions
@@ -0,0 +1,44 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4DiQuarks.cc,v 2.0 1998/07/02 17:27:12 gunter Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, based on object model of
// 4th April 1996, G.Cosmo
// **********************************************************************
#include <fstream.h>
#include <iomanip.h>
#include "G4DiQuarks.hh"
// ######################################################################
// ### DiQuarks ###
// ######################################################################
G4DiQuarks::G4DiQuarks(
const G4String& aName, G4double mass,
G4double width, G4double charge,
G4int iSpin, G4int iParity,
G4int iConjugation, G4int iIsospin,
G4int iIsospin3, G4int gParity,
const G4String& pType, G4int lepton,
G4int baryon, G4int encoding,
G4bool stable, G4double lifetime,
G4DecayTable *decaytable )
: G4VShortLivedParticle( aName,mass,width,charge,iSpin,iParity,
iConjugation,iIsospin,iIsospin3,gParity,pType,
lepton,baryon,encoding,stable,lifetime,decaytable )
{
}
@@ -0,0 +1,177 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedBaryonConstructor.cc,v 2.4 1998/11/25 14:02:11 kurasige Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
// For information related to this code contact:
// CERN, IT Division, ASD Group
// History: first implementation, based on object model of
// 10 oct 1998 H.Kurashige
// ---------------------------------------------------------------
#include "G4ExcitedBaryonConstructor.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ShortLivedTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4VDecayChannel.hh"
#include "G4DecayTable.hh"
G4ExcitedBaryonConstructor::G4ExcitedBaryonConstructor(G4int nStates,
G4int isoSpin):
NumberOfStates(nStates),iIsoSpin(isoSpin),
iConjugation(0), iGParity(0), leptonNumber(0), baryonNumber(1),
type("baryon")
{
}
G4ExcitedBaryonConstructor::~G4ExcitedBaryonConstructor()
{
}
void G4ExcitedBaryonConstructor::Construct(G4int idx)
{
if (idx < 0 ) {
for (G4int state=0; state< NumberOfStates; state +=1) {
ConstructParticle(state);
ConstructAntiParticle(state);
}
} else if (idx < NumberOfStates) {
ConstructParticle(idx);
ConstructAntiParticle(idx);
} else {
#ifdef G4VERBOSE
if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>1) {
G4cerr << "G4ExcitedBaryonConstructor::Construct()";
G4cerr << " illegal index os state = " << idx << endl;
}
#endif
}
}
#include "G4ExcitedBaryons.hh"
void G4ExcitedBaryonConstructor::ConstructParticle(G4int idx)
{
if (!Exist(idx) ) return;
// Construct Resonace particles as dynamic object
// 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
G4String name;
G4ParticleDefinition* particle;
for (G4int iIso3 = -1*iIsoSpin; iIso3 <= iIsoSpin; iIso3 +=2) {
name= GetName(iIso3, idx);
particle = new G4ExcitedBaryons(
name, GetMass(idx), GetWidth(idx), GetCharge(iIso3),
GetiSpin(idx), GetiParity(idx), iConjugation,
iIsoSpin, iIso3, iGParity,
type, leptonNumber, baryonNumber, GetEncoding( iIso3,idx),
false, 0.0, NULL
);
particle->SetDecayTable(CreateDecayTable( name, iIso3, idx, false));
}
}
void G4ExcitedBaryonConstructor::ConstructAntiParticle(G4int idx)
{
if (!Exist(idx) ) return;
// Construct Resonace particles as dynamic object
// 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
G4String name;
G4ParticleDefinition* particle;
for (G4int iIso3 = -1*iIsoSpin; iIso3 <= iIsoSpin; iIso3 +=2) {
name = GetName(iIso3, idx);
name = "anti_" + name;
particle = new G4ExcitedBaryons(
name, GetMass(idx), GetWidth(idx), -1.0*GetCharge(iIso3),
GetiSpin(idx), GetiParity(idx), iConjugation,
iIsoSpin, -1*iIso3, iGParity,
type, leptonNumber,
-1*baryonNumber,
-1*GetEncoding( iIso3,idx),
false, 0.0, NULL
);
particle->SetDecayTable(CreateDecayTable( name, iIso3, idx, true));
}
}
G4double G4ExcitedBaryonConstructor::GetCharge(G4int iIsoSpin3)
{
G4ParticleTable* pTable = G4ParticleTable::GetParticleTable();
G4double charge = 0.0;
static G4double quark_charge[7] =
{
0., -1./3., +2./3., -1./3., +2./3., -1./3., +2./3.
};
for (G4int idx=0; idx<3; idx+=1){
charge += quark_charge[GetQuarkContents(idx, iIsoSpin3)]*eplus;
}
return charge;
}
G4int G4ExcitedBaryonConstructor::GetEncoding(G4int iIsoSpin3, G4int idxState)
{
G4int encoding = GetEncodingOffset(idxState);
encoding += 1000*GetQuarkContents(0, iIsoSpin3);
encoding += 100*GetQuarkContents(1, iIsoSpin3);
encoding += 10*GetQuarkContents(2, iIsoSpin3);
if (GetiSpin(idxState) <9) {
encoding += GetiSpin(idxState) +1;
} else {
encoding += (GetiSpin(idxState) +1)*10000000;
}
return encoding;
}
@@ -0,0 +1,44 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedBaryons.cc,v 2.0 1998/07/02 17:27:02 gunter Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, based on object model of
// 4th April 1996, G.Cosmo
// **********************************************************************
#include <fstream.h>
#include <iomanip.h>
#include "G4ExcitedBaryons.hh"
// ######################################################################
// ### ExcitedBaryons ###
// ######################################################################
G4ExcitedBaryons::G4ExcitedBaryons(
const G4String& aName, G4double mass,
G4double width, G4double charge,
G4int iSpin, G4int iParity,
G4int iConjugation, G4int iIsospin,
G4int iIsospin3, G4int gParity,
const G4String& pType, G4int lepton,
G4int baryon, G4int encoding,
G4bool stable, G4double lifetime,
G4DecayTable *decaytable )
: G4VShortLivedParticle( aName,mass,width,charge,iSpin,iParity,
iConjugation,iIsospin,iIsospin3,gParity,pType,
lepton,baryon,encoding,stable,lifetime,decaytable )
{
}
@@ -0,0 +1,513 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedDeltaConstructor.cc,v 2.6 1998/11/26 10:09:18 kurasige Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
// For information related to this code contact:
// CERN, IT Division, ASD Group
// History: first implementation, based on object model of
// 10 oct 1998 H.Kurashige
// ---------------------------------------------------------------
#include "G4ExcitedDeltaConstructor.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ShortLivedTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4VDecayChannel.hh"
#include "G4DecayTable.hh"
G4ExcitedDeltaConstructor::G4ExcitedDeltaConstructor():
G4ExcitedBaryonConstructor(NStates, DeltaIsoSpin)
{
}
G4ExcitedDeltaConstructor::~G4ExcitedDeltaConstructor()
{
}
G4int G4ExcitedDeltaConstructor::GetEncoding(G4int iIsoSpin3, G4int idxState)
{
G4int encoding;
// Delta has exceptinal encoding
if ((idxState==1)||(idxState==3)||(idxState==4)||(idxState==5)||(idxState==7)) {
encoding = GetEncodingOffset(idxState);
if ((iIsoSpin3==3)||(iIsoSpin3==-3)) {
// normal encoding
encoding += 1000*GetQuarkContents(0, iIsoSpin3);
encoding += 100*GetQuarkContents(1, iIsoSpin3);
encoding += 10*GetQuarkContents(2, iIsoSpin3);
} else if (iIsoSpin3== +1){
// 1st <--> 2nd quark
encoding += 1000*GetQuarkContents(0, iIsoSpin3);
encoding += 10*GetQuarkContents(1, iIsoSpin3);
encoding += 100*GetQuarkContents(2, iIsoSpin3);
} else if (iIsoSpin3== -1){
// 1st <--> 0th quark
encoding += 100*GetQuarkContents(0, iIsoSpin3);
encoding += 1000*GetQuarkContents(1, iIsoSpin3);
encoding += 10*GetQuarkContents(2, iIsoSpin3);
}
encoding += GetiSpin(idxState) +1;
} else {
encoding = G4ExcitedBaryonConstructor::GetEncoding(iIsoSpin3, idxState);
}
return encoding;
}
G4DecayTable* G4ExcitedDeltaConstructor::CreateDecayTable(
const G4String& parentName,
G4int iIso3,
G4int iState,
G4bool fAnti)
{
// create decay table
G4DecayTable* decayTable = new G4DecayTable();
G4double br;
if ( (br=bRatio[iState][NGamma]) >0.0) {
AddNGammaMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NPi]) >0.0) {
AddNPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NRho]) >0.0) {
AddNRhoMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][DeltaPi]) >0.0) {
AddDeltaPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NStarPi]) >0.0) {
AddNStarPiMode( decayTable, parentName, br, iIso3, fAnti);
}
return decayTable;
}
G4DecayTable* G4ExcitedDeltaConstructor::AddNGammaMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
//
G4String daughterN;
if (iIso3 == +1) {
daughterN = "proton";
} else if (iIso3 == -1) {
daughterN = "neutron";
} else {
// can not decay into N+gamma
return decayTable;
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
daughterN,"gamma");
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedDeltaConstructor::AddNPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterPi;
G4double r;
// ------------ N pi0 ------------
// determine daughters
if ((iIso3 == +1)||(iIso3 == -1)) {
if (iIso3 == +1) {
daughterN = "proton";
daughterPi = "pi0";
r = br*2./3.;
} else if (iIso3 == -1) {
daughterN = "neutron";
daughterPi = "pi0";
r = br/3.;
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterPi);
// add decay table
decayTable->Insert(mode);
}
// -------------N pi +/- --------------
// determine daughters
if (iIso3 == +3) {
daughterN = "proton";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
r = br;
} else if (iIso3 == +1) {
daughterN = "neutron";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
r = br/3.;
} else if (iIso3 == -1) {
daughterN = "proton";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
r = br*2./3.;
} else if (iIso3 == -3) {
daughterN = "neutron";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
r = br;
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterPi);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedDeltaConstructor::AddNRhoMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterRho;
G4double r;
// ------------ N Rho0 ------------
// determine daughters
if ((iIso3 == +1)||(iIso3 == -1)) {
if (iIso3 == +1) {
daughterN = "proton";
daughterRho = "rho0";
r = br*2./3.;
} else if (iIso3 == -1) {
daughterN = "neutron";
daughterRho = "rho0";
r = br/3.;
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterRho);
// add decay table
decayTable->Insert(mode);
}
// -------------N Rho +/- --------------
// determine daughters
if (iIso3 == +3) {
daughterN = "proton";
if (!fAnti) {
daughterRho = "rho+";
} else {
daughterRho = "rho-";
}
r = br;
} else if (iIso3 == +1) {
daughterN = "neutron";
if (!fAnti) {
daughterRho = "rho+";
} else {
daughterRho = "rho-";
}
r = br/3.;
} else if (iIso3 == -1) {
daughterN = "proton";
if (!fAnti) {
daughterRho = "rho-";
} else {
daughterRho = "rho+";
}
r = br*2./3.;
} else if (iIso3 == -3) {
daughterN = "neutron";
if (!fAnti) {
daughterRho = "rho-";
} else {
daughterRho = "rho+";
}
r = br;
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterRho);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedDeltaConstructor::AddNStarPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterPi;
G4double r;
// ------------ N pi0 ------------
// determine daughters
if ((iIso3 == +1)||(iIso3 == -1)) {
if (iIso3 == +1) {
daughterN = "N(1440)+";
daughterPi = "pi0";
r = br*2./3.;
} else if (iIso3 == -1) {
daughterN = "N(1440)0";
daughterPi = "pi0";
r = br/3.;
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterPi);
// add decay table
decayTable->Insert(mode);
}
// -------------N pi +/- --------------
// determine daughters
if (iIso3 == +3) {
daughterN = "N(1440)+";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
r = br;
} else if (iIso3 == +1) {
daughterN = "N(1440)0";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
r = br/3.;
} else if (iIso3 == -1) {
daughterN = "N(1440)+";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
r = br*2./3.;
} else if (iIso3 == -3) {
daughterN = "N(1440)0";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
r = br;
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterPi);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedDeltaConstructor::AddDeltaPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterDelta;
G4String daughterPi;
G4double r;
// ------------ Delta pi +------------
// determine daughters
if (iIso3 == +3) {
daughterDelta = "delta+";
r = br*0.4;
} else if (iIso3 == +1) {
daughterDelta = "delta0";
r = br*8./15.0;
} else if (iIso3 == -1) {
daughterDelta = "delta-";
r = br*6./15.;
} else {
r = 0.;
}
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
if (fAnti) daughterDelta = "anti_" + daughterDelta;
if (r>0.0) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterDelta,daughterPi);
// add decay table
decayTable->Insert(mode);
}
// ------------ Delta pi0 ------------
// determine daughters
if (iIso3 == +3) {
daughterDelta = "delta++";
r = br*0.6;
} else if (iIso3 == +1) {
daughterDelta = "delta+";
r = br*1./15.0;
} else if (iIso3 == -1) {
daughterDelta = "delta0";
r = br*1./15.;
} else {
daughterDelta = "delta-";
r = br*0.6;
}
daughterPi = "pi0";
if (fAnti) daughterDelta = "anti_" + daughterDelta;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterDelta,daughterPi);
// add decay table
decayTable->Insert(mode);
// ------------ Delta pi - -------------
// determine daughters
if (iIso3 == +3) {
r= 0.;
} else if (iIso3 == +1) {
daughterDelta = "delta++";
r = br*6./15.0;
} else if (iIso3 == -1) {
daughterDelta = "delta+";
r = br*8./15.;
} else {
daughterDelta = "delta0";
r = br*0.4;
}
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
if (fAnti) daughterDelta = "anti_" + daughterDelta;
if (r>0.0) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterDelta,daughterPi);
// add decay table
decayTable->Insert(mode);
}
return decayTable;
}
const G4String G4ExcitedDeltaConstructor::name[] =
{
"delta(1600)", "delta(1620)", "delta(1700)", "delta(1900)", "delta(1905)",
"delta(1910)", "delta(1920)", "delta(1930)", "delta(1950)"
};
const G4double G4ExcitedDeltaConstructor::mass[] =
{
1.700*GeV, 1.675*GeV, 1.750*GeV, 1.850*GeV, 1.880*GeV,
1.900*GeV, 1.920*GeV, 1.930*GeV, 1.950*GeV
};
const G4double G4ExcitedDeltaConstructor::width[] = {
200.0*MeV, 180.0*MeV, 300.0*MeV, 240.0*MeV, 280.0*MeV,
250.0*MeV, 105.0*MeV, 250.0*MeV, 250.0*MeV
};
const G4int G4ExcitedDeltaConstructor::iSpin[] =
{
3, 1, 3, 1, 5,
1, 3, 5, 7
};
const G4int G4ExcitedDeltaConstructor::iParity[] = {
+1, -1, -1, -1, +1,
+1, +1, -1, +1
};
const G4int G4ExcitedDeltaConstructor::encodingOffset[] = {
30000, 0, 10000, 10000, 0,
20000, 20000, 10000, 0
};
const G4double G4ExcitedDeltaConstructor::bRatio[ G4ExcitedDeltaConstructor::NStates ][ G4ExcitedDeltaConstructor::NumberOfDecayModes] =
{
// NGamma Npi NRho DeltaPi N*Pi
{ 0.0, 0.15, 0.0, 0.55, 0.30 },
{ 0.0, 0.25, 0.0, 0.60, 0.15 },
{ 0.0, 0.20, 0.10, 0.55, 0.15 },
{ 0.0, 0.30, 0.15, 0.30, 0.25 },
{ 0.0, 0.20, 0.60, 0.10, 0.10 },
{ 0.0, 0.35, 0.40, 0.15, 0.10 },
{ 0.0, 0.15, 0.30, 0.30, 0.25 },
{ 0.0, 0.20, 0.25, 0.25, 0.30 },
{ 0.01, 0.44, 0.15, 0.20, 0.20 }
};
@@ -0,0 +1,401 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedLambdaConstructor.cc,v 2.4 1998/11/13 12:22:44 kurasige Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
// For information related to this code contact:
// CERN, IT Division, ASD Group
// History: first implementation, based on object model of
// 10 oct 1998 H.Kurashige
// ---------------------------------------------------------------
#include "G4ExcitedLambdaConstructor.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ShortLivedTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4VDecayChannel.hh"
#include "G4DecayTable.hh"
G4ExcitedLambdaConstructor::G4ExcitedLambdaConstructor():
G4ExcitedBaryonConstructor(NStates, LambdaIsoSpin)
{
}
G4ExcitedLambdaConstructor::~G4ExcitedLambdaConstructor()
{
}
G4DecayTable* G4ExcitedLambdaConstructor::CreateDecayTable(
const G4String& parentName,
G4int iIso3,
G4int iState,
G4bool fAnti)
{
// create decay table
G4DecayTable* decayTable = new G4DecayTable();
G4double br;
if ( (br=bRatio[iState][NK]) >0.0) {
AddNKMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NKStar]) >0.0) {
AddNKStarMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][SigmaPi]) >0.0) {
AddSigmaPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][SigmaStarPi]) >0.0) {
AddSigmaStarPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][LambdaGamma]) >0.0) {
AddLambdaGammaMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][LambdaEta]) >0.0) {
AddLambdaEtaMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][LambdaOmega]) >0.0) {
AddLambdaOmegaMode( decayTable, parentName, br, iIso3, fAnti);
}
return decayTable;
}
G4DecayTable* G4ExcitedLambdaConstructor::AddLambdaGammaMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
//
G4String lambda = "lambda";
if (fAnti) lambda = "anti_" + lambda;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
lambda,"gamma");
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedLambdaConstructor::AddLambdaEtaMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
//
G4String lambda = "lambda";
if (fAnti) lambda = "anti_" + lambda;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
lambda,"eta");
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedLambdaConstructor::AddLambdaOmegaMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
//
G4String lambda = "lambda";
if (fAnti) lambda = "anti_" + lambda;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
lambda,"omega");
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedLambdaConstructor::AddNKMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterK;
// ------------ N K- ------------
// determine daughters
daughterN = "proton";
if (!fAnti) {
daughterK = "kaon-";
} else {
daughterK = "kaon+";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
// ------------ N K0 ------------
// determine daughters
daughterN = "neutron";
if (!fAnti) {
daughterK = "anti_kaon0";
} else {
daughterK = "kaon0";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedLambdaConstructor::AddNKStarMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterK;
// ------------ N K- ------------
// determine daughters
daughterN = "proton";
if (!fAnti) {
daughterK = "k_star-";
} else {
daughterK = "k_star+";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
// ------------ N K0 ------------
// determine daughters
daughterN = "neutron";
if (!fAnti) {
daughterK = "anti_k_star0";
} else {
daughterK = "k_star0";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedLambdaConstructor::AddSigmaPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterSigma;
G4String daughterPi;
// ------------ Sigma+ pi - ------------
// determine daughters
daughterSigma = "sigma+";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
if (fAnti) daughterSigma = "anti_" + daughterSigma;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
// ------------ Sigma0 Pi0 ------------
// determine daughters
daughterSigma = "sigma0";
daughterPi = "pi0";
if (fAnti) daughterSigma = "anti_" + daughterSigma;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
// ------------ Sigma- pi + ------------
// determine daughters
daughterSigma = "sigma-";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
if (fAnti) daughterSigma = "anti_" + daughterSigma;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedLambdaConstructor::AddSigmaStarPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterSigma;
G4String daughterPi;
// ------------ Sigma+ pi - ------------
// determine daughters
daughterSigma = "sigma(1385)+";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
if (fAnti) daughterSigma = "anti_" + daughterSigma;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
// ------------ Sigma0 Pi0 ------------
// determine daughters
daughterSigma = "sigma(1385)0";
daughterPi = "pi0";
if (fAnti) daughterSigma = "anti_" + daughterSigma;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
// ------------ Sigma- pi + ------------
// determine daughters
daughterSigma = "sigma(1385)-";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
if (fAnti) daughterSigma = "anti_" + daughterSigma;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
const G4String G4ExcitedLambdaConstructor::name[] = {
"lambda(1405)","lambda(1520)","lambda(1600)","lambda(1670)","lambda(1690)",
"lambda(1800)","lambda(1810)","lambda(1820)","lambda(1830)","lambda(1890)",
"lambda(2100)","lambda(2110)"
};
const G4double G4ExcitedLambdaConstructor::mass[] = {
1.407*GeV, 1.520*GeV, 1.600*GeV, 1.670*GeV, 1.690*GeV,
1.800*GeV, 1.810*GeV, 1.820*GeV, 1.830*GeV, 1.890*GeV,
2.100*GeV, 2.110*GeV
};
const G4double G4ExcitedLambdaConstructor::width[] = {
50.0*MeV, 16.0*MeV, 150.0*MeV, 35.0*MeV, 60.0*MeV,
300.0*MeV, 150.0*MeV, 80.0*MeV, 95.0*MeV, 100.0*MeV,
200.0*MeV, 200.0*MeV
};
const G4int G4ExcitedLambdaConstructor::iSpin[] = {
1, 3, 1, 1, 3,
1, 1, 5, 5, 3,
7, 5
};
const G4int G4ExcitedLambdaConstructor::iParity[] = {
-1, -1, +1, -1, -1,
-1, +1, +1, -1, +1,
-1, +1
};
const G4int G4ExcitedLambdaConstructor::encodingOffset[] = {
10000, 0, 20000, 30000, 10000,
40000, 50000, 0, 10000, 20000,
0, 20000
};
const G4double G4ExcitedLambdaConstructor::bRatio[ G4ExcitedLambdaConstructor::NStates ][ G4ExcitedLambdaConstructor::NumberOfDecayModes] =
{
{ 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0},
{ 0.45, 0.0, 0.43, 0.11, 0.01, 0.0, 0.0},
{ 0.35, 0.0, 0.65, 0.0, 0.0, 0.0, 0.0},
{ 0.20, 0.0, 0.50, 0.0, 0.0, 0.30, 0.0},
{ 0.25, 0.0, 0.45, 0.30, 0.0, 0.0, 0.0},
{ 0.40, 0.20, 0.20, 0.20, 0.0, 0.0, 0.0},
{ 0.35, 0.45, 0.15, 0.05, 0.0, 0.0, 0.0},
{ 0.73, 0.0, 0.16, 0.11, 0.0, 0.0, 0.0},
{ 0.10, 0.0, 0.70, 0.20, 0.0, 0.0, 0.0},
{ 0.37, 0.21, 0.11, 0.31, 0.0, 0.0, 0.0},
{ 0.35, 0.20, 0.05, 0.30, 0.0, 0.02, 0.08},
{ 0.25, 0.45, 0.30, 0.0, 0.0, 0.0, 0.0}
};
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,44 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedMesons.cc,v 2.0 1998/07/02 17:27:04 gunter Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, based on object model of
// 4th April 1996, G.Cosmo
// **********************************************************************
#include <fstream.h>
#include <iomanip.h>
#include "G4ExcitedMesons.hh"
// ######################################################################
// ### ExcitedMesons ###
// ######################################################################
G4ExcitedMesons::G4ExcitedMesons(
const G4String& aName, G4double mass,
G4double width, G4double charge,
G4int iSpin, G4int iParity,
G4int iConjugation, G4int iIsospin,
G4int iIsospin3, G4int gParity,
const G4String& pType, G4int lepton,
G4int baryon, G4int encoding,
G4bool stable, G4double lifetime,
G4DecayTable *decaytable )
: G4VShortLivedParticle( aName,mass,width,charge,iSpin,iParity,
iConjugation,iIsospin,iIsospin3,gParity,pType,
lepton,baryon,encoding,stable,lifetime,decaytable )
{
}
@@ -0,0 +1,596 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedNucleonConstructor.cc,v 2.6 1998/11/26 10:09:22 kurasige Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
// For information related to this code contact:
// CERN, IT Division, ASD Group
// History: first implementation, based on object model of
// 10 oct 1998 H.Kurashige
// ---------------------------------------------------------------
#include "G4ExcitedNucleonConstructor.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ShortLivedTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4VDecayChannel.hh"
#include "G4DecayTable.hh"
G4ExcitedNucleonConstructor::G4ExcitedNucleonConstructor():
G4ExcitedBaryonConstructor(NStates, NucleonIsoSpin)
{
}
G4ExcitedNucleonConstructor::~G4ExcitedNucleonConstructor()
{
}
G4int G4ExcitedNucleonConstructor::GetEncoding(G4int iIsoSpin3, G4int idxState)
{
G4int encoding;
// Delta has exceptinal encoding
if ((idxState==1)||(idxState==6)||(idxState==8)||(idxState==9)||(idxState==12) ) {
encoding = GetEncodingOffset(idxState);
if ((iIsoSpin3==3)||(iIsoSpin3==-3)) {
// normal encoding
encoding += 1000*GetQuarkContents(0, iIsoSpin3);
encoding += 100*GetQuarkContents(1, iIsoSpin3);
encoding += 10*GetQuarkContents(2, iIsoSpin3);
} else if (iIsoSpin3== +1){
// 1st <--> 2nd quark
encoding += 1000*GetQuarkContents(0, iIsoSpin3);
encoding += 10*GetQuarkContents(1, iIsoSpin3);
encoding += 100*GetQuarkContents(2, iIsoSpin3);
} else if (iIsoSpin3== -1){
// 1st <--> 0th quark
encoding += 100*GetQuarkContents(0, iIsoSpin3);
encoding += 1000*GetQuarkContents(1, iIsoSpin3);
encoding += 10*GetQuarkContents(2, iIsoSpin3);
}
encoding += GetiSpin(idxState) +1;
} else {
encoding = G4ExcitedBaryonConstructor::GetEncoding(iIsoSpin3, idxState);
}
return encoding;
}
G4DecayTable* G4ExcitedNucleonConstructor::CreateDecayTable(
const G4String& parentName,
G4int iIso3,
G4int iState,
G4bool fAnti)
{
// create decay table
G4DecayTable* decayTable = new G4DecayTable();
G4double br;
if ( (br=bRatio[iState][NGamma]) >0.0) {
AddNGammaMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NPi]) >0.0) {
AddNPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NEta]) >0.0) {
AddNEtaMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NOmega]) >0.0) {
AddNOmegaMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NRho]) >0.0) {
AddNRhoMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][N2Pi]) >0.0) {
AddN2PiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][DeltaPi]) >0.0) {
AddDeltaPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NStarPi]) >0.0) {
AddNStarPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][LambdaK]) >0.0) {
AddLambdaKMode( decayTable, parentName, br, iIso3, fAnti);
}
return decayTable;
}
G4DecayTable* G4ExcitedNucleonConstructor::AddNGammaMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
//
G4String daughterN;
if (iIso3 == +1) {
daughterN = "proton";
} else {
daughterN = "neutron";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
daughterN,"gamma");
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedNucleonConstructor::AddNPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterPi;
// ------------ N pi0 ------------
// determine daughters
if (iIso3 == +1) {
daughterN = "proton";
daughterPi = "pi0";
} else {
daughterN = "neutron";
daughterPi = "pi0";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterPi);
// add decay table
decayTable->Insert(mode);
// -------------N pi +/- --------------
// determine daughters
if (iIso3 == +1) {
daughterN = "neutron";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
} else {
daughterN = "proton";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterPi);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedNucleonConstructor::AddNEtaMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
// ------------ N eta------------
// determine daughters
if (iIso3 == +1) {
daughterN = "proton";
} else {
daughterN = "neutron";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
daughterN, "eta");
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedNucleonConstructor::AddNOmegaMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
// ------------ N omega------------
// determine daughters
if (iIso3 == +1) {
daughterN = "proton";
} else {
daughterN = "neutron";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
daughterN, "omega");
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedNucleonConstructor::AddNRhoMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterRho;
// ------------ N rho0 ------------
// determine daughters
if (iIso3 == +1) {
daughterN = "proton";
daughterRho = "rho0";
} else {
daughterN = "neutron";
daughterRho = "rho0";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterRho);
// add decay table
decayTable->Insert(mode);
// -------------N rho+/- --------------
// determine daughters
if (iIso3 == +1) {
daughterN = "neutron";
if (!fAnti) {
daughterRho = "rho+";
} else {
daughterRho = "rho-";
}
} else {
daughterN = "proton";
if (!fAnti) {
daughterRho = "rho-";
} else {
daughterRho = "rho+";
}
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterRho);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedNucleonConstructor::AddN2PiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
// Decay Modes
// N* --> N + pi + pi
// Only I=0 states are included for 2-pi system
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterPi1;
G4String daughterPi2;
// -------------N pi+ pi- --------------
// determine daughters
if (iIso3 == +1) {
daughterN = "proton";
daughterPi1 = "pi+";
daughterPi2 = "pi-";
} else {
daughterN = "neutron";
daughterPi1 = "pi+";
daughterPi2 = "pi-";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 3,
daughterN,daughterPi1,daughterPi2);
// add decay table
decayTable->Insert(mode);
// -------------N pi0 pi0 --------------
// determine daughters
if (iIso3 == +1) {
daughterN = "proton";
daughterPi1 = "pi0";
daughterPi2 = "pi0";
} else {
daughterN = "neutron";
daughterPi1 = "pi0";
daughterPi2 = "pi0";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 3,
daughterN,daughterPi1,daughterPi2);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedNucleonConstructor::AddNStarPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterPi;
// ------------ N pi0 ------------
// determine daughters
if (iIso3 == +1) {
daughterN = "N(1440)+";
daughterPi = "pi0";
} else {
daughterN = "N(1440)0";
daughterPi = "pi0";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterPi);
// add decay table
decayTable->Insert(mode);
// -------------N pi +/- --------------
// determine daughters
if (iIso3 == +1) {
daughterN = "N(1440)0";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
} else {
daughterN = "N(1440)+";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
daughterN,daughterPi);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedNucleonConstructor::AddDeltaPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterDelta;
G4String daughterPi;
G4double r;
// ------------ Delta pi+/- ------------
// determine daughters
if (iIso3 == +1) {
daughterDelta = "delta0";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
r = br/6.0;
} else {
daughterDelta = "delta+";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
r = br/6.0;
}
if (fAnti) daughterDelta = "anti_" + daughterDelta;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterDelta,daughterPi);
// add decay table
decayTable->Insert(mode);
// ------------ Delta pi+/- ------------
// determine daughters
if (iIso3 == +1) {
daughterDelta = "delta++";
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
r = br/2.0;
} else {
daughterDelta = "delta-";
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
r = br/2.0;
}
if (fAnti) daughterDelta = "anti_" + daughterDelta;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterDelta,daughterPi);
// add decay table
decayTable->Insert(mode);
// ------------ Delta pi0 ------------
// determine daughters
if (iIso3 == +1) {
daughterDelta = "delta+";
daughterPi = "pi0";
r = br/3.0;
} else {
daughterDelta = "delta0";
daughterPi = "pi0";
r = br/3.0;
}
if (fAnti) daughterDelta = "anti_" + daughterDelta;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterDelta,daughterPi);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedNucleonConstructor::AddLambdaKMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String lambda = "lambda";
G4String daughterK;
// ------------ N pi0 ------------
// determine daughters
if (iIso3 == +1) {
if (!fAnti) {
daughterK = "kaon+";
} else {
daughterK = "kaon-";
}
} else {
if (!fAnti) {
daughterK = "kaon0";
} else {
daughterK = "anti_kaon0";
}
}
if (fAnti) lambda = "anti_" + lambda;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
lambda, daughterK);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
const G4String G4ExcitedNucleonConstructor::name[] = {
"N(1440)", "N(1520)", "N(1535)", "N(1650)", "N(1675)",
"N(1680)", "N(1700)", "N(1710)", "N(1720)", "N(1900)",
"N(1990)", "N(2090)", "N(2190)", "N(2220)", "N(2250)"
};
const G4double G4ExcitedNucleonConstructor::mass[] = {
1.440*GeV, 1.520*GeV, 1.535*GeV, 1.650*GeV, 1.675*GeV,
1.680*GeV, 1.700*GeV, 1.710*GeV, 1.720*GeV, 1.870*GeV,
1.990*GeV, 2.040*GeV, 2.190*GeV, 2.220*GeV, 2.250*GeV
};
const G4double G4ExcitedNucleonConstructor::width[] = {
200.0*MeV, 125.0*MeV, 150.0*MeV, 150.0*MeV, 140.0*MeV,
120.0*MeV, 100.0*MeV, 110.0*MeV, 150.0*MeV, 500.0*MeV,
550.0*MeV, 250.0*MeV, 550.0*MeV
};
const G4int G4ExcitedNucleonConstructor::iSpin[] = {
1, 3, 1, 1, 5,
5, 3, 1, 3, 3,
7, 3, 7, 9, 9
};
const G4int G4ExcitedNucleonConstructor::iParity[] = {
+1, -1, -1, -1, -1,
+1, -1, +1, +1, +1,
+1, -1, +1, -1, -1
};
const G4int G4ExcitedNucleonConstructor::encodingOffset[] = {
10000, 0, 20000, 30000, 0,
10000, 20000, 40000, 30000, 40000,
10000, 50000, 0, 0, 10000
};
const G4double G4ExcitedNucleonConstructor::bRatio[ G4ExcitedNucleonConstructor::NStates ][ G4ExcitedNucleonConstructor::NumberOfDecayModes] =
{
{ 0.0, 0.70, 0.0, 0.0, 0.0, 0.05, 0.25, 0.0, 0.0},
{ 0.0, 0.60, 0.0, 0.0, 0.0, 0.15, 0.25, 0.0, 0.0},
{0.001, 0.55, 0.35, 0.0, 0.0, 0.05, 0.00, 0.05, 0.0},
{ 0.0, 0.65, 0.05, 0.0, 0.0, 0.05, 0.10, 0.05, 0.10},
{ 0.0, 0.45, 0.0, 0.0, 0.0, 0.00, 0.55, 0.0, 0.0},
{ 0.0, 0.65, 0.0, 0.0, 0.0, 0.20, 0.15, 0.0, 0.0},
{ 0.0, 0.10, 0.05, 0.0, 0.05, 0.45, 0.35, 0.0, 0.0},
{ 0.0, 0.15, 0.20, 0.0, 0.05, 0.20, 0.20, 0.10, 0.10},
{ 0.0, 0.15, 0.00, 0.0, 0.25, 0.45, 0.10, 0.00, 0.05},
{ 0.0, 0.35, 0.0, 0.55, 0.05, 0.00, 0.05, 0.0, 0.0},
{ 0.0, 0.05, 0.0, 0.0, 0.15, 0.25, 0.30, 0.15, 0.10},
{ 0.0, 0.60, 0.05, 0.0, 0.25, 0.05, 0.05, 0.0, 0.0},
{ 0.0, 0.35, 0.0, 0.00, 0.30, 0.15, 0.15, 0.05, 0.0},
{ 0.0, 0.35, 0.0, 0.0, 0.25, 0.20, 0.20, 0.0, 0.0},
{ 0.0, 0.30, 0.0, 0.00, 0.25, 0.20, 0.20, 0.05, 0.0}
};
@@ -0,0 +1,605 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedSigmaConstructor.cc,v 2.4 1998/11/13 12:22:46 kurasige Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
// For information related to this code contact:
// CERN, IT Division, ASD Group
// History: first implementation, based on object model of
// 10 oct 1998 H.Kurashige
// ---------------------------------------------------------------
#include "G4ExcitedSigmaConstructor.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ShortLivedTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4VDecayChannel.hh"
#include "G4DecayTable.hh"
G4ExcitedSigmaConstructor::G4ExcitedSigmaConstructor():
G4ExcitedBaryonConstructor(NStates, SigmaIsoSpin)
{
}
G4ExcitedSigmaConstructor::~G4ExcitedSigmaConstructor()
{
}
G4DecayTable* G4ExcitedSigmaConstructor::CreateDecayTable(
const G4String& parentName,
G4int iIso3,
G4int iState,
G4bool fAnti)
{
// create decay table
G4DecayTable* decayTable = new G4DecayTable();
G4double br;
if ( (br=bRatio[iState][NK]) >0.0) {
AddNKMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][NKStar]) >0.0) {
AddNKStarMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][SigmaPi]) >0.0) {
AddSigmaPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][SigmaStarPi]) >0.0) {
AddSigmaStarPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][LambdaPi]) >0.0) {
AddLambdaPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][SigmaEta]) >0.0) {
AddSigmaEtaMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][LambdaStarPi]) >0.0) {
AddLambdaStarPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][DeltaK]) >0.0) {
AddDeltaKMode( decayTable, parentName, br, iIso3, fAnti);
}
return decayTable;
}
G4DecayTable* G4ExcitedSigmaConstructor::AddSigmaEtaMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
//
G4String daughterH;
if (iIso3== +2) {
daughterH = "sigma+";
} else if (iIso3== 0) {
daughterH = "sigma0";
} else if (iIso3== -2) {
daughterH = "sigma-";
}
if (fAnti) daughterH = "anti_" + daughterH;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
daughterH,"eta");
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedSigmaConstructor::AddNKMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterK;
G4double r;
// ------------ N K- ------------
// determine daughters
if (iIso3== +2) {
r=0.;
} else if (iIso3== 0) {
daughterN = "proton";
r = br/2.;
} else if (iIso3== -2) {
daughterN = "neutron";
r = br;
}
if (!fAnti) {
daughterK = "kaon-";
} else {
daughterK = "kaon+";
}
if (fAnti) daughterN = "anti_" + daughterN;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
}
// ------------ N K0 ------------
// determine daughters
if (iIso3== +2) {
daughterN = "proton";
r=br;
} else if (iIso3== 0) {
daughterN = "neutron";
r = br/2.;
} else if (iIso3== -2) {
r = 0.;
}
if (!fAnti) {
daughterK = "anti_kaon0";
} else {
daughterK = "kaon0";
}
if (fAnti) daughterN = "anti_" + daughterN;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
}
return decayTable;
}
G4DecayTable* G4ExcitedSigmaConstructor::AddDeltaKMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterK;
G4double r;
// ------------ N K- ------------
// determine daughters
if (iIso3== +2) {
daughterN = "delta++";
r=0.75*br;
} else if (iIso3== 0) {
daughterN = "delta+";
r = br/2.;
} else if (iIso3== -2) {
daughterN = "delta0";
r = 0.25*br;
}
if (!fAnti) {
daughterK = "kaon-";
} else {
daughterK = "kaon+";
}
if (fAnti) daughterN = "anti_" + daughterN;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
}
// ------------ N K0 ------------
// determine daughters
if (iIso3== +2) {
daughterN = "delta+";
r=0.25*br;
} else if (iIso3== 0) {
daughterN = "delta0";
r = br/2.;
} else if (iIso3== -2) {
daughterN = "delta-";
r=0.75*br;
}
if (!fAnti) {
daughterK = "anti_kaon0";
} else {
daughterK = "kaon0";
}
if (fAnti) daughterN = "anti_" + daughterN;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
}
return decayTable;
}
G4DecayTable* G4ExcitedSigmaConstructor::AddNKStarMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterN;
G4String daughterK;
G4double r;
// ------------ N K- ------------
// determine daughters
if (iIso3== +2) {
r=0.;
} else if (iIso3== 0) {
daughterN = "proton";
r = br/2.;
} else if (iIso3== -2) {
daughterN = "neutron";
r = br;
}
if (!fAnti) {
daughterK = "k_star-";
} else {
daughterK = "k_star+";
}
if (fAnti) daughterN = "anti_" + daughterN;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
}
// ------------ N K0 ------------
// determine daughters
if (iIso3== +2) {
daughterN = "proton";
r=br;
} else if (iIso3== 0) {
daughterN = "neutron";
r = br/2.;
} else if (iIso3== -2) {
r = 0.;
}
if (!fAnti) {
daughterK = "anti_k_star0";
} else {
daughterK = "k_star0";
}
if (fAnti) daughterN = "anti_" + daughterN;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterN,daughterK);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedSigmaConstructor::AddSigmaPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterSigma;
G4String daughterPi;
G4double r;
// ------------ Sigma+ pi - ------------
// determine daughters
if (iIso3== +2) {
r = 0.;
} else if (iIso3== 0) {
daughterSigma = "sigma+";
r = br/2.;
} else if (iIso3== -2) {
daughterSigma = "sigma0";
r = br/2.;
}
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
if (fAnti) daughterSigma = "anti_" + daughterSigma;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
}
// ------------ Sigma0 Pi0 ------------
// determine daughters
if (iIso3== +2) {
daughterSigma = "sigma+";
r = br/2.;
} else if (iIso3== 0) {
r = 0.;
} else if (iIso3== -2) {
daughterSigma = "sigma-";
r = br/2.;
}
daughterPi = "pi0";
if (fAnti) daughterSigma = "anti_" + daughterSigma;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
}
// ------------ Sigma- pi + ------------
// determine daughters
if (iIso3== +2) {
daughterSigma = "sigma0";
r = br/2.;
} else if (iIso3== 0) {
daughterSigma = "sigma-";
r = br/2.;
} else if (iIso3== -2) {
r = 0.;
}
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
if (fAnti) daughterSigma = "anti_" + daughterSigma;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
}
return decayTable;
}
G4DecayTable* G4ExcitedSigmaConstructor::AddSigmaStarPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterSigma;
G4String daughterPi;
G4double r;
// ------------ Sigma+ pi - ------------
// determine daughters
if (iIso3== +2) {
r = 0.;
} else if (iIso3== 0) {
daughterSigma = "sigma(1385)+";
r = br/2.;
} else if (iIso3== -2) {
daughterSigma = "sigma(1385)0";
r = br/2.;
}
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
if (fAnti) daughterSigma = "anti_" + daughterSigma;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
}
// ------------ Sigma0 Pi0 ------------
// determine daughters
if (iIso3== +2) {
daughterSigma = "sigma(1385)+";
r = br/2.;
} else if (iIso3== 0) {
r = 0.;
} else if (iIso3== -2) {
daughterSigma = "sigma(1385)-";
r = br/2.;
}
daughterPi = "pi0";
if (fAnti) daughterSigma = "anti_" + daughterSigma;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
}
// ------------ Sigma- pi + ------------
// determine daughters
if (iIso3== +2) {
daughterSigma = "sigma(1385)0";
r = br/2.;
} else if (iIso3== 0) {
daughterSigma = "sigma(1385)-";
r = br/2.;
} else if (iIso3== -2) {
r = 0.;
}
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
if (fAnti) daughterSigma = "anti_" + daughterSigma;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterSigma,daughterPi);
// add decay table
decayTable->Insert(mode);
}
return decayTable;
}
G4DecayTable* G4ExcitedSigmaConstructor::AddLambdaPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterLambda = "lambda";
G4String daughterPi;
// determine daughters
if (iIso3== +2) {
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
} else if (iIso3== 0) {
daughterPi = "pi0";
} else if (iIso3== -2) {
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
}
if (fAnti) daughterLambda = "anti_" + daughterLambda;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
daughterLambda, daughterPi);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedSigmaConstructor::AddLambdaStarPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterLambda = "lambda(1405)";
G4String daughterPi;
// determine daughters
if (iIso3== +2) {
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
} else if (iIso3== 0) {
daughterPi = "pi0";
} else if (iIso3== -2) {
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
}
if (fAnti) daughterLambda = "anti_" + daughterLambda;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
daughterLambda,daughterPi);
// add decay table
decayTable->Insert(mode);
return decayTable;
}
const G4String G4ExcitedSigmaConstructor::name[] = {
"sigma(1385)","sigma(1660)","sigma(1670)","sigma(1750)","sigma(1775)",
"sigma(1915)","sigma(1940)","sigma(2030)"
};
const G4double G4ExcitedSigmaConstructor::mass[] = {
1.384*GeV, 1.660*GeV, 1.670*GeV, 1.750*GeV, 1.775*GeV,
1.915*GeV, 1.940*GeV, 1.030*GeV
};
const G4double G4ExcitedSigmaConstructor::width[] = {
36.0*MeV, 100.0*MeV, 60.0*MeV, 90.0*MeV, 120.0*MeV,
120.0*MeV, 330.0*MeV, 180.0*MeV
};
const G4int G4ExcitedSigmaConstructor::iSpin[] = {
3, 1, 3, 1, 5,
5, 3, 7
};
const G4int G4ExcitedSigmaConstructor::iParity[] = {
+1, +1, -1, -1, -1,
+1, -1, +1
};
const G4int G4ExcitedSigmaConstructor::encodingOffset[] = {
0, 10000, 10000, 20000, 0,
10000, 20000, 0
};
const G4double G4ExcitedSigmaConstructor::bRatio[ G4ExcitedSigmaConstructor::NStates ][ G4ExcitedSigmaConstructor::NumberOfDecayModes] =
{
{ 0.0, 0.0, 0.12, 0.0, 0.88, 0.0, 0.0, 0.0},
{ 0.30, 0.0, 0.35, 0.0, 0.35, 0.0, 0.0, 0.0},
{ 0.15, 0.0, 0.70, 0.0, 0.15, 0.0, 0.0, 0.0},
{ 0.40, 0.0, 0.05, 0.0, 0.0, 0.55, 0.0, 0.0},
{ 0.40, 0.0, 0.04, 0.10, 0.23, 0.0, 0.23, 0.0},
{ 0.15, 0.0, 0.40, 0.05, 0.40, 0.0, 0.0, 0.0},
{ 0.10, 0.15, 0.15, 0.15, 0.15, 0.0, 0.15, 0.15},
{ 0.20, 0.04, 0.10, 0.10, 0.20, 0.0, 0.18, 0.18}
};
@@ -0,0 +1,312 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedXiConstructor.cc,v 2.4 1998/11/13 12:22:47 kurasige Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
// For information related to this code contact:
// CERN, IT Division, ASD Group
// History: first implementation, based on object model of
// 10 oct 1998 H.Kurashige
// ---------------------------------------------------------------
#include "G4ExcitedXiConstructor.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ShortLivedTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4VDecayChannel.hh"
#include "G4DecayTable.hh"
G4ExcitedXiConstructor::G4ExcitedXiConstructor():
G4ExcitedBaryonConstructor(NStates, XiIsoSpin)
{
}
G4ExcitedXiConstructor::~G4ExcitedXiConstructor()
{
}
G4DecayTable* G4ExcitedXiConstructor::CreateDecayTable(
const G4String& parentName,
G4int iIso3,
G4int iState,
G4bool fAnti)
{
// create decay table
G4DecayTable* decayTable = new G4DecayTable();
G4double br;
if ( (br=bRatio[iState][XiPi]) >0.0) {
AddXiPiMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][XiGamma]) >0.0) {
AddXiGammaMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][LambdaK]) >0.0) {
AddLambdaKMode( decayTable, parentName, br, iIso3, fAnti);
}
if ( (br=bRatio[iState][SigmaK]) >0.0) {
AddSigmaKMode( decayTable, parentName, br, iIso3, fAnti);
}
return decayTable;
}
G4DecayTable* G4ExcitedXiConstructor::AddXiGammaMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
//
G4String daughterH;
if (iIso3== +1) {
daughterH = "xi0";
} else if (iIso3==-1) {
daughterH = "xi-";
}
if (fAnti) daughterH = "anti_" + daughterH;
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
daughterH,"gamma");
// add decay table
decayTable->Insert(mode);
return decayTable;
}
G4DecayTable* G4ExcitedXiConstructor::AddLambdaKMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String lambda = "lambda";
G4String daughterK;
G4double r;
// ------------ Lambda K- ------------
// determine daughters
if (iIso3 == +1) {
if (!fAnti) {
daughterK = "kaon0";
} else {
daughterK = "anti_kaon0";
}
r = br;
} else if (iIso3 == -1) {
if (!fAnti) {
daughterK = "kaon-";
} else {
daughterK = "kaon+";
}
r = br;
}
if (fAnti) lambda = "anti_" + lambda;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
lambda,daughterK);
// add decay table
decayTable->Insert(mode);
}
return decayTable;
}
G4DecayTable* G4ExcitedXiConstructor::AddSigmaKMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterH;
G4String daughterK;
G4double r;
// ------------ Sigma K- ------------
// determine daughters
if (iIso3== +1) {
daughterH = "sigma+";
r= br/2.;
} else if (iIso3== -1) {
daughterH = "sigma0";
r = br/2.;
}
if (!fAnti) {
daughterK = "kaon-";
} else {
daughterK = "kaon+";
}
if (fAnti) daughterH = "anti_" + daughterH;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterH,daughterK);
// add decay table
decayTable->Insert(mode);
}
// ------------ Sigma K0 ------------
// determine daughters
if (iIso3 == +1) {
daughterH = "sigma0";
r= br/2.;
} else if (iIso3 == -1) {
daughterH = "sigma-";
r = br/2.;
}
if (!fAnti) {
daughterK = "anti_kaon0";
} else {
daughterK = "kaon0";
}
if (fAnti) daughterH = "anti_" + daughterH;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterH,daughterK);
// add decay table
decayTable->Insert(mode);
}
return decayTable;
}
G4DecayTable* G4ExcitedXiConstructor::AddXiPiMode(
G4DecayTable* decayTable, const G4String& nameParent,
G4double br, G4int iIso3, G4bool fAnti)
{
G4VDecayChannel* mode;
G4String daughterXi;
G4String daughterPi;
G4double r;
// ------------ Xi pi- ------------
// determine daughters
if (iIso3== +1) {
r = 0.;
} else if (iIso3 == -1) {
daughterXi = "xi0";
r = br/2.;
}
if (!fAnti) {
daughterPi = "pi-";
} else {
daughterPi = "pi+";
}
if (fAnti) daughterXi = "anti_" + daughterXi;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterXi,daughterPi);
// add decay table
decayTable->Insert(mode);
}
// ------------ Xi Pi0 ------------
// determine daughters
if (iIso3== +1) {
daughterXi = "xi0";
r = br/2.;
} else if (iIso3 == -1) {
daughterXi = "xi-";
r = br/2.;
}
daughterPi = "pi0";
if (fAnti) daughterXi = "anti_" + daughterXi;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterXi,daughterPi);
// add decay table
decayTable->Insert(mode);
}
// ------------ XI pi + ------------
// determine daughters
if (iIso3== +1) {
daughterXi = "xi-";
r = br/2.;
} else if (iIso3==-1) {
r = 0.;
}
if (!fAnti) {
daughterPi = "pi+";
} else {
daughterPi = "pi-";
}
if (fAnti) daughterXi = "anti_" + daughterXi;
if (r>0.) {
// create decay channel [parent BR #daughters]
mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
daughterXi,daughterPi);
// add decay table
decayTable->Insert(mode);
}
return decayTable;
}
const G4String G4ExcitedXiConstructor::name[] = {
"xi(1530)", "xi(1690)", "xi(1820)", "xi(1950)", "xi(2030)"
};
const G4double G4ExcitedXiConstructor::mass[] = {
1.532*GeV, 1.700*GeV, 1.823*GeV, 1.950*GeV, 2.025*GeV
};
const G4double G4ExcitedXiConstructor::width[] = {
9.0*MeV, 50.0*MeV, 24.0*MeV, 60.0*MeV, 20.0*MeV
};
const G4int G4ExcitedXiConstructor::iSpin[] = {
3, 3, 3, 3, 5
};
const G4int G4ExcitedXiConstructor::iParity[] = {
+1, +1, -1, -1, +1
};
const G4int G4ExcitedXiConstructor::encodingOffset[] = {
0, 20000, 10000, 30000, 10000
};
const G4double G4ExcitedXiConstructor::bRatio[ G4ExcitedXiConstructor::NStates ][ G4ExcitedXiConstructor::NumberOfDecayModes] =
{
{ 0.98, 0.02, 0.0, 0.0},
{ 0.10, 0.0, 0.70, 0.20},
{ 0.15, 0.0, 0.70, 0.15},
{ 0.25, 0.0, 0.50, 0.25},
{ 0.10, 0.0, 0.20, 0.70}
};
@@ -0,0 +1,44 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4Gluons.cc,v 2.0 1998/07/02 17:27:05 gunter Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, based on object model of
// 4th April 1996, G.Cosmo
// **********************************************************************
#include <fstream.h>
#include <iomanip.h>
#include "G4Gluons.hh"
// ######################################################################
// ### Gluons ###
// ######################################################################
G4Gluons::G4Gluons(
const G4String& aName, G4double mass,
G4double width, G4double charge,
G4int iSpin, G4int iParity,
G4int iConjugation, G4int iIsospin,
G4int iIsospin3, G4int gParity,
const G4String& pType, G4int lepton,
G4int baryon, G4int encoding,
G4bool stable, G4double lifetime,
G4DecayTable *decaytable )
: G4VShortLivedParticle( aName,mass,width,charge,iSpin,iParity,
iConjugation,iIsospin,iIsospin3,gParity,pType,
lepton,baryon,encoding,stable,lifetime,decaytable )
{
}
@@ -0,0 +1,44 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4Quarks.cc,v 2.0 1998/07/02 17:27:07 gunter Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// ----------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, based on object model of
// 4th April 1996, G.Cosmo
// **********************************************************************
#include <fstream.h>
#include <iomanip.h>
#include "G4Quarks.hh"
// ######################################################################
// ### Quarks ###
// ######################################################################
G4Quarks::G4Quarks(
const G4String& aName, G4double mass,
G4double width, G4double charge,
G4int iSpin, G4int iParity,
G4int iConjugation, G4int iIsospin,
G4int iIsospin3, G4int gParity,
const G4String& pType, G4int lepton,
G4int baryon, G4int encoding,
G4bool stable, G4double lifetime,
G4DecayTable *decaytable )
: G4VShortLivedParticle( aName,mass,width,charge,iSpin,iParity,
iConjugation,iIsospin,iIsospin3,gParity,pType,
lepton,baryon,encoding,stable,lifetime,decaytable )
{
}
@@ -0,0 +1,723 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ShortLivedConstructor.cc,v 2.10 1998/12/02 09:58:07 kurasige Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
//
#include "G4ShortLivedConstructor.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ShortLivedTable.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4VDecayChannel.hh"
#include "G4DecayTable.hh"
G4bool G4ShortLivedConstructor::isConstructed = false;
G4ShortLivedConstructor::G4ShortLivedConstructor()
{
}
G4ShortLivedConstructor::~G4ShortLivedConstructor()
{
}
void G4ShortLivedConstructor::ConstructParticle()
{
if (!isConstructed){
ConstructQuarks();
ConstructResonances();
isConstructed = true;
}
}
#include "G4DiQuarks.hh"
#include "G4Quarks.hh"
#include "G4Gluons.hh"
void G4ShortLivedConstructor::ConstructQuarks()
{
G4ParticleDefinition* particle;
// Construct Quraks/Gluons as dynamic object
// 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
// gluon
particle = new G4Gluons(
"gluon", 0.0*MeV, 0.0*MeV, 0.0*eplus,
2, -1, 0,
0, 0, 0,
"gluons", 0, 0, 21,
true, -1.0, NULL);
// u-quark
particle = new G4Quarks(
"u_quark", 8.0*MeV, 0.0*MeV, 2./3.*eplus,
1, +1, 0,
1, +1, 0,
"quarks", 0, 0, 2,
true, -1.0, NULL);
// d-quark
particle = new G4Quarks(
"d_quark", 15.0*MeV, 0.0*MeV, -1./3.*eplus,
1, +1, 0,
1, -1, 0,
"quarks", 0, 0, 1,
true, -1.0, NULL);
// s-quark
particle = new G4Quarks(
"s_quark", 300.0*MeV, 0.0*MeV, -1./3.*eplus,
1, +1, 0,
0, 0, 0,
"quarks", 0, 0, 3,
true, -1.0, NULL);
// c-quark
particle = new G4Quarks(
"c_quark", 1.6*GeV, 0.0*MeV, +2./3.*eplus,
1, +1, 0,
0, 0, 0,
"quarks", 0, 0, 4,
true, -1.0, NULL);
// b-quark
particle = new G4Quarks(
"b_quark", 4.5*GeV, 0.0*MeV, -1./3.*eplus,
1, +1, 0,
0, 0, 0,
"quarks", 0, 0, 5,
true, -1.0, NULL);
// t-quark
particle = new G4Quarks(
"t_quark", 174.0*GeV, 0.0*MeV, +2./3.*eplus,
1, +1, 0,
0, 0, 0,
"quarks", 0, 0, 6,
true, -1.0, NULL);
// u-quark
particle = new G4Quarks(
"anti_u_quark", 8.0*MeV, 0.0*MeV, -2./3.*eplus,
1, +1, 0,
1, +1, 0,
"quarks", 0, 0, -2,
true, -1.0, NULL);
// d-quark
particle = new G4Quarks(
"anti_d_quark", 15.0*MeV, 0.0*MeV, 1./3.*eplus,
1, +1, 0,
1, -1, 0,
"quarks", 0, 0, -1,
true, -1.0, NULL);
// s-quark
particle = new G4Quarks(
"anti_s_quark", 300.0*MeV, 0.0*MeV, 1./3.*eplus,
1, +1, 0,
0, 0, 0,
"quarks", 0, 0, -3,
true, -1.0, NULL);
// c-quark
particle = new G4Quarks(
"anti_c_quark", 1.6*GeV, 0.0*MeV, -2./3.*eplus,
1, +1, 0,
0, 0, 0,
"quarks", 0, 0, -4,
true, -1.0, NULL);
// b-quark
particle = new G4Quarks(
"anti_b_quark", 4.5*GeV, 0.0*MeV, 1./3.*eplus,
1, +1, 0,
0, 0, 0,
"quarks", 0, 0, -5,
true, -1.0, NULL);
// t-quark
particle = new G4Quarks(
"anti_t_quark", 174.0*GeV, 0.0*MeV, -2./3.*eplus,
1, +1, 0,
0, 0, 0,
"quarks", 0, 0, -6,
true, -1.0, NULL);
// uu1-Diquark
particle = new G4DiQuarks(
"uu1_diquark", 16.0*MeV, 0.0*MeV, 4./3.*eplus,
2, +1, 0,
2, +2, 0,
"diquarks", 0, 0, 2203,
true, -1.0, NULL);
// ud1-Diquark
particle = new G4DiQuarks(
"ud1_diquark", 23.0*MeV, 0.0*MeV, 1./3.*eplus,
2, +1, 0,
2, +0, 0,
"diquarks", 0, 0, 2103,
true, -1.0, NULL);
// dd1-Diquark
particle = new G4DiQuarks(
"dd1_diquark", 30.0*MeV, 0.0*MeV, -2./3.*eplus,
2, +1, 0,
2, -1, 0,
"diquarks", 0, 0, 1103,
true, -1.0, NULL);
// ud0-Diquark
particle = new G4DiQuarks(
"ud0_diquark", 23.0*MeV, 0.0*MeV, 1./3.*eplus,
0, +1, 0,
0, +0, 0,
"diquarks", 0, 0, 2101,
true, -1.0, NULL);
// sd1-Diquark
particle = new G4DiQuarks(
"sd1_diquark", 315.0*MeV, 0.0*MeV, -2./3.*eplus,
1, +1, 0,
1, -1, 0,
"diquarks", 0, 0, 3103,
true, -1.0, NULL);
// su1-Diquark
particle = new G4DiQuarks(
"su1_diquark", 308.0*MeV, 0.0*MeV, 1./3.*eplus,
1, +1, 0,
1, +1, 0,
"diquarks", 0, 0, 3203,
true, -1.0, NULL);
// sd1-Diquark
particle = new G4DiQuarks(
"sd0_diquark", 315.0*MeV, 0.0*MeV, -2./3.*eplus,
1, +1, 0,
1, -1, 0,
"diquarks", 0, 0, 3101,
true, -1.0, NULL);
// su1-Diquark
particle = new G4DiQuarks(
"su0_diquark", 308.0*MeV, 0.0*MeV, 1./3.*eplus,
1, +1, 0,
1, +1, 0,
"diquarks", 0, 0, 3201,
true, -1.0, NULL);
// uu1-Diquark
particle = new G4DiQuarks(
"anti_uu1_diquark", 16.0*MeV, 0.0*MeV, -4./3.*eplus,
2, +1, 0,
2, +2, 0,
"diquarks", 0, 0, -2203,
true, -1.0, NULL);
// ud1-Diquark
particle = new G4DiQuarks(
"anti_ud1_diquark", 23.0*MeV, 0.0*MeV, -1./3.*eplus,
2, +1, 0,
2, +0, 0,
"diquarks", 0, 0, -2103,
true, -1.0, NULL);
// dd1-Diquark
particle = new G4DiQuarks(
"anti_dd1_diquark", 30.0*MeV, 0.0*MeV, 2./3.*eplus,
2, +1, 0,
2, -1, 0,
"diquarks", 0, 0, -1103,
true, -1.0, NULL);
// ud0-Diquark
particle = new G4DiQuarks(
"anti_ud0_diquark", 23.0*MeV, 0.0*MeV, -1./3.*eplus,
0, +1, 0,
0, +0, 0,
"diquarks", 0, 0, -2101,
true, -1.0, NULL);
// sd1-Diquark
particle = new G4DiQuarks(
"anti_sd1_diquark", 315.0*MeV, 0.0*MeV, 2./3.*eplus,
1, +1, 0,
1, -1, 0,
"diquarks", 0, 0, -3103,
true, -1.0, NULL);
// su1-Diquark
particle = new G4DiQuarks(
"anti_su1_diquark", 308.0*MeV, 0.0*MeV, -1./3.*eplus,
1, +1, 0,
1, +1, 0,
"diquarks", 0, 0, -3203,
true, -1.0, NULL);
// sd0-Diquark
particle = new G4DiQuarks(
"anti_sd0_diquark", 315.0*MeV, 0.0*MeV, 2./3.*eplus,
1, +1, 0,
1, -1, 0,
"diquarks", 0, 0, -3101,
true, -1.0, NULL);
// su1-Diquark
particle = new G4DiQuarks(
"anti_su0_diquark", 308.0*MeV, 0.0*MeV, -1./3.*eplus,
1, +1, 0,
1, +1, 0,
"diquarks", 0, 0, -3201,
true, -1.0, NULL);
// ss1-Diquark
particle = new G4DiQuarks(
"ss1_diquark", 600.0*MeV, 0.0*MeV, -2./3.*eplus,
1, +1, 0,
1, -1, 0,
"diquarks", 0, 0, 3303,
true, -1.0, NULL);
// ss1-Diquark
particle = new G4DiQuarks(
"anti_ss1_diquark", 600.0*MeV, 0.0*MeV, 2./3.*eplus,
1, +1, 0,
1, -1, 0,
"diquarks", 0, 0, -3303,
true, -1.0, NULL);
particle = NULL;
}
#include "G4ExcitedNucleonConstructor.hh"
#include "G4ExcitedDeltaConstructor.hh"
#include "G4ExcitedLambdaConstructor.hh"
#include "G4ExcitedSigmaConstructor.hh"
#include "G4ExcitedXiConstructor.hh"
#include "G4ExcitedMesonConstructor.hh"
void G4ShortLivedConstructor::ConstructResonances()
{
ConstructBarions();
ConstructMesons();
// N*
G4ExcitedNucleonConstructor nucleons;
nucleons.Construct();
// Delta*
G4ExcitedDeltaConstructor deltas;
deltas.Construct();
// Lambda*
G4ExcitedLambdaConstructor lamdas;
lamdas.Construct();
// Sigma*
G4ExcitedSigmaConstructor sigmas;
sigmas.Construct();
// Xi*
G4ExcitedXiConstructor xis;
xis.Construct();
// Mesons
G4ExcitedMesonConstructor mesons;
mesons.Construct();
}
#include "G4ExcitedBaryons.hh"
void G4ShortLivedConstructor::ConstructBarions()
{
G4DecayTable* decayTable;
G4VDecayChannel* mode;
G4ParticleDefinition* particle;
// Construct Resonace particles as dynamic object
// 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
// delta baryons
// delta(1232)++
particle = new G4ExcitedBaryons(
"delta++", 1.232*GeV, 120.0*MeV, +2.0*eplus,
3, +1, 0,
3, +3, 0,
"baryon", 0, +1, 2224,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of delta++ -> proton + pi+
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("delta++",1.000, 2,
"proton","pi+");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// delta(1232)+
particle = new G4ExcitedBaryons(
"delta+", 1.232*GeV, 120.0*MeV, +1.0*eplus,
3, +1, 0,
3, +1, 0,
"baryon", 0, +1, 2214,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of delta+ -> proton + Gamma
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("delta+", 0.01, 2,
"proton","gamma");
decayTable->Insert(mode);
// create decay channel of delta+ -> neutron + pi+
// parent BR #daughters
// create decay channel of delta+ -> proton + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("delta+", 0.495, 2,
"proton","pi0");
decayTable->Insert(mode);
// create decay channel of delta+ -> neutron + pi+
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("delta+", 0.495, 2,
"neutron","pi+");
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// delta(1232)0
particle = new G4ExcitedBaryons(
"delta0", 1.232*GeV, 120.0*MeV, +0.0*eplus,
3, +1, 0,
3, -1, 0,
"baryon", 0, +1, 2114,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of delta+ -> neutron + gamma
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("delta0", 0.01, 2,
"neutron","gamma");
decayTable->Insert(mode);
// create decay channel of delta+ -> proton + pi-
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("delta0", 0.495, 2,
"proton","pi-");
decayTable->Insert(mode);
// create decay channel of delta+ -> neutron + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("delta0", 0.495, 2,
"neutron","pi0");
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// delta(1232)-
particle = new G4ExcitedBaryons(
"delta-", 1.232*GeV, 120.0*MeV, -1.0*eplus,
3, +1, 0,
3, -3, 0,
"baryon", 0, +1, 1114,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of delta+ -> neutron + pi-
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("delta-", 1.000, 2,
"neutron","pi-");
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
////////////////////////////
// anti_delta baryons
// anti_delta(1232)++
particle = new G4ExcitedBaryons(
"anti_delta++", 1.232*GeV, 120.0*MeV, -2.0*eplus,
3, +1, 0,
3, -3, 0,
"baryon", 0, -1, -2224,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of delta++ -> anti_proton + pi-
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("anti_delta++",1.000, 2,
"anti_proton","pi-");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// anti_delta(1232)+
particle = new G4ExcitedBaryons(
"anti_delta+", 1.232*GeV, 120.0*MeV, -1.0*eplus,
3, +1, 0,
3, -1, 0,
"baryon", 0, -1, -2214,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of anti_delta+ -> anti_proton + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("anti_delta+", 0.500, 2,
"anti_proton","pi0");
decayTable->Insert(mode);
// create decay channel of anti_delta+ -> anti_neutron + pi-
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("anti_delta+", 0.500, 2,
"anti_neutron","pi-");
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// anti_delta(1232)0
particle = new G4ExcitedBaryons(
"anti_delta0", 1.232*GeV, 120.0*MeV, +0.0*eplus,
3, +1, 0,
3, +1, 0,
"baryon", 0, -1, -2114,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of anti_delta+ -> anti_proton + pi+
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("anti_delta0", 0.500, 2,
"anti_proton","pi+");
decayTable->Insert(mode);
// create decay channel of delta+ -> neutron + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("anti_delta0", 0.500, 2,
"anti_neutron","pi0");
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// anti_delta(1232)-
particle = new G4ExcitedBaryons(
"anti_delta-", 1.232*GeV, 120.0*MeV, +1.0*eplus,
3, +1, 0,
3, +3, 0,
"baryon", 0, -1, -1114,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of delta- -> neutron + pi+
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("anti_delta-", 1.000, 2,
"anti_neutron","pi+");
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
}
#include "G4ExcitedMesons.hh"
void G4ShortLivedConstructor::ConstructMesons()
{
G4DecayTable* decayTable;
G4VDecayChannel* mode;
G4ParticleDefinition* particle;
// Construct Resonace particles as dynamic object
// 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
// vector mesons
// omega
particle = new G4ExcitedMesons(
"omega", 781.94*MeV, 8.43*MeV, +0.0*eplus,
2, -1, -1,
0, +0, -1,
"meson", 0, 0, 223,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of omega -> pi+ + pi- + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("omega",0.888, 3,
"pi+","pi-","pi0");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// phi
particle = new G4ExcitedMesons(
"phi", 1019.4*MeV, 4.43*MeV, +0.0*eplus,
2, -1, -1,
0, +0, -1,
"meson", 0, 0, 333,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of phi -> kaon+ + kaon-
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("phi",0.491, 2,
"kaon+","kaon-");
decayTable->Insert(mode);
// create decay channel of phi -> kaon0S + kaon0L
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("phi",0.343, 2,
"kaon0S","kaon0L");
// add decay table
decayTable->Insert(mode);
// create decay channel of phi -> rho0 + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("phi",0.129, 2,
"rho0","pi0");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// rho+
particle = new G4ExcitedMesons(
"rho+", 769.9*MeV, 151.2*MeV, +1.0*eplus,
2, -1, -1,
2, +2, +1,
"meson", 0, 0, 213,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of rho+ -> pi+ + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("rho+",1.000, 2,
"pi+","pi0");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// rho-
particle = new G4ExcitedMesons(
"rho-", 769.9*MeV, 151.2*MeV, -1.0*eplus,
2, -1, -1,
2, -2, +1,
"meson", 0, 0, -213,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of rho- -> pi- + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("rho-",1.000, 2,
"pi-","pi0");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// k_star+
particle = new G4ExcitedMesons(
"k_star+", 891.6*MeV, 49.8*MeV, +1.0*eplus,
2, -1, 0,
1, +1, 0,
"meson", 0, 0, 323,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of k_star+ -> kaon+ + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("k_star+",0.500, 2,
"kaon+","pi0");
// add decay table
decayTable->Insert(mode);
// create decay channel of k_star+ -> kaon+ + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("k_star+",0.500, 2,
"kaon0","pi+");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// k_star0
particle = new G4ExcitedMesons(
"k_star0", 896.1*MeV, 50.5*MeV, 0.0*eplus,
2, -1, 0,
1, -1, 0,
"meson", 0, 0, 313,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of k_star0 -> kaon+ + pi-
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("k_star0",0.500, 2,
"kaon+","pi-");
// add decay table
decayTable->Insert(mode);
// create decay channel of k_star0 -> kaon0 + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("k_star0",0.500, 2,
"kaon0","pi0");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// k_star-
particle = new G4ExcitedMesons(
"k_star-", 891.6*MeV, 49.8*MeV, -1.0*eplus,
2, -1, 0,
1, +1, 0,
"meson", 0, 0, -323,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of k_star- -> kaon- + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("k_star-",0.500, 2,
"kaon-","pi0");
// add decay table
decayTable->Insert(mode);
// create decay channel of k_star- -> anti_kaon0 + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("k_star-",0.500, 2,
"anti_kaon0","pi+");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
// anti_k_star0
particle = new G4ExcitedMesons(
"anti_k_star0", 896.1*MeV, 50.5*MeV, 0.0*eplus,
2, -1, 0,
1, -1, 0,
"meson", 0, 0, -313,
false, 0.0, NULL);
// create decay table
decayTable = new G4DecayTable();
// create decay channel of anti_k_star0 -> kaon- + pi+
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("anti_k_star0",0.500, 2,
"kaon-","pi+");
// add decay table
decayTable->Insert(mode);
// create decay channel of anti_k_star0 -> anti_kaon0 + pi0
// parent BR #daughters
mode = new G4PhaseSpaceDecayChannel("anti_k_star0",0.500, 2,
"anti_kaon0","pi0");
// add decay table
decayTable->Insert(mode);
particle->SetDecayTable(decayTable);
}
@@ -0,0 +1,63 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4VShortLivedParticle.cc,v 2.0 1998/07/02 17:27:11 gunter Exp $
// GEANT4 tag $Name: geant4-00 $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, based on object model of
// 28 June 1998 H.Kurashige
// --------------------------------------------------------------
#include "G4VShortLivedParticle.hh"
G4VShortLivedParticle::G4VShortLivedParticle(const G4String& aName,
G4double mass,
G4double width,
G4double charge,
G4int iSpin,
G4int iParity,
G4int iConjugation,
G4int iIsospin,
G4int iIsospinZ,
G4int gParity,
const G4String& pType,
G4int lepton,
G4int baryon,
G4int encoding,
G4bool stable,
G4double lifetime,
G4DecayTable *decaytable)
:G4ParticleDefinition( aName,mass,width,charge,iSpin,iParity,
iConjugation,iIsospin,iIsospinZ,gParity,pType,
lepton,baryon,encoding,stable,lifetime,decaytable, true)
{
}
const G4VShortLivedParticle & G4VShortLivedParticle::operator=(const G4VShortLivedParticle& right)
{
if (this != &right) {
} return right;
}
G4int G4VShortLivedParticle::operator==(const G4VShortLivedParticle &right) const
{
return (this->GetParticleName() == right.GetParticleName());
}
G4int G4VShortLivedParticle::operator!=(const G4VShortLivedParticle &right) const
{
return (this->GetParticleName() != right.GetParticleName());
}