Import Geant4 0.0.0 source tree
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# $Id: GNUmakefile,v 2.1 1998/07/02 22:09:33 gcosmo Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for shortlived library. Gabriele Cosmo, 18/9/96.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := G4shortlived
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += \
|
||||
-I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/materials/include \
|
||||
-I$(G4BASE)/particles/management/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -0,0 +1,58 @@
|
||||
// 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.hh,v 2.1 1998/07/13 17:19:01 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, CN Division, ASD group
|
||||
// History: first implementation, based on object model of
|
||||
// Hisaya Kurashige, 27 June 1998
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4DiQuarks_h
|
||||
#define G4DiQuarks_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4VShortLivedParticle.hh"
|
||||
|
||||
// ######################################################################
|
||||
// ### DiQuarks ###
|
||||
// ######################################################################
|
||||
|
||||
class G4DiQuarks : public G4VShortLivedParticle
|
||||
{
|
||||
public:
|
||||
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
|
||||
);
|
||||
G4DiQuarks* DiQuarksDefinition(){return this;};
|
||||
G4DiQuarks* DiQuarks(){return this;};
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
// 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.hh,v 1.1 1998/10/13 12:15:10 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
|
||||
// ---------------------------------------------------------------
|
||||
#ifndef G4ExcitedBaryonConstructor_h
|
||||
#define G4ExcitedBaryonConstructor_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
class G4DecayTable;
|
||||
|
||||
class G4ExcitedBaryonConstructor
|
||||
{
|
||||
//This class is a utility class for construction
|
||||
//short lived particles
|
||||
|
||||
public:
|
||||
G4ExcitedBaryonConstructor(G4int nStates = 0, G4int isoSpin=0);
|
||||
virtual ~G4ExcitedBaryonConstructor();
|
||||
|
||||
public:
|
||||
virtual void Construct(G4int indexOfState = -1);
|
||||
|
||||
protected:
|
||||
virtual void ConstructParticle(G4int indexOfState);
|
||||
virtual void ConstructAntiParticle(G4int indexOfState);
|
||||
|
||||
|
||||
virtual G4double GetCharge(G4int iIsoSpin3);
|
||||
virtual G4int GetEncoding(G4int iIsoSpin3, G4int idxState);
|
||||
|
||||
protected:
|
||||
G4int NumberOfStates;
|
||||
G4int iIsoSpin;
|
||||
|
||||
const G4String type;
|
||||
const G4int iConjugation;
|
||||
const G4int iGParity;
|
||||
const G4int leptonNumber;
|
||||
const G4int baryonNumber;
|
||||
|
||||
// following methods are pure virtual
|
||||
// thes methods should be implemented in derived classes
|
||||
virtual G4bool Exist( G4int ) = 0;
|
||||
virtual G4int GetQuarkContents(G4int, G4int)=0;
|
||||
virtual G4String GetName(G4int, G4int )=0;
|
||||
virtual G4double GetMass( G4int )=0;
|
||||
virtual G4double GetWidth( G4int )=0;
|
||||
virtual G4int GetiSpin( G4int )=0;
|
||||
virtual G4int GetiParity( G4int )=0;
|
||||
virtual G4int GetEncodingOffset( G4int )=0;
|
||||
virtual G4DecayTable* CreateDecayTable(const G4String&,
|
||||
G4int , G4int, G4bool)=0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
// 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.hh,v 2.1 1998/07/13 17:19:02 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, CN Division, ASD group
|
||||
// History: first implementation, based on object model of
|
||||
// Hisaya Kurashige, 27 June 1998
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4ExcitedBaryons_h
|
||||
#define G4ExcitedBaryons_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4VShortLivedParticle.hh"
|
||||
|
||||
// ######################################################################
|
||||
// ### ExcitedBaryons ###
|
||||
// ######################################################################
|
||||
|
||||
class G4ExcitedBaryons : public G4VShortLivedParticle
|
||||
{
|
||||
public:
|
||||
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
|
||||
);
|
||||
G4ExcitedBaryons* ExcitedBaryonsDefinition(){return this;};
|
||||
G4ExcitedBaryons* ExcitedBaryons(){return this;};
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
// 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.hh,v 1.3 1998/11/25 14:02:08 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
|
||||
// ---------------------------------------------------------------
|
||||
#ifndef G4ExcitedDeltaConstructor_h
|
||||
#define G4ExcitedDeltaConstructor_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4ExcitedBaryonConstructor.hh"
|
||||
|
||||
class G4ExcitedDeltaConstructor: public G4ExcitedBaryonConstructor
|
||||
{
|
||||
//This class is a utility class for construction
|
||||
//short lived particles
|
||||
|
||||
public:
|
||||
G4ExcitedDeltaConstructor();
|
||||
virtual ~G4ExcitedDeltaConstructor();
|
||||
|
||||
protected:
|
||||
virtual G4int GetEncoding(G4int iIsoSpin3, G4int idxState);
|
||||
|
||||
protected:
|
||||
virtual G4bool Exist( G4int ){return true;}
|
||||
|
||||
virtual G4int GetQuarkContents(G4int, G4int);
|
||||
virtual G4String GetName(G4int iIso3, G4int iState);
|
||||
|
||||
virtual G4double GetMass(G4int iState);
|
||||
virtual G4double GetWidth(G4int iState);
|
||||
virtual G4int GetiSpin(G4int iState);
|
||||
virtual G4int GetiParity(G4int iState);
|
||||
virtual G4int GetEncodingOffset(G4int iState);
|
||||
|
||||
virtual G4DecayTable* CreateDecayTable(const G4String& name,
|
||||
G4int iIso3, G4int iState,
|
||||
G4bool fAnti = false);
|
||||
private:
|
||||
G4DecayTable* AddNGammaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNRhoMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddDeltaPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNStarPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
|
||||
public:
|
||||
enum { NStates = 9 };
|
||||
private:
|
||||
enum { DeltaIsoSpin = 3 };
|
||||
|
||||
private:
|
||||
static const G4String name[ NStates ];
|
||||
static const G4double mass[ NStates ];
|
||||
static const G4double width[ NStates ];
|
||||
static const G4int iSpin[ NStates ];
|
||||
static const G4int iParity[ NStates ];
|
||||
static const G4int encodingOffset[ NStates ];
|
||||
|
||||
public:
|
||||
enum { NumberOfDecayModes = 5};
|
||||
private:
|
||||
enum { NGamma=0, NPi=1, NRho=2, DeltaPi=3, NStarPi=4 };
|
||||
private:
|
||||
static const G4double bRatio[ NStates ][ NumberOfDecayModes];
|
||||
};
|
||||
|
||||
inline
|
||||
G4double G4ExcitedDeltaConstructor::GetMass(G4int iState)
|
||||
{
|
||||
return mass[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4double G4ExcitedDeltaConstructor::GetWidth(G4int iState)
|
||||
{
|
||||
return width[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedDeltaConstructor::GetiSpin(G4int iState)
|
||||
{
|
||||
return iSpin[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedDeltaConstructor::GetiParity(G4int iState)
|
||||
{
|
||||
return iParity[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedDeltaConstructor::GetEncodingOffset(G4int iState)
|
||||
{
|
||||
return encodingOffset[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedDeltaConstructor::GetQuarkContents(G4int iQ, G4int iIso3)
|
||||
{
|
||||
// Quark contents
|
||||
// iIso3 = +3 : uuu
|
||||
// iIso3 = +1 : uud
|
||||
// iIso3 = -1 : udd
|
||||
// iIso3 = -3 : ddd
|
||||
G4int quark=0;
|
||||
if ( iQ == 0 ){
|
||||
if ( iIso3 == -3 ){
|
||||
// d-quark
|
||||
quark = 1;
|
||||
} else {
|
||||
// u-quark
|
||||
quark = 2;
|
||||
}
|
||||
} else if ( iQ == 2 ){
|
||||
if ( iIso3 == +3 ){
|
||||
// u-quark
|
||||
quark = 2;
|
||||
} else {
|
||||
// d-quark
|
||||
quark = 1;
|
||||
}
|
||||
} else {
|
||||
if (( iIso3 == -1 )||( iIso3 == -3 )) {
|
||||
// d-quark
|
||||
quark = 1;
|
||||
} else {
|
||||
// u-quark
|
||||
quark = 2;
|
||||
}
|
||||
}
|
||||
return quark;
|
||||
}
|
||||
|
||||
inline
|
||||
G4String G4ExcitedDeltaConstructor::GetName(G4int iIso3, G4int iState)
|
||||
{
|
||||
G4String particle = name[iState];
|
||||
if ( iIso3 == -3 ){
|
||||
particle += "-";
|
||||
} else if ( iIso3 == -1 ){
|
||||
particle += "0";
|
||||
} else if ( iIso3 == +1 ){
|
||||
particle += "+";
|
||||
} else {
|
||||
particle += "++";
|
||||
}
|
||||
return particle;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,152 @@
|
||||
// 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.hh,v 1.2 1998/11/08 12:14:19 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
|
||||
// ---------------------------------------------------------------
|
||||
#ifndef G4ExcitedLambdaConstructor_h
|
||||
#define G4ExcitedLambdaConstructor_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4ExcitedBaryonConstructor.hh"
|
||||
|
||||
class G4ExcitedLambdaConstructor: public G4ExcitedBaryonConstructor
|
||||
{
|
||||
//This class is a utility class for construction
|
||||
//short lived particles
|
||||
|
||||
public:
|
||||
G4ExcitedLambdaConstructor();
|
||||
virtual ~G4ExcitedLambdaConstructor();
|
||||
|
||||
protected:
|
||||
virtual G4bool Exist( G4int ){return true;}
|
||||
|
||||
virtual G4int GetQuarkContents(G4int, G4int);
|
||||
virtual G4String GetName(G4int iIso3, G4int iState);
|
||||
|
||||
virtual G4double GetMass(G4int iState);
|
||||
virtual G4double GetWidth(G4int iState);
|
||||
virtual G4int GetiSpin(G4int iState);
|
||||
virtual G4int GetiParity(G4int iState);
|
||||
virtual G4int GetEncodingOffset(G4int iState);
|
||||
|
||||
virtual G4DecayTable* CreateDecayTable(const G4String& name,
|
||||
G4int iIso3, G4int iState,
|
||||
G4bool fAnti = false);
|
||||
private:
|
||||
G4DecayTable* AddNKMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNKStarMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddSigmaPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddSigmaStarPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddLambdaGammaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddLambdaEtaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddLambdaOmegaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
|
||||
public:
|
||||
enum { NStates = 12 };
|
||||
private:
|
||||
enum { LambdaIsoSpin = 0 };
|
||||
|
||||
private:
|
||||
static const G4String name[ NStates ];
|
||||
static const G4double mass[ NStates ];
|
||||
static const G4double width[ NStates ];
|
||||
static const G4int iSpin[ NStates ];
|
||||
static const G4int iParity[ NStates ];
|
||||
static const G4int encodingOffset[ NStates ];
|
||||
|
||||
public:
|
||||
enum { NumberOfDecayModes = 7 };
|
||||
private:
|
||||
enum { NK=0, NKStar=1, SigmaPi=2, SigmaStarPi=3, LambdaGamma=4,
|
||||
LambdaEta=5, LambdaOmega=6 };
|
||||
private:
|
||||
static const G4double bRatio[ NStates ][ NumberOfDecayModes];
|
||||
};
|
||||
|
||||
inline
|
||||
G4double G4ExcitedLambdaConstructor::GetMass(G4int iState)
|
||||
{
|
||||
return mass[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4double G4ExcitedLambdaConstructor::GetWidth(G4int iState)
|
||||
{
|
||||
return width[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedLambdaConstructor::GetiSpin(G4int iState)
|
||||
{
|
||||
return iSpin[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedLambdaConstructor::GetiParity(G4int iState)
|
||||
{
|
||||
return iParity[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedLambdaConstructor::GetEncodingOffset(G4int iState)
|
||||
{
|
||||
return encodingOffset[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedLambdaConstructor::GetQuarkContents(G4int iQ, G4int iIso3)
|
||||
{
|
||||
G4int quark=0;
|
||||
if ( iQ == 0 ){
|
||||
// s-quark
|
||||
quark = 3;
|
||||
} else if ( iQ == 1 ){
|
||||
// u-quark
|
||||
quark = 2;
|
||||
} else if ( iQ == 2 ){
|
||||
// d-quark
|
||||
quark = 1;
|
||||
}
|
||||
return quark;
|
||||
}
|
||||
|
||||
inline
|
||||
G4String G4ExcitedLambdaConstructor::GetName(G4int iIso3, G4int iState)
|
||||
{
|
||||
G4String particle = name[iState];
|
||||
return particle;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
// This code plementation 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: G4ExcitedMesonConstructor.hh,v 1.2 1998/11/08 12:14:20 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
|
||||
// ---------------------------------------------------------------
|
||||
#ifndef G4ExcitedMesonConstructor_h
|
||||
#define G4ExcitedMesonConstructor_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
class G4DecayTable;
|
||||
|
||||
class G4ExcitedMesonConstructor
|
||||
{
|
||||
//This class is a utility class for construction
|
||||
//short lived particles
|
||||
|
||||
public:
|
||||
G4ExcitedMesonConstructor(G4int nStates = 0, G4int isoSpin=0);
|
||||
virtual ~G4ExcitedMesonConstructor();
|
||||
|
||||
public:
|
||||
virtual void Construct(G4int indexOfState = -1);
|
||||
|
||||
protected:
|
||||
void ConstructMesons(G4int indexOfState, G4int indexOfType);
|
||||
|
||||
G4String GetName(G4int iIso3, G4int iState, G4int idxType);
|
||||
G4double GetCharge(G4int iIsoSpin3);
|
||||
G4int GetEncoding(G4int iIsoSpin3, G4int idxState, G4int idxType);
|
||||
G4int GetQuarkContents(G4int iQ, G4int iIso3, G4int iType);
|
||||
|
||||
public:
|
||||
enum { NMultiplets = 10 };
|
||||
protected:
|
||||
enum {
|
||||
N11P1 = 0, N13P0 = 1, N13P1 = 2, N13P2 = 3,
|
||||
N11D2 = 4, N13D1 = 5, N13D3 = 6,
|
||||
N21S0 = 7, N23S1 = 8, N23P2 = 9
|
||||
};
|
||||
|
||||
public:
|
||||
enum { NMesonTypes = 5 };
|
||||
protected:
|
||||
enum { TPi=0, TEta=1, TEtaPrime=2, TK=3, TAntiK=4 };
|
||||
|
||||
protected:
|
||||
const G4String type;
|
||||
const G4int leptonNumber;
|
||||
const G4int baryonNumber;
|
||||
|
||||
G4bool Exist(G4int idxState, G4int idxType);
|
||||
G4double GetCharge(G4int iIsoSpin3, G4int idxType);
|
||||
static const G4String name[ NMultiplets ][ NMesonTypes ];
|
||||
static const G4double mass[ NMultiplets ][ NMesonTypes ];
|
||||
static const G4double width[ NMultiplets ][ NMesonTypes ];
|
||||
static const G4int iIsoSpin[ NMesonTypes ];
|
||||
static const G4int iSpin[ NMultiplets ];
|
||||
static const G4int iParity[ NMultiplets ];
|
||||
static const G4int iGParity[ NMultiplets ][ NMesonTypes ];
|
||||
static const G4int iChargeConjugation[ NMultiplets ];
|
||||
static const G4int encodingOffset[ NMultiplets ];
|
||||
|
||||
public:
|
||||
enum { NumberOfDecayModes = 19 };
|
||||
protected:
|
||||
enum { MPiGamma = 0, MRhoGamma=1, M2Pi=2, MPiRho=3,
|
||||
M3Pi= 4, MPiEta=5, M4Pi=6, MKKStar=7,
|
||||
M2PiEta=8, MRhoEta=9, M2PiRho=10, M2PiOmega=11,
|
||||
M2Eta=12, M2K=13, M2KPi=14, MPiOmega=15,
|
||||
MPiF2=16, MPiF0=17, MPiA2=18 };
|
||||
enum { MKPi = 0, MKStarPi=1, MKRho=2, MKOmega=3,
|
||||
MKStar2Pi=4, MKTwoPi=5, MKEta=6};
|
||||
|
||||
|
||||
static const G4double bRatio[ NMultiplets ][ NMesonTypes ][ NumberOfDecayModes];
|
||||
|
||||
G4DecayTable* CreateDecayTable(const G4String&,
|
||||
G4int , G4int, G4int);
|
||||
|
||||
G4DecayTable* AddKPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iType);
|
||||
G4DecayTable* AddKStarPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iType);
|
||||
G4DecayTable* AddKStar2PiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iType);
|
||||
G4DecayTable* AddKRhoMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iType);
|
||||
G4DecayTable* AddKTwoPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iType);
|
||||
G4DecayTable* AddKOmegaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iType);
|
||||
G4DecayTable* AddKEtaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iType);
|
||||
G4DecayTable* AddPiGammaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3,G4int iIso);
|
||||
G4DecayTable* AddRhoGammaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* Add2PiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* AddPiRhoMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* AddPiEtaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* AddPiF2Mode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* AddPiF0Mode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* AddPiA2Mode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* Add3PiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* Add4PiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* AddKKStarMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* Add2PiEtaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* AddRhoEtaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* Add2PiRhoMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* Add2PiOmegaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* AddPiOmegaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* Add2EtaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* Add2KMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
G4DecayTable* Add2KPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4int iIso);
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
inline
|
||||
G4String G4ExcitedMesonConstructor::GetName(G4int iIso3,
|
||||
G4int iState,
|
||||
G4int iType)
|
||||
{
|
||||
G4String particle = name[iState][iType];
|
||||
if (iType == TPi) {
|
||||
if ( iIso3 == +2 ){
|
||||
particle += "+";
|
||||
} else if ( iIso3 == -2 ){
|
||||
particle += "-";
|
||||
} else {
|
||||
particle += "0";
|
||||
}
|
||||
} else if (iType == TK) {
|
||||
if ( iIso3 == +1 ){
|
||||
particle += "+";
|
||||
} else if ( iIso3 == -1 ){
|
||||
particle += "0";
|
||||
}
|
||||
} else if (iType == TAntiK) {
|
||||
if ( iIso3 == +1 ){
|
||||
particle += "0";
|
||||
particle = "anti_" + particle;
|
||||
} else if ( iIso3 == -1 ){
|
||||
particle += "-";
|
||||
}
|
||||
}
|
||||
return particle;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
// 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.hh,v 2.1 1998/07/13 17:19:03 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, CN Division, ASD group
|
||||
// History: first implementation, based on object model of
|
||||
// Hisaya Kurashige, 27 June 1998
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4ExcitedMesons_h
|
||||
#define G4ExcitedMesons_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4VShortLivedParticle.hh"
|
||||
|
||||
// ######################################################################
|
||||
// ### ExcitedMesons ###
|
||||
// ######################################################################
|
||||
|
||||
class G4ExcitedMesons : public G4VShortLivedParticle
|
||||
{
|
||||
public:
|
||||
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
|
||||
);
|
||||
G4ExcitedMesons* ExcitedMesonsDefinition(){return this;};
|
||||
G4ExcitedMesons* ExcitedMesons(){return this;};
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
// 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.hh,v 1.4 1998/11/26 10:09:07 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
|
||||
// ---------------------------------------------------------------
|
||||
#ifndef G4ExcitedNucleonConstructor_h
|
||||
#define G4ExcitedNucleonConstructor_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4ExcitedBaryonConstructor.hh"
|
||||
|
||||
class G4ExcitedNucleonConstructor: public G4ExcitedBaryonConstructor
|
||||
{
|
||||
//This class is a utility class for construction
|
||||
//short lived particles
|
||||
|
||||
public:
|
||||
G4ExcitedNucleonConstructor();
|
||||
virtual ~G4ExcitedNucleonConstructor();
|
||||
|
||||
protected:
|
||||
virtual G4int GetEncoding(G4int iIsoSpin3, G4int idxState);
|
||||
|
||||
protected:
|
||||
virtual G4bool Exist( G4int ){return true;}
|
||||
|
||||
virtual G4int GetQuarkContents(G4int, G4int);
|
||||
virtual G4String GetName(G4int iIso3, G4int iState);
|
||||
|
||||
virtual G4double GetMass(G4int iState);
|
||||
virtual G4double GetWidth(G4int iState);
|
||||
virtual G4int GetiSpin(G4int iState);
|
||||
virtual G4int GetiParity(G4int iState);
|
||||
virtual G4int GetEncodingOffset(G4int iState);
|
||||
|
||||
virtual G4DecayTable* CreateDecayTable(const G4String& name,
|
||||
G4int iIso3, G4int iState,
|
||||
G4bool fAnti = false);
|
||||
private:
|
||||
G4DecayTable* AddNGammaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNEtaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNOmegaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNRhoMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddN2PiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddDeltaPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNStarPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddLambdaKMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
|
||||
public:
|
||||
enum { NStates = 15 };
|
||||
private:
|
||||
enum { NucleonIsoSpin = 1 };
|
||||
|
||||
private:
|
||||
static const G4String name[ NStates ];
|
||||
static const G4double mass[ NStates ];
|
||||
static const G4double width[ NStates ];
|
||||
static const G4int iSpin[ NStates ];
|
||||
static const G4int iParity[ NStates ];
|
||||
static const G4int encodingOffset[ NStates ];
|
||||
|
||||
public:
|
||||
enum { NumberOfDecayModes = 9 };
|
||||
private:
|
||||
enum { NGamma=0, NPi=1, NEta=2, NOmega=3, NRho=4,
|
||||
N2Pi=5, DeltaPi=6, NStarPi=7, LambdaK = 8 };
|
||||
private:
|
||||
static const G4double bRatio[ NStates ][ NumberOfDecayModes];
|
||||
};
|
||||
|
||||
inline
|
||||
G4double G4ExcitedNucleonConstructor::GetMass(G4int iState)
|
||||
{
|
||||
return mass[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4double G4ExcitedNucleonConstructor::GetWidth(G4int iState)
|
||||
{
|
||||
return width[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedNucleonConstructor::GetiSpin(G4int iState)
|
||||
{
|
||||
return iSpin[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedNucleonConstructor::GetiParity(G4int iState)
|
||||
{
|
||||
return iParity[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedNucleonConstructor::GetEncodingOffset(G4int iState)
|
||||
{
|
||||
return encodingOffset[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedNucleonConstructor::GetQuarkContents(G4int iQ, G4int iIso3)
|
||||
{
|
||||
// Quark contents
|
||||
// iIso3 = -1 : udd
|
||||
// iIso3 = +1 : uud
|
||||
G4int quark=0;
|
||||
if ( iQ == 0 ){
|
||||
// u-quark
|
||||
quark = 2;
|
||||
} else if ( iQ == 2 ){
|
||||
// d-quark
|
||||
quark = 1;
|
||||
} else {
|
||||
if ( iIso3 == -1 ){
|
||||
// d-quark
|
||||
quark = 1;
|
||||
} else {
|
||||
// u-quark
|
||||
quark = 2;
|
||||
}
|
||||
}
|
||||
return quark;
|
||||
}
|
||||
|
||||
inline
|
||||
G4String G4ExcitedNucleonConstructor::GetName(G4int iIso3, G4int iState)
|
||||
{
|
||||
G4String particle = name[iState];
|
||||
if ( iIso3 == -1 ){
|
||||
particle += "0";
|
||||
} else {
|
||||
particle += "+";
|
||||
}
|
||||
return particle;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,171 @@
|
||||
// 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.hh,v 1.2 1998/11/08 12:14: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
|
||||
// ---------------------------------------------------------------
|
||||
#ifndef G4ExcitedSigmaConstructor_h
|
||||
#define G4ExcitedSigmaConstructor_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4ExcitedBaryonConstructor.hh"
|
||||
|
||||
class G4ExcitedSigmaConstructor: public G4ExcitedBaryonConstructor
|
||||
{
|
||||
//This class is a utility class for construction
|
||||
//short lived particles
|
||||
|
||||
public:
|
||||
G4ExcitedSigmaConstructor();
|
||||
virtual ~G4ExcitedSigmaConstructor();
|
||||
|
||||
protected:
|
||||
virtual G4bool Exist( G4int ){return true;}
|
||||
|
||||
virtual G4int GetQuarkContents(G4int, G4int);
|
||||
virtual G4String GetName(G4int iIso3, G4int iState);
|
||||
|
||||
virtual G4double GetMass(G4int iState);
|
||||
virtual G4double GetWidth(G4int iState);
|
||||
virtual G4int GetiSpin(G4int iState);
|
||||
virtual G4int GetiParity(G4int iState);
|
||||
virtual G4int GetEncodingOffset(G4int iState);
|
||||
|
||||
virtual G4DecayTable* CreateDecayTable(const G4String& name,
|
||||
G4int iIso3, G4int iState,
|
||||
G4bool fAnti = false);
|
||||
private:
|
||||
G4DecayTable* AddNKMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddNKStarMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddSigmaPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddSigmaStarPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddLambdaPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddSigmaEtaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddLambdaStarPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddDeltaKMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
|
||||
public:
|
||||
enum { NStates = 8 };
|
||||
private:
|
||||
enum { SigmaIsoSpin = 2 };
|
||||
|
||||
private:
|
||||
static const G4String name[ NStates ];
|
||||
static const G4double mass[ NStates ];
|
||||
static const G4double width[ NStates ];
|
||||
static const G4int iSpin[ NStates ];
|
||||
static const G4int iParity[ NStates ];
|
||||
static const G4int encodingOffset[ NStates ];
|
||||
|
||||
public:
|
||||
enum { NumberOfDecayModes = 8 };
|
||||
private:
|
||||
enum { NK=0, NKStar=1, SigmaPi=2, SigmaStarPi=3, LambdaPi=4,
|
||||
SigmaEta=5, LambdaStarPi=6, DeltaK=7};
|
||||
private:
|
||||
static const G4double bRatio[ NStates ][ NumberOfDecayModes];
|
||||
};
|
||||
|
||||
inline
|
||||
G4double G4ExcitedSigmaConstructor::GetMass(G4int iState)
|
||||
{
|
||||
return mass[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4double G4ExcitedSigmaConstructor::GetWidth(G4int iState)
|
||||
{
|
||||
return width[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedSigmaConstructor::GetiSpin(G4int iState)
|
||||
{
|
||||
return iSpin[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedSigmaConstructor::GetiParity(G4int iState)
|
||||
{
|
||||
return iParity[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedSigmaConstructor::GetEncodingOffset(G4int iState)
|
||||
{
|
||||
return encodingOffset[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedSigmaConstructor::GetQuarkContents(G4int iQ, G4int iIso3)
|
||||
{
|
||||
G4int quark=0;
|
||||
if ( iQ == 0 ){
|
||||
// s-quark
|
||||
quark = 3;
|
||||
} else if ( iQ == 1 ){
|
||||
if (iIso3 == -2) {
|
||||
// d-quark
|
||||
quark = 1;
|
||||
} else {
|
||||
// u-quark
|
||||
quark = 2;
|
||||
}
|
||||
} else if ( iQ == 2 ){
|
||||
if (iIso3 == +2) {
|
||||
// u-quark
|
||||
quark = 2;
|
||||
} else {
|
||||
// d-quark
|
||||
quark = 1;
|
||||
}
|
||||
}
|
||||
return quark;
|
||||
}
|
||||
|
||||
inline
|
||||
G4String G4ExcitedSigmaConstructor::GetName(G4int iIso3, G4int iState)
|
||||
{
|
||||
G4String particle = name[iState];
|
||||
if (iIso3 == +2) {
|
||||
particle += "+";
|
||||
} else if (iIso3 == 0) {
|
||||
particle += "0";
|
||||
} else if (iIso3 == -2) {
|
||||
particle += "-";
|
||||
}
|
||||
return particle;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
// 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.hh,v 1.2 1998/11/08 12:14:23 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
|
||||
// ---------------------------------------------------------------
|
||||
#ifndef G4ExcitedXiConstructor_h
|
||||
#define G4ExcitedXiConstructor_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4ExcitedBaryonConstructor.hh"
|
||||
|
||||
class G4ExcitedXiConstructor: public G4ExcitedBaryonConstructor
|
||||
{
|
||||
//This class is a utility class for construction
|
||||
//short lived particles
|
||||
|
||||
public:
|
||||
G4ExcitedXiConstructor();
|
||||
virtual ~G4ExcitedXiConstructor();
|
||||
|
||||
protected:
|
||||
virtual G4bool Exist( G4int ){return true;}
|
||||
|
||||
virtual G4int GetQuarkContents(G4int, G4int);
|
||||
virtual G4String GetName(G4int iIso3, G4int iState);
|
||||
|
||||
virtual G4double GetMass(G4int iState);
|
||||
virtual G4double GetWidth(G4int iState);
|
||||
virtual G4int GetiSpin(G4int iState);
|
||||
virtual G4int GetiParity(G4int iState);
|
||||
virtual G4int GetEncodingOffset(G4int iState);
|
||||
|
||||
virtual G4DecayTable* CreateDecayTable(const G4String& name,
|
||||
G4int iIso3, G4int iState,
|
||||
G4bool fAnti = false);
|
||||
private:
|
||||
G4DecayTable* AddXiPiMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddXiGammaMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddLambdaKMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
G4DecayTable* AddSigmaKMode( G4DecayTable* table, const G4String& name,
|
||||
G4double br, G4int iIso3, G4bool fAnti);
|
||||
|
||||
public:
|
||||
enum { NStates = 5 };
|
||||
private:
|
||||
enum { XiIsoSpin = 1 };
|
||||
|
||||
private:
|
||||
static const G4String name[ NStates ];
|
||||
static const G4double mass[ NStates ];
|
||||
static const G4double width[ NStates ];
|
||||
static const G4int iSpin[ NStates ];
|
||||
static const G4int iParity[ NStates ];
|
||||
static const G4int encodingOffset[ NStates ];
|
||||
|
||||
public:
|
||||
enum { NumberOfDecayModes = 4 };
|
||||
private:
|
||||
enum { XiPi=0, XiGamma=1, LambdaK=2, SigmaK=3 };
|
||||
private:
|
||||
static const G4double bRatio[ NStates ][ NumberOfDecayModes];
|
||||
};
|
||||
|
||||
inline
|
||||
G4double G4ExcitedXiConstructor::GetMass(G4int iState)
|
||||
{
|
||||
return mass[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4double G4ExcitedXiConstructor::GetWidth(G4int iState)
|
||||
{
|
||||
return width[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedXiConstructor::GetiSpin(G4int iState)
|
||||
{
|
||||
return iSpin[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedXiConstructor::GetiParity(G4int iState)
|
||||
{
|
||||
return iParity[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedXiConstructor::GetEncodingOffset(G4int iState)
|
||||
{
|
||||
return encodingOffset[iState];
|
||||
}
|
||||
|
||||
inline
|
||||
G4int G4ExcitedXiConstructor::GetQuarkContents(G4int iQ, G4int iIso3)
|
||||
{
|
||||
G4int quark=0;
|
||||
if ( iQ == 0 ){
|
||||
// s-quark
|
||||
quark = 3;
|
||||
} else if ( iQ == 1 ){
|
||||
// s-quark
|
||||
quark = 3;
|
||||
} else if ( iQ == 2 ){
|
||||
if (iIso3 == +1) {
|
||||
// u-quark
|
||||
quark = 2;
|
||||
} else {
|
||||
// d-quark
|
||||
quark = 1;
|
||||
}
|
||||
}
|
||||
return quark;
|
||||
}
|
||||
|
||||
inline
|
||||
G4String G4ExcitedXiConstructor::GetName(G4int iIso3, G4int iState)
|
||||
{
|
||||
G4String particle = name[iState];
|
||||
if (iIso3 == +1) {
|
||||
particle += "0";
|
||||
} else if (iIso3 ==-1) {
|
||||
particle += "-";
|
||||
}
|
||||
return particle;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
// 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.hh,v 2.1 1998/07/13 17:19:05 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, CN Division, ASD group
|
||||
// History: first implementation, based on object model of
|
||||
// Hisaya Kurashige, 27 June 1998
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4Gluons_h
|
||||
#define G4Gluons_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4VShortLivedParticle.hh"
|
||||
|
||||
// ######################################################################
|
||||
// ### Gluons ###
|
||||
// ######################################################################
|
||||
|
||||
class G4Gluons : public G4VShortLivedParticle
|
||||
{
|
||||
public:
|
||||
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
|
||||
);
|
||||
G4Gluons* GluonsDefinition(){return this;};
|
||||
G4Gluons* Gluons(){return this;};
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
// 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.hh,v 2.1 1998/07/13 17:19:07 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, CN Division, ASD group
|
||||
// History: first implementation, based on object model of
|
||||
// Hisaya Kurashige, 27 June 1998
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4Quarks_h
|
||||
#define G4Quarks_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4VShortLivedParticle.hh"
|
||||
|
||||
// ######################################################################
|
||||
// ### Quarks ###
|
||||
// ######################################################################
|
||||
|
||||
class G4Quarks : public G4VShortLivedParticle
|
||||
{
|
||||
public:
|
||||
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
|
||||
);
|
||||
G4Quarks* QuarksDefinition(){return this;};
|
||||
G4Quarks* Quarks(){return this;};
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
// 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.hh,v 2.2 1998/12/02 09:57:56 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// GEANT 4 class implementation file
|
||||
//
|
||||
#ifndef G4ShortLivedConstructor_h
|
||||
#define G4ShortLivedConstructor_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
class G4ShortLivedConstructor
|
||||
{
|
||||
//This class is a utility class for construction
|
||||
//short lived particles
|
||||
|
||||
public:
|
||||
G4ShortLivedConstructor();
|
||||
~G4ShortLivedConstructor();
|
||||
|
||||
public:
|
||||
void ConstructParticle();
|
||||
|
||||
protected:
|
||||
void ConstructResonances();
|
||||
void ConstructBarions();
|
||||
void ConstructMesons();
|
||||
void ConstructQuarks();
|
||||
|
||||
private:
|
||||
static G4bool isConstructed;
|
||||
// flag for checking whether resonces exist or not
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
// 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.hh,v 2.1 1998/07/13 17:19:10 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, CN Division, ASD group
|
||||
// History: first implementation, based on object model of
|
||||
// Hisaya Kurashige, 27 June 1998
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
#ifndef G4VShortLivedParticle_h
|
||||
#define G4VShortLivedParticle_h 1
|
||||
|
||||
#include "G4ios.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
|
||||
class G4VShortLivedParticle : public G4ParticleDefinition
|
||||
{
|
||||
// A virtual class for short lived particles.
|
||||
// ShortLivedParticle particles will not be tracked by the TrackingManager
|
||||
// So, G4VShortLivedParticle is not derived from G4ParticleWIthCuts
|
||||
private:
|
||||
|
||||
const G4VShortLivedParticle & operator=(const G4VShortLivedParticle &right);
|
||||
|
||||
public:
|
||||
|
||||
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);
|
||||
|
||||
virtual ~G4VShortLivedParticle() {};
|
||||
|
||||
G4int operator==(const G4VShortLivedParticle &right) const;
|
||||
G4int operator!=(const G4VShortLivedParticle &right) const;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -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());
|
||||
}
|
||||
Reference in New Issue
Block a user