Import Geant4 9.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 16:15:05 +02:00
parent b79225fb37
commit 74cad5e589
3877 changed files with 234205 additions and 167127 deletions
@@ -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