Import Geant4 9.5.0 source tree
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010/09/29 19:03:31 bmorgan Exp $
|
||||
# $Id: CMakeLists.txt,v 1.1 2010-09-29 19:03:31 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile,v 1.2 2003/10/08 16:42:20 hpw Exp $
|
||||
# $Id: GNUmakefile,v 1.2 2003-10-08 16:42:20 hpw Exp $
|
||||
# -----------------------------------------------------------
|
||||
# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96.
|
||||
# -----------------------------------------------------------
|
||||
@@ -11,6 +11,7 @@ endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -DG4HADRONIC_ALLOC_EXPORT
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
|
||||
@@ -14,6 +14,42 @@ code and to keep track of all tags.
|
||||
* Please list in reverse chronological order (last date on top)
|
||||
---------------------------------------------------------------
|
||||
|
||||
19 November 2011 - V.Ivanchenko (hadr-lep-V09-04-05)
|
||||
----------------------------------------------------
|
||||
Added protection against return back only primary particle with
|
||||
increased energy (warning in simplified calorimeter test):
|
||||
G4LEDeuteronInelastic.cc
|
||||
G4LETritonInelastic.cc
|
||||
G4LEAlphaInelastic.cc
|
||||
|
||||
25 October 2011 - Dennis Wright (hadr-lep-V09-04-04)
|
||||
----------------------------------------------------
|
||||
Replace Description() with ModelDescription(std::ostream&) in all models
|
||||
|
||||
27 September 2011 - Dennis Wright (hadr-lep-V09-04-03)
|
||||
------------------------------------------------------
|
||||
Migrate to integer Z and A. Files affected:
|
||||
G4LCapture.cc
|
||||
G4LEAlphaInelastic.cc
|
||||
G4LEDeuteronInelastic.cc
|
||||
G4LENeutronInelastic.cc
|
||||
G4LEProtonInelastic.cc
|
||||
G4LETritonInelastic.cc
|
||||
G4LElastic.cc
|
||||
G4LFission.cc
|
||||
|
||||
02 August 2011 - Dennis Wright (hadr-lep-V09-04-02)
|
||||
---------------------------------------------------
|
||||
Remove test directory from trunk. It remains in tag hadr-lep-V09-04-01
|
||||
|
||||
02 August 2011 - Dennis Wright (hadr-lep-V09-04-01)
|
||||
---------------------------------------------------
|
||||
Add Description() method to all model classes for html documentation
|
||||
|
||||
19 May 2011 - Dennis Wright (hadr-lep-V09-04-00)
|
||||
------------------------------------------------
|
||||
G4LCapture.cc: fix gcc-4.6 compiler warning (variable e0 set but not used)
|
||||
|
||||
26 February 2007 - Dennis Wright (hadr-lep-V08-02-01)
|
||||
-----------------------------------------------------
|
||||
G4LEAntiProtonInelastic.cc : for low energy (< 0.1 MeV) anti-protons,
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LCapture.hh,v 1.11 2006/06/29 20:43:26 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4LCapture.hh,v 1.11 2006-06-29 20:43:26 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
//
|
||||
// G4 Low energy model: neutron capture -- header file
|
||||
@@ -65,22 +65,25 @@
|
||||
|
||||
class G4LCapture : public G4HadronicInteraction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
G4LCapture();
|
||||
G4LCapture(const G4String& name = "G4LCapture");
|
||||
|
||||
~G4LCapture();
|
||||
~G4LCapture();
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
private:
|
||||
// void Description() const;
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
// Computes atomic mass in GeV using method from G4LFission
|
||||
inline
|
||||
G4double Atomas(const G4double A, const G4double Z)
|
||||
{
|
||||
private:
|
||||
|
||||
// Computes atomic mass in GeV using method from G4LFission
|
||||
inline
|
||||
G4double Atomas(const G4double A, const G4double Z)
|
||||
{
|
||||
return G4LFission::Atomas(A, Z)/GeV;
|
||||
}
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAlphaInelastic.hh,v 1.10 2007-02-24 06:06:38 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAlphaInelastic.hh,v 1.10 2007/02/24 06:06:38 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy Alpha Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 21-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy Alpha Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 21-Feb-1997
|
||||
|
||||
#ifndef G4LEAlphaInelastic_h
|
||||
#define G4LEAlphaInelastic_h 1
|
||||
@@ -43,23 +41,18 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEAlphaInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEAlphaInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEAlphaInelastic() : G4InelasticInteraction("G4LEAlphaInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
// SetMaxEnergy( 100.*MeV ); // NUCREC only worked for energies < 100MeV
|
||||
// Work around to avoid exception in G4EnergyRangeManager
|
||||
SetMaxEnergy( 10.*TeV ); // NUCREC only worked for energies < 100MeV
|
||||
}
|
||||
G4LEAlphaInelastic(const G4String& name = "G4LEAlphaInelastic");
|
||||
|
||||
~G4LEAlphaInelastic() { }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
};
|
||||
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiKaonZeroInelastic.hh,v 1.7 2007-02-24 06:10:26 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiKaonZeroInelastic.hh,v 1.7 2007/02/24 06:10:26 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy KaonZeroL Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy KaonZeroL Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
|
||||
#ifndef G4LEAntiKaonZeroInelastic_h
|
||||
#define G4LEAntiKaonZeroInelastic_h 1
|
||||
@@ -43,9 +41,9 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEAntiKaonZeroInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEAntiKaonZeroInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEAntiKaonZeroInelastic() : G4InelasticInteraction("G4LEAntiKaonZeroInelastic")
|
||||
{
|
||||
@@ -53,13 +51,14 @@
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
}
|
||||
|
||||
~G4LEAntiKaonZeroInelastic()
|
||||
{ }
|
||||
~G4LEAntiKaonZeroInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASK0B
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -70,8 +69,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LEAntiLambdaInelastic.hh,v 1.11 2007/02/24 06:11:24 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4LEAntiLambdaInelastic.hh,v 1.11 2007-02-24 06:11:24 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Hadronic Process: Low Energy AntiLambda Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
@@ -57,6 +57,8 @@
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
@@ -24,13 +24,13 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LEAntiNeutronInelastic.hh,v 1.11 2007/02/24 06:13:02 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4LEAntiNeutronInelastic.hh,v 1.11 2007-02-24 06:13:02 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Hadronic Process: Low Energy AntiNeutron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
|
||||
// Hadronic Process: Low Energy AntiNeutron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
//
|
||||
|
||||
#ifndef G4LEAntiNeutronInelastic_h
|
||||
#define G4LEAntiNeutronInelastic_h 1
|
||||
|
||||
@@ -42,37 +42,32 @@
|
||||
// Class Description - End
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
|
||||
class G4LEAntiNeutronInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEAntiNeutronInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEAntiNeutronInelastic() : G4InelasticInteraction("G4LEAntiNeutronInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
}
|
||||
G4LEAntiNeutronInelastic(const G4String& name = "G4LEAntiNeutronInelastic");
|
||||
|
||||
~G4LEAntiNeutronInelastic()
|
||||
{ }
|
||||
~G4LEAntiNeutronInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
private:
|
||||
|
||||
void
|
||||
Cascade( // derived from CASNB
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int &vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct ¤tParticle,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
|
||||
void Cascade( // derived from CASNB
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE>& vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& currentParticle,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4bool& incidentHasChanged,
|
||||
G4bool& targetHasChanged,
|
||||
G4bool& quasiElastic);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+15
-15
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiOmegaMinusInelastic.hh,v 1.11 2007-02-24 06:13:54 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiOmegaMinusInelastic.hh,v 1.11 2007/02/24 06:13:54 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy AntiOmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy AntiOmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
|
||||
#ifndef G4LEAntiOmegaMinusInelastic_h
|
||||
#define G4LEAntiOmegaMinusInelastic_h 1
|
||||
@@ -43,22 +41,24 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEAntiOmegaMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEAntiOmegaMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEAntiOmegaMinusInelastic() : G4InelasticInteraction("G4LEAntiOmegaMinusInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
~G4LEAntiOmegaMinusInelastic() { }
|
||||
~G4LEAntiOmegaMinusInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void
|
||||
Cascade( // derived from CASOM
|
||||
|
||||
@@ -23,54 +23,50 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiProtonInelastic.hh,v 1.11 2007/02/24 05:07:32 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4LEAntiProtonInelastic.hh,v 1.11 2007-02-24 05:07:32 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Hadronic Process: Low Energy AntiProton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
//
|
||||
// Hadronic Process: Low Energy AntiProton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
|
||||
#ifndef G4LEAntiProtonInelastic_h
|
||||
#define G4LEAntiProtonInelastic_h 1
|
||||
|
||||
// Class Description
|
||||
// Final state production model for AntiProton inelastic scattering below 20 GeV;
|
||||
// To be used in your physics list in case you need this physics.
|
||||
// Final state production model for AntiProton inelastic scattering below
|
||||
// 20 GeV; To be used in your physics list in case you need this physics.
|
||||
// In this case you want to register an object of this class with
|
||||
// the corresponding process.
|
||||
// Class Description - End
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEAntiProtonInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
class G4LEAntiProtonInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEAntiProtonInelastic():G4InelasticInteraction("G4LEAntiProtonInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
}
|
||||
G4LEAntiProtonInelastic(const G4String& name = "G4LEAntiProtonInelastic");
|
||||
|
||||
~G4LEAntiProtonInelastic() { }
|
||||
~G4LEAntiProtonInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
private:
|
||||
|
||||
void
|
||||
Cascade( // derived from CASPB
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int &vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct ¤tParticle,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
|
||||
void Cascade( // derived from CASPB
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE>& vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& currentParticle,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4bool& incidentHasChanged,
|
||||
G4bool& targetHasChanged,
|
||||
G4bool& quasiElastic);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+15
-15
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiSigmaMinusInelastic.hh,v 1.11 2007-02-24 06:38:14 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiSigmaMinusInelastic.hh,v 1.11 2007/02/24 06:38:14 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy AntiSigmaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy AntiSigmaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
|
||||
#ifndef G4LEAntiSigmaMinusInelastic_h
|
||||
#define G4LEAntiSigmaMinusInelastic_h 1
|
||||
@@ -43,22 +41,24 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEAntiSigmaMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEAntiSigmaMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEAntiSigmaMinusInelastic() : G4InelasticInteraction("G4LEAntiSigmaMinusInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
~G4LEAntiSigmaMinusInelastic() { }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void
|
||||
Cascade( // derived from CASASM
|
||||
@@ -71,7 +71,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiSigmaPlusInelastic.hh,v 1.11 2007-02-24 06:39:17 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiSigmaPlusInelastic.hh,v 1.11 2007/02/24 06:39:17 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy AntiSigmaPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy AntiSigmaPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
|
||||
#ifndef G4LEAntiSigmaPlusInelastic_h
|
||||
#define G4LEAntiSigmaPlusInelastic_h 1
|
||||
@@ -43,9 +41,9 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEAntiSigmaPlusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEAntiSigmaPlusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEAntiSigmaPlusInelastic() : G4InelasticInteraction("G4LEAntiSigmaPlusInelastic")
|
||||
{
|
||||
@@ -55,8 +53,10 @@
|
||||
|
||||
~G4LEAntiSigmaPlusInelastic() { }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiXiMinusInelastic.hh,v 1.11 2007-02-24 06:42:10 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiXiMinusInelastic.hh,v 1.11 2007/02/24 06:42:10 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy AntiXiMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy AntiXiMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
|
||||
#ifndef G4LEAntiXiMinusInelastic_h
|
||||
#define G4LEAntiXiMinusInelastic_h 1
|
||||
@@ -43,9 +41,9 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEAntiXiMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEAntiXiMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEAntiXiMinusInelastic() : G4InelasticInteraction("G4LEAntiXiMinusInelastic")
|
||||
{
|
||||
@@ -53,13 +51,14 @@
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
}
|
||||
|
||||
~G4LEAntiXiMinusInelastic()
|
||||
{ }
|
||||
~G4LEAntiXiMinusInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void
|
||||
Cascade( // derived from CASAL0
|
||||
@@ -72,7 +71,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiXiZeroInelastic.hh,v 1.11 2007-02-24 06:43:02 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiXiZeroInelastic.hh,v 1.11 2007/02/24 06:43:02 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy AntiXiZero Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy AntiXiZero Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
|
||||
#ifndef G4LEAntiXiZeroInelastic_h
|
||||
#define G4LEAntiXiZeroInelastic_h 1
|
||||
@@ -43,9 +41,9 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEAntiXiZeroInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEAntiXiZeroInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEAntiXiZeroInelastic() : G4InelasticInteraction("G4LEAntiXiZeroInelastic")
|
||||
{
|
||||
@@ -55,11 +53,13 @@
|
||||
|
||||
~G4LEAntiXiZeroInelastic() { }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
|
||||
private:
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
void
|
||||
Cascade( // derived from CASAL0
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -71,7 +71,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEDeuteronInelastic.hh,v 1.10 2007-02-24 06:45:04 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEDeuteronInelastic.hh,v 1.10 2007/02/24 06:45:04 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy Deuteron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy Deuteron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
|
||||
#ifndef G4LEDeuteronInelastic_h
|
||||
#define G4LEDeuteronInelastic_h 1
|
||||
@@ -43,9 +41,9 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEDeuteronInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEDeuteronInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEDeuteronInelastic() : G4InelasticInteraction("G4LEDeuteronInelastic")
|
||||
{
|
||||
@@ -55,11 +53,13 @@
|
||||
SetMaxEnergy( 10.*TeV ); // NUCREC only worked for energies < 100MeV
|
||||
}
|
||||
|
||||
~G4LEDeuteronInelastic() { }
|
||||
~G4LEDeuteronInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
};
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEKaonMinusInelastic.hh,v 1.11 2007-02-26 18:21:07 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEKaonMinusInelastic.hh,v 1.11 2007/02/26 18:21:07 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy KaonMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy KaonMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
|
||||
#ifndef G4LEKaonMinusInelastic_h
|
||||
#define G4LEKaonMinusInelastic_h 1
|
||||
@@ -43,35 +41,30 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEKaonMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEKaonMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEKaonMinusInelastic() : G4InelasticInteraction("G4LEKaonMinusInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
}
|
||||
G4LEKaonMinusInelastic(const G4String& name = "G4LEKaonMinusInelastic");
|
||||
|
||||
~G4LEKaonMinusInelastic()
|
||||
{ }
|
||||
~G4LEKaonMinusInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASKM
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int &vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct ¤tParticle,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
|
||||
void Cascade( // derived from CASKM
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE>& vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& currentParticle,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4bool& incidentHasChanged,
|
||||
G4bool& targetHasChanged,
|
||||
G4bool& quasiElastic);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEKaonPlusInelastic.hh,v 1.11 2007-02-26 18:21:57 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEKaonPlusInelastic.hh,v 1.11 2007/02/26 18:21:57 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy KaonPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy KaonPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
|
||||
#ifndef G4LEKaonPlusInelastic_h
|
||||
#define G4LEKaonPlusInelastic_h 1
|
||||
@@ -42,24 +40,22 @@
|
||||
// Class Description - End
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
|
||||
class G4LEKaonPlusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEKaonPlusInelastic(const G4String& name = "G4LEKaonPlusInelastic");
|
||||
|
||||
~G4LEKaonPlusInelastic() {}
|
||||
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
class G4LEKaonPlusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEKaonPlusInelastic() : G4InelasticInteraction("G4LEKaonPlusInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
}
|
||||
|
||||
~G4LEKaonPlusInelastic()
|
||||
{ }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASKP
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -71,7 +67,6 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEKaonZeroInelastic.hh,v 1.7 2007-02-26 18:23:45 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEKaonZeroInelastic.hh,v 1.7 2007/02/26 18:23:45 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy KaonZeroS Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy KaonZeroS Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
|
||||
#ifndef G4LEKaonZeroInelastic_h
|
||||
#define G4LEKaonZeroInelastic_h 1
|
||||
@@ -43,9 +41,9 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEKaonZeroInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEKaonZeroInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEKaonZeroInelastic() : G4InelasticInteraction("G4LEKaonZeroInelastic")
|
||||
{
|
||||
@@ -57,9 +55,11 @@
|
||||
{ }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4Nucleus &targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASK0
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -71,7 +71,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,15 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LEKaonZeroLInelastic.hh,v 1.12 2007/02/26 18:24:54 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// $Id: G4LEKaonZeroLInelastic.hh,v 1.12 2007-02-26 18:24:54 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// G4 Gheisha High Energy model class -- header file
|
||||
// H. Fesefeldt, RWTH Aachen 23-October-1996
|
||||
// Last modified: 10-December-1996
|
||||
|
||||
// A prototype of the Gheisha High Energy collision model.
|
||||
|
||||
#ifndef G4LEKaonZeroLInelastic_h
|
||||
@@ -46,13 +42,13 @@ class G4LEKaonZeroLInelastic : public G4InelasticInteraction
|
||||
public:
|
||||
G4LEKaonZeroLInelastic() : G4InelasticInteraction("G4LEKaonZeroLInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
virtual ~G4LEKaonZeroLInelastic(){ }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus )
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& targetNucleus)
|
||||
{
|
||||
if(G4UniformRand() < 0.50)
|
||||
{
|
||||
@@ -67,6 +63,21 @@ class G4LEKaonZeroLInelastic : public G4InelasticInteraction
|
||||
G4LEKaonZeroInelastic theKaonZeroInelastic;
|
||||
G4LEAntiKaonZeroInelastic theAntiKaonZeroInelastic;
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEKaonZeroLInelastic is one of the Low Energy\n"
|
||||
<< "Parameterized (LEP) models used to implement K0L\n"
|
||||
<< "scattering from nuclei. Upon interaction with a nucleus\n"
|
||||
<< "the K0L is treated as a K0 50% of the time and an antiK0\n"
|
||||
<< "50% of the time. Then the K0 or antiK0 interacts with the\n"
|
||||
<< "nucleus using the re-engineered GHEISHA code of\n"
|
||||
<< "H. Fesefeldt, which divides the initial collision products\n"
|
||||
<< "into backward- and forward-going clusters which are then\n"
|
||||
<< "decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy or charge on an event-by-event basis. It\n"
|
||||
<< "may be applied to K0Ls with initial energies between 0 and\n"
|
||||
<< "25 GeV.\n";
|
||||
}
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -23,15 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LEKaonZeroSInelastic.hh,v 1.12 2007/02/26 18:25:37 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// $Id: G4LEKaonZeroSInelastic.hh,v 1.12 2007-02-26 18:25:37 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// G4 Gheisha High Energy model class -- header file
|
||||
// H. Fesefeldt, RWTH Aachen 23-October-1996
|
||||
// Last modified: 10-December-1996
|
||||
|
||||
// A prototype of the Gheisha High Energy collision model.
|
||||
|
||||
#ifndef G4LEKaonZeroSInelastic_h
|
||||
@@ -46,13 +42,13 @@ class G4LEKaonZeroSInelastic : public G4InelasticInteraction
|
||||
public:
|
||||
G4LEKaonZeroSInelastic() : G4InelasticInteraction("G4LEKaonZeroSInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
virtual ~G4LEKaonZeroSInelastic(){ }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus )
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& targetNucleus)
|
||||
{
|
||||
if(G4UniformRand() < 0.50)
|
||||
{
|
||||
@@ -62,12 +58,27 @@ class G4LEKaonZeroSInelastic : public G4InelasticInteraction
|
||||
{
|
||||
return theAntiKaonZeroInelastic.ApplyYourself(aTrack, targetNucleus);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEKaonZeroSInelastic is one of the Low Energy\n"
|
||||
<< "Parameterized (LEP) models used to implement K0S\n"
|
||||
<< "scattering from nuclei. Upon interaction with a nucleus\n"
|
||||
<< "the K0S is treated as a K0 50% of the time and an antiK0\n"
|
||||
<< "50% of the time. Then the K0 or antiK0 interacts with the\n"
|
||||
<< "nucleus using the re-engineered GHEISHA code of\n"
|
||||
<< "H. Fesefeldt, which divides the initial collision products\n"
|
||||
<< "into backward- and forward-going clusters which are then\n"
|
||||
<< "decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy or charge on an event-by-event basis. It\n"
|
||||
<< "may be applied to K0S with initial energies between 0 and\n"
|
||||
<< "25 GeV.\n";
|
||||
}
|
||||
|
||||
private:
|
||||
G4LEKaonZeroInelastic theKaonZeroInelastic;
|
||||
G4LEAntiKaonZeroInelastic theAntiKaonZeroInelastic;
|
||||
|
||||
G4LEAntiKaonZeroInelastic theAntiKaonZeroInelastic;
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LELambdaInelastic.hh,v 1.11 2007-02-26 18:27:08 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LELambdaInelastic.hh,v 1.11 2007/02/26 18:27:08 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy Lambda Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy Lambda Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
|
||||
#ifndef G4LELambdaInelastic_h
|
||||
#define G4LELambdaInelastic_h 1
|
||||
@@ -42,36 +40,32 @@
|
||||
// Class Description - End
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
|
||||
class G4LELambdaInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LELambdaInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LELambdaInelastic() : G4InelasticInteraction("G4LELambdaInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
}
|
||||
G4LELambdaInelastic(const G4String& name = "G4LELambdaInelastic");
|
||||
|
||||
~G4LELambdaInelastic() { }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
private:
|
||||
|
||||
void
|
||||
Cascade( // derived from CASL0
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int &vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct ¤tParticle,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
|
||||
void Cascade( // derived from CASL0
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE>& vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& currentParticle,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4bool& incidentHasChanged,
|
||||
G4bool& targetHasChanged,
|
||||
G4bool& quasiElastic);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Hadronic Process: Low Energy Neutron Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 04-Feb-1997
|
||||
// Hadronic Process: Low Energy Neutron Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 04-Feb-1997
|
||||
|
||||
#ifndef G4LENeutronInelastic_h
|
||||
#define G4LENeutronInelastic_h 1
|
||||
@@ -37,41 +37,42 @@
|
||||
// Class Description - End
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LENeutronInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
class G4LENeutronInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LENeutronInelastic() : G4InelasticInteraction("G4LENeutronInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 55.*GeV );
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(55.*GeV);
|
||||
}
|
||||
|
||||
~G4LENeutronInelastic()
|
||||
{ }
|
||||
~G4LENeutronInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASN
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int &vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct ¤tParticle,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE>& vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& currentParticle,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4bool& incidentHasChanged,
|
||||
G4bool& targetHasChanged,
|
||||
G4bool& quasiElastic);
|
||||
|
||||
void SlowNeutron(
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct &modifiedOriginal,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4Nucleus & targetNucleus );
|
||||
};
|
||||
void SlowNeutron(const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& modifiedOriginal,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4Nucleus& targetNucleus);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEOmegaMinusInelastic.hh,v 1.11 2007-02-26 18:29:56 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEOmegaMinusInelastic.hh,v 1.11 2007/02/26 18:29:56 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy OmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy OmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
|
||||
#ifndef G4LEOmegaMinusInelastic_h
|
||||
#define G4LEOmegaMinusInelastic_h 1
|
||||
@@ -43,22 +41,24 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEOmegaMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEOmegaMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEOmegaMinusInelastic() : G4InelasticInteraction("G4LEOmegaMinusInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
~G4LEOmegaMinusInelastic() { }
|
||||
~G4LEOmegaMinusInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASOM
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -70,7 +70,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEPionMinusInelastic.hh,v 1.12 2007-02-24 05:23:37 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEPionMinusInelastic.hh,v 1.12 2007/02/24 05:23:37 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
//
|
||||
// Hadronic Process: Low Energy PionMinus Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
|
||||
#ifndef G4LEPionMinusInelastic_h
|
||||
#define G4LEPionMinusInelastic_h 1
|
||||
@@ -42,23 +40,22 @@
|
||||
// Class Description - End
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEPionMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
class G4LEPionMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEPionMinusInelastic() : G4InelasticInteraction("G4LEPionMinusInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 55.*GeV );
|
||||
}
|
||||
G4LEPionMinusInelastic(const G4String& name = "G4LEPionMinusInelastic");
|
||||
|
||||
~G4LEPionMinusInelastic() { }
|
||||
~G4LEPionMinusInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
|
||||
private:
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASPIM
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -68,9 +65,7 @@
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
|
||||
G4bool &quasiElastic );
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEPionPlusInelastic.hh,v 1.12 2007-02-24 05:23:52 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEPionPlusInelastic.hh,v 1.12 2007/02/24 05:23:52 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy PionPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy PionPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
|
||||
#ifndef G4LEPionPlusInelastic_h
|
||||
#define G4LEPionPlusInelastic_h 1
|
||||
@@ -43,33 +41,31 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEPionPlusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEPionPlusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEPionPlusInelastic() : G4InelasticInteraction("G4LEPionPlusInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 55.*GeV );
|
||||
}
|
||||
G4LEPionPlusInelastic(const G4String& name = "G4LEPionPlusInelastic");
|
||||
|
||||
~G4LEPionPlusInelastic() { }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASPIP
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int &vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct ¤tParticle,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE>& vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& currentParticle,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4bool& incidentHasChanged,
|
||||
G4bool& targetHasChanged,
|
||||
G4bool& quasiElastic);
|
||||
|
||||
};
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,15 +23,13 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEProtonInelastic.hh,v 1.12 2007-02-26 18:31:19 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEProtonInelastic.hh,v 1.12 2007/02/26 18:31:19 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy Proton Inelastic Process
|
||||
// original by H.P. Wellisch
|
||||
// modified by J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 8-Jul-97 to implement Nucleus changes
|
||||
// Hadronic Process: Low Energy Proton Inelastic Process
|
||||
// original by H.P. Wellisch
|
||||
// modified by J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
// Modified by J.L.Chuma 8-Jul-97 to implement Nucleus changes
|
||||
|
||||
#ifndef G4LEProtonInelastic_h
|
||||
#define G4LEProtonInelastic_h 1
|
||||
@@ -44,38 +42,36 @@
|
||||
// Class Description - End
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
|
||||
class G4LEProtonInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEProtonInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEProtonInelastic(const G4String& name = "G4LEProtonInelastic");
|
||||
|
||||
~G4LEProtonInelastic() {}
|
||||
|
||||
G4LEProtonInelastic() : G4InelasticInteraction("G4LEProtonInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 55.*GeV );
|
||||
}
|
||||
|
||||
~G4LEProtonInelastic()
|
||||
{ }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
private:
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASP
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int &vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct ¤tParticle,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE>& vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& currentParticle,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4bool& incidentHasChanged,
|
||||
G4bool& targetHasChanged,
|
||||
G4bool& quasiElastic);
|
||||
|
||||
void SlowProton(
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4Nucleus &targetNucleus );
|
||||
};
|
||||
void SlowProton(const G4HadProjectile* originalIncident,
|
||||
G4Nucleus& targetNucleus);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LESigmaMinusInelastic.hh,v 1.11 2007-02-26 18:33:03 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LESigmaMinusInelastic.hh,v 1.11 2007/02/26 18:33:03 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy SigmaMinus Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy SigmaMinus Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
|
||||
#ifndef G4LESigmaMinusInelastic_h
|
||||
#define G4LESigmaMinusInelastic_h 1
|
||||
@@ -43,23 +41,24 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LESigmaMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LESigmaMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LESigmaMinusInelastic() : G4InelasticInteraction("G4LESigmaMinusInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
~G4LESigmaMinusInelastic()
|
||||
{ }
|
||||
~G4LESigmaMinusInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASSM
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -71,7 +70,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LESigmaPlusInelastic.hh,v 1.11 2007-02-26 18:33:48 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LESigmaPlusInelastic.hh,v 1.11 2007/02/26 18:33:48 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy SigmaPlus Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy SigmaPlus Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
|
||||
#ifndef G4LESigmaPlusInelastic_h
|
||||
#define G4LESigmaPlusInelastic_h 1
|
||||
@@ -43,9 +41,9 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LESigmaPlusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LESigmaPlusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LESigmaPlusInelastic() : G4InelasticInteraction("G4LESigmaPlusInelastic")
|
||||
{
|
||||
@@ -55,10 +53,12 @@
|
||||
|
||||
~G4LESigmaPlusInelastic() { }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
|
||||
private:
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASSM
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -70,7 +70,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LETritonInelastic.hh,v 1.10 2007-02-26 18:34:35 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LETritonInelastic.hh,v 1.10 2007/02/26 18:34:35 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy Triton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy Triton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
|
||||
#ifndef G4LETritonInelastic_h
|
||||
#define G4LETritonInelastic_h 1
|
||||
@@ -43,22 +41,24 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LETritonInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LETritonInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LETritonInelastic() : G4InelasticInteraction("G4LETritonInelastic")
|
||||
{
|
||||
SetMinEnergy( 0.0 );
|
||||
// SetMaxEnergy( 100.*MeV ); // NUCREC only worked for energies < 100MeV
|
||||
// Work around to avoid exception in G4EnergyRangeManager
|
||||
SetMaxEnergy( 10.*TeV ); // NUCREC only worked for energies < 100MeV
|
||||
SetMaxEnergy(10.*TeV); // NUCREC only worked for energies < 100MeV
|
||||
}
|
||||
|
||||
~G4LETritonInelastic() { }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEXiMinusInelastic.hh,v 1.11 2007-02-26 18:35:18 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEXiMinusInelastic.hh,v 1.11 2007/02/26 18:35:18 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy XiMinus Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy XiMinus Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
|
||||
#ifndef G4LEXiMinusInelastic_h
|
||||
#define G4LEXiMinusInelastic_h 1
|
||||
@@ -43,9 +41,9 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEXiMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEXiMinusInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEXiMinusInelastic() : G4InelasticInteraction("G4LEXiMinusInelastic")
|
||||
{
|
||||
@@ -55,10 +53,12 @@
|
||||
|
||||
~G4LEXiMinusInelastic() { }
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASXM
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -70,7 +70,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,13 +23,11 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEXiZeroInelastic.hh,v 1.11 2007-02-26 18:36:05 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEXiZeroInelastic.hh,v 1.11 2007/02/26 18:36:05 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy XiZero Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Hadronic Process: Low Energy XiZero Inelastic Process
|
||||
// original by J.L. Chuma, TRIUMF, 03-Feb-1997
|
||||
|
||||
#ifndef G4LEXiZeroInelastic_h
|
||||
#define G4LEXiZeroInelastic_h 1
|
||||
@@ -43,9 +41,9 @@
|
||||
|
||||
#include "G4InelasticInteraction.hh"
|
||||
|
||||
class G4LEXiZeroInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
class G4LEXiZeroInelastic : public G4InelasticInteraction
|
||||
{
|
||||
public:
|
||||
|
||||
G4LEXiZeroInelastic() : G4InelasticInteraction("G4LEXiZeroInelastic")
|
||||
{
|
||||
@@ -53,13 +51,14 @@
|
||||
SetMaxEnergy( 25.*GeV );
|
||||
}
|
||||
|
||||
~G4LEXiZeroInelastic()
|
||||
{ }
|
||||
~G4LEXiZeroInelastic() {}
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus );
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
void Cascade( // derived from CASX0
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
@@ -71,7 +70,7 @@
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic );
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,9 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LElastic.hh,v 1.12 2007/02/26 19:05:01 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4LElastic.hh,v 1.12 2007-02-26 19:05:01 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
//
|
||||
// G4 Model: Low energy elastic scattering -- header file
|
||||
@@ -35,8 +34,6 @@
|
||||
//
|
||||
// use -scheme for elastic scattering: HPW, 20th June 1997
|
||||
// most of the code comes from the old Low-energy Elastic class
|
||||
//
|
||||
|
||||
|
||||
#ifndef G4LElastic_h
|
||||
#define G4LElastic_h 1
|
||||
@@ -64,35 +61,32 @@
|
||||
|
||||
class G4LElastic : public G4HadronicInteraction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
G4LElastic() : G4HadronicInteraction("G4LElastic")
|
||||
{
|
||||
SetMinEnergy( 0.0*GeV );
|
||||
SetMaxEnergy( DBL_MAX );
|
||||
}
|
||||
G4LElastic(const G4String& name = "G4LElastic");
|
||||
|
||||
~G4LElastic() {};
|
||||
~G4LElastic() {};
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile & aTrack,
|
||||
G4Nucleus & targetNucleus);
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
private:
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
|
||||
G4LightMedia LightMedia;
|
||||
G4LightMedia LightMedia;
|
||||
|
||||
G4int Rtmi(G4double* x, G4double xli, G4double xri, G4double eps,
|
||||
G4int iend,
|
||||
G4double aa, G4double bb, G4double cc, G4double dd,
|
||||
G4double rr);
|
||||
G4int Rtmi(G4double* x, G4double xli, G4double xri, G4double eps,
|
||||
G4int iend,
|
||||
G4double aa, G4double bb, G4double cc, G4double dd,
|
||||
G4double rr);
|
||||
|
||||
G4double Fctcos(G4double t,
|
||||
G4double aa, G4double bb, G4double cc, G4double dd,
|
||||
G4double rr);
|
||||
G4double Fctcos(G4double t,
|
||||
G4double aa, G4double bb, G4double cc, G4double dd,
|
||||
G4double rr);
|
||||
|
||||
void Defs1(G4double p, G4double px, G4double py, G4double pz,
|
||||
G4double pxinc, G4double pyinc, G4double pzinc,
|
||||
G4double* pxnew, G4double* pynew, G4double* pznew);
|
||||
void Defs1(G4double p, G4double px, G4double py, G4double pz,
|
||||
G4double pxinc, G4double pyinc, G4double pzinc,
|
||||
G4double* pxnew, G4double* pynew, G4double* pznew);
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -23,9 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LFission.hh,v 1.11 2006/06/29 20:44:27 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4LFission.hh,v 1.11 2006-06-29 20:44:27 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
//
|
||||
// G4 Low-energy Model: Fission -- header file
|
||||
@@ -35,7 +34,6 @@
|
||||
//
|
||||
// use -scheme for elastic scattering: HPW, 20th June 1997
|
||||
// most of the code comes from the old Low-energy Fission class
|
||||
//
|
||||
|
||||
// Class Description
|
||||
// Final state production model for induced fission;
|
||||
@@ -67,20 +65,21 @@
|
||||
|
||||
class G4LFission : public G4HadronicInteraction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
G4LFission();
|
||||
~G4LFission();
|
||||
G4LFission(const G4String& name = "G4LFission");
|
||||
~G4LFission();
|
||||
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile & aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus);
|
||||
|
||||
static G4double Atomas(const G4double A, const G4double Z);
|
||||
static G4double Atomas(const G4double A, const G4double Z);
|
||||
|
||||
private:
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
void init();
|
||||
private:
|
||||
|
||||
G4double spneut[10];
|
||||
void init();
|
||||
G4double spneut[10];
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: sources.cmake,v 1.1 2010/09/29 19:03:39 bmorgan Exp $
|
||||
# $Id: sources.cmake,v 1.1 2010-09-29 19:03:39 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LCapture.cc,v 1.14 2007/02/24 05:17:29 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4LCapture.cc,v 1.14 2007-02-24 05:17:29 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
//
|
||||
// G4 Model: Low-energy Neutron Capture
|
||||
@@ -44,134 +44,149 @@
|
||||
#include "globals.hh"
|
||||
#include "G4LCapture.hh"
|
||||
#include "Randomize.hh"
|
||||
#include <iostream>
|
||||
|
||||
G4LCapture::G4LCapture() :
|
||||
G4HadronicInteraction("G4LCapture")
|
||||
|
||||
G4LCapture::G4LCapture(const G4String& name)
|
||||
: G4HadronicInteraction(name)
|
||||
{
|
||||
SetMinEnergy( 0.0*GeV );
|
||||
SetMaxEnergy( DBL_MAX );
|
||||
SetMinEnergy(0.0*GeV);
|
||||
SetMaxEnergy(DBL_MAX);
|
||||
// Description();
|
||||
}
|
||||
|
||||
|
||||
G4LCapture::~G4LCapture()
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
theParticleChange.Clear();
|
||||
}
|
||||
|
||||
|
||||
void G4LCapture::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LCapture is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement neutron capture on nuclei.\n"
|
||||
<< "It is a re-engineered version of the GHEISHA code of\n"
|
||||
<< "H. Fesefeldt which simply adds the neutron mass and energy\n"
|
||||
<< "to the target nucleus, and emits gammas isotropically as\n"
|
||||
<< "long as there is sufficient excitation energy in the\n"
|
||||
<< "daughter nucleus. The model is applicable to all incident\n"
|
||||
<< "neutron energies.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LCapture::ApplyYourself(const G4HadProjectile & aTrack, G4Nucleus& targetNucleus)
|
||||
G4LCapture::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& targetNucleus)
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
theParticleChange.SetStatusChange(stopAndKill);
|
||||
|
||||
theParticleChange.Clear();
|
||||
theParticleChange.SetStatusChange(stopAndKill);
|
||||
G4double N = targetNucleus.GetA_asInt();
|
||||
G4double Z = targetNucleus.GetZ_asInt();
|
||||
|
||||
G4double N = targetNucleus.GetN();
|
||||
G4double Z = targetNucleus.GetZ();
|
||||
const G4LorentzVector theMom = aTrack.Get4Momentum();
|
||||
G4double P = theMom.vect().mag()/GeV;
|
||||
G4double Px = theMom.vect().x()/GeV;
|
||||
G4double Py = theMom.vect().y()/GeV;
|
||||
G4double Pz = theMom.vect().z()/GeV;
|
||||
G4double E = theMom.e()/GeV;
|
||||
G4double E0 = aTrack.GetDefinition()->GetPDGMass()/GeV;
|
||||
G4double Q = aTrack.GetDefinition()->GetPDGCharge();
|
||||
if (verboseLevel > 1) {
|
||||
G4cout << "G4LCapture:ApplyYourself: incident particle:" << G4endl;
|
||||
G4cout << "P " << P << " GeV/c" << G4endl;
|
||||
G4cout << "Px " << Px << " GeV/c" << G4endl;
|
||||
G4cout << "Py " << Py << " GeV/c" << G4endl;
|
||||
G4cout << "Pz " << Pz << " GeV/c" << G4endl;
|
||||
G4cout << "E " << E << " GeV" << G4endl;
|
||||
G4cout << "mass " << E0 << " GeV" << G4endl;
|
||||
G4cout << "charge " << Q << G4endl;
|
||||
}
|
||||
|
||||
const G4LorentzVector theMom = aTrack.Get4Momentum();
|
||||
G4double P = theMom.vect().mag()/GeV;
|
||||
G4double Px = theMom.vect().x()/GeV;
|
||||
G4double Py = theMom.vect().y()/GeV;
|
||||
G4double Pz = theMom.vect().z()/GeV;
|
||||
G4double E = theMom.e()/GeV;
|
||||
G4double E0 = aTrack.GetDefinition()->GetPDGMass()/GeV;
|
||||
G4double Q = aTrack.GetDefinition()->GetPDGCharge();
|
||||
if (verboseLevel > 1) {
|
||||
G4cout << "G4LCapture:ApplyYourself: incident particle:" << G4endl;
|
||||
G4cout << "P " << P << " GeV/c" << G4endl;
|
||||
G4cout << "Px " << Px << " GeV/c" << G4endl;
|
||||
G4cout << "Py " << Py << " GeV/c" << G4endl;
|
||||
G4cout << "Pz " << Pz << " GeV/c" << G4endl;
|
||||
G4cout << "E " << E << " GeV" << G4endl;
|
||||
G4cout << "mass " << E0 << " GeV" << G4endl;
|
||||
G4cout << "charge " << Q << G4endl;
|
||||
}
|
||||
// GHEISHA ADD operation to get total energy, mass, charge:
|
||||
|
||||
// GHEISHA ADD operation to get total energy, mass, charge:
|
||||
if (verboseLevel > 1) {
|
||||
G4cout << "G4LCapture:ApplyYourself: material:" << G4endl;
|
||||
G4cout << "A " << N << G4endl;
|
||||
G4cout << "Z " << Z << G4endl;
|
||||
G4cout << "atomic mass " <<
|
||||
Atomas(N, Z) << "GeV" << G4endl;
|
||||
}
|
||||
E = E + Atomas(N, Z);
|
||||
G4double E02 = E*E - P*P;
|
||||
E0 = std::sqrt(std::abs(E02));
|
||||
if (E02 < 0) E0 = -E0;
|
||||
Q = Q + Z;
|
||||
if (verboseLevel > 1) {
|
||||
G4cout << "G4LCapture:ApplyYourself: total:" << G4endl;
|
||||
G4cout << "E " << E << " GeV" << G4endl;
|
||||
G4cout << "mass " << E0 << " GeV" << G4endl;
|
||||
G4cout << "charge " << Q << G4endl;
|
||||
}
|
||||
Px = -Px;
|
||||
Py = -Py;
|
||||
Pz = -Pz;
|
||||
|
||||
if (verboseLevel > 1) {
|
||||
G4cout << "G4LCapture:ApplyYourself: material:" << G4endl;
|
||||
G4cout << "A " << N << G4endl;
|
||||
G4cout << "Z " << Z << G4endl;
|
||||
G4cout << "atomic mass " <<
|
||||
Atomas(N, Z) << "GeV" << G4endl;
|
||||
}
|
||||
E = E + Atomas(N, Z);
|
||||
G4double E02 = E*E - P*P;
|
||||
E0 = std::sqrt(std::abs(E02));
|
||||
if (E02 < 0) E0 = -E0;
|
||||
Q = Q + Z;
|
||||
if (verboseLevel > 1) {
|
||||
G4cout << "G4LCapture:ApplyYourself: total:" << G4endl;
|
||||
G4cout << "E " << E << " GeV" << G4endl;
|
||||
G4cout << "mass " << E0 << " GeV" << G4endl;
|
||||
G4cout << "charge " << Q << G4endl;
|
||||
}
|
||||
Px = -Px;
|
||||
Py = -Py;
|
||||
Pz = -Pz;
|
||||
// Make a gamma...
|
||||
|
||||
// Make a gamma...
|
||||
G4double p;
|
||||
if (Z == 1 && N == 1) { // special case for hydrogen
|
||||
p = 0.0022;
|
||||
} else {
|
||||
G4double ran = G4RandGauss::shoot();
|
||||
p = 0.0065 + ran*0.0010;
|
||||
}
|
||||
|
||||
G4double p;
|
||||
if (Z == 1 && N == 1) { // special case for hydrogen
|
||||
p = 0.0022;
|
||||
} else {
|
||||
G4double ran = G4RandGauss::shoot();
|
||||
p = 0.0065 + ran*0.0010;
|
||||
}
|
||||
G4double ran1 = G4UniformRand();
|
||||
G4double ran2 = G4UniformRand();
|
||||
G4double cost = -1. + 2.*ran1;
|
||||
G4double sint = std::sqrt(std::abs(1. - cost*cost));
|
||||
G4double phi = ran2*twopi;
|
||||
|
||||
G4double ran1 = G4UniformRand();
|
||||
G4double ran2 = G4UniformRand();
|
||||
G4double cost = -1. + 2.*ran1;
|
||||
G4double sint = std::sqrt(std::abs(1. - cost*cost));
|
||||
G4double phi = ran2*twopi;
|
||||
G4double px = p*sint*std::sin(phi);
|
||||
G4double py = p*sint*std::cos(phi);
|
||||
G4double pz = p*cost;
|
||||
G4double e = p;
|
||||
|
||||
G4double px = p*sint*std::sin(phi);
|
||||
G4double py = p*sint*std::cos(phi);
|
||||
G4double pz = p*cost;
|
||||
G4double e = p;
|
||||
G4double e0 = 0.;
|
||||
G4double a = px*Px + py*Py + pz*Pz;
|
||||
a = (a/(E + E0) - e)/E0;
|
||||
|
||||
G4double a = px*Px + py*Py + pz*Pz;
|
||||
a = (a/(E + E0) - e)/E0;
|
||||
px = px + a*Px;
|
||||
py = py + a*Py;
|
||||
pz = pz + a*Pz;
|
||||
|
||||
px = px + a*Px;
|
||||
py = py + a*Py;
|
||||
pz = pz + a*Pz;
|
||||
G4DynamicParticle* aGamma;
|
||||
aGamma = new G4DynamicParticle(G4Gamma::GammaDefinition(),
|
||||
G4ThreeVector(px*GeV, py*GeV, pz*GeV));
|
||||
theParticleChange.AddSecondary(aGamma);
|
||||
|
||||
G4DynamicParticle* aGamma;
|
||||
aGamma = new G4DynamicParticle(G4Gamma::GammaDefinition(),
|
||||
G4ThreeVector(px*GeV, py*GeV, pz*GeV));
|
||||
theParticleChange.AddSecondary(aGamma);
|
||||
// Make another gamma if there is sufficient energy left over...
|
||||
|
||||
// Make another gamma if there is sufficient energy left over...
|
||||
G4double xp = 0.008 - p;
|
||||
if (xp > 0.) {
|
||||
if (Z > 1 || N > 1) {
|
||||
ran1 = G4UniformRand();
|
||||
ran2 = G4UniformRand();
|
||||
cost = -1. + 2.*ran1;
|
||||
sint = std::sqrt(std::abs(1. - cost*cost));
|
||||
phi = ran2*twopi;
|
||||
|
||||
G4double xp = 0.008 - p;
|
||||
if (xp > 0.) {
|
||||
if (Z > 1 || N > 1) {
|
||||
ran1 = G4UniformRand();
|
||||
ran2 = G4UniformRand();
|
||||
cost = -1. + 2.*ran1;
|
||||
sint = std::sqrt(std::abs(1. - cost*cost));
|
||||
phi = ran2*twopi;
|
||||
px = xp*sint*std::sin(phi);
|
||||
py = xp*sint*std::cos(phi);
|
||||
pz = xp*cost;
|
||||
e = xp;
|
||||
|
||||
px = xp*sint*std::sin(phi);
|
||||
py = xp*sint*std::cos(phi);
|
||||
pz = xp*cost;
|
||||
e = xp;
|
||||
e0 = 0.;
|
||||
a = px*Px + py*Py + pz*Pz;
|
||||
a = (a/(E + E0) - e)/E0;
|
||||
|
||||
a = px*Px + py*Py + pz*Pz;
|
||||
a = (a/(E + E0) - e)/E0;
|
||||
px = px + a*Px;
|
||||
py = py + a*Py;
|
||||
pz = pz + a*Pz;
|
||||
|
||||
px = px + a*Px;
|
||||
py = py + a*Py;
|
||||
pz = pz + a*Pz;
|
||||
|
||||
aGamma = new G4DynamicParticle(G4Gamma::GammaDefinition(),
|
||||
G4ThreeVector(px*GeV, py*GeV, pz*GeV));
|
||||
theParticleChange.AddSecondary(aGamma);
|
||||
}
|
||||
}
|
||||
return &theParticleChange;
|
||||
aGamma = new G4DynamicParticle(G4Gamma::GammaDefinition(),
|
||||
G4ThreeVector(px*GeV, py*GeV, pz*GeV));
|
||||
theParticleChange.AddSecondary(aGamma);
|
||||
}
|
||||
}
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
@@ -23,79 +23,102 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Hadronic Process: Alpha Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// J.L. Chuma, 08-May-2001: Update original incident passed back in vec[0]
|
||||
// from NuclearReaction
|
||||
//
|
||||
// Hadronic Process: Alpha Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// J.L. Chuma, 08-May-2001: Update original incident passed back in vec[0]
|
||||
// from NuclearReaction
|
||||
|
||||
#include "G4LEAlphaInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4Electron.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAlphaInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
G4double A = targetNucleus.GetN();
|
||||
G4double Z = targetNucleus.GetZ();
|
||||
#include <iostream>
|
||||
|
||||
|
||||
G4LEAlphaInelastic::G4LEAlphaInelastic(const G4String& name)
|
||||
: G4InelasticInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0*GeV);
|
||||
SetMaxEnergy(10.*TeV);
|
||||
}
|
||||
|
||||
|
||||
void G4LEAlphaInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAlphaInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic alpha scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to alphas with initial energies between 0 and 10\n"
|
||||
<< "TeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAlphaInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
G4double A = targetNucleus.GetA_asInt();
|
||||
G4double Z = targetNucleus.GetZ_asInt();
|
||||
|
||||
G4double kineticEnergy = aTrack.Get4Momentum().e()-aTrack.GetDefinition()->GetPDGMass();
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAlphaInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetc energy = " <<kineticEnergy/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << G4endl;
|
||||
}
|
||||
G4double kineticEnergy = aTrack.Get4Momentum().e()-aTrack.GetDefinition()->GetPDGMass();
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAlphaInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetc energy = " <<kineticEnergy/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << G4endl;
|
||||
}
|
||||
|
||||
// Work-around for lack of model above 100 MeV
|
||||
if (kineticEnergy/MeV > 100. || kineticEnergy <= 0.1*MeV)
|
||||
// Work-around for lack of model above 100 MeV
|
||||
if (kineticEnergy/MeV > 100. || kineticEnergy <= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
G4double theAtomicMass = targetNucleus.AtomicMass( A, Z );
|
||||
G4double massVec[9];
|
||||
massVec[0] = targetNucleus.AtomicMass( A+4.0, Z+2.0 );
|
||||
massVec[1] = targetNucleus.AtomicMass( A+3.0, Z+2.0 );
|
||||
massVec[2] = targetNucleus.AtomicMass( A+3.0, Z+1.0 );
|
||||
massVec[3] = targetNucleus.AtomicMass( A+2.0, Z+1.0 );
|
||||
massVec[4] = targetNucleus.AtomicMass( A+1.0, Z+1.0 );
|
||||
massVec[5] = theAtomicMass;
|
||||
massVec[6] = targetNucleus.AtomicMass( A+2.0, Z+2.0 );
|
||||
massVec[7] = massVec[3];
|
||||
massVec[8] = targetNucleus.AtomicMass( A+2.0, Z );
|
||||
|
||||
G4FastVector<G4ReactionProduct,4> vec; // vec will contain the secondary particles
|
||||
G4int vecLen = 0;
|
||||
vec.Initialize( 0 );
|
||||
|
||||
theReactionDynamics.NuclearReaction(vec, vecLen, &aTrack,
|
||||
targetNucleus, theAtomicMass, massVec);
|
||||
|
||||
G4double p = vec[0]->GetMomentum().mag();
|
||||
theParticleChange.SetMomentumChange( vec[0]->GetMomentum() *(1./p));
|
||||
theParticleChange.SetEnergyChange( vec[0]->GetKineticEnergy() );
|
||||
delete vec[0];
|
||||
|
||||
if (vecLen <= 1)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
G4double theAtomicMass = targetNucleus.AtomicMass( A, Z );
|
||||
G4double massVec[9];
|
||||
massVec[0] = targetNucleus.AtomicMass( A+4.0, Z+2.0 );
|
||||
massVec[1] = targetNucleus.AtomicMass( A+3.0, Z+2.0 );
|
||||
massVec[2] = targetNucleus.AtomicMass( A+3.0, Z+1.0 );
|
||||
massVec[3] = targetNucleus.AtomicMass( A+2.0, Z+1.0 );
|
||||
massVec[4] = targetNucleus.AtomicMass( A+1.0, Z+1.0 );
|
||||
massVec[5] = theAtomicMass;
|
||||
massVec[6] = targetNucleus.AtomicMass( A+2.0, Z+2.0 );
|
||||
massVec[7] = massVec[3];
|
||||
massVec[8] = targetNucleus.AtomicMass( A+2.0, Z );
|
||||
//
|
||||
G4FastVector<G4ReactionProduct,4> vec; // vec will contain the secondary particles
|
||||
G4int vecLen = 0;
|
||||
vec.Initialize( 0 );
|
||||
//
|
||||
theReactionDynamics.NuclearReaction( vec, vecLen, &aTrack,
|
||||
targetNucleus, theAtomicMass, massVec );
|
||||
//
|
||||
G4double p = vec[0]->GetMomentum().mag();
|
||||
theParticleChange.SetMomentumChange( vec[0]->GetMomentum() *(1./p));
|
||||
theParticleChange.SetEnergyChange( vec[0]->GetKineticEnergy() );
|
||||
delete vec[0];
|
||||
//
|
||||
G4DynamicParticle *pd;
|
||||
for( G4int i=1; i<vecLen; ++i )
|
||||
{
|
||||
pd = new G4DynamicParticle();
|
||||
pd->SetDefinition( vec[i]->GetDefinition() );
|
||||
pd->SetMomentum( vec[i]->GetMomentum() );
|
||||
theParticleChange.AddSecondary( pd );
|
||||
delete vec[i];
|
||||
}
|
||||
//
|
||||
return &theParticleChange;
|
||||
|
||||
G4DynamicParticle *pd;
|
||||
for (G4int i = 1; i < vecLen; ++i) {
|
||||
pd = new G4DynamicParticle();
|
||||
pd->SetDefinition( vec[i]->GetDefinition() );
|
||||
pd->SetMomentum( vec[i]->GetMomentum() );
|
||||
theParticleChange.AddSecondary( pd );
|
||||
delete vec[i];
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
@@ -23,112 +23,115 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiKaonZeroInelastic.cc,v 1.10 2006-06-29 20:44:39 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiKaonZeroInelastic.cc,v 1.10 2006/06/29 20:44:39 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy KaonZeroLong Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 11-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: Low Energy KaonZeroLong Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 11-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEAntiKaonZeroInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4HadReentrentException.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAntiKaonZeroInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
void G4LEAntiKaonZeroInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAntiKaonZeroInelastic is one of the Low Energy\n"
|
||||
<< "Parameterized (LEP) models used to implement anti-K0 scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA code\n"
|
||||
<< "of H. Fesefeldt. It divides the initial collision products\n"
|
||||
<< "into backward- and forward-going clusters which are then\n"
|
||||
<< "decayed into final state hadrons. The model does not conserve\n"
|
||||
<< "energy on an event-by-event basis. It may be applied to\n"
|
||||
<< "anti-K0s with initial energies between 0 and 25 GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAntiKaonZeroInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiKaonZeroInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiKaonZeroInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
G4double et = ek + amas;
|
||||
G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
G4double pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if( pp > 0.0 )
|
||||
{
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
//
|
||||
// calculate black track energies
|
||||
//
|
||||
tkin = targetNucleus.EvaporationEffects( ek );
|
||||
ek -= tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
et = ek + amas;
|
||||
p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if( pp > 0.0 )
|
||||
{
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
G4ReactionProduct currentParticle = modifiedOriginal;
|
||||
G4ReactionProduct targetParticle;
|
||||
targetParticle = *originalTarget;
|
||||
currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere
|
||||
targetParticle.SetSide( -1 ); // target always goes in backward hemisphere
|
||||
G4bool incidentHasChanged = false;
|
||||
G4bool targetHasChanged = false;
|
||||
G4bool quasiElastic = false;
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> vec; // vec will contain the secondary particles
|
||||
G4int vecLen = 0;
|
||||
vec.Initialize( 0 );
|
||||
|
||||
const G4double cutOff = 0.1;
|
||||
if( currentParticle.GetKineticEnergy()/MeV > cutOff )
|
||||
Cascade( vec, vecLen,
|
||||
originalIncident, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic );
|
||||
|
||||
try
|
||||
{
|
||||
CalculateMomenta( vec, vecLen,
|
||||
originalIncident, originalTarget, modifiedOriginal,
|
||||
targetNucleus, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic );
|
||||
}
|
||||
catch(G4HadReentrentException aR)
|
||||
{
|
||||
aR.Report(G4cout);
|
||||
throw G4HadReentrentException(__FILE__, __LINE__, "Bailing out");
|
||||
}
|
||||
SetUpChange( vec, vecLen,
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
G4double et = ek + amas;
|
||||
G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
G4double pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if (pp > 0.0) {
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
|
||||
// calculate black track energies
|
||||
tkin = targetNucleus.EvaporationEffects( ek );
|
||||
ek -= tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
et = ek + amas;
|
||||
p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if (pp > 0.0) {
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
|
||||
G4ReactionProduct currentParticle = modifiedOriginal;
|
||||
G4ReactionProduct targetParticle;
|
||||
targetParticle = *originalTarget;
|
||||
currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere
|
||||
targetParticle.SetSide( -1 ); // target always goes in backward hemisphere
|
||||
G4bool incidentHasChanged = false;
|
||||
G4bool targetHasChanged = false;
|
||||
G4bool quasiElastic = false;
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> vec; // vec will contain the secondary particles
|
||||
G4int vecLen = 0;
|
||||
vec.Initialize( 0 );
|
||||
|
||||
const G4double cutOff = 0.1;
|
||||
if (currentParticle.GetKineticEnergy()/MeV > cutOff)
|
||||
Cascade(vec, vecLen,
|
||||
originalIncident, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic);
|
||||
|
||||
try {
|
||||
CalculateMomenta(vec, vecLen, originalIncident, originalTarget,
|
||||
modifiedOriginal, targetNucleus, currentParticle,
|
||||
targetParticle, incidentHasChanged, targetHasChanged,
|
||||
quasiElastic);
|
||||
}
|
||||
catch(G4HadReentrentException aR)
|
||||
{
|
||||
aR.Report(G4cout);
|
||||
throw G4HadReentrentException(__FILE__, __LINE__, "Bailing out");
|
||||
}
|
||||
SetUpChange(vec, vecLen, currentParticle, targetParticle, incidentHasChanged);
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4LEAntiKaonZeroInelastic::Cascade(
|
||||
void G4LEAntiKaonZeroInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -137,7 +140,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASK0B by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// K0Long undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -504,7 +507,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,45 +23,55 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiLambdaInelastic.cc,v 1.11 2006-06-29 20:44:41 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiLambdaInelastic.cc,v 1.11 2006/06/29 20:44:41 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: AntiLambda Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: AntiLambda Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
|
||||
#include "G4LEAntiLambdaInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAntiLambdaInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
void G4LEAntiLambdaInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAntiLambdaInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic anti-lambda\n"
|
||||
<< "scattering from nuclei. It is a re-engineered version of the\n"
|
||||
<< "GHEISHA code of H. Fesefeldt. It divides the initial\n"
|
||||
<< "collision products into backward- and forward-going clusters\n"
|
||||
<< "which are then decayed into final state hadrons. The model\n"
|
||||
<< "does not conserve energy on an event-by-event basis. It may\n"
|
||||
<< "be applied to anti-lambdas with initial energies between 0 and\n"
|
||||
<< "25 GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAntiLambdaInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiLambdaInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiLambdaInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -119,10 +129,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEAntiLambdaInelastic::Cascade(
|
||||
void G4LEAntiLambdaInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int &vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -131,7 +140,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASAL0 by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// AntiLambda undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -642,7 +651,7 @@
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,47 +23,69 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiNeutronInelastic.cc,v 1.14 2006-06-29 20:44:43 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiNeutronInelastic.cc,v 1.14 2006/06/29 20:44:43 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// Hadronic Process: AntiNeutron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// J.P.Wellisch: 23-Apr-97: Added theNucleus.SetParameters call
|
||||
// J.P. Wellisch: 23-Apr-97: nm = np+1; in line 392
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
//
|
||||
// Hadronic Process: AntiNeutron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// J.P.Wellisch: 23-Apr-97: Added theNucleus.SetParameters call
|
||||
// J.P. Wellisch: 23-Apr-97: nm = np+1; in line 392
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEAntiNeutronInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include <iostream>
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAntiNeutronInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
G4LEAntiNeutronInelastic::G4LEAntiNeutronInelastic(const G4String& name)
|
||||
:G4InelasticInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
|
||||
void G4LEAntiNeutronInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAntiNeutronInelastic is one of the Low Energy\n"
|
||||
<< "Parameterized (LEP) models used to implement inelastic\n"
|
||||
<< "anti-neutron scattering from nuclei. It is a re-engineered\n"
|
||||
<< "version of the GHEISHA code of H. Fesefeldt. It divides the\n"
|
||||
<< "initial collision products into backward- and forward-going\n"
|
||||
<< "clusters which are then decayed into final state hadrons.\n"
|
||||
<< "The model does not conserve energy on an event-by-event\n"
|
||||
<< "basis. It may be applied to anti-neutrons with initial\n"
|
||||
<< "energies between 0 and 25 GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAntiNeutronInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile* originalIncident = &aTrack;
|
||||
|
||||
// create the target particle
|
||||
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiNeutronInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiNeutronInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -123,12 +145,12 @@
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
void
|
||||
G4LEAntiNeutronInelastic::Cascade(
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
|
||||
void G4LEAntiNeutronInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -136,26 +158,27 @@
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
// derived from original FORTRAN code CASNB by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// AntiNeutron undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
// energetically possible to produce pions/kaons. In not, assume nuclear excitation
|
||||
// occurs and input particle is degraded in energy. No other particles are produced.
|
||||
// If reaction is possible, find the correct number of pions/protons/neutrons
|
||||
// produced using an interpolation to multiplicity data. Replace some pions or
|
||||
// protons/neutrons by kaons or strange baryons according to the average
|
||||
// multiplicity per Inelastic reaction.
|
||||
//
|
||||
const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV;
|
||||
const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV;
|
||||
const G4double targetMass = targetParticle.GetMass()/MeV;
|
||||
G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal +
|
||||
G4bool &quasiElastic)
|
||||
{
|
||||
// Derived from original FORTRAN code CASNB by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// AntiNeutron undergoes interaction with nucleon within a nucleus. Check if
|
||||
// it is energetically possible to produce pions/kaons. In not, assume
|
||||
// nuclear excitation occurs and input particle is degraded in energy. No
|
||||
// other particles are produced. If reaction is possible, find the correct
|
||||
// number of pions/protons/neutrons produced using an interpolation to
|
||||
// multiplicity data. Replace some pions or protons/neutrons by kaons or
|
||||
// strange baryons according to the average multiplicity per inelastic
|
||||
// reaction.
|
||||
|
||||
const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV;
|
||||
const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV;
|
||||
const G4double targetMass = targetParticle.GetMass()/MeV;
|
||||
G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal +
|
||||
targetMass*targetMass +
|
||||
2.0*targetMass*etOriginal );
|
||||
G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal);
|
||||
G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal);
|
||||
|
||||
static G4bool first = true;
|
||||
const G4int numMul = 1200;
|
||||
@@ -531,9 +554,6 @@
|
||||
targetParticle.SetMass( 0.0 );
|
||||
}
|
||||
while(np+nm+nz<3) nz++;
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -23,55 +23,63 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiOmegaMinusInelastic.cc,v 1.12 2006-06-29 20:44:45 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiOmegaMinusInelastic.cc,v 1.12 2006/06/29 20:44:45 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// Hadronic Process: AntiOmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
//
|
||||
// Hadronic Process: AntiOmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
//
|
||||
// NOTE: The FORTRAN version of the cascade, CASAOM, simply called the
|
||||
// routine for the OmegaMinus particle. Hence, the Cascade function
|
||||
// below is just a copy of the Cascade from the OmegaMinus particle.
|
||||
// NOTE: The FORTRAN version of the cascade, CASAOM, simply called the
|
||||
// routine for the OmegaMinus particle. Hence, the Cascade function
|
||||
// below is just a copy of the Cascade from the OmegaMinus particle.
|
||||
|
||||
#include "G4LEAntiOmegaMinusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAntiOmegaMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
|
||||
void G4LEAntiOmegaMinusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAntiOmegaMinusInelastic is one of the Low Energy\n"
|
||||
<< "Parameterized (LEP) models used to implement inelastic\n"
|
||||
<< "antiOmega- scattering from nuclei. It is a re-engineered\n"
|
||||
<< "version of the GHEISHA code of H. Fesefeldt. It divides the\n"
|
||||
<< "initial collision products into backward- and forward-going\n"
|
||||
<< "clusters which are then decayed into final state hadrons. The\n"
|
||||
<< "model does not conserve energy on an event-by-event basis. It\n"
|
||||
<< "may be applied to antiOmega- with initial energies between 0\n"
|
||||
<< "and 25 GeV.\n";
|
||||
}
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAntiOmegaMinusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -129,10 +137,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEAntiOmegaMinusInelastic::Cascade(
|
||||
void G4LEAntiOmegaMinusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -141,7 +148,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASOM by H. Fesefeldt (31-Jan-1989)
|
||||
//
|
||||
// AntiOmegaMinus undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -369,7 +376,7 @@
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,54 +23,75 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiProtonInelastic.cc,v 1.15 2007-02-24 05:11:27 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiProtonInelastic.cc,v 1.15 2007/02/24 05:11:27 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// Hadronic Process: AntiProton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 13-Feb-1997
|
||||
// J.P. Wellisch: 23-Apr-97: Bug hunting
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
//
|
||||
// Hadronic Process: AntiProton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 13-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// J.P. Wellisch: 23-Apr-97: Bug hunting
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEAntiProtonInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include <iostream>
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAntiProtonInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile* originalIncident = &aTrack;
|
||||
|
||||
if (originalIncident->GetKineticEnergy() <= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
G4LEAntiProtonInelastic::G4LEAntiProtonInelastic(const G4String& name)
|
||||
:G4InelasticInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
void G4LEAntiProtonInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAntiProtonInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic anti-proton scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to anti-protons with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAntiProtonInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile* originalIncident = &aTrack;
|
||||
|
||||
if (originalIncident->GetKineticEnergy() <= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiProtonInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiProtonInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -129,12 +150,12 @@
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
void
|
||||
G4LEAntiProtonInelastic::Cascade(
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
|
||||
void G4LEAntiProtonInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -143,25 +164,26 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
// derived from original FORTRAN code CASPB by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// AntiProton undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
// energetically possible to produce pions/kaons. In not, assume nuclear excitation
|
||||
// occurs and input particle is degraded in energy. No other particles are produced.
|
||||
// If reaction is possible, find the correct number of pions/protons/neutrons
|
||||
// produced using an interpolation to multiplicity data. Replace some pions or
|
||||
// protons/neutrons by kaons or strange baryons according to the average
|
||||
// multiplicity per Inelastic reaction.
|
||||
//
|
||||
const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV;
|
||||
const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV;
|
||||
const G4double targetMass = targetParticle.GetMass()/MeV;
|
||||
G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal +
|
||||
{
|
||||
// derived from original FORTRAN code CASPB by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// AntiProton undergoes interaction with nucleon within a nucleus. Check if
|
||||
// it is energetically possible to produce pions/kaons. In not, assume
|
||||
// nuclear excitation occurs and input particle is degraded in energy. No
|
||||
// other particles are produced. If reaction is possible, find the correct
|
||||
// number of pions/protons/neutrons produced using an interpolation to
|
||||
// multiplicity data. Replace some pions or protons/neutrons by kaons or
|
||||
// strange baryons according to the average multiplicity per inelastic
|
||||
// reaction.
|
||||
|
||||
const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV;
|
||||
const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV;
|
||||
const G4double targetMass = targetParticle.GetMass()/MeV;
|
||||
G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal +
|
||||
targetMass*targetMass +
|
||||
2.0*targetMass*etOriginal );
|
||||
G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal);
|
||||
G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal);
|
||||
|
||||
static G4bool first = true;
|
||||
const G4int numMul = 1200;
|
||||
@@ -540,9 +562,7 @@
|
||||
targetParticle.SetMass( 0.0 );
|
||||
}
|
||||
while(np+nm+nz<3) nz++;
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -23,53 +23,61 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiSigmaMinusInelastic.cc,v 1.11 2006-06-29 20:44:49 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiSigmaMinusInelastic.cc,v 1.11 2006/06/29 20:44:49 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: AntiSigmaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// J.P. Wellisch: 25.Apr-97: counter errors removed lines 426, 447
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: AntiSigmaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// J.P. Wellisch: 25.Apr-97: counter errors removed lines 426, 447
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEAntiSigmaMinusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAntiSigmaMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
void G4LEAntiSigmaMinusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAntiSigmaMinusInelastic is one of the Low Energy\n"
|
||||
<< "Parameterized (LEP) models used to implement inelastic\n"
|
||||
<< "antiSigma- scattering from nuclei. It is a re-engineered\n"
|
||||
<< "version of the GHEISHA code of H. Fesefeldt. It divides the\n"
|
||||
<< "initial collision products into backward- and forward-going\n"
|
||||
<< "clusters which are then decayed into final state hadrons. The\n"
|
||||
<< "model does not conserve energy on an event-by-event basis. It\n"
|
||||
<< "may be applied to antiSigma- with initial energies between 0\n"
|
||||
<< "and 25 GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAntiSigmaMinusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiSigmaMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiSigmaMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -126,10 +134,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEAntiSigmaMinusInelastic::Cascade(
|
||||
void G4LEAntiSigmaMinusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -138,7 +145,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASASM by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// AntiSigmaMinus undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -561,7 +568,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,52 +23,61 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiSigmaPlusInelastic.cc,v 1.11 2006-06-29 20:44:51 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiSigmaPlusInelastic.cc,v 1.11 2006/06/29 20:44:51 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: AntiSigmaPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: AntiSigmaPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEAntiSigmaPlusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAntiSigmaPlusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
void G4LEAntiSigmaPlusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAntiSigmaPlusInelastic is one of the Low Energy\n"
|
||||
<< "Parameterized (LEP) models used to implement inelastic\n"
|
||||
<< "antiSigma+ scattering from nuclei. It is a re-engineered\n"
|
||||
<< "version of the GHEISHA code of H. Fesefeldt. It divides the\n"
|
||||
<< "initial collision products into backward- and forward-going\n"
|
||||
<< "clusters which are then decayed into final state hadrons. The\n"
|
||||
<< "model does not conserve energy on an event-by-event basis. It\n"
|
||||
<< "may be applied to antiSigma+ with initial energies between 0\n"
|
||||
<< "and 25 GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAntiSigmaPlusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiSigmaPlusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiSigmaPlusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -125,10 +134,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEAntiSigmaPlusInelastic::Cascade(
|
||||
void G4LEAntiSigmaPlusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -137,7 +145,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASASP by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// AntiSigmaPlus undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -562,7 +570,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,56 +23,63 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiXiMinusInelastic.cc,v 1.11 2006-06-29 20:44:53 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiXiMinusInelastic.cc,v 1.11 2006/06/29 20:44:53 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// Hadronic Process: AntiXiMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
//
|
||||
// Hadronic Process: AntiXiMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
//
|
||||
// NOTE: The FORTRAN version of the cascade, CASAXM, simply called the
|
||||
// routine for the XiMinus particle. Hence, the ApplyYourself function
|
||||
// below is just a copy of the ApplyYourself from the XiMinus particle.
|
||||
// NOTE: The FORTRAN version of the cascade, CASAXM, simply called the
|
||||
// routine for the XiMinus particle. Hence, the ApplyYourself function
|
||||
// below is just a copy of the ApplyYourself from the XiMinus particle.
|
||||
|
||||
#include "G4LEAntiXiMinusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAntiXiMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiXiMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
|
||||
|
||||
void G4LEAntiXiMinusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAntiXiMinusInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic antiXi- scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be applied\n"
|
||||
<< "to antiXi- with initial energies between 0 and 25 GeV.\n";
|
||||
}
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAntiXiMinusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiXiMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -129,10 +136,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEAntiXiMinusInelastic::Cascade(
|
||||
void G4LEAntiXiMinusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -141,7 +147,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASAXM by H. Fesefeldt (17-Jan-1989)
|
||||
// which is just a copy of casxm (cascade for Xi-).
|
||||
//
|
||||
@@ -394,7 +400,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,49 +23,57 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEAntiXiZeroInelastic.cc,v 1.11 2006-06-29 20:44:55 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEAntiXiZeroInelastic.cc,v 1.11 2006/06/29 20:44:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// Hadronic Process: AntiXiZero Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
//
|
||||
// Hadronic Process: AntiXiZero Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
//
|
||||
// NOTE: The FORTRAN version of the cascade, CASAXO, simply called the
|
||||
// routine for the XiZero particle. Hence, the ApplyYourself function
|
||||
// below is just a copy of the ApplyYourself from the XiZero particle.
|
||||
// NOTE: The FORTRAN version of the cascade, CASAXO, simply called the
|
||||
// routine for the XiZero particle. Hence, the ApplyYourself function
|
||||
// below is just a copy of the ApplyYourself from the XiZero particle.
|
||||
|
||||
#include "G4LEAntiXiZeroInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEAntiXiZeroInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
void G4LEAntiXiZeroInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEAntiXiZeroInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic antiXi0 scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to antiXi0 with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEAntiXiZeroInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiXiZeroInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEAntiXiZeroInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -122,10 +130,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEAntiXiZeroInelastic::Cascade(
|
||||
void G4LEAntiXiZeroInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -133,8 +140,8 @@
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
G4bool &quasiElastic)
|
||||
{
|
||||
// derived from original FORTRAN code CASAX0 by H. Fesefeldt (20-Jan-1989)
|
||||
// which is just a copy of CASX0 (cascade for Xi0)
|
||||
//
|
||||
@@ -387,7 +394,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,36 +23,86 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Hadronic Process: Deuteron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// J.L. Chuma, 08-May-2001: Update original incident passed back in vec[0]
|
||||
// from NuclearReaction
|
||||
//
|
||||
// Hadronic Process: Deuteron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// J.L. Chuma, 08-May-2001: Update original incident passed back in vec[0]
|
||||
// from NuclearReaction
|
||||
|
||||
#include "G4LEDeuteronInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4Electron.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEDeuteronInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
void G4LEDeuteronInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEDeuteronInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic deuteron scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to deuterons with initial energies between 0 and 10\n"
|
||||
<< "TeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEDeuteronInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEDeuteronInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
}
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEDeuteronInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
}
|
||||
|
||||
// Work-around for lack of model above 100 MeV
|
||||
if( originalIncident->GetKineticEnergy()/MeV > 100. ||
|
||||
originalIncident->GetKineticEnergy() <= 0.1*MeV )
|
||||
// Work-around for lack of model above 100 MeV
|
||||
if (originalIncident->GetKineticEnergy()/MeV > 100. ||
|
||||
originalIncident->GetKineticEnergy() <= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
G4double A = targetNucleus.GetA_asInt();
|
||||
G4double Z = targetNucleus.GetZ_asInt();
|
||||
G4double theAtomicMass = targetNucleus.AtomicMass(A, Z);
|
||||
G4double massVec[9];
|
||||
massVec[0] = targetNucleus.AtomicMass( A+2.0, Z+1.0 );
|
||||
massVec[1] = targetNucleus.AtomicMass( A+1.0, Z+1.0 );
|
||||
massVec[2] = targetNucleus.AtomicMass( A+1.0, Z );
|
||||
massVec[3] = theAtomicMass;
|
||||
massVec[4] = 0.;
|
||||
if (A > 1.0 && A-1.0 > Z)
|
||||
massVec[4] = targetNucleus.AtomicMass(A-1.0, Z);
|
||||
massVec[5] = 0.;
|
||||
if (A > 2.0 && Z > 1.0 && A-2.0 > Z-1.0)
|
||||
massVec[5] = targetNucleus.AtomicMass(A-2.0, Z-1.0);
|
||||
massVec[6] = 0.;
|
||||
if (A > Z+1.0)
|
||||
massVec[6] = targetNucleus.AtomicMass(A, Z+1.0);
|
||||
massVec[7] = massVec[3];
|
||||
massVec[8] = 0.;
|
||||
if (Z > 1.0) massVec[8] = targetNucleus.AtomicMass(A,Z-1.0);
|
||||
|
||||
G4FastVector<G4ReactionProduct,4> vec; // vec will contain the secondary particles
|
||||
G4int vecLen = 0;
|
||||
vec.Initialize( 0 );
|
||||
|
||||
theReactionDynamics.NuclearReaction(vec, vecLen, originalIncident,
|
||||
targetNucleus, theAtomicMass, massVec);
|
||||
|
||||
G4double p = vec[0]->GetMomentum().mag();
|
||||
theParticleChange.SetMomentumChange( vec[0]->GetMomentum() * (1.0/p) );
|
||||
theParticleChange.SetEnergyChange( vec[0]->GetKineticEnergy() );
|
||||
delete vec[0];
|
||||
|
||||
if (vecLen <= 1)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
@@ -60,50 +110,17 @@
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
G4double A = targetNucleus.GetN();
|
||||
G4double Z = targetNucleus.GetZ();
|
||||
G4double theAtomicMass = targetNucleus.AtomicMass( A, Z );
|
||||
G4double massVec[9];
|
||||
massVec[0] = targetNucleus.AtomicMass( A+2.0, Z+1.0 );
|
||||
massVec[1] = targetNucleus.AtomicMass( A+1.0, Z+1.0 );
|
||||
massVec[2] = targetNucleus.AtomicMass( A+1.0, Z );
|
||||
massVec[3] = theAtomicMass;
|
||||
massVec[4] = 0.;
|
||||
if (A > 1.0 && A-1.0 > Z)
|
||||
massVec[4] = targetNucleus.AtomicMass( A-1.0, Z );
|
||||
massVec[5] = 0.;
|
||||
if (A > 2.0 && Z > 1.0 && A-2.0 > Z-1.0)
|
||||
massVec[5] = targetNucleus.AtomicMass( A-2.0, Z-1.0 );
|
||||
massVec[6] = 0.;
|
||||
if (A > Z+1.0)
|
||||
massVec[6] = targetNucleus.AtomicMass( A, Z+1.0 );
|
||||
massVec[7] = massVec[3];
|
||||
massVec[8] = 0.;
|
||||
if (Z > 1.0) massVec[8] = targetNucleus.AtomicMass( A,Z-1.0 );
|
||||
|
||||
G4FastVector<G4ReactionProduct,4> vec; // vec will contain the secondary particles
|
||||
G4int vecLen = 0;
|
||||
vec.Initialize( 0 );
|
||||
|
||||
theReactionDynamics.NuclearReaction( vec, vecLen, originalIncident,
|
||||
targetNucleus, theAtomicMass, massVec );
|
||||
//
|
||||
G4double p = vec[0]->GetMomentum().mag();
|
||||
theParticleChange.SetMomentumChange( vec[0]->GetMomentum() * (1.0/p) );
|
||||
theParticleChange.SetEnergyChange( vec[0]->GetKineticEnergy() );
|
||||
delete vec[0];
|
||||
//
|
||||
G4DynamicParticle *pd;
|
||||
for( G4int i=1; i<vecLen; ++i )
|
||||
{
|
||||
pd = new G4DynamicParticle();
|
||||
pd->SetDefinition( vec[i]->GetDefinition() );
|
||||
pd->SetMomentum( vec[i]->GetMomentum() );
|
||||
theParticleChange.AddSecondary( pd );
|
||||
delete vec[i];
|
||||
}
|
||||
return &theParticleChange;
|
||||
G4DynamicParticle* pd;
|
||||
for (G4int i=1; i<vecLen; ++i) {
|
||||
pd = new G4DynamicParticle();
|
||||
pd->SetDefinition( vec[i]->GetDefinition() );
|
||||
pd->SetMomentum( vec[i]->GetMomentum() );
|
||||
theParticleChange.AddSecondary( pd );
|
||||
delete vec[i];
|
||||
}
|
||||
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,69 +23,90 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEKaonMinusInelastic.cc,v 1.15 2006-06-29 20:44:59 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEKaonMinusInelastic.cc,v 1.15 2006/06/29 20:44:59 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy KaonMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// J.P.Wellisch 23-Apr-97: bug-hunting (missing initialization of np,nm,nz fixed)
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: Low Energy KaonMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
// J.P.Wellisch 23-Apr-97: bug-hunting (missing initialization of np,nm,nz
|
||||
// fixed)
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEKaonMinusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "Randomize.hh"
|
||||
#include <iostream>
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEKaonMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4LEKaonMinusInelastic::G4LEKaonMinusInelastic(const G4String& name)
|
||||
:G4InelasticInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
|
||||
void G4LEKaonMinusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEKaonMinusInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic K- scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to kaons with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEKaonMinusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
G4ReactionProduct targetParticle( originalTarget->GetDefinition() );
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
G4ReactionProduct targetParticle( originalTarget->GetDefinition() );
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEKaonMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEKaonMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
G4ReactionProduct currentParticle( const_cast<G4ParticleDefinition *>(originalIncident->GetDefinition()) );
|
||||
currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() );
|
||||
currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() );
|
||||
}
|
||||
|
||||
G4ReactionProduct currentParticle(const_cast<G4ParticleDefinition*>(originalIncident->GetDefinition()) );
|
||||
currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() );
|
||||
currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() );
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been done
|
||||
|
||||
G4double ek = originalIncident->GetKineticEnergy();
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass();
|
||||
G4double ek = originalIncident->GetKineticEnergy();
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass();
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
currentParticle.SetKineticEnergy( ek );
|
||||
G4double et = ek + amas;
|
||||
G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
G4double pp = currentParticle.GetMomentum().mag();
|
||||
if( pp > 0.0 )
|
||||
{
|
||||
G4ThreeVector momentum = currentParticle.GetMomentum();
|
||||
currentParticle.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
currentParticle.SetKineticEnergy( ek );
|
||||
G4double et = ek + amas;
|
||||
G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
G4double pp = currentParticle.GetMomentum().mag();
|
||||
if (pp > 0.0) {
|
||||
G4ThreeVector momentum = currentParticle.GetMomentum();
|
||||
currentParticle.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
|
||||
// calculate black track energies
|
||||
// calculate black track energies
|
||||
|
||||
tkin = targetNucleus.EvaporationEffects( ek );
|
||||
ek -= tkin;
|
||||
@@ -125,12 +146,11 @@
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
void
|
||||
G4LEKaonMinusInelastic::Cascade(
|
||||
void G4LEKaonMinusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -139,7 +159,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASKM by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// K- undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -527,11 +547,7 @@
|
||||
targetHasChanged = true;
|
||||
}
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -23,32 +23,53 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEKaonPlusInelastic.cc,v 1.13 2006-06-29 20:45:01 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEKaonPlusInelastic.cc,v 1.13 2006/06/29 20:45:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Low Energy KaonPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: Low Energy KaonPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEKaonPlusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEKaonPlusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
#include <iostream>
|
||||
|
||||
|
||||
G4LEKaonPlusInelastic::G4LEKaonPlusInelastic(const G4String& name)
|
||||
:G4InelasticInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
|
||||
void G4LEKaonPlusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEKaonPlusInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic K+ scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to kaons with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEKaonPlusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
// create the target particle
|
||||
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
G4ReactionProduct targetParticle( originalTarget->GetDefinition() );
|
||||
@@ -124,12 +145,11 @@
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
|
||||
delete originalTarget;
|
||||
|
||||
return &theParticleChange;
|
||||
}
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
G4LEKaonPlusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int &vecLen,
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LEKaonZeroInelastic.cc,v 1.9 2006/06/29 20:45:03 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4LEKaonZeroInelastic.cc,v 1.9 2006-06-29 20:45:03 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Hadronic Process: Low Energy KaonZeroShort Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 11-Feb-1997
|
||||
@@ -34,34 +34,44 @@
|
||||
|
||||
#include "G4LEKaonZeroInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
void G4LEKaonZeroInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEKaonZeroInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement K0 scattering from nuclei. It\n"
|
||||
<< "is a re-engineered version of the GHEISHA code of\n"
|
||||
<< "H. Fesefeldt. It divides the initial collision products\n"
|
||||
<< "into backward- and forward-going clusters which are then\n"
|
||||
<< "decayed into final state hadrons. The model does not conserve\n"
|
||||
<< "energy on an event-by-event basis. It may be applied to\n"
|
||||
<< "K0s with initial energies between 0 and 25 GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEKaonZeroInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEKaonZeroInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
G4HadFinalState*
|
||||
G4LEKaonZeroInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEKaonZeroInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -117,10 +127,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEKaonZeroInelastic::Cascade(
|
||||
void G4LEKaonZeroInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -129,7 +138,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASK0 by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// K0Short undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -402,7 +411,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,60 +23,80 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LELambdaInelastic.cc,v 1.11 2006-06-29 20:45:05 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LELambdaInelastic.cc,v 1.11 2006/06/29 20:45:05 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: Lambda Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: Lambda Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LELambdaInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include <iostream>
|
||||
|
||||
G4HadFinalState *
|
||||
G4LELambdaInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
G4LELambdaInelastic::G4LELambdaInelastic(const G4String& name)
|
||||
:G4InelasticInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(25.*GeV);
|
||||
}
|
||||
|
||||
|
||||
void G4LELambdaInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LELambdaInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic Lambda scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to lambdas with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LELambdaInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
|
||||
// create the target particle
|
||||
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LELambdaInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LELambdaInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
G4double et = ek + amas;
|
||||
G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
G4double pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if( pp > 0.0 )
|
||||
{
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
//
|
||||
// calculate black track energies
|
||||
//
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
G4double et = ek + amas;
|
||||
G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
G4double pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if (pp > 0.0) {
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
|
||||
// calculate black track energies
|
||||
|
||||
tkin = targetNucleus.EvaporationEffects( ek );
|
||||
ek -= tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
@@ -116,43 +136,42 @@
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
void
|
||||
G4LELambdaInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
void G4LELambdaInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE>& vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct ¤tParticle,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
// derived from original FORTRAN code CASL0 by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// Lambda undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
// energetically possible to produce pions/kaons. In not, assume nuclear excitation
|
||||
// occurs and input particle is degraded in energy. No other particles are produced.
|
||||
// If reaction is possible, find the correct number of pions/protons/neutrons
|
||||
// produced using an interpolation to multiplicity data. Replace some pions or
|
||||
// protons/neutrons by kaons or strange baryons according to the average
|
||||
// multiplicity per Inelastic reaction.
|
||||
//
|
||||
const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV;
|
||||
const G4double targetMass = targetParticle.GetMass()/MeV;
|
||||
G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal +
|
||||
const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& currentParticle,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4bool& incidentHasChanged,
|
||||
G4bool& targetHasChanged,
|
||||
G4bool& quasiElastic )
|
||||
{
|
||||
// derived from original FORTRAN code CASL0 by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// Lambda undergoes interaction with nucleon within a nucleus. Check if it
|
||||
// is energetically possible to produce pions/kaons. In not, assume
|
||||
// nuclear excitation occurs and input particle is degraded in energy. No
|
||||
// other particles are produced. If reaction is possible, find the correct
|
||||
// number of pions/protons/neutrons produced using an interpolation to
|
||||
// multiplicity data. Replace some pions or protons/neutrons by kaons or
|
||||
// strange baryons according to the average multiplicity per inelastic
|
||||
// reaction.
|
||||
|
||||
const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV;
|
||||
const G4double targetMass = targetParticle.GetMass()/MeV;
|
||||
G4double centerofmassEnergy = std::sqrt(mOriginal*mOriginal +
|
||||
targetMass*targetMass +
|
||||
2.0*targetMass*etOriginal );
|
||||
G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal);
|
||||
if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV )
|
||||
{
|
||||
quasiElastic = true;
|
||||
return;
|
||||
}
|
||||
G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal);
|
||||
if (availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV) {
|
||||
quasiElastic = true;
|
||||
return;
|
||||
}
|
||||
static G4bool first = true;
|
||||
const G4int numMul = 1200;
|
||||
const G4int numSec = 60;
|
||||
@@ -352,9 +371,7 @@
|
||||
break;
|
||||
}
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -23,36 +23,48 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Hadronic Process: Low Energy Neutron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 04-Feb-1997
|
||||
|
||||
#include "G4LENeutronInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4Electron.hh"
|
||||
// #include "DumpFrame.hh"
|
||||
#include <iostream>
|
||||
|
||||
G4HadFinalState *
|
||||
G4LENeutronInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
void G4LENeutronInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LENeutronInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic neutron scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to neutrons with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LENeutronInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
|
||||
// Create the target particle
|
||||
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LENeutronInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LENeutronInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
/* not true, for example for Fe56, etc..
|
||||
if( originalIncident->GetKineticEnergy()/MeV < 0.000001 )
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4LENeutronInelastic: should be capture process!");
|
||||
@@ -60,22 +72,21 @@
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4LENeutronInelastic: should be capture process!");
|
||||
*/
|
||||
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
G4ReactionProduct targetParticle;
|
||||
targetParticle = *originalTarget;
|
||||
if( originalIncident->GetKineticEnergy()/GeV < 0.01 + 2.*G4UniformRand()/9. )
|
||||
{
|
||||
SlowNeutron( originalIncident, modifiedOriginal, targetParticle, targetNucleus );
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
G4ReactionProduct targetParticle;
|
||||
targetParticle = *originalTarget;
|
||||
if (originalIncident->GetKineticEnergy()/GeV < 0.01 + 2.*G4UniformRand()/9.) {
|
||||
SlowNeutron( originalIncident, modifiedOriginal, targetParticle, targetNucleus );
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been done
|
||||
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -132,23 +143,22 @@
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4LENeutronInelastic::SlowNeutron(
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4ReactionProduct &modifiedOriginal,
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4double A = targetNucleus.GetN(); // atomic weight
|
||||
const G4double Z = targetNucleus.GetZ(); // atomic number
|
||||
void G4LENeutronInelastic::SlowNeutron(const G4HadProjectile* originalIncident,
|
||||
G4ReactionProduct& modifiedOriginal,
|
||||
G4ReactionProduct& targetParticle,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4double A = targetNucleus.GetA_asInt(); // atomic weight
|
||||
const G4double Z = targetNucleus.GetZ_asInt(); // atomic number
|
||||
|
||||
G4double currentKinetic = modifiedOriginal.GetKineticEnergy()/MeV;
|
||||
G4double currentMass = modifiedOriginal.GetMass()/MeV;
|
||||
if( A < 1.5 ) // Hydrogen
|
||||
G4double currentKinetic = modifiedOriginal.GetKineticEnergy()/MeV;
|
||||
G4double currentMass = modifiedOriginal.GetMass()/MeV;
|
||||
if( A < 1.5 ) // Hydrogen
|
||||
{
|
||||
//
|
||||
// very simple simulation of scattering angle and energy
|
||||
@@ -256,10 +266,10 @@
|
||||
theParticleChange.AddSecondary( pd );
|
||||
delete vec[i];
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LENeutronInelastic::Cascade(
|
||||
}
|
||||
|
||||
|
||||
void G4LENeutronInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
|
||||
@@ -23,55 +23,61 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEOmegaMinusInelastic.cc,v 1.12 2006-06-29 20:45:09 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEOmegaMinusInelastic.cc,v 1.12 2006/06/29 20:45:09 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: OmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: OmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEOmegaMinusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEOmegaMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
void G4LEOmegaMinusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEOmegaMinusInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic Omega- scattering from\n"
|
||||
<< "nuclei. It is a re-engineered version of the GHEISHA code of\n"
|
||||
<< "H. Fesefeldt. It divides the initial collision products into\n"
|
||||
<< "backward- and forward-going clusters which are then decayed\n"
|
||||
<< "into final state hadrons. The model does not conserve energy\n"
|
||||
<< "on an event-by-event basis. It may be applied to Omega- with\n"
|
||||
<< "initial energies between 0 and 25 GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEOmegaMinusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
G4ReactionProduct targetParticle( originalTarget->GetDefinition() );
|
||||
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
// G4double targetMass = originalTarget->GetDefinition()->GetPDGMass();
|
||||
G4ReactionProduct targetParticle( originalTarget->GetDefinition() );
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEOmegaMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEOmegaMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
G4ReactionProduct currentParticle( const_cast<G4ParticleDefinition *>(originalIncident->GetDefinition() ));
|
||||
currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() );
|
||||
currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() );
|
||||
}
|
||||
G4ReactionProduct currentParticle( const_cast<G4ParticleDefinition *>(originalIncident->GetDefinition() ));
|
||||
currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() );
|
||||
currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() );
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
|
||||
G4double ek = originalIncident->GetKineticEnergy();
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass();
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy();
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass();
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -127,10 +133,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEOmegaMinusInelastic::Cascade(
|
||||
void G4LEOmegaMinusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -138,8 +143,8 @@
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
G4bool &quasiElastic)
|
||||
{
|
||||
// derived from original FORTRAN code CASOM by H. Fesefeldt (31-Jan-1989)
|
||||
//
|
||||
// OmegaMinus undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -152,7 +157,6 @@
|
||||
//
|
||||
const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass();
|
||||
const G4double etOriginal = originalIncident->GetTotalEnergy();
|
||||
// const G4double pOriginal = originalIncident->GetTotalMomentum();
|
||||
const G4double targetMass = targetParticle.GetMass();
|
||||
G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal +
|
||||
targetMass*targetMass +
|
||||
@@ -372,7 +376,7 @@
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -24,55 +24,72 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Hadronic Process: PionMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: PionMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEPionMinusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEPionMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
#include <iostream>
|
||||
|
||||
// create the target particle
|
||||
|
||||
G4LEPionMinusInelastic::G4LEPionMinusInelastic(const G4String& name)
|
||||
: G4InelasticInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(55.*GeV);
|
||||
}
|
||||
|
||||
|
||||
void G4LEPionMinusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEPionMinusInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic pi- scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to pions with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEPionMinusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
G4ReactionProduct targetParticle( originalTarget->GetDefinition() );
|
||||
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
// G4double targetMass = originalTarget->GetDefinition()->GetPDGMass();
|
||||
G4ReactionProduct targetParticle( originalTarget->GetDefinition() );
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4PionMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material* targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4PionMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
G4ReactionProduct currentParticle(
|
||||
const_cast<G4ParticleDefinition *>(originalIncident->GetDefinition() ) );
|
||||
currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() );
|
||||
currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() );
|
||||
}
|
||||
G4ReactionProduct currentParticle(
|
||||
const_cast<G4ParticleDefinition *>(originalIncident->GetDefinition() ) );
|
||||
currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() );
|
||||
currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() );
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy();
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass();
|
||||
|
||||
G4double ek = originalIncident->GetKineticEnergy();
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass();
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
currentParticle.SetKineticEnergy( ek );
|
||||
G4double et = ek + amas;
|
||||
@@ -124,12 +141,13 @@
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4LEPionMinusInelastic::Cascade(
|
||||
void
|
||||
G4LEPionMinusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
|
||||
@@ -23,57 +23,76 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEPionPlusInelastic.cc,v 1.15 2007-02-24 06:28:52 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEPionPlusInelastic.cc,v 1.15 2007/02/24 06:28:52 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: PionPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// fixing charge exchange - HPW Sep 2002.
|
||||
// Hadronic Process: PionPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// fixing charge exchange - HPW Sep 2002.
|
||||
|
||||
#include "G4LEPionPlusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include <iostream>
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEPionPlusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4LEPionPlusInelastic::G4LEPionPlusInelastic(const G4String& name)
|
||||
:G4InelasticInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(55.*GeV);
|
||||
}
|
||||
|
||||
|
||||
void G4LEPionPlusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEPionPlusInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic pi+ scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to pions with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEPionPlusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
// G4double targetMass = originalTarget->GetDefinition()->GetPDGMass();
|
||||
G4ReactionProduct targetParticle( originalTarget->GetDefinition() );
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
G4ReactionProduct targetParticle( originalTarget->GetDefinition() );
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEPionPlusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material* targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEPionPlusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
G4ReactionProduct currentParticle(
|
||||
const_cast<G4ParticleDefinition *>(originalIncident->GetDefinition() ) );
|
||||
currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() );
|
||||
currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() );
|
||||
}
|
||||
G4ReactionProduct currentParticle(
|
||||
const_cast<G4ParticleDefinition *>(originalIncident->GetDefinition() ) );
|
||||
currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() );
|
||||
currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() );
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
|
||||
G4double ek = originalIncident->GetKineticEnergy();
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass();
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy();
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass();
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -112,27 +131,26 @@
|
||||
G4int vecLen = 0;
|
||||
vec.Initialize( 0 );
|
||||
|
||||
const G4double cutOff = 0.1*MeV;
|
||||
if( currentParticle.GetKineticEnergy() > cutOff )
|
||||
Cascade( vec, vecLen,
|
||||
originalIncident, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic );
|
||||
const G4double cutOff = 0.1*MeV;
|
||||
if (currentParticle.GetKineticEnergy() > cutOff)
|
||||
Cascade(vec, vecLen,
|
||||
originalIncident, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic);
|
||||
|
||||
CalculateMomenta( vec, vecLen,
|
||||
originalIncident, originalTarget, modifiedOriginal,
|
||||
targetNucleus, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic );
|
||||
CalculateMomenta(vec, vecLen,
|
||||
originalIncident, originalTarget, modifiedOriginal,
|
||||
targetNucleus, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic);
|
||||
|
||||
SetUpChange( vec, vecLen,
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
SetUpChange(vec, vecLen,
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged);
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
void
|
||||
G4LEPionPlusInelastic::Cascade(
|
||||
void G4LEPionPlusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -140,8 +158,8 @@
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
G4bool &quasiElastic)
|
||||
{
|
||||
// derived from original FORTRAN code CASPIP by H. Fesefeldt (18-Sep-1987)
|
||||
//
|
||||
// pi+ undergoes interaction with nucleon within nucleus.
|
||||
@@ -373,9 +391,6 @@
|
||||
break;
|
||||
}
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -23,124 +23,140 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Hadronic Process: Low Energy Proton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
|
||||
#include "G4LEProtonInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEProtonInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEProtonInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
#include <iostream>
|
||||
|
||||
|
||||
G4LEProtonInelastic::G4LEProtonInelastic(const G4String& name)
|
||||
:G4InelasticInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(55.*GeV);
|
||||
}
|
||||
|
||||
|
||||
void G4LEProtonInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEProtonInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic proton scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to protons with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LEProtonInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// Create the target particle
|
||||
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEProtonInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
if( originalIncident->GetKineticEnergy()/GeV < 0.01+2.*G4UniformRand()/9. )
|
||||
{
|
||||
SlowProton( originalIncident, targetNucleus );
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
G4double et = ek + amas;
|
||||
G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
G4double pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if( pp > 0.0 )
|
||||
{
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
//
|
||||
// calculate black track energies
|
||||
//
|
||||
tkin = targetNucleus.EvaporationEffects( ek );
|
||||
ek -= tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
et = ek + amas;
|
||||
p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if( pp > 0.0 )
|
||||
{
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
const G4double cutOff = 0.1;
|
||||
if( modifiedOriginal.GetKineticEnergy()/MeV <= cutOff )
|
||||
{
|
||||
SlowProton( originalIncident, targetNucleus );
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
G4ReactionProduct currentParticle = modifiedOriginal;
|
||||
G4ReactionProduct targetParticle;
|
||||
targetParticle = *originalTarget;
|
||||
currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere
|
||||
targetParticle.SetSide( -1 ); // target always goes in backward hemisphere
|
||||
G4bool incidentHasChanged = false;
|
||||
G4bool targetHasChanged = false;
|
||||
G4bool quasiElastic = false;
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> vec; // vec will contain the sec. particles
|
||||
G4int vecLen = 0;
|
||||
vec.Initialize( 0 );
|
||||
|
||||
Cascade( vec, vecLen,
|
||||
originalIncident, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic );
|
||||
|
||||
CalculateMomenta( vec, vecLen,
|
||||
originalIncident, originalTarget, modifiedOriginal,
|
||||
targetNucleus, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic );
|
||||
|
||||
SetUpChange( vec, vecLen,
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged );
|
||||
|
||||
}
|
||||
|
||||
if (originalIncident->GetKineticEnergy()/GeV < 0.01+2.*G4UniformRand()/9.) {
|
||||
SlowProton( originalIncident, targetNucleus );
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
void
|
||||
G4LEProtonInelastic::SlowProton(
|
||||
const G4HadProjectile *originalIncident,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4double A = targetNucleus.GetN(); // atomic weight
|
||||
const G4double Z = targetNucleus.GetZ(); // atomic number
|
||||
// G4double currentKinetic = originalIncident->GetKineticEnergy()/MeV;
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
G4double et = ek + amas;
|
||||
G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
G4double pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if (pp > 0.0) {
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
|
||||
// calculate black track energies
|
||||
|
||||
tkin = targetNucleus.EvaporationEffects( ek );
|
||||
ek -= tkin;
|
||||
modifiedOriginal.SetKineticEnergy( ek*MeV );
|
||||
et = ek + amas;
|
||||
p = std::sqrt( std::abs((et-amas)*(et+amas)) );
|
||||
pp = modifiedOriginal.GetMomentum().mag()/MeV;
|
||||
if (pp > 0.0) {
|
||||
G4ThreeVector momentum = modifiedOriginal.GetMomentum();
|
||||
modifiedOriginal.SetMomentum( momentum * (p/pp) );
|
||||
}
|
||||
const G4double cutOff = 0.1;
|
||||
if (modifiedOriginal.GetKineticEnergy()/MeV <= cutOff) {
|
||||
SlowProton( originalIncident, targetNucleus );
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
G4ReactionProduct currentParticle = modifiedOriginal;
|
||||
G4ReactionProduct targetParticle;
|
||||
targetParticle = *originalTarget;
|
||||
currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere
|
||||
targetParticle.SetSide( -1 ); // target always goes in backward hemisphere
|
||||
G4bool incidentHasChanged = false;
|
||||
G4bool targetHasChanged = false;
|
||||
G4bool quasiElastic = false;
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> vec; // vec will contain the sec. particles
|
||||
G4int vecLen = 0;
|
||||
vec.Initialize( 0 );
|
||||
|
||||
Cascade(vec, vecLen,
|
||||
originalIncident, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic);
|
||||
|
||||
CalculateMomenta(vec, vecLen,
|
||||
originalIncident, originalTarget, modifiedOriginal,
|
||||
targetNucleus, currentParticle, targetParticle,
|
||||
incidentHasChanged, targetHasChanged, quasiElastic);
|
||||
|
||||
SetUpChange(vec, vecLen,
|
||||
currentParticle, targetParticle,
|
||||
incidentHasChanged);
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4LEProtonInelastic::SlowProton(const G4HadProjectile* originalIncident,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4double A = targetNucleus.GetA_asInt(); // atomic weight
|
||||
const G4double Z = targetNucleus.GetZ_asInt(); // atomic number
|
||||
//
|
||||
// calculate Q-value of reactions
|
||||
//
|
||||
|
||||
@@ -23,50 +23,57 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LESigmaMinusInelastic.cc,v 1.11 2006-06-29 20:45:17 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LESigmaMinusInelastic.cc,v 1.11 2006/06/29 20:45:17 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: SigmaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: SigmaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LESigmaMinusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LESigmaMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
void G4LESigmaMinusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LESigmaMinusInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic Sigma- scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to Sigma- with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
G4HadFinalState*
|
||||
G4LESigmaMinusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LESigmaMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LESigmaMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
@@ -124,10 +131,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LESigmaMinusInelastic::Cascade(
|
||||
void G4LESigmaMinusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -136,7 +142,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASSM by H. Fesefeldt (13-Sep-1987)
|
||||
//
|
||||
// SigmaMinus undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -362,7 +368,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,52 +23,59 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LESigmaPlusInelastic.cc,v 1.11 2006-06-29 20:45:19 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LESigmaPlusInelastic.cc,v 1.11 2006/06/29 20:45:19 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: SigmaPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: SigmaPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 19-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LESigmaPlusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LESigmaPlusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
void G4LESigmaPlusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LESigmaPlusInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic Sigma+ scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to Sigma+ with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
G4HadFinalState*
|
||||
G4LESigmaPlusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LESigmaPlusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material* targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LESigmaPlusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -124,10 +131,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LESigmaPlusInelastic::Cascade(
|
||||
void G4LESigmaPlusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -136,7 +142,7 @@
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
{
|
||||
// derived from original FORTRAN code CASSP by H. Fesefeldt (30-Nov-1987)
|
||||
//
|
||||
// SigmaPlus undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -375,7 +381,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,25 +23,37 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Hadronic Process: Triton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// J.L. Chuma, 08-May-2001: Update original incident passed back in vec[0]
|
||||
// from NuclearReaction
|
||||
//
|
||||
// Hadronic Process: Triton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// J.L. Chuma, 08-May-2001: Update original incident passed back in vec[0]
|
||||
// from NuclearReaction
|
||||
|
||||
#include "G4LETritonInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4Electron.hh"
|
||||
|
||||
G4HadFinalState *
|
||||
G4LETritonInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
bool triton_debug = false;
|
||||
if(getenv("TritonLEDebug")) triton_debug = true;
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
|
||||
void G4LETritonInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LETritonInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic triton scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to tritons with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LETritonInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
G4bool triton_debug = false;
|
||||
if (getenv("TritonLEDebug")) triton_debug = true;
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if(triton_debug) std::cout << "entering LETritonInelastic "<<originalIncident->GetKineticEnergy()<<std::endl;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
@@ -71,23 +83,23 @@
|
||||
}
|
||||
|
||||
if(triton_debug)std::cout << "running LETritonInelastic 2"<<std::endl;
|
||||
G4double A = targetNucleus.GetN();
|
||||
G4double Z = targetNucleus.GetZ();
|
||||
G4double theAtomicMass = targetNucleus.AtomicMass( A, Z );
|
||||
G4double A = targetNucleus.GetA_asInt();
|
||||
G4double Z = targetNucleus.GetZ_asInt();
|
||||
G4double theAtomicMass = targetNucleus.AtomicMass(A, Z);
|
||||
G4double massVec[9];
|
||||
massVec[0] = targetNucleus.AtomicMass( A+3.0, Z+1.0 );
|
||||
massVec[1] = targetNucleus.AtomicMass( A+2.0, Z+1.0 );
|
||||
massVec[2] = targetNucleus.AtomicMass( A+2.0, Z );
|
||||
massVec[3] = targetNucleus.AtomicMass( A+1.0, Z );
|
||||
massVec[4] = theAtomicMass;
|
||||
massVec[5] = 0.;
|
||||
massVec[5] = massVec[3]; //0.;
|
||||
if (A > 1.0 && Z > 1.0)
|
||||
massVec[5] = targetNucleus.AtomicMass( A-1.0, Z-1.0 );
|
||||
massVec[5] = targetNucleus.AtomicMass( A-1.0, Z-1.0 );
|
||||
massVec[6] = targetNucleus.AtomicMass( A+1.0, Z+1.0 );
|
||||
massVec[7] = massVec[3];
|
||||
massVec[8] = 0.;
|
||||
massVec[8] = massVec[2]; //0.;
|
||||
if (Z > 1.0)
|
||||
massVec[8] = targetNucleus.AtomicMass( A+1.0, Z-1.0 );
|
||||
massVec[8] = targetNucleus.AtomicMass( A+1.0, Z-1.0 );
|
||||
|
||||
G4FastVector<G4ReactionProduct,4> vec; // vec will contain the secondary particles
|
||||
G4int vecLen = 0;
|
||||
@@ -98,10 +110,20 @@
|
||||
targetNucleus, theAtomicMass, massVec );
|
||||
if(triton_debug)std::cout << "running LETritonInelastic 4"<<std::endl;
|
||||
//
|
||||
// G4cout << "0 E(MeV)= " << vec[0]->GetKineticEnergy() << G4endl;
|
||||
G4double p = vec[0]->GetMomentum().mag();
|
||||
theParticleChange.SetMomentumChange( vec[0]->GetMomentum()*(1./p) );
|
||||
theParticleChange.SetEnergyChange( vec[0]->GetKineticEnergy() );
|
||||
delete vec[0];
|
||||
|
||||
if (vecLen <= 1)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
//
|
||||
G4DynamicParticle *pd;
|
||||
for( G4int i=1; i<vecLen; ++i )
|
||||
@@ -110,12 +132,14 @@
|
||||
pd->SetDefinition( vec[i]->GetDefinition() );
|
||||
pd->SetMomentum( vec[i]->GetMomentum() );
|
||||
theParticleChange.AddSecondary( pd );
|
||||
//G4cout << "i E(MeV)= " << pd->GetKineticEnergy()
|
||||
// << " " << pd->GetDefinition()->GetParticleName() << G4endl;
|
||||
delete vec[i];
|
||||
}
|
||||
|
||||
if(triton_debug)std::cout << "leaving LETritonInelastic"<<std::endl;
|
||||
return &theParticleChange;
|
||||
}
|
||||
if(triton_debug)std::cout << "leaving LETritonInelastic"<<std::endl;
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,52 +23,60 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEXiMinusInelastic.cc,v 1.11 2006-06-29 20:45:23 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEXiMinusInelastic.cc,v 1.11 2006/06/29 20:45:23 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: XiMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: XiMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEXiMinusInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
void G4LEXiMinusInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEXiMinusInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic Xi- scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to Xi- with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEXiMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEXiMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
G4HadFinalState*
|
||||
G4LEXiMinusInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if (verboseLevel > 1) {
|
||||
const G4Material *targetMaterial = aTrack.GetMaterial();
|
||||
G4cout << "G4LEXiMinusInelastic::ApplyYourself called" << G4endl;
|
||||
G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
|
||||
G4cout << "target material = " << targetMaterial->GetName() << ", ";
|
||||
G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
//
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
}
|
||||
|
||||
// Fermi motion and evaporation
|
||||
// As of Geant3, the Fermi energy calculation had not been Done
|
||||
G4double ek = originalIncident->GetKineticEnergy()/MeV;
|
||||
G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
|
||||
G4ReactionProduct modifiedOriginal;
|
||||
modifiedOriginal = *originalIncident;
|
||||
|
||||
G4double tkin = targetNucleus.Cinema( ek );
|
||||
ek += tkin;
|
||||
@@ -124,10 +132,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEXiMinusInelastic::Cascade(
|
||||
void G4LEXiMinusInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -135,8 +142,8 @@
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
G4bool &quasiElastic)
|
||||
{
|
||||
// derived from original FORTRAN code CASXM by H. Fesefeldt (17-Jan-1989)
|
||||
//
|
||||
// XiMinus undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -388,7 +395,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,34 +23,44 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LEXiZeroInelastic.cc,v 1.11 2006-06-29 20:45:25 gunter Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// $Id: G4LEXiZeroInelastic.cc,v 1.11 2006/06/29 20:45:25 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Hadronic Process: XiZero Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Last modified: 27-Mar-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
// Hadronic Process: XiZero Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 20-Feb-1997
|
||||
// Modified by J.L.Chuma 30-Apr-97: added originalTarget for CalculateMomenta
|
||||
|
||||
#include "G4LEXiZeroInelastic.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
void G4LEXiZeroInelastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LEXiZeroInelastic is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement inelastic X0 scattering\n"
|
||||
<< "from nuclei. It is a re-engineered version of the GHEISHA\n"
|
||||
<< "code of H. Fesefeldt. It divides the initial collision\n"
|
||||
<< "products into backward- and forward-going clusters which are\n"
|
||||
<< "then decayed into final state hadrons. The model does not\n"
|
||||
<< "conserve energy on an event-by-event basis. It may be\n"
|
||||
<< "applied to X0 with initial energies between 0 and 25\n"
|
||||
<< "GeV.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState *
|
||||
G4LEXiZeroInelastic::ApplyYourself( const G4HadProjectile &aTrack,
|
||||
G4Nucleus &targetNucleus )
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV)
|
||||
{
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
//
|
||||
// create the target particle
|
||||
//
|
||||
G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
G4HadFinalState*
|
||||
G4LEXiZeroInelastic::ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& targetNucleus)
|
||||
{
|
||||
const G4HadProjectile *originalIncident = &aTrack;
|
||||
if (originalIncident->GetKineticEnergy()<= 0.1*MeV) {
|
||||
theParticleChange.SetStatusChange(isAlive);
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
return &theParticleChange;
|
||||
}
|
||||
|
||||
// create the target particle
|
||||
G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
if( verboseLevel > 1 )
|
||||
{
|
||||
@@ -124,10 +134,9 @@
|
||||
|
||||
delete originalTarget;
|
||||
return &theParticleChange;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4LEXiZeroInelastic::Cascade(
|
||||
void G4LEXiZeroInelastic::Cascade(
|
||||
G4FastVector<G4ReactionProduct,GHADLISTSIZE> &vec,
|
||||
G4int& vecLen,
|
||||
const G4HadProjectile *originalIncident,
|
||||
@@ -135,8 +144,8 @@
|
||||
G4ReactionProduct &targetParticle,
|
||||
G4bool &incidentHasChanged,
|
||||
G4bool &targetHasChanged,
|
||||
G4bool &quasiElastic )
|
||||
{
|
||||
G4bool &quasiElastic)
|
||||
{
|
||||
// derived from original FORTRAN code CASX0 by H. Fesefeldt (20-Jan-1989)
|
||||
//
|
||||
// XiZero undergoes interaction with nucleon within a nucleus. Check if it is
|
||||
@@ -388,7 +397,7 @@
|
||||
}
|
||||
SetUpPions( np, nm, nz, vec, vecLen );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* end of file */
|
||||
|
||||
|
||||
@@ -23,11 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Physics model class G4LElastic
|
||||
//
|
||||
//
|
||||
// G4 Model: Low-energy Elastic scattering
|
||||
// F.W. Jones, TRIUMF, 04-JUN-96
|
||||
//
|
||||
@@ -37,80 +33,100 @@
|
||||
// 25-JUN-98 FWJ: replaced missing Initialize for ParticleChange.
|
||||
// 14-DEC-05 V.Ivanchenko: restore 1.19 version (7.0)
|
||||
// 23-JAN-07 V.Ivanchenko: add protection inside sqrt
|
||||
//
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4LElastic.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4IonTable.hh"
|
||||
#include <iostream>
|
||||
|
||||
|
||||
G4LElastic::G4LElastic(const G4String& name)
|
||||
:G4HadronicInteraction(name)
|
||||
{
|
||||
SetMinEnergy(0.0);
|
||||
SetMaxEnergy(DBL_MAX);
|
||||
}
|
||||
|
||||
|
||||
void G4LElastic::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LElastic is one of the Low Energy Parameterized (LEP)\n"
|
||||
<< "models used to implement elastic hadron scattering from nuclei.\n"
|
||||
<< "It is a re-engineered version of the GHEISHA code of\n"
|
||||
<< "H. Fesefeldt. It performs simplified two-body elastic\n"
|
||||
<< "scattering for all long-lived hadronic projectiles by using\n"
|
||||
<< "a two-exponential parameterization in momentum transfer.\n"
|
||||
<< "It is valid for incident hadrons of all energies.\n";
|
||||
}
|
||||
|
||||
|
||||
G4HadFinalState*
|
||||
G4LElastic::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& targetNucleus)
|
||||
{
|
||||
if(getenv("debug_LElastic")) verboseLevel = 5;
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile* aParticle = &aTrack;
|
||||
G4double atno2 = targetNucleus.GetN();
|
||||
G4double zTarget = targetNucleus.GetZ();
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
if(getenv("debug_LElastic")) verboseLevel = 5;
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile* aParticle = &aTrack;
|
||||
G4double atno2 = targetNucleus.GetA_asInt();
|
||||
G4double zTarget = targetNucleus.GetZ_asInt();
|
||||
theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy());
|
||||
theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit());
|
||||
|
||||
// Elastic scattering off Hydrogen
|
||||
// Elastic scattering off Hydrogen
|
||||
|
||||
G4DynamicParticle* aSecondary = 0;
|
||||
if (atno2 < 1.5) {
|
||||
const G4ParticleDefinition* aParticleType = aParticle->GetDefinition();
|
||||
if (aParticleType == G4PionPlus::PionPlus())
|
||||
aSecondary = LightMedia.PionPlusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4PionMinus::PionMinus())
|
||||
aSecondary = LightMedia.PionMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4KaonPlus::KaonPlus())
|
||||
aSecondary = LightMedia.KaonPlusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4KaonZeroShort::KaonZeroShort())
|
||||
aSecondary = LightMedia.KaonZeroShortExchange(aParticle,targetNucleus);
|
||||
else if (aParticleType == G4KaonZeroLong::KaonZeroLong())
|
||||
aSecondary = LightMedia.KaonZeroLongExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4KaonMinus::KaonMinus())
|
||||
aSecondary = LightMedia.KaonMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4Proton::Proton())
|
||||
aSecondary = LightMedia.ProtonExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiProton::AntiProton())
|
||||
aSecondary = LightMedia.AntiProtonExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4Neutron::Neutron())
|
||||
aSecondary = LightMedia.NeutronExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiNeutron::AntiNeutron())
|
||||
aSecondary = LightMedia.AntiNeutronExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4Lambda::Lambda())
|
||||
aSecondary = LightMedia.LambdaExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiLambda::AntiLambda())
|
||||
aSecondary = LightMedia.AntiLambdaExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4SigmaPlus::SigmaPlus())
|
||||
aSecondary = LightMedia.SigmaPlusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4SigmaMinus::SigmaMinus())
|
||||
aSecondary = LightMedia.SigmaMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiSigmaPlus::AntiSigmaPlus())
|
||||
aSecondary = LightMedia.AntiSigmaPlusExchange(aParticle,targetNucleus);
|
||||
else if (aParticleType == G4AntiSigmaMinus::AntiSigmaMinus())
|
||||
aSecondary= LightMedia.AntiSigmaMinusExchange(aParticle,targetNucleus);
|
||||
else if (aParticleType == G4XiZero::XiZero())
|
||||
aSecondary = LightMedia.XiZeroExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4XiMinus::XiMinus())
|
||||
aSecondary = LightMedia.XiMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiXiZero::AntiXiZero())
|
||||
aSecondary = LightMedia.AntiXiZeroExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiXiMinus::AntiXiMinus())
|
||||
aSecondary = LightMedia.AntiXiMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4OmegaMinus::OmegaMinus())
|
||||
aSecondary = LightMedia.OmegaMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiOmegaMinus::AntiOmegaMinus())
|
||||
aSecondary= LightMedia.AntiOmegaMinusExchange(aParticle,targetNucleus);
|
||||
else if (aParticleType == G4KaonPlus::KaonPlus())
|
||||
aSecondary = LightMedia.KaonPlusExchange(aParticle, targetNucleus);
|
||||
}
|
||||
G4DynamicParticle* aSecondary = 0;
|
||||
if (atno2 < 1.5) {
|
||||
const G4ParticleDefinition* aParticleType = aParticle->GetDefinition();
|
||||
if (aParticleType == G4PionPlus::PionPlus())
|
||||
aSecondary = LightMedia.PionPlusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4PionMinus::PionMinus())
|
||||
aSecondary = LightMedia.PionMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4KaonPlus::KaonPlus())
|
||||
aSecondary = LightMedia.KaonPlusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4KaonZeroShort::KaonZeroShort())
|
||||
aSecondary = LightMedia.KaonZeroShortExchange(aParticle,targetNucleus);
|
||||
else if (aParticleType == G4KaonZeroLong::KaonZeroLong())
|
||||
aSecondary = LightMedia.KaonZeroLongExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4KaonMinus::KaonMinus())
|
||||
aSecondary = LightMedia.KaonMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4Proton::Proton())
|
||||
aSecondary = LightMedia.ProtonExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiProton::AntiProton())
|
||||
aSecondary = LightMedia.AntiProtonExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4Neutron::Neutron())
|
||||
aSecondary = LightMedia.NeutronExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiNeutron::AntiNeutron())
|
||||
aSecondary = LightMedia.AntiNeutronExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4Lambda::Lambda())
|
||||
aSecondary = LightMedia.LambdaExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiLambda::AntiLambda())
|
||||
aSecondary = LightMedia.AntiLambdaExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4SigmaPlus::SigmaPlus())
|
||||
aSecondary = LightMedia.SigmaPlusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4SigmaMinus::SigmaMinus())
|
||||
aSecondary = LightMedia.SigmaMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiSigmaPlus::AntiSigmaPlus())
|
||||
aSecondary = LightMedia.AntiSigmaPlusExchange(aParticle,targetNucleus);
|
||||
else if (aParticleType == G4AntiSigmaMinus::AntiSigmaMinus())
|
||||
aSecondary= LightMedia.AntiSigmaMinusExchange(aParticle,targetNucleus);
|
||||
else if (aParticleType == G4XiZero::XiZero())
|
||||
aSecondary = LightMedia.XiZeroExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4XiMinus::XiMinus())
|
||||
aSecondary = LightMedia.XiMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiXiZero::AntiXiZero())
|
||||
aSecondary = LightMedia.AntiXiZeroExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiXiMinus::AntiXiMinus())
|
||||
aSecondary = LightMedia.AntiXiMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4OmegaMinus::OmegaMinus())
|
||||
aSecondary = LightMedia.OmegaMinusExchange(aParticle, targetNucleus);
|
||||
else if (aParticleType == G4AntiOmegaMinus::AntiOmegaMinus())
|
||||
aSecondary= LightMedia.AntiOmegaMinusExchange(aParticle,targetNucleus);
|
||||
else if (aParticleType == G4KaonPlus::KaonPlus())
|
||||
aSecondary = LightMedia.KaonPlusExchange(aParticle, targetNucleus);
|
||||
}
|
||||
|
||||
// Has a charge or strangeness exchange occurred?
|
||||
// Has a charge or strangeness exchange occurred?
|
||||
if (aSecondary) {
|
||||
aSecondary->SetMomentum(aParticle->Get4Momentum().vect());
|
||||
theParticleChange.SetStatusChange(stopAndKill);
|
||||
|
||||
@@ -23,9 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4LFission.cc,v 1.15 2007/02/26 19:29:30 dennis Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4LFission.cc,v 1.15 2007-02-26 19:29:30 dennis Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
//
|
||||
// G4 Model: Low Energy Fission
|
||||
@@ -40,28 +39,39 @@
|
||||
// the code comes mostly from the old Low-energy Fission class
|
||||
//
|
||||
// 25-JUN-98 FWJ: replaced missing Initialize for ParticleChange.
|
||||
//
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4LFission.hh"
|
||||
#include "Randomize.hh"
|
||||
#include <iostream>
|
||||
|
||||
G4LFission::G4LFission() : G4HadronicInteraction("G4LFission")
|
||||
|
||||
G4LFission::G4LFission(const G4String& name)
|
||||
: G4HadronicInteraction(name)
|
||||
{
|
||||
init();
|
||||
SetMinEnergy( 0.0*GeV );
|
||||
SetMaxEnergy( DBL_MAX );
|
||||
|
||||
init();
|
||||
SetMinEnergy(0.0*GeV);
|
||||
SetMaxEnergy(DBL_MAX);
|
||||
}
|
||||
|
||||
|
||||
G4LFission::~G4LFission()
|
||||
{
|
||||
theParticleChange.Clear();
|
||||
theParticleChange.Clear();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4LFission::init()
|
||||
|
||||
void G4LFission::ModelDescription(std::ostream& outFile) const
|
||||
{
|
||||
outFile << "G4LFission is one of the Low Energy Parameterized\n"
|
||||
<< "(LEP) models used to implement neutron-induced fission of\n"
|
||||
<< "nuclei. It is a re-engineered version of the GHEISHA code\n"
|
||||
<< "of H. Fesefeldt which emits neutrons and gammas but no\n"
|
||||
<< "nuclear fragments. The model is applicable to all incident\n"
|
||||
<< "neutron energies.\n";
|
||||
}
|
||||
|
||||
void G4LFission::init()
|
||||
{
|
||||
G4int i;
|
||||
G4double xx = 1. - 0.5;
|
||||
@@ -86,8 +96,8 @@ G4LFission::ApplyYourself(const G4HadProjectile & aTrack,G4Nucleus & targetNucle
|
||||
theParticleChange.Clear();
|
||||
const G4HadProjectile* aParticle = &aTrack;
|
||||
|
||||
G4double N = targetNucleus.GetN();
|
||||
G4double Z = targetNucleus.GetZ();
|
||||
G4double N = targetNucleus.GetA_asInt();
|
||||
G4double Z = targetNucleus.GetZ_asInt();
|
||||
theParticleChange.SetStatusChange(stopAndKill);
|
||||
|
||||
G4double P = aParticle->GetTotalMomentum()/MeV;
|
||||
|
||||
Reference in New Issue
Block a user