Import Geant4 9.3.0 source tree
This commit is contained in:
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BGGNucleonElasticXS.hh,v 1.2 2008/12/01 16:50:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4BGGNucleonElasticXS.hh,v 1.5 2009/11/19 11:41:30 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BGGNucleonInelasticXS.hh,v 1.2 2008/12/01 16:50:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4BGGNucleonInelasticXS.hh,v 1.6 2009/11/19 11:44:46 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -124,7 +124,7 @@ inline
|
||||
G4bool G4BGGNucleonInelasticXS::IsZAApplicable(const G4DynamicParticle*,
|
||||
G4double /*Z*/, G4double/* A*/)
|
||||
{
|
||||
return true;
|
||||
return false;
|
||||
// return (dp->GetDefinition() == particle);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BGGPionElasticXS.hh,v 1.2 2008/12/01 16:50:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4BGGPionElasticXS.hh,v 1.5 2009/11/19 11:46:13 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -124,7 +124,7 @@ inline
|
||||
G4bool G4BGGPionElasticXS::IsZAApplicable(const G4DynamicParticle*,
|
||||
G4double /*Z*/, G4double/* A*/)
|
||||
{
|
||||
return true;
|
||||
return false;
|
||||
// return (dp->GetDefinition() == particle);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BGGPionInelasticXS.hh,v 1.2 2008/12/01 16:50:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4BGGPionInelasticXS.hh,v 1.5 2009/11/19 11:47:19 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -124,7 +124,7 @@ inline
|
||||
G4bool G4BGGPionInelasticXS::IsZAApplicable(const G4DynamicParticle*,
|
||||
G4double /*Z*/, G4double/* A*/)
|
||||
{
|
||||
return true;
|
||||
return false;
|
||||
// return (dp->GetDefinition() == particle);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4CrossSectionDataSetRegistry.hh,v 1.3 2009/08/08 16:21:31 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4CrossSectionDataSetRegistry
|
||||
//
|
||||
// Author V.Ivanchenko 24.01.2009
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
|
||||
//
|
||||
// Class Description
|
||||
// This is a singleton keeping pointers to all cross section data sets
|
||||
// Class Description - End
|
||||
|
||||
#ifndef G4CrossSectionDataSetRegistry_h
|
||||
#define G4CrossSectionDataSetRegistry_h 1
|
||||
|
||||
#include <vector>
|
||||
#include "globals.hh"
|
||||
|
||||
class G4VCrossSectionDataSet;
|
||||
|
||||
class G4CrossSectionDataSetRegistry
|
||||
{
|
||||
public:
|
||||
|
||||
static G4CrossSectionDataSetRegistry* Instance();
|
||||
// access
|
||||
|
||||
~G4CrossSectionDataSetRegistry();
|
||||
|
||||
void Register(G4VCrossSectionDataSet*);
|
||||
//register new cross section
|
||||
|
||||
void DeRegister(G4VCrossSectionDataSet*);
|
||||
//deregister cross section
|
||||
|
||||
void Clean();
|
||||
//clean the store
|
||||
|
||||
private:
|
||||
|
||||
G4CrossSectionDataSetRegistry();
|
||||
|
||||
static G4CrossSectionDataSetRegistry* theInstance;
|
||||
|
||||
std::vector <G4VCrossSectionDataSet*> xSections;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -23,6 +23,22 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4CrossSectionDataStore.hh,v 1.14 2009/01/24 11:54:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4CrossSectionDataStore
|
||||
//
|
||||
//
|
||||
// Modifications:
|
||||
// 23.01.2009 V.Ivanchenko move constructor and destructor to source,
|
||||
// use STL vector instead of C-array
|
||||
//
|
||||
|
||||
// Class Description
|
||||
// This is the class to which cross section data sets may be registered.
|
||||
// An instance of it is contained in each hadronic process, allowing
|
||||
@@ -39,6 +55,7 @@
|
||||
#include "G4Element.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4VCrossSectionDataSet.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4Nucleus;
|
||||
|
||||
@@ -46,57 +63,52 @@ class G4CrossSectionDataStore
|
||||
{
|
||||
public:
|
||||
|
||||
G4CrossSectionDataStore() :
|
||||
NDataSetList(0), verboseLevel(0)
|
||||
{}
|
||||
G4CrossSectionDataStore();
|
||||
|
||||
~G4CrossSectionDataStore()
|
||||
{}
|
||||
~G4CrossSectionDataStore();
|
||||
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
const G4Element*, G4double aTemperature);
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
const G4Element*, G4double aTemperature);
|
||||
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
const G4Isotope*, G4double aTemperature);
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
const G4Isotope*, G4double aTemperature);
|
||||
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
G4double Z, G4double A, G4double aTemperature);
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
G4double Z, G4double A, G4double aTemperature);
|
||||
|
||||
// to replace GetMicroscopicCrossSection
|
||||
G4double GetCrossSection(const G4DynamicParticle*, const G4Material*);
|
||||
// to replace GetMicroscopicCrossSection
|
||||
G4double GetCrossSection(const G4DynamicParticle*, const G4Material*);
|
||||
|
||||
std::pair<G4double/*Z*/, G4double/*A*/>
|
||||
SelectRandomIsotope(const G4DynamicParticle*, const G4Material*);
|
||||
//std::pair<G4double/*Z*/, G4double/*A*/>
|
||||
// SelectRandomIsotope(const G4DynamicParticle*, const G4Material*);
|
||||
|
||||
G4Element* SampleZandA(const G4DynamicParticle*, const G4Material*,
|
||||
G4Nucleus& target);
|
||||
G4Element* SampleZandA(const G4DynamicParticle*, const G4Material*,
|
||||
G4Nucleus& target);
|
||||
|
||||
void AddDataSet(G4VCrossSectionDataSet*);
|
||||
void AddDataSet(G4VCrossSectionDataSet*);
|
||||
|
||||
void BuildPhysicsTable(const G4ParticleDefinition&);
|
||||
void BuildPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
void DumpPhysicsTable(const G4ParticleDefinition&);
|
||||
void DumpPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
void SetVerboseLevel(G4int value)
|
||||
{
|
||||
verboseLevel = value;
|
||||
}
|
||||
inline void SetVerboseLevel(G4int value)
|
||||
{
|
||||
verboseLevel = value;
|
||||
}
|
||||
|
||||
G4int GetVerboseLevel()
|
||||
{
|
||||
return verboseLevel;
|
||||
}
|
||||
inline G4int GetVerboseLevel()
|
||||
{
|
||||
return verboseLevel;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
G4VCrossSectionDataSet* whichDataSetInCharge(const G4DynamicParticle*,
|
||||
const G4Element*);
|
||||
|
||||
G4VCrossSectionDataSet* whichDataSetInCharge(const G4DynamicParticle*,
|
||||
const G4Element*);
|
||||
|
||||
enum { NDataSetMax = 100 };
|
||||
G4VCrossSectionDataSet* DataSetList[NDataSetMax];
|
||||
G4int NDataSetList;
|
||||
G4int verboseLevel;
|
||||
std::vector<G4VCrossSectionDataSet*> DataSetList;
|
||||
G4int NDataSetList;
|
||||
G4int verboseLevel;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -71,6 +71,9 @@ public:
|
||||
G4double Z, G4double A,
|
||||
G4double aTemperature = 0.0);
|
||||
|
||||
G4double GetCoulombBarier(const G4DynamicParticle*,
|
||||
G4double Z, G4double A, G4double pR, G4double tR);
|
||||
|
||||
virtual
|
||||
void BuildPhysicsTable(const G4ParticleDefinition&)
|
||||
{}
|
||||
@@ -88,31 +91,16 @@ public:
|
||||
G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, const G4Element*);
|
||||
G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4double At, G4double Zt);
|
||||
|
||||
|
||||
|
||||
|
||||
// G4double GetHadronNucleonXscNS(const G4DynamicParticle*, const G4Element*);
|
||||
// G4double GetHadronNucleonXscNS(const G4DynamicParticle*,G4double At, G4double Zt);
|
||||
|
||||
|
||||
|
||||
|
||||
G4double GetHadronNucleonXscNS(G4ParticleDefinition*,G4double pTkin, G4ParticleDefinition*);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// G4double GetHNinelasticXsc(const G4DynamicParticle*, const G4Element*);
|
||||
// G4double GetHNinelasticXsc(const G4DynamicParticle*, G4double At, G4double Zt);
|
||||
|
||||
G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4double At, G4double Zt);
|
||||
|
||||
G4double GetHadronNucleonXscMK(G4ParticleDefinition* pParticle, G4double pTkin,
|
||||
G4ParticleDefinition* nucleon );
|
||||
|
||||
G4double CalculateEcmValue ( const G4double , const G4double , const G4double );
|
||||
|
||||
G4double CalcMandelstamS( const G4double , const G4double , const G4double );
|
||||
|
||||
@@ -97,8 +97,6 @@ public:
|
||||
G4double GetHNinelasticXsc(const G4DynamicParticle*, const G4Element*);
|
||||
G4double GetHNinelasticXsc(const G4DynamicParticle*, G4double At, G4double Zt);
|
||||
G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4double At, G4double Zt);
|
||||
G4double GetHadronNucleonXscMK(const G4DynamicParticle* aParticle,
|
||||
const G4ParticleDefinition* nucleon );
|
||||
|
||||
G4double CalculateEcmValue ( const G4double , const G4double , const G4double );
|
||||
|
||||
|
||||
@@ -60,9 +60,6 @@ public:
|
||||
virtual
|
||||
G4bool IsZAApplicable(const G4DynamicParticle* aDP, G4double Z, G4double A);
|
||||
|
||||
|
||||
|
||||
|
||||
virtual
|
||||
void DumpPhysicsTable(const G4ParticleDefinition&)
|
||||
{G4cout << "G4HadronNucleonXsc: uses parametrisation"<<G4endl;}
|
||||
@@ -77,8 +74,6 @@ public:
|
||||
|
||||
G4double GetHadronNucleonXscVU(const G4DynamicParticle*, const G4ParticleDefinition*);
|
||||
|
||||
G4double GetHadronNucleonXscMK(const G4DynamicParticle*, const G4ParticleDefinition*);
|
||||
|
||||
// kinematics and set/get
|
||||
|
||||
G4double CalculateEcmValue ( const G4double , const G4double , const G4double );
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NeutronCaptureXS.hh,v 1.1 2009/11/12 00:36:01 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4NeutronCaptureXS
|
||||
//
|
||||
// Author Ivantchenko, Geant4, 3-AUG-09
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
|
||||
|
||||
#ifndef G4NeutronCaptureXS_h
|
||||
#define G4NeutronCaptureXS_h 1
|
||||
|
||||
#include "G4VCrossSectionDataSet.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4DynamicParticle;
|
||||
class G4ParticleDefinition;
|
||||
class G4Element;
|
||||
class G4PhysicsVector;
|
||||
|
||||
class G4NeutronCaptureXS : public G4VCrossSectionDataSet
|
||||
{
|
||||
public: // With Description
|
||||
|
||||
G4int Z;
|
||||
G4NeutronCaptureXS();
|
||||
|
||||
virtual ~G4NeutronCaptureXS();
|
||||
|
||||
// The following methods need to be implemented for each new data set.
|
||||
virtual
|
||||
G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
|
||||
|
||||
virtual
|
||||
G4bool IsZAApplicable(const G4DynamicParticle*,
|
||||
G4double /*Z*/, G4double /*A*/);
|
||||
|
||||
virtual
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
const G4Element*,
|
||||
G4double aTemperature = 0.);
|
||||
|
||||
virtual
|
||||
void BuildPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
virtual
|
||||
void DumpPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
|
||||
public: // Without Description
|
||||
|
||||
inline void SetVerboseLevel(G4int value)
|
||||
{
|
||||
verboseLevel = value;
|
||||
}
|
||||
inline G4int GetVerboseLevel()
|
||||
{
|
||||
return verboseLevel;
|
||||
}
|
||||
|
||||
private: // Without Description
|
||||
|
||||
void Initialise(G4int Z, const char* = 0);
|
||||
|
||||
G4NeutronCaptureXS & operator=(const G4NeutronCaptureXS &right);
|
||||
G4NeutronCaptureXS(const G4NeutronCaptureXS&);
|
||||
|
||||
G4double emax;
|
||||
G4PhysicsVector* data[93];
|
||||
|
||||
G4bool isInitialized;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,109 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NeutronElasticXS.hh,v 1.3 2009/11/19 11:51:46 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4NeutronElasticXS
|
||||
//
|
||||
// Author Ivantchenko, Geant4, 3-AUG-09
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
|
||||
|
||||
#ifndef G4NeutronElasticXS_h
|
||||
#define G4NeutronElasticXS_h 1
|
||||
|
||||
#include "G4VCrossSectionDataSet.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4DynamicParticle;
|
||||
class G4ParticleDefinition;
|
||||
class G4Element;
|
||||
class G4PhysicsVector;
|
||||
class G4GlauberGribovCrossSection;
|
||||
|
||||
class G4NeutronElasticXS : public G4VCrossSectionDataSet
|
||||
{
|
||||
public: // With Description
|
||||
|
||||
G4int Z;
|
||||
G4NeutronElasticXS();
|
||||
|
||||
virtual ~G4NeutronElasticXS();
|
||||
|
||||
// The following methods need to be implemented for each new data set.
|
||||
virtual
|
||||
G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
|
||||
|
||||
virtual
|
||||
G4bool IsZAApplicable(const G4DynamicParticle*,
|
||||
G4double /*Z*/, G4double /*A*/);
|
||||
|
||||
virtual
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
const G4Element*,
|
||||
G4double aTemperature = 0.);
|
||||
|
||||
virtual
|
||||
void BuildPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
virtual
|
||||
void DumpPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
public: // Without Description
|
||||
|
||||
inline void SetVerboseLevel(G4int value)
|
||||
{
|
||||
verboseLevel = value;
|
||||
}
|
||||
inline G4int GetVerboseLevel()
|
||||
{
|
||||
return verboseLevel;
|
||||
}
|
||||
|
||||
private: // Without Description
|
||||
|
||||
void Initialise(G4int Z, G4DynamicParticle* dp = 0, const char* = 0);
|
||||
|
||||
G4NeutronElasticXS & operator=(const G4NeutronElasticXS &right);
|
||||
G4NeutronElasticXS(const G4NeutronElasticXS&);
|
||||
|
||||
G4GlauberGribovCrossSection* ggXsection;
|
||||
|
||||
G4PhysicsVector* data[93];
|
||||
G4double coeff[93];
|
||||
|
||||
G4bool isInitialized;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -25,6 +25,7 @@
|
||||
//
|
||||
// by JPW, working, but to be cleaned up. @@@@
|
||||
// D. Wright, 23-Dec-2006 Added isotope dependence
|
||||
// G.Folger, 25-Nov-2009: extend to 100TeV, using a constant above 20GeV
|
||||
//
|
||||
|
||||
#ifndef G4NeutronInelasticCrossSection_h
|
||||
@@ -50,7 +51,7 @@ class G4NeutronInelasticCrossSection : public G4VCrossSectionDataSet
|
||||
{
|
||||
G4bool result = false;
|
||||
if(( aPart->GetDefinition()==G4Neutron::Neutron()) &&
|
||||
( aPart->GetKineticEnergy()<20*GeV) &&
|
||||
( aPart->GetKineticEnergy()<100*TeV) &&
|
||||
aPart->GetKineticEnergy()>19.9*MeV) result = true;
|
||||
if(aEle->GetZ()<2) result = false;
|
||||
return result;
|
||||
@@ -61,7 +62,7 @@ class G4NeutronInelasticCrossSection : public G4VCrossSectionDataSet
|
||||
{
|
||||
G4bool result = false;
|
||||
if(( aPart->GetDefinition() == G4Neutron::Neutron()) &&
|
||||
( aPart->GetKineticEnergy() < 20*GeV) &&
|
||||
( aPart->GetKineticEnergy() < 100*TeV) &&
|
||||
aPart->GetKineticEnergy() > 19.9*MeV) result = true;
|
||||
if(ZZ < 2) result = false;
|
||||
return result;
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NeutronInelasticXS.hh,v 1.3 2009/11/19 11:52:27 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4NeutronInelasticXS
|
||||
//
|
||||
// Author Ivantchenko, Geant4, 3-AUG-09
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
|
||||
|
||||
#ifndef G4NeutronInelasticXS_h
|
||||
#define G4NeutronInelasticXS_h 1
|
||||
|
||||
#include "G4VCrossSectionDataSet.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4DynamicParticle;
|
||||
class G4ParticleDefinition;
|
||||
class G4Element;
|
||||
class G4PhysicsVector;
|
||||
class G4GlauberGribovCrossSection;
|
||||
|
||||
class G4NeutronInelasticXS : public G4VCrossSectionDataSet
|
||||
{
|
||||
public: // With Description
|
||||
|
||||
G4int Z;
|
||||
G4NeutronInelasticXS();
|
||||
|
||||
virtual ~G4NeutronInelasticXS();
|
||||
|
||||
// The following methods need to be implemented for each new data set.
|
||||
virtual
|
||||
G4bool IsApplicable(const G4DynamicParticle*, const G4Element*);
|
||||
|
||||
virtual
|
||||
G4bool IsZAApplicable(const G4DynamicParticle*,
|
||||
G4double /*Z*/, G4double /*A*/);
|
||||
|
||||
virtual
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
const G4Element*,
|
||||
G4double aTemperature = 0.);
|
||||
|
||||
virtual
|
||||
void BuildPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
virtual
|
||||
void DumpPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
public: // Without Description
|
||||
|
||||
inline void SetVerboseLevel(G4int value)
|
||||
{
|
||||
verboseLevel = value;
|
||||
}
|
||||
inline G4int GetVerboseLevel()
|
||||
{
|
||||
return verboseLevel;
|
||||
}
|
||||
|
||||
private: // Without Description
|
||||
|
||||
void Initialise(G4int Z, G4DynamicParticle* dp = 0, const char* = 0);
|
||||
|
||||
G4NeutronInelasticXS & operator=(const G4NeutronInelasticXS &right);
|
||||
G4NeutronInelasticXS(const G4NeutronInelasticXS&);
|
||||
|
||||
G4GlauberGribovCrossSection* ggXsection;
|
||||
|
||||
G4PhysicsVector* data[93];
|
||||
G4double coeff[93];
|
||||
|
||||
G4bool isInitialized;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -47,7 +47,7 @@ class G4PiNuclearCrossSection : public G4VCrossSectionDataSet
|
||||
if(aParticle->GetDefinition() == G4PionMinus::PionMinus()) result=true;
|
||||
if(aParticle->GetDefinition() == G4PionPlus::PionPlus()) result=true;
|
||||
if(G4lrint(anElement->GetZ()) == 1) result = false;
|
||||
if(aParticle->GetKineticEnergy() > 999.9*GeV) result=false;
|
||||
if(aParticle->GetKineticEnergy() > 99.9*TeV) result=false;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ class G4PiNuclearCrossSection : public G4VCrossSectionDataSet
|
||||
if(particle->GetDefinition() == G4PionMinus::PionMinus()) result=true;
|
||||
if(particle->GetDefinition() == G4PionPlus::PionPlus()) result=true;
|
||||
if(G4lrint(ZZ) == 1) result = false;
|
||||
if(particle->GetKineticEnergy() > 999.9*GeV) result=false;
|
||||
if(particle->GetKineticEnergy() > 99.9*TeV) result=false;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
// by JPW, working, but to be cleaned up. @@@@
|
||||
// G.Folger, 29-sept-2006: extend to 1TeV, using a constant above 20GeV
|
||||
// D. Wright, 23-Dec-2006: added isotope dependence
|
||||
// G.Folger, 25-Nov-2009: extend to 100TeV, using a constant above 20GeV
|
||||
//
|
||||
|
||||
#ifndef G4ProtonInelasticCrossSection_h
|
||||
@@ -55,7 +56,7 @@ class G4ProtonInelasticCrossSection : public G4VCrossSectionDataSet
|
||||
{
|
||||
G4bool result = false;
|
||||
if(( aPart->GetDefinition()==G4Proton::Proton()) &&
|
||||
( aPart->GetKineticEnergy()<1*TeV) ) result = true;
|
||||
( aPart->GetKineticEnergy()<100*TeV) ) result = true;
|
||||
if(aEle->GetZ()<3) result = false;
|
||||
return result;
|
||||
}
|
||||
@@ -65,7 +66,7 @@ class G4ProtonInelasticCrossSection : public G4VCrossSectionDataSet
|
||||
{
|
||||
G4bool result = false;
|
||||
if (( aParticle->GetDefinition() == G4Proton::Proton()) &&
|
||||
( aParticle->GetKineticEnergy() < 1*TeV) ) result = true;
|
||||
( aParticle->GetKineticEnergy() < 100*TeV) ) result = true;
|
||||
if (ZZ < 3) result = false;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,9 @@ class G4TripathiCrossSection : public G4VCrossSectionDataSet
|
||||
{
|
||||
public:
|
||||
|
||||
G4TripathiCrossSection();
|
||||
~G4TripathiCrossSection();
|
||||
|
||||
virtual
|
||||
G4bool IsApplicable(const G4DynamicParticle* aPart, const G4Element*)
|
||||
{
|
||||
|
||||
@@ -23,9 +23,22 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VCrossSectionDataSet.hh,v 1.13 2009/01/24 11:54:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
// GEANT4 physics abstract class: G4VCrossSectionData -- header file
|
||||
// F.W. Jones, TRIUMF, 20-JAN-97
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4VCrossSectionDataSet
|
||||
//
|
||||
// Author F.W. Jones, TRIUMF, 20-JAN-97
|
||||
//
|
||||
// Modifications:
|
||||
// 23.01.2009 V.Ivanchenko move constructor and destructor to source
|
||||
//
|
||||
|
||||
//
|
||||
// Class Description
|
||||
// This is a base class for hadronic cross section data sets. Users may
|
||||
@@ -42,58 +55,53 @@
|
||||
|
||||
class G4VCrossSectionDataSet
|
||||
{
|
||||
public:
|
||||
|
||||
G4VCrossSectionDataSet() :
|
||||
verboseLevel(0)
|
||||
{}
|
||||
|
||||
virtual ~G4VCrossSectionDataSet()
|
||||
{}
|
||||
|
||||
public: //with description
|
||||
|
||||
// The following methods need to be implemented for each new data set.
|
||||
virtual
|
||||
G4bool IsApplicable(const G4DynamicParticle*, const G4Element*) = 0;
|
||||
G4VCrossSectionDataSet();
|
||||
|
||||
virtual
|
||||
G4bool IsZAApplicable(const G4DynamicParticle*, G4double /*Z*/, G4double /*A*/);
|
||||
virtual ~G4VCrossSectionDataSet();
|
||||
|
||||
virtual
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
const G4Element*,
|
||||
G4double aTemperature = 0.) = 0;
|
||||
// The following methods need to be implemented for each new data set.
|
||||
virtual
|
||||
G4bool IsApplicable(const G4DynamicParticle*, const G4Element*) = 0;
|
||||
|
||||
virtual
|
||||
G4double GetIsoCrossSection(const G4DynamicParticle*, const G4Isotope*,
|
||||
G4double aTemperature = 0.);
|
||||
virtual
|
||||
G4bool IsZAApplicable(const G4DynamicParticle*, G4double /*Z*/, G4double /*A*/);
|
||||
|
||||
virtual
|
||||
G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
|
||||
G4double /*A*/, G4double aTemperature = 0.);
|
||||
virtual
|
||||
G4double GetCrossSection(const G4DynamicParticle*,
|
||||
const G4Element*,
|
||||
G4double aTemperature = 0.) = 0;
|
||||
|
||||
virtual
|
||||
void BuildPhysicsTable(const G4ParticleDefinition&) = 0;
|
||||
virtual
|
||||
G4double GetIsoCrossSection(const G4DynamicParticle*, const G4Isotope*,
|
||||
G4double aTemperature = 0.);
|
||||
|
||||
virtual
|
||||
void DumpPhysicsTable(const G4ParticleDefinition&) = 0;
|
||||
virtual
|
||||
G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/,
|
||||
G4double /*A*/, G4double aTemperature = 0.);
|
||||
|
||||
virtual
|
||||
void BuildPhysicsTable(const G4ParticleDefinition&) = 0;
|
||||
|
||||
virtual
|
||||
void DumpPhysicsTable(const G4ParticleDefinition&) = 0;
|
||||
|
||||
public: // Without Description
|
||||
|
||||
void SetVerboseLevel(G4int value)
|
||||
{
|
||||
verboseLevel = value;
|
||||
}
|
||||
inline void SetVerboseLevel(G4int value)
|
||||
{
|
||||
verboseLevel = value;
|
||||
}
|
||||
|
||||
G4int GetVerboseLevel()
|
||||
{
|
||||
return verboseLevel;
|
||||
}
|
||||
inline G4int GetVerboseLevel()
|
||||
{
|
||||
return verboseLevel;
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
G4int verboseLevel;
|
||||
G4int verboseLevel;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user