Import Geant4 9.4.0 source tree
This commit is contained in:
+92
@@ -0,0 +1,92 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4AnalyticalEcpssrKCrossSection.hh,v 1.1 2010/06/06 23:40:35 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
|
||||
#ifndef G4ANALYTICALECPSSRKCROSSSECTION_HH
|
||||
#define G4ANALYTICALECPSSRKCROSSSECTION_HH 1
|
||||
|
||||
#include "G4VecpssrKModel.hh"
|
||||
#include "globals.hh"
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include "G4DNACrossSectionDataSet.hh"
|
||||
|
||||
|
||||
class G4AnalyticalEcpssrKCrossSection : public G4VecpssrKModel
|
||||
{
|
||||
public:
|
||||
|
||||
G4AnalyticalEcpssrKCrossSection();
|
||||
|
||||
~G4AnalyticalEcpssrKCrossSection();
|
||||
|
||||
|
||||
G4double CalculateCrossSection(G4int, G4double, G4double);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double ExpIntFunction(G4int n,G4double x);//Exponential Integral Function
|
||||
|
||||
private:
|
||||
|
||||
G4AnalyticalEcpssrKCrossSection(const G4AnalyticalEcpssrKCrossSection&);
|
||||
G4AnalyticalEcpssrKCrossSection & operator = (const G4AnalyticalEcpssrKCrossSection &right);
|
||||
|
||||
G4double FunctionFK(G4double k, G4double theta);
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LinLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double QuadInterpolator(G4double e11,
|
||||
G4double e12,
|
||||
G4double e21,
|
||||
G4double e22,
|
||||
G4double x11,
|
||||
G4double x12,
|
||||
G4double x21,
|
||||
G4double x22,
|
||||
G4double t1,
|
||||
G4double t2,
|
||||
G4double t,
|
||||
G4double e);
|
||||
|
||||
typedef std::map<double, std::map<double, double> > TriDimensionMap;
|
||||
|
||||
TriDimensionMap FKData;
|
||||
std::vector<double> dummyVec;
|
||||
|
||||
typedef std::map<double, std::vector<double> > VecMap;
|
||||
VecMap aVecMap;
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
G4DNACrossSectionDataSet* tableC1;
|
||||
G4DNACrossSectionDataSet* tableC2;
|
||||
G4DNACrossSectionDataSet* tableC3;
|
||||
};
|
||||
|
||||
#endif
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4AnalyticalEcpssrLiCrossSection.hh,v 1.2 2010/06/25 09:41:09 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Haifa Ben Abdelouahed
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 23 Apr 2008 H. Ben Abdelouahed 1st implementation
|
||||
// 28 Apr 2008 MGP Major revision according to a design iteration
|
||||
// 29 Apr 2009 ALF Updated Desing for Integration
|
||||
// 01 Sep 2009 ALF Updated to G4AnalyticalEcpssrLiCrossSection
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p and alpha ionisation, L shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4ANALYTICALECPSSRLICROSSSECTION_HH
|
||||
#define G4ANALYTICALECPSSRLICROSSSECTION_HH 1
|
||||
|
||||
#include "G4VecpssrLiModel.hh"
|
||||
#include "globals.hh"
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
class G4AnalyticalEcpssrLiCrossSection : public G4VecpssrLiModel
|
||||
|
||||
{
|
||||
public:
|
||||
|
||||
G4AnalyticalEcpssrLiCrossSection();
|
||||
|
||||
~G4AnalyticalEcpssrLiCrossSection();
|
||||
|
||||
G4double CalculateL1CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double CalculateL2CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double CalculateL3CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double CalculateVelocity(G4int subShell, G4int zTarget,G4double massIncident, G4double energyIncident);
|
||||
|
||||
G4double ExpIntFunction(G4int n,G4double x);//Exponential Integral Function
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
G4AnalyticalEcpssrLiCrossSection(const G4AnalyticalEcpssrLiCrossSection&);
|
||||
G4AnalyticalEcpssrLiCrossSection & operator = (const G4AnalyticalEcpssrLiCrossSection &right);
|
||||
|
||||
G4double FunctionFL1(G4double k, G4double theta);
|
||||
|
||||
G4double FunctionFL2(G4double k, G4double theta);
|
||||
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LinLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LinLinInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double QuadInterpolator(G4double e11,
|
||||
G4double e12,
|
||||
G4double e21,
|
||||
G4double e22,
|
||||
G4double x11,
|
||||
G4double x12,
|
||||
G4double x21,
|
||||
G4double x22,
|
||||
G4double t1,
|
||||
G4double t2,
|
||||
G4double t,
|
||||
G4double e);
|
||||
|
||||
typedef std::map<double, std::map<double, double> > TriDimensionMap;
|
||||
|
||||
TriDimensionMap FL1Data;
|
||||
|
||||
TriDimensionMap FL2Data;
|
||||
std::vector<double> dummyVec1;
|
||||
std::vector<double> dummyVec2;
|
||||
|
||||
|
||||
|
||||
typedef std::map<double, std::vector<double> > VecMap;
|
||||
VecMap aVecMap1;
|
||||
VecMap aVecMap2;
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,95 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4BoldyshevTripletModel.hh,v 1.1 2010/11/10 17:09:16 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4BoldyshevTripletModel_h
|
||||
#define G4BoldyshevTripletModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4CrossSectionHandler.hh"
|
||||
#include "G4ForceCondition.hh"
|
||||
#include "G4CompositeEMDataSet.hh"
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
class G4BoldyshevTripletModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4BoldyshevTripletModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "BoldyshevTriplet");
|
||||
|
||||
virtual ~G4BoldyshevTripletModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
private:
|
||||
|
||||
const G4double smallEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
|
||||
G4BoldyshevTripletModel & operator=(const G4BoldyshevTripletModel &right);
|
||||
G4BoldyshevTripletModel(const G4BoldyshevTripletModel&);
|
||||
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4DNAAttachment.hh,v 1.1 2010/09/08 13:46:45 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// Created by Z. Francis
|
||||
|
||||
#ifndef G4DNAAttachment_h
|
||||
#define G4DNAAttachment_h 1
|
||||
|
||||
#include "G4VEmProcess.hh"
|
||||
|
||||
// Available models
|
||||
#include "G4DNAMeltonAttachmentModel.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4DNAAttachment : public G4VEmProcess
|
||||
|
||||
{
|
||||
public:
|
||||
|
||||
G4DNAAttachment(const G4String& processName ="DNAAttachment",
|
||||
G4ProcessType type = fElectromagnetic);
|
||||
|
||||
virtual ~G4DNAAttachment();
|
||||
|
||||
virtual G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
virtual void PrintInfo();
|
||||
|
||||
protected:
|
||||
|
||||
virtual void InitialiseProcess(const G4ParticleDefinition*);
|
||||
|
||||
private:
|
||||
|
||||
G4bool isInitialised;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNABornExcitationModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNABornExcitationModel.hh,v 1.4 2010/03/27 12:46:51 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNABornExcitationModel_h
|
||||
@@ -36,6 +36,7 @@
|
||||
|
||||
#include "G4DNACrossSectionDataSet.hh"
|
||||
#include "G4LogLogInterpolation.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4WaterExcitationStructure.hh"
|
||||
|
||||
@@ -49,7 +50,7 @@ public:
|
||||
|
||||
virtual ~G4DNABornExcitationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()) );
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
@@ -69,30 +70,30 @@ protected:
|
||||
|
||||
private:
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
|
||||
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
|
||||
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
G4DNACrossSectionDataSet* table;
|
||||
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
|
||||
MapFile tableFile;
|
||||
|
||||
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
|
||||
MapData tableData;
|
||||
|
||||
// Partial cross section
|
||||
|
||||
G4int RandomSelect(G4double energy);
|
||||
G4int RandomSelect(G4double energy,const G4String& particle );
|
||||
|
||||
// Final state
|
||||
|
||||
G4WaterExcitationStructure waterStructure;
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
|
||||
G4DNABornExcitationModel & operator=(const G4DNABornExcitationModel &right);
|
||||
G4DNABornExcitationModel(const G4DNABornExcitationModel&);
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNABornIonisationModel.hh,v 1.3 2009/06/26 10:15:19 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNABornIonisationModel.hh,v 1.5 2010/03/28 18:33:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNABornIonisationModel_h
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
|
||||
virtual ~G4DNABornIonisationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()));
|
||||
|
||||
virtual G4double CrossSectionPerVolume( const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
@@ -67,6 +67,8 @@ public:
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -97,8 +99,6 @@ private:
|
||||
void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double
|
||||
outgoingParticleEnergy, G4double & cosTheta, G4double & phi );
|
||||
|
||||
double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double QuadInterpolator( G4double e11,
|
||||
@@ -128,11 +128,6 @@ private:
|
||||
|
||||
G4int RandomSelect(G4double energy,const G4String& particle );
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNABornIonisationModel & operator=(const G4DNABornIonisationModel &right);
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAChampionElasticModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNAChampionElasticModel.hh,v 1.4 2010/11/11 22:32:22 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4DNAChampionElasticModel_h
|
||||
@@ -44,23 +44,26 @@ class G4DNAChampionElasticModel : public G4VEmModel
|
||||
public:
|
||||
|
||||
G4DNAChampionElasticModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "DNAChampionElasticModel");
|
||||
const G4String& nam = "DNAChampionElasticModel");
|
||||
|
||||
virtual ~G4DNAChampionElasticModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
inline void SetKillBelowThreshold (G4double threshold);
|
||||
G4double GetKillBelowThreshold () { return killBelowEnergy; }
|
||||
|
||||
protected:
|
||||
|
||||
@@ -70,7 +73,6 @@ private:
|
||||
|
||||
G4double killBelowEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double lowEnergyLimitOfModel;
|
||||
G4double highEnergyLimit;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
@@ -85,12 +87,16 @@ private:
|
||||
|
||||
// Final state
|
||||
|
||||
G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double theta);
|
||||
//G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double theta);
|
||||
|
||||
G4double Theta(G4ParticleDefinition * aParticleDefinition, G4double k, G4double integrDiff);
|
||||
|
||||
G4double LinLinInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LinLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double QuadInterpolator(G4double e11,
|
||||
G4double e12,
|
||||
G4double e21,
|
||||
@@ -114,11 +120,6 @@ private:
|
||||
|
||||
G4double RandomizeCosTheta(G4double k);
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNAChampionElasticModel & operator=(const G4DNAChampionElasticModel &right);
|
||||
@@ -126,6 +127,18 @@ private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
inline void G4DNAChampionElasticModel::SetKillBelowThreshold (G4double threshold)
|
||||
{
|
||||
killBelowEnergy = threshold;
|
||||
|
||||
if (threshold < 1*eV)
|
||||
G4Exception ("*** WARNING : the G4DNAChampionElasticModel class is not validated below 1 eV !","",JustWarning,"") ;
|
||||
|
||||
if (threshold < 0.025*eV) threshold = 0.025*eV;
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
|
||||
+2
-7
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNADingfelderChargeDecreaseModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNADingfelderChargeDecreaseModel.hh,v 1.2 2010/01/07 18:10:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNADingfelderChargeDecreaseModel_h
|
||||
@@ -103,11 +103,6 @@ private:
|
||||
|
||||
G4double OutgoingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNADingfelderChargeDecreaseModel & operator=(const G4DNADingfelderChargeDecreaseModel &right);
|
||||
|
||||
+2
-7
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNADingfelderChargeIncreaseModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNADingfelderChargeIncreaseModel.hh,v 1.2 2010/01/07 18:10:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNADingfelderChargeIncreaseModel_h
|
||||
@@ -106,11 +106,6 @@ private:
|
||||
|
||||
G4double IncomingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNADingfelderChargeIncreaseModel & operator=(const G4DNADingfelderChargeIncreaseModel &right);
|
||||
|
||||
+3
-8
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAEmfietzoglouExcitationModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNAEmfietzoglouExcitationModel.hh,v 1.3 2010/03/26 19:52:44 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNAEmfietzoglouExcitationModel_h
|
||||
@@ -49,7 +49,7 @@ public:
|
||||
|
||||
virtual ~G4DNAEmfietzoglouExcitationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()) );
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
@@ -88,11 +88,6 @@ private:
|
||||
|
||||
G4WaterExcitationStructure waterExcitation;
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNAEmfietzoglouExcitationModel & operator=(const G4DNAEmfietzoglouExcitationModel &right);
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4DNAMeltonAttachmentModel.hh,v 1.1 2010/09/08 13:46:45 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// Created by Z. Francis
|
||||
|
||||
#ifndef G4DNAMeltonAttachmentModel_h
|
||||
#define G4DNAMeltonAttachmentModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
#include "G4DNACrossSectionDataSet.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4LogLogInterpolation.hh"
|
||||
|
||||
class G4DNAMeltonAttachmentModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4DNAMeltonAttachmentModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "DNAMeltonAttachmentModel");
|
||||
|
||||
virtual ~G4DNAMeltonAttachmentModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
|
||||
private:
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
G4double lowEnergyLimitOfModel;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
|
||||
MapFile tableFile;
|
||||
|
||||
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
|
||||
MapData tableData;
|
||||
|
||||
//
|
||||
|
||||
G4DNAMeltonAttachmentModel & operator=(const G4DNAMeltonAttachmentModel &right);
|
||||
G4DNAMeltonAttachmentModel(const G4DNAMeltonAttachmentModel&);
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+2
-9
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAMillerGreenExcitationModel.hh,v 1.1 2009/01/12 14:26:03 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNAMillerGreenExcitationModel.hh,v 1.2 2010/01/07 18:10:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNAMillerGreenExcitationModel_h
|
||||
@@ -114,13 +114,6 @@ private:
|
||||
G4double slaterEffectiveCharge[3][4];
|
||||
G4double sCoefficient[3][4];
|
||||
|
||||
// Final state
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNAMillerGreenExcitationModel & operator=(const G4DNAMillerGreenExcitationModel &right);
|
||||
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4DNARuddIonisationExtendedModel.hh,v 1.1 2010/11/03 10:44:26 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4DNARuddIonisationExtendedModel_h
|
||||
#define G4DNARuddIonisationExtendedModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
#include "G4DNACrossSectionDataSet.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4LogLogInterpolation.hh"
|
||||
|
||||
#include "G4WaterIonisationStructure.hh"
|
||||
|
||||
class G4DNARuddIonisationExtendedModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4DNARuddIonisationExtendedModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "DNARuddIonisationExtendedModel");
|
||||
|
||||
virtual ~G4DNARuddIonisationExtendedModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume( const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
|
||||
private:
|
||||
|
||||
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
|
||||
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
|
||||
// ZF 26-10-2010
|
||||
std::map<G4double,G4double> lowEnergyLimitForA, lowEnergyLimitOfModelForA, killBelowEnergyForA;
|
||||
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
|
||||
MapFile tableFile;
|
||||
|
||||
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
|
||||
MapData tableData;
|
||||
|
||||
// Final state
|
||||
|
||||
G4WaterIonisationStructure waterStructure;
|
||||
|
||||
G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition* particleDefinition,
|
||||
G4double incomingParticleEnergy,
|
||||
G4int shell);
|
||||
|
||||
void RandomizeEjectedElectronDirection(G4ParticleDefinition* particleDefinition,
|
||||
G4double incomingParticleEnergy,
|
||||
G4double outgoingParticleEnergy,
|
||||
G4double & cosTheta,
|
||||
G4double & phi, G4int shell);
|
||||
|
||||
G4double RejectionFunction(G4ParticleDefinition* particle,
|
||||
G4double k,
|
||||
G4double proposed_ws,
|
||||
G4int ionizationLevelIndex);
|
||||
|
||||
G4double ProposedSampledEnergy(G4ParticleDefinition* particle,
|
||||
G4double k,
|
||||
G4int ionizationLevelIndex);
|
||||
|
||||
G4double CorrectionFactor(G4ParticleDefinition* particleDefinition, G4double k, G4int shell);
|
||||
|
||||
G4double S_1s(G4double t,
|
||||
G4double energyTransferred,
|
||||
G4double slaterEffectiveChg,
|
||||
G4double shellNumber);
|
||||
|
||||
G4double S_2s(G4double t,
|
||||
G4double energyTransferred,
|
||||
G4double slaterEffectiveChg,
|
||||
G4double shellNumber);
|
||||
|
||||
|
||||
G4double S_2p(G4double t,
|
||||
G4double energyTransferred,
|
||||
G4double slaterEffectiveChg,
|
||||
G4double shellNumber);
|
||||
|
||||
G4double R(G4double t,
|
||||
G4double energyTransferred,
|
||||
G4double slaterEffectiveChg,
|
||||
G4double shellNumber) ;
|
||||
|
||||
G4double slaterEffectiveCharge[3];
|
||||
G4double sCoefficient[3];
|
||||
|
||||
// Partial cross section
|
||||
|
||||
G4double PartialCrossSection(const G4Track& track);
|
||||
|
||||
G4double Sum(G4double energy, const G4String& particle);
|
||||
|
||||
G4int RandomSelect(G4double energy,const G4String& particle );
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNARuddIonisationExtendedModel & operator=(const G4DNARuddIonisationExtendedModel &right);
|
||||
G4DNARuddIonisationExtendedModel(const G4DNARuddIonisationExtendedModel&);
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNARuddIonisationModel.hh,v 1.3 2009/06/26 09:42:32 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNARuddIonisationModel.hh,v 1.4 2010/01/07 18:10:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNARuddIonisationModel_h
|
||||
@@ -147,11 +147,6 @@ private:
|
||||
|
||||
G4int RandomSelect(G4double energy,const G4String& particle );
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNARuddIonisationModel & operator=(const G4DNARuddIonisationModel &right);
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4DNASancheExcitationModel.hh,v 1.3 2010/11/11 23:43:35 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// Created by Z. Francis
|
||||
|
||||
#ifndef G4DNASancheExcitationModel_h
|
||||
#define G4DNASancheExcitationModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include <deque>
|
||||
#include "G4Electron.hh"
|
||||
|
||||
class G4DNASancheExcitationModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4DNASancheExcitationModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "DNASancheExcitationModel");
|
||||
|
||||
virtual ~G4DNASancheExcitationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
// Cross section
|
||||
|
||||
G4double PartialCrossSection(G4double energy,G4int level);
|
||||
|
||||
inline void ExtendLowEnergyLimit (G4double /*threshold*/);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
|
||||
private:
|
||||
|
||||
G4double killBelowEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
G4int RandomSelect(G4double energy);
|
||||
G4int nLevels;
|
||||
G4double VibrationEnergy(G4int level);
|
||||
G4double Sum(G4double k);
|
||||
G4double LinInterpolate(G4double e1,
|
||||
G4double e2,
|
||||
G4double e,
|
||||
G4double xs1,
|
||||
G4double xs2);
|
||||
|
||||
//
|
||||
typedef std::map<double, std::map<double, double> > TriDimensionMap;
|
||||
TriDimensionMap map1;
|
||||
std::vector<double> tdummyVec;
|
||||
|
||||
//
|
||||
G4DNASancheExcitationModel & operator=(const G4DNASancheExcitationModel &right);
|
||||
G4DNASancheExcitationModel(const G4DNASancheExcitationModel&);
|
||||
|
||||
};
|
||||
|
||||
inline void G4DNASancheExcitationModel::ExtendLowEnergyLimit (G4double threshold)
|
||||
{
|
||||
lowEnergyLimit = threshold;
|
||||
if (lowEnergyLimit < 2*eV)
|
||||
G4Exception ("*** WARNING : the G4DNASancheExcitationModel class is not validated below 2 eV !","",JustWarning,"") ;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+13
-9
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAScreenedRutherfordElasticModel.hh,v 1.1 2009/01/12 14:26:03 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNAScreenedRutherfordElasticModel.hh,v 1.4 2010/11/11 22:32:22 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4DNAScreenedRutherfordElasticModel_h
|
||||
@@ -58,6 +58,9 @@ public:
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
inline void SetKillBelowThreshold (G4double threshold);
|
||||
G4double GetKillBelowThreshold () { return killBelowEnergy; }
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
@@ -66,8 +69,7 @@ private:
|
||||
|
||||
G4double killBelowEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double lowEnergyLimitOfModel;
|
||||
G4double intermediateEnergyLimit;
|
||||
G4double intermediateEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
@@ -92,11 +94,6 @@ private:
|
||||
|
||||
G4double ScreenedRutherfordRandomizeCosTheta(G4double k, G4double z);
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNAScreenedRutherfordElasticModel & operator=(const G4DNAScreenedRutherfordElasticModel &right);
|
||||
@@ -104,6 +101,13 @@ private:
|
||||
|
||||
};
|
||||
|
||||
inline void G4DNAScreenedRutherfordElasticModel::SetKillBelowThreshold (G4double threshold)
|
||||
{
|
||||
killBelowEnergy = threshold;
|
||||
if (threshold < 9*eV)
|
||||
G4Exception ("*** WARNING : the G4DNAScreenedRutherfordElasticModel class is not validated below 9 eV !","",JustWarning,"") ;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4DNAVibExcitation.hh,v 1.1 2010/09/08 13:46:45 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// Created by Z. Francis
|
||||
|
||||
#ifndef G4DNAVibExcitation_h
|
||||
#define G4DNAVibExcitation_h 1
|
||||
|
||||
#include "G4VEmProcess.hh"
|
||||
|
||||
// Available models
|
||||
#include "G4DNASancheExcitationModel.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4DNAVibExcitation : public G4VEmProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4DNAVibExcitation(const G4String& processName ="DNAVibrationalExcitation",
|
||||
G4ProcessType type = fElectromagnetic);
|
||||
|
||||
virtual ~G4DNAVibExcitation();
|
||||
|
||||
virtual G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
virtual void PrintInfo();
|
||||
|
||||
protected:
|
||||
|
||||
virtual void InitialiseProcess(const G4ParticleDefinition*);
|
||||
|
||||
private:
|
||||
|
||||
G4bool isInitialised;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -23,6 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4Generator2BN.hh,v 1.4 2010/10/14 14:00:29 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -62,9 +64,9 @@ class G4Generator2BN : public G4VBremAngularDistribution
|
||||
|
||||
public:
|
||||
|
||||
G4Generator2BN(const G4String& name);
|
||||
G4Generator2BN(const G4String& name = "");
|
||||
|
||||
~G4Generator2BN();
|
||||
virtual ~G4Generator2BN();
|
||||
|
||||
G4double PolarAngle(const G4double initial_energy,
|
||||
const G4double final_energy,
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4Generator2BS.hh,v 1.5 2010/10/14 14:00:29 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -38,13 +40,15 @@
|
||||
// Creation date: 2 June 2003
|
||||
//
|
||||
// Modifications:
|
||||
// 02 Jun 2003 First implementation acording with new design
|
||||
// 02 Jun 2003 First implementation acording with new design
|
||||
// 12 Oct 2010 V.Ivanchenko moved RejectionFunction inline
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Concrete class for Bremsstrahlung Angular Distribution Generation - 2BS Distribution
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
// Concrete class for Bremsstrahlung Angular Distribution Generation
|
||||
// 2BS Distribution
|
||||
//
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -56,14 +60,16 @@
|
||||
#include "globals.hh"
|
||||
#include "G4VBremAngularDistribution.hh"
|
||||
|
||||
class G4Pow;
|
||||
|
||||
class G4Generator2BS : public G4VBremAngularDistribution
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Generator2BS(const G4String& name);
|
||||
G4Generator2BS(const G4String& name="");
|
||||
|
||||
~G4Generator2BS();
|
||||
virtual ~G4Generator2BS();
|
||||
|
||||
G4double PolarAngle(const G4double initial_energy,
|
||||
const G4double final_energy,
|
||||
@@ -73,18 +79,28 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
G4double RejectionFunction(G4double value) const;
|
||||
inline G4double RejectionFunction(G4double value) const;
|
||||
|
||||
private:
|
||||
|
||||
G4double z;
|
||||
G4double rejection_argument1, rejection_argument2, rejection_argument3;
|
||||
G4double EnergyRatio;
|
||||
|
||||
G4Pow* g4pow;
|
||||
|
||||
// hide assignment operator
|
||||
G4Generator2BS & operator=(const G4Generator2BS &right);
|
||||
G4Generator2BS(const G4Generator2BS&);
|
||||
G4Generator2BS & operator=(const G4Generator2BS &right);
|
||||
G4Generator2BS(const G4Generator2BS&);
|
||||
|
||||
};
|
||||
|
||||
inline G4double G4Generator2BS::RejectionFunction(G4double value) const
|
||||
{
|
||||
G4double argument = (1+value)*(1+value);
|
||||
return (4+std::log(rejection_argument3+(z/argument)))*
|
||||
((4*EnergyRatio*value/argument)-rejection_argument1)+rejection_argument2;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4IonParametrisedLossModel.hh,v 1.8 2010/11/04 12:21:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// ===========================================================================
|
||||
// GEANT4 class header file
|
||||
@@ -135,7 +136,7 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
G4double); // Length of current step
|
||||
|
||||
// Function, which computes the mean energy transfer rate to delta rays
|
||||
G4double DeltaRayMeanEnergyTransferRate(
|
||||
inline G4double DeltaRayMeanEnergyTransferRate(
|
||||
const G4Material*, // Target Material
|
||||
const G4ParticleDefinition*, // Projectile
|
||||
G4double, // Kinetic energy of projectile
|
||||
@@ -182,7 +183,7 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
|
||||
// Function checking the applicability of physics tables to ion-material
|
||||
// combinations (Note: the energy range of tables is not checked)
|
||||
LossTableList::iterator IsApplicable(
|
||||
inline LossTableList::iterator IsApplicable(
|
||||
const G4ParticleDefinition*, // Projectile (ion)
|
||||
const G4Material*); // Target material
|
||||
|
||||
@@ -207,9 +208,11 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
G4bool); // Logarithmic scaling of energy
|
||||
|
||||
// Function for setting energy loss limit for stopping power integration
|
||||
void SetEnergyLossLimit(G4double ionEnergyLossLimit);
|
||||
inline void SetEnergyLossLimit(G4double ionEnergyLossLimit);
|
||||
|
||||
protected:
|
||||
|
||||
virtual
|
||||
G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
|
||||
G4double); // Kinetic energy of projectile
|
||||
|
||||
@@ -230,7 +233,7 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
const G4MaterialCutsCouple*); // Target material
|
||||
|
||||
// Function, which updates parameters concering particle properties
|
||||
void UpdateCache(
|
||||
inline void UpdateCache(
|
||||
const G4ParticleDefinition*); // Projectile (ion)
|
||||
|
||||
// Function, which builds range vs energy (and energy vs range) vectors
|
||||
@@ -286,13 +289,10 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
// ######################################################################
|
||||
|
||||
// Pointer to particle change object, which is used to set e.g. the
|
||||
// energy loss due to nuclear stopping
|
||||
// energy loss and secondary delta-electron
|
||||
// used indicating if model is initialized
|
||||
G4ParticleChangeForLoss* particleChangeLoss;
|
||||
|
||||
// Flag indicating if model is initialized (i.e. if
|
||||
// G4ParticleChangeForLoss was created)
|
||||
G4bool modelIsInitialised;
|
||||
|
||||
// ######################################################################
|
||||
// # Corrections and energy loss limit
|
||||
// #
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4IonParametrisedLossModel.icc,v 1.7 2010/11/04 12:21:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// ===========================================================================
|
||||
// GEANT4 class
|
||||
@@ -42,6 +43,7 @@
|
||||
// (tables are now built in initialisation phase),
|
||||
// Minor bug fix in ComputeDEDXPerVolume (AL)
|
||||
// 20. 11. 2009 - Added set-method for energy loss limit (AL)
|
||||
// 04. 11. 2010 - Moved virtual methods to the source (VI)
|
||||
//
|
||||
// Class description:
|
||||
// Model for computing the energy loss of ions by employing a
|
||||
@@ -54,7 +56,6 @@
|
||||
//
|
||||
// ===========================================================================
|
||||
|
||||
|
||||
inline G4double G4IonParametrisedLossModel::DeltaRayMeanEnergyTransferRate(
|
||||
const G4Material* material,
|
||||
const G4ParticleDefinition* particle,
|
||||
@@ -115,35 +116,6 @@ inline G4double G4IonParametrisedLossModel::DeltaRayMeanEnergyTransferRate(
|
||||
return meanRate;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
G4double G4IonParametrisedLossModel::MaxSecondaryEnergy(
|
||||
const G4ParticleDefinition* particle,
|
||||
G4double kineticEnergy) {
|
||||
|
||||
// ############## Maximum energy of secondaries ##########################
|
||||
// Function computes maximum energy of secondary electrons which are
|
||||
// released by an ion
|
||||
//
|
||||
// See Geant4 physics reference manual (version 9.1), section 9.1.1
|
||||
//
|
||||
// Ref.: W.M. Yao et al, Jour. of Phys. G 33 (2006) 1.
|
||||
// C.Caso et al. (Part. Data Group), Europ. Phys. Jour. C 3 1 (1998).
|
||||
// B. Rossi, High energy particles, New York, NY: Prentice-Hall (1952).
|
||||
//
|
||||
// (Implementation adapted from G4BraggIonModel)
|
||||
|
||||
if(particle != cacheParticle) UpdateCache(particle);
|
||||
|
||||
G4double tau = kineticEnergy/cacheMass;
|
||||
G4double tmax = 2.0 * electron_mass_c2 * tau * (tau + 2.) /
|
||||
(1. + 2.0 * (tau + 1.) * cacheElecMassRatio +
|
||||
cacheElecMassRatio * cacheElecMassRatio);
|
||||
|
||||
return tmax;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
void G4IonParametrisedLossModel::UpdateCache(
|
||||
const G4ParticleDefinition* particle) {
|
||||
@@ -155,35 +127,6 @@ void G4IonParametrisedLossModel::UpdateCache(
|
||||
cacheChargeSquare = q * q;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
G4double G4IonParametrisedLossModel::GetChargeSquareRatio(
|
||||
const G4ParticleDefinition* particle,
|
||||
const G4Material* material,
|
||||
G4double kineticEnergy) { // Kinetic energy
|
||||
|
||||
G4double chargeSquareRatio = corrections ->
|
||||
EffectiveChargeSquareRatio(particle,
|
||||
material,
|
||||
kineticEnergy);
|
||||
corrFactor = chargeSquareRatio *
|
||||
corrections -> EffectiveChargeCorrection(particle,
|
||||
material,
|
||||
kineticEnergy);
|
||||
return corrFactor;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
G4double G4IonParametrisedLossModel::GetParticleCharge(
|
||||
const G4ParticleDefinition* particle,
|
||||
const G4Material* material,
|
||||
G4double kineticEnergy) { // Kinetic energy
|
||||
|
||||
return corrections -> GetParticleCharge(particle, material, kineticEnergy);
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
LossTableList::iterator G4IonParametrisedLossModel::IsApplicable(
|
||||
const G4ParticleDefinition* particle, // Projectile (ion)
|
||||
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4LivermoreGammaConversionModelRC.hh,v 1.1 2010/11/10 17:12:21 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4LivermoreGammaConversionModelRC_h
|
||||
#define G4LivermoreGammaConversionModelRC_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4CrossSectionHandler.hh"
|
||||
#include "G4ForceCondition.hh"
|
||||
#include "G4CompositeEMDataSet.hh"
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
class G4LivermoreGammaConversionModelRC : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LivermoreGammaConversionModelRC(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "LivermoreConversion");
|
||||
|
||||
virtual ~G4LivermoreGammaConversionModelRC();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
private:
|
||||
|
||||
const G4double smallEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
G4double ScreenFunction1(G4double screenVariable);
|
||||
G4double ScreenFunction2(G4double screenVariable);
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
|
||||
G4LivermoreGammaConversionModelRC & operator=(const G4LivermoreGammaConversionModelRC &right);
|
||||
G4LivermoreGammaConversionModelRC(const G4LivermoreGammaConversionModelRC&);
|
||||
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4LivermoreNuclearGammaConversionModel.hh,v 1.1 2010/11/10 17:09:16 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4LivermoreNuclearGammaConversionModel_h
|
||||
#define G4LivermoreNuclearGammaConversionModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4CrossSectionHandler.hh"
|
||||
#include "G4ForceCondition.hh"
|
||||
#include "G4CompositeEMDataSet.hh"
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
class G4LivermoreNuclearGammaConversionModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LivermoreNuclearGammaConversionModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "LivermoreNuclearGammaConversion");
|
||||
|
||||
virtual ~G4LivermoreNuclearGammaConversionModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
private:
|
||||
|
||||
const G4double smallEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
G4double ScreenFunction1(G4double screenVariable);
|
||||
G4double ScreenFunction2(G4double screenVariable);
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
|
||||
G4LivermoreNuclearGammaConversionModel & operator=(const G4LivermoreNuclearGammaConversionModel &right);
|
||||
G4LivermoreNuclearGammaConversionModel(const G4LivermoreNuclearGammaConversionModel&);
|
||||
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+8
-14
@@ -23,9 +23,13 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LivermorePhotoElectricModel.hh,v 1.3 2009/04/17 10:29:20 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4LivermorePhotoElectricModel.hh,v 1.4 2010/03/15 09:02:29 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// 15-Mar-2010 L. Pandola, removed methods to set explicitely fluorescence cuts.
|
||||
// Main cuts from G4ProductionCutsTable are always used
|
||||
//
|
||||
|
||||
|
||||
#ifndef G4LivermorePhotoElectricModel_h
|
||||
#define G4LivermorePhotoElectricModel_h 1
|
||||
@@ -75,10 +79,6 @@ public:
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetCutForLowEnSecPhotons(G4double);
|
||||
|
||||
void SetCutForLowEnSecElectrons(G4double);
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
void SetAngularGenerator(G4VPhotoElectricAngularDistribution* distribution);
|
||||
@@ -88,11 +88,8 @@ public:
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
/*
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
*/
|
||||
|
||||
|
||||
private:
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
@@ -106,9 +103,6 @@ private:
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VCrossSectionHandler* shellCrossSectionHandler;
|
||||
|
||||
G4double cutForLowEnergySecondaryPhotons;
|
||||
G4double cutForLowEnergySecondaryElectrons;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
|
||||
G4VPhotoElectricAngularDistribution* ElectronAngularGenerator;
|
||||
|
||||
+10
-10
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LivermorePolarizedPhotoElectricModel.hh,v 1.1 2009/10/30 14:52:05 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4LivermorePolarizedPhotoElectricModel.hh,v 1.2 2010/11/23 16:42:15 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4LivermorePolarizedPhotoElectricModel_h
|
||||
@@ -43,7 +43,7 @@
|
||||
#include "G4AtomicShell.hh"
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
#include "G4ForceCondition.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
class G4LivermorePolarizedPhotoElectricModel : public G4VEmModel
|
||||
{
|
||||
@@ -72,10 +72,9 @@ public:
|
||||
G4double maxEnergy);
|
||||
|
||||
|
||||
void SetCutForLowEnSecPhotons(G4double);
|
||||
|
||||
void SetCutForLowEnSecElectrons(G4double);
|
||||
|
||||
// void SetCutForLowEnSecPhotons(G4double);
|
||||
// void SetCutForLowEnSecElectrons(G4double);
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
|
||||
@@ -84,9 +83,10 @@ protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
//G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
//G4double previousStepSize,
|
||||
// G4ForceCondition* condition);
|
||||
|
||||
private:
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
|
||||
+14
-10
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4OrlicLCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4OrlicLiCrossSection.hh,v 1.2 2009/06/11 15:46:18 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Haifa Ben Abdelouahed
|
||||
//
|
||||
@@ -33,6 +33,8 @@
|
||||
// -----------
|
||||
// 23 Apr 2008 H. Ben Abdelouahed 1st implementation
|
||||
// 28 Apr 2008 MGP Major revision according to a design iteration
|
||||
// 21 Apr 2009 ALF Some correction for compatibility to G4VShellCrossSection
|
||||
// and changed name to G4OrlicLiCrossSection
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -43,20 +45,20 @@
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4ORLICLCROSSSECTION_HH
|
||||
#define G4ORLICLCROSSSECTION_HH 1
|
||||
#ifndef G4ORLICLICROSSSECTION_HH
|
||||
#define G4ORLICLICROSSSECTION_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4AtomicTransitionManager.hh"
|
||||
|
||||
|
||||
class G4OrlicLCrossSection
|
||||
class G4OrlicLiCrossSection
|
||||
|
||||
{
|
||||
public:
|
||||
|
||||
G4OrlicLCrossSection();
|
||||
G4OrlicLiCrossSection();
|
||||
|
||||
virtual ~G4OrlicLCrossSection();
|
||||
virtual ~G4OrlicLiCrossSection();
|
||||
|
||||
|
||||
//according to I.ORLIC, C.H.SOW and S.M.TANG,International Journal of PIXE.Vol.4(1997) 217-230
|
||||
@@ -70,8 +72,10 @@ public:
|
||||
private:
|
||||
|
||||
|
||||
G4OrlicLCrossSection(const G4OrlicLCrossSection&);
|
||||
G4OrlicLCrossSection & operator = (const G4OrlicLCrossSection &right);
|
||||
G4OrlicLiCrossSection(const G4OrlicLiCrossSection&);
|
||||
G4OrlicLiCrossSection & operator = (const G4OrlicLiCrossSection &right);
|
||||
|
||||
G4AtomicTransitionManager* transitionManager;
|
||||
|
||||
};
|
||||
|
||||
@@ -24,13 +24,29 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 21 Apr 2008 H. Abdelohauwed - 1st implementation
|
||||
// 29 Apr 2009 ALF Major Design Revision
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p ionisation, K shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4PAULKCROSSSECTION_HH
|
||||
#define G4PAULKCROSSSECTION_HH 1
|
||||
|
||||
//#include "G4VDataSetAlgorithm.hh"
|
||||
#include "globals.hh"
|
||||
#include <map>
|
||||
|
||||
class G4VDataSetAlgorithm;
|
||||
class G4VEMDataSet;
|
||||
|
||||
class G4PaulKCrossSection
|
||||
|
||||
@@ -41,18 +57,22 @@ public:
|
||||
|
||||
virtual ~G4PaulKCrossSection();
|
||||
|
||||
G4double CalculateKCrossSection(G4int zTarget,G4int zIncident, G4double energyIncident);
|
||||
G4double CalculateKCrossSection(G4int zTarget,G4double massIncident, G4double energyIncident);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
G4PaulKCrossSection(const G4PaulKCrossSection&);
|
||||
G4PaulKCrossSection & operator = (const G4PaulKCrossSection &right);
|
||||
|
||||
G4VDataSetAlgorithm* interpolation;
|
||||
|
||||
std::map< G4int , G4VEMDataSet* > protonDataSetMap;
|
||||
|
||||
std::map< G4int , G4VEMDataSet* > alphaDataSetMap;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4Penelope08ComptonModel.hh,v 1.2 2010/03/19 11:33:24 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 15 Feb 2010 L. Pandola 1st implementation.
|
||||
// 18 Mar 2010 L. Pandola Removed GetAtomsPerMolecule(), now demanded
|
||||
// to G4PenelopeOscillatorManager
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//*
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Compton Scattering
|
||||
// with Penelope Model, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08COMPTONMODEL_HH
|
||||
#define G4PENELOPE08COMPTONMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4AtomicDeexcitation.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
class G4PenelopeOscillatorManager;
|
||||
class G4PenelopeOscillator;
|
||||
|
||||
class G4Penelope08ComptonModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Penelope08ComptonModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenCompton");
|
||||
|
||||
virtual ~G4Penelope08ComptonModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy = 0.0,
|
||||
G4double maxEnergy = DBL_MAX);
|
||||
|
||||
//This is a dummy method. Never inkoved by the tracking, it just issues
|
||||
//a warning if one tries to get Cross Sections per Atom via the
|
||||
//G4EmCalculator.
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
private:
|
||||
//Differential cross section which is numerically integrated
|
||||
G4double DifferentialCrossSection (G4double cdt,G4double energy,
|
||||
G4PenelopeOscillator* osc);
|
||||
|
||||
G4double OscillatorTotalCrossSection(G4double energy,
|
||||
G4PenelopeOscillator* osc);
|
||||
|
||||
G4double KleinNishinaCrossSection(G4double energy,const G4Material*);
|
||||
|
||||
G4Penelope08ComptonModel & operator=(const G4Penelope08ComptonModel &right);
|
||||
G4Penelope08ComptonModel(const G4Penelope08ComptonModel&);
|
||||
|
||||
//Intrinsic energy limits of the model:
|
||||
//cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
G4bool isInitialised;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
|
||||
G4PenelopeOscillatorManager* oscManager;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4Penelope08GammaConversionModel.hh,v 1.1 2010/03/17 14:19:04 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 13 Jan 2010 L. Pandola First implementation
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Gamma Conversion
|
||||
// with Penelope Model, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08GAMMACONVERSIONMODEL_HH
|
||||
#define G4PENELOPE08GAMMACONVERSIONMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
class G4PhysicsFreeVector;
|
||||
|
||||
class G4Penelope08GammaConversionModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Penelope08GammaConversionModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenConversion");
|
||||
|
||||
virtual ~G4Penelope08GammaConversionModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
private:
|
||||
G4Penelope08GammaConversionModel & operator=(const
|
||||
G4Penelope08GammaConversionModel &right);
|
||||
G4Penelope08GammaConversionModel(const G4Penelope08GammaConversionModel&);
|
||||
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
//Use a quicker sampling algorithm if E < smallEnergy
|
||||
G4double fSmallEnergy;
|
||||
|
||||
std::map<const G4int,G4PhysicsFreeVector*> *logAtomicCrossSection;
|
||||
void ReadDataFile(const G4int Z);
|
||||
|
||||
void InitializeScreeningRadii();
|
||||
G4double fAtomicScreeningRadius[99];
|
||||
|
||||
void InitializeScreeningFunctions(const G4Material*);
|
||||
//Effective (scalar) properties attached to materials:
|
||||
// effective charge
|
||||
std::map<const G4Material*,G4double> *fEffectiveCharge;
|
||||
// 2/Rs (Rs = screening radius), BCB array in Penelope
|
||||
std::map<const G4Material*,G4double> *fMaterialInvScreeningRadius;
|
||||
// Parameters of screening functions
|
||||
std::map<const G4Material*,std::pair<G4double,G4double> > *fScreeningFunction;
|
||||
|
||||
std::pair<G4double,G4double> GetScreeningFunctions(G4double);
|
||||
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4Penelope08IonisationModel.hh,v 1.1 2010/07/28 07:12:13 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 30 Mar 2010 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, e+ and e- ionisation
|
||||
// with Penelope Model, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08IONISATIONMODEL_HH
|
||||
#define G4PENELOPE08IONISATIONMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForLoss.hh"
|
||||
#include "G4AtomicDeexcitation.hh"
|
||||
|
||||
class G4PhysicsFreeVector;
|
||||
class G4PhysicsLogVector;
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
class G4PenelopeOscillatorManager;
|
||||
class G4PenelopeOscillator;
|
||||
class G4PenelopeCrossSection;
|
||||
|
||||
class G4Penelope08IonisationModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Penelope08IonisationModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenIoni");
|
||||
|
||||
virtual ~G4Penelope08IonisationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
//*This is a dummy method. Never inkoved by the tracking, it just issues
|
||||
//*a warning if one tries to get Cross Sections per Atom via the
|
||||
//*G4EmCalculator.
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* theParticle,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy,
|
||||
G4double maxEnergy = DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
virtual G4double ComputeDEDXPerVolume(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy);
|
||||
|
||||
// Min cut in kinetic energy allowed by the model
|
||||
virtual G4double MinEnergyCut(const G4ParticleDefinition*,
|
||||
const G4MaterialCutsCouple*);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
G4double GetDensityCorrection(const G4Material*,G4double energy);
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForLoss* fParticleChange;
|
||||
|
||||
private:
|
||||
void ClearTables();
|
||||
|
||||
G4Penelope08IonisationModel & operator=(const G4Penelope08IonisationModel &right);
|
||||
G4Penelope08IonisationModel(const G4Penelope08IonisationModel&);
|
||||
|
||||
G4PenelopeCrossSection* GetCrossSectionTableForCouple(const G4ParticleDefinition*,
|
||||
const G4Material*,G4double cut);
|
||||
|
||||
void BuildXSTable(const G4Material*,G4double cut,
|
||||
const G4ParticleDefinition*);
|
||||
|
||||
|
||||
void BuildDeltaTable(const G4Material*);
|
||||
|
||||
G4DataVector* ComputeShellCrossSectionsElectron(G4PenelopeOscillator* ,
|
||||
G4double energy,G4double cut,
|
||||
G4double delta);
|
||||
|
||||
G4DataVector* ComputeShellCrossSectionsPositron(G4PenelopeOscillator* ,
|
||||
G4double energy,G4double cut,
|
||||
G4double delta);
|
||||
|
||||
void SampleFinalStateElectron(const G4Material*,G4double cutEnergy,G4double kineticEnergy);
|
||||
void SampleFinalStatePositron(const G4Material*,G4double cutEnergy,G4double kineticEnergy);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
G4bool isInitialised;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
|
||||
G4double kineticEnergy1;
|
||||
G4double cosThetaPrimary;
|
||||
G4double energySecondary;
|
||||
G4double cosThetaSecondary;
|
||||
G4int targetOscillator;
|
||||
|
||||
G4PenelopeOscillatorManager* oscManager;
|
||||
|
||||
//G4PenelopeCrossSection takes care of the logs
|
||||
std::map< std::pair<const G4Material*,G4double>, G4PenelopeCrossSection*> *XSTableElectron;
|
||||
std::map< std::pair<const G4Material*,G4double>, G4PenelopeCrossSection*> *XSTablePositron;
|
||||
|
||||
//delta vs. log(energy)
|
||||
std::map<const G4Material*,G4PhysicsFreeVector*> *theDeltaTable;
|
||||
G4PhysicsLogVector* energyGrid;
|
||||
|
||||
size_t nBins;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4Penelope08PhotoElectricModel.hh,v 1.1 2010/03/17 14:19:04 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 08 Jan 2010 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Photo-electric effect
|
||||
// with Penelope Model, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08PHOTOELECTRICMODEL_HH
|
||||
#define G4PENELOPE08PHOTOELECTRICMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4AtomicDeexcitation.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
|
||||
class G4Penelope08PhotoElectricModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Penelope08PhotoElectricModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenPhotoElec");
|
||||
|
||||
virtual ~G4Penelope08PhotoElectricModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
//testing purposes
|
||||
size_t GetNumberOfShellXS(G4int);
|
||||
G4double GetShellCrossSection(G4int Z,size_t shellID,G4double energy);
|
||||
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
private:
|
||||
G4Penelope08PhotoElectricModel & operator=(const G4Penelope08PhotoElectricModel &right);
|
||||
G4Penelope08PhotoElectricModel(const G4Penelope08PhotoElectricModel&);
|
||||
|
||||
G4double SampleElectronDirection(G4double energy);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
|
||||
void ReadDataFile(G4int Z);
|
||||
|
||||
//For each Z, the PhysicsTable contains nShell+1 physics vectors
|
||||
//with log(E) vs. log(XS)
|
||||
//Element [0] of the table is the total XS, element [iS] is the
|
||||
//partial cross section for shell iS-1
|
||||
std::map<const G4int,G4PhysicsTable*> *logAtomicShellXS;
|
||||
|
||||
size_t SelectRandomShell(G4int Z,G4double energy);
|
||||
G4String WriteTargetShell(size_t shellID);
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4Penelope08RayleighModel.hh,v 1.1 2010/03/17 14:19:04 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 03 Dec 2009 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Rayleigh Scattering
|
||||
// with the model from Penelope, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08RAYLEIGHMODEL_HH
|
||||
#define G4PENELOPE08RAYLEIGHMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
class G4PhysicsFreeVector;
|
||||
class G4PenelopeSamplingData;
|
||||
|
||||
class G4Penelope08RayleighModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
G4Penelope08RayleighModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenRayleigh");
|
||||
|
||||
virtual ~G4Penelope08RayleighModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
//Testing purposes
|
||||
void DumpFormFactorTable(const G4Material*);
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
private:
|
||||
G4Penelope08RayleighModel& operator=(const G4Penelope08RayleighModel &right);
|
||||
G4Penelope08RayleighModel(const G4Penelope08RayleighModel&);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by
|
||||
//the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
//Internal tables and manager methods
|
||||
std::map<const G4int,G4PhysicsFreeVector*> *logAtomicCrossSection;
|
||||
std::map<const G4int,G4PhysicsFreeVector*> *atomicFormFactor;
|
||||
|
||||
|
||||
G4DataVector logQSquareGrid; //log(Q^2) grid for interpolation
|
||||
std::map<const G4Material*,G4PhysicsFreeVector*> *logFormFactorTable; //log(Q^2) vs. log(F^2)
|
||||
|
||||
G4DataVector logEnergyGridPMax; //energy grid for PMac (and originally for the x-section)
|
||||
std::map<const G4Material*,G4PhysicsFreeVector*> *pMaxTable; //E vs. Pmax
|
||||
|
||||
std::map<const G4Material*,G4PenelopeSamplingData*> *samplingTable;
|
||||
|
||||
//Helper methods
|
||||
void ReadDataFile(G4int);
|
||||
void ClearTables();
|
||||
void BuildFormFactorTable(const G4Material*);
|
||||
void GetPMaxTable(const G4Material*);
|
||||
|
||||
G4double GetFSquared(const G4Material*,const G4double);
|
||||
void InitializeSamplingAlgorithm(const G4Material*);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4PenelopeCrossSection.hh,v 1.1 2010/07/26 09:56:42 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 18 Mar 2010 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// This class is a container for cross sections and transport momenta
|
||||
// calculated by Penelope models (ionisation, bremsstrahlung). It stores
|
||||
// PhysicsTables/PhysicsVectors of
|
||||
// a) the "hard quantities" (above the threshold), 0-th order (cross section)
|
||||
// 1-st order (= stopping XS), 2-nd order (= straggling XS)
|
||||
// b) the "soft quantities" (below threshold), 0-th order (cross section)
|
||||
// 1-st order (= stopping XS), 2-nd order (= straggling XS)
|
||||
// c) total hard cross sections for individual oscillators
|
||||
// vs. energy.
|
||||
//
|
||||
// The interface *always* uses energy and cross sections, while internally
|
||||
// log(energy) and log(XS) are used.
|
||||
//
|
||||
// One instance per each cut-material couple should be created by the
|
||||
// calling class.
|
||||
//
|
||||
// Public method to retrieve hard cross section, soft stopping power,
|
||||
// total cross section and hard shell cross sections.
|
||||
//
|
||||
// The method NormalizeShellCrossSections() normalizes the
|
||||
// shell cross sections by retrieving the total hard cross section.
|
||||
// Used for sampling.
|
||||
//
|
||||
// Notice: all quantities stored here are *per molecule*
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPECROSSSECTION_HH
|
||||
#define G4PENELOPECROSSSECTION_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
class G4PhysicsTable;
|
||||
class G4DataVector;
|
||||
|
||||
class G4PenelopeCrossSection
|
||||
{
|
||||
|
||||
public:
|
||||
//constructor: one has to give the number of points in each PhysicsVector
|
||||
//(= dimension of the energy grid) and the number of shells (0 is the
|
||||
//default).
|
||||
G4PenelopeCrossSection(size_t nOfEnergyPoints,size_t nOfShells=0);
|
||||
//
|
||||
~G4PenelopeCrossSection();
|
||||
|
||||
G4double GetTotalCrossSection(G4double energy);
|
||||
G4double GetHardCrossSection(G4double energy);
|
||||
G4double GetSoftStoppingPower(G4double energy);
|
||||
G4double GetShellCrossSection(size_t shellID,G4double energy);
|
||||
|
||||
size_t GetNumberOfShells(){return numberOfShells;};
|
||||
|
||||
void AddCrossSectionPoint(size_t binNumber,
|
||||
G4double energy,G4double XH0, G4double XH1,
|
||||
G4double XH2,
|
||||
G4double XS0, G4double XS1, G4double XS2);
|
||||
|
||||
void AddShellCrossSectionPoint(size_t binNumber,
|
||||
size_t shellID,G4double energy,G4double xs);
|
||||
|
||||
void NormalizeShellCrossSections();
|
||||
|
||||
private:
|
||||
G4PenelopeCrossSection & operator=(const G4PenelopeCrossSection &right);
|
||||
G4PenelopeCrossSection(const G4PenelopeCrossSection&);
|
||||
|
||||
G4bool isNormalized;
|
||||
|
||||
size_t numberOfEnergyPoints;
|
||||
size_t numberOfShells;
|
||||
|
||||
//all tables are log. XS vs. log E
|
||||
|
||||
//XS0, XS1, XS2 in Penelope nomenclature
|
||||
G4PhysicsTable* softCrossSections;
|
||||
|
||||
//XH0, XH1, XH2 in Penelope nomenclature
|
||||
G4PhysicsTable* hardCrossSections;
|
||||
|
||||
//XS for individual shells
|
||||
G4PhysicsTable* shellCrossSections;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeIonisationModel.hh,v 1.3 2009/10/21 14:56:47 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4PenelopeIonisationModel.hh,v 1.5 2010/04/15 10:02:10 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -35,6 +35,10 @@
|
||||
// 21 Oct 2009 L. Pandola Remove un-necessary methods and variables to handle
|
||||
// AtomicDeexcitationFlag - now demanded to G4VEmModel
|
||||
// Add ActivateAuger() method
|
||||
// 29 Mar 2010 L. Pandola Added a dummy ComputeCrossSectioPerAtom() method issueing a
|
||||
// warning if users try to access atomic cross sections via
|
||||
// G4EmCalculator
|
||||
// 15 Apr 2010 L. Pandola Implemented model's own version of MinEnergyCut()
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -72,6 +76,16 @@ public:
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
//*This is a dummy method. Never inkoved by the tracking, it just issues
|
||||
//*a warning if one tries to get Cross Sections per Atom via the
|
||||
//*G4EmCalculator.
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* theParticle,
|
||||
G4double kineticEnergy,
|
||||
@@ -89,6 +103,10 @@ public:
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy);
|
||||
|
||||
// Min cut in kinetic energy allowed by the model
|
||||
virtual G4double MinEnergyCut(const G4ParticleDefinition*,
|
||||
const G4MaterialCutsCouple*);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
|
||||
@@ -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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 18 Dec 2008 L. Pandola First implementation
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Class designed to contain data of atomic oscillators that are used by
|
||||
// several Penelope models. Objects of G4PenelopeOscillators are managed
|
||||
// by a dedicated G4PenelopeOscillatorManager.
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPEOSCILLATOR_HH
|
||||
#define G4PENELOPEOSCILLATOR_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
class G4PenelopeOscillator
|
||||
{
|
||||
|
||||
public:
|
||||
G4PenelopeOscillator();
|
||||
G4PenelopeOscillator(const G4PenelopeOscillator&);
|
||||
|
||||
~G4PenelopeOscillator(){;};
|
||||
|
||||
//I need to overload the following operators: > < == =
|
||||
const G4PenelopeOscillator& operator=(const G4PenelopeOscillator&);
|
||||
int operator==(const G4PenelopeOscillator&) const;
|
||||
int operator>(const G4PenelopeOscillator&) const;
|
||||
int operator<(const G4PenelopeOscillator&) const;
|
||||
|
||||
//Setters and getters
|
||||
G4double GetHartreeFactor() {return hartreeFactor;};
|
||||
void SetHartreeFactor(G4double hf) {hartreeFactor = hf;};
|
||||
//
|
||||
G4double GetIonisationEnergy() {return ionisationEnergy;};
|
||||
void SetIonisationEnergy(G4double ie) {ionisationEnergy = ie;};
|
||||
//
|
||||
G4double GetResonanceEnergy() const {return resonanceEnergy;};
|
||||
void SetResonanceEnergy(G4double re) {resonanceEnergy = re;};
|
||||
//
|
||||
G4double GetOscillatorStrength() {return oscillatorStrength;};
|
||||
void SetOscillatorStrength(G4double ostr) {oscillatorStrength=ostr;};
|
||||
//
|
||||
G4int GetShellFlag() {return shellFlag;};
|
||||
void SetShellFlag(G4int theflag) {shellFlag=theflag;};
|
||||
//
|
||||
G4double GetParentZ() {return parentZ;};
|
||||
void SetParentZ(G4double parZ) {parentZ = parZ;};
|
||||
//
|
||||
G4int GetParentShellID() {return parentShellID;};
|
||||
void SetParentShellID(G4int psID) {parentShellID = psID;};
|
||||
//
|
||||
G4double GetCutoffRecoilResonantEnergy(){return cutoffRecoilResonantEnergy;};
|
||||
void SetCutoffRecoilResonantEnergy(G4double ene){cutoffRecoilResonantEnergy = ene;};
|
||||
|
||||
private:
|
||||
G4double hartreeFactor;
|
||||
G4double ionisationEnergy;
|
||||
G4double resonanceEnergy;
|
||||
G4double oscillatorStrength;
|
||||
G4int shellFlag;
|
||||
G4double parentZ;
|
||||
G4int parentShellID; //necessary for interface to AtomicDeexcitationManager
|
||||
G4double cutoffRecoilResonantEnergy;
|
||||
};
|
||||
|
||||
struct G4PenelopeOscillatorResEnergyComparator
|
||||
{
|
||||
public:
|
||||
int operator()(const G4PenelopeOscillator& left,
|
||||
const G4PenelopeOscillator& right)
|
||||
{return ((left.GetResonanceEnergy() < right.GetResonanceEnergy()) ? 1 : 0);};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Authors: Luciano Pandola (luciano.pandola at lngs.infn.it)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
//
|
||||
// 03 Dec 2009 First implementation, Luciano Pandola
|
||||
// 16 Feb 2010 Added methods to calculate and store also A and Z
|
||||
// for molecules. Luciano Pandola
|
||||
// 16 Mar 2010 Added methods to calculate and store mean exc energy
|
||||
// and plasma energy (used for Ionisation). L Pandola
|
||||
// 18 Mar 2010 Added method to retrieve number of atoms per
|
||||
// molecule. L. Pandola
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
//! Class description:
|
||||
//! Fills and manages G4PenelopeOscillator objects and takes care of
|
||||
//! building and managing the G4PenelopeOscillatorTables for the materials
|
||||
//! in the geometry. G4PenelopeOscillatorManager is a singleton.
|
||||
//! This is compliant with Penelope2008, so different tables (with different
|
||||
//! grouping factors) are created for Ionisation and Compton processes.
|
||||
//
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PenelopeOscillatorManager_h
|
||||
#define G4PenelopeOscillatorManager_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4PenelopeOscillator.hh"
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
class G4Material;
|
||||
|
||||
typedef std::vector<G4PenelopeOscillator*> G4PenelopeOscillatorTable ;
|
||||
|
||||
// This class is a singleton
|
||||
class G4PenelopeOscillatorManager {
|
||||
|
||||
public:
|
||||
|
||||
// The only way to get an instance of this class is to call the
|
||||
// function GetOscillatorManager()
|
||||
static G4PenelopeOscillatorManager* GetOscillatorManager();
|
||||
|
||||
//Clear() is invoked by Initialise() of the processes, if required
|
||||
void Clear();
|
||||
void Dump(const G4Material*);
|
||||
|
||||
//For ionisation
|
||||
G4PenelopeOscillatorTable* GetOscillatorTableIonisation(const G4Material*);
|
||||
G4PenelopeOscillator* GetOscillatorIonisation(const G4Material*,G4int);
|
||||
|
||||
//For Compton
|
||||
G4PenelopeOscillatorTable* GetOscillatorTableCompton(const G4Material*);
|
||||
G4PenelopeOscillator* GetOscillatorCompton(const G4Material*,G4int);
|
||||
|
||||
void SetVerbosityLevel(G4int vl){verbosityLevel = vl;};
|
||||
G4int GetVerbosityLevel(){return verbosityLevel;};
|
||||
|
||||
//These are cumulative for the molecule
|
||||
G4double GetTotalZ(const G4Material*);
|
||||
G4double GetTotalA(const G4Material*);
|
||||
G4double GetMeanExcitationEnergy(const G4Material*);
|
||||
G4double GetPlasmaEnergySquared(const G4Material*);
|
||||
G4double GetAtomsPerMolecule(const G4Material*);
|
||||
|
||||
protected:
|
||||
G4PenelopeOscillatorManager();
|
||||
~G4PenelopeOscillatorManager();
|
||||
|
||||
private:
|
||||
// Hide copy constructor and assignment operator
|
||||
G4PenelopeOscillatorManager& operator=(const
|
||||
G4PenelopeOscillatorManager& right);
|
||||
G4PenelopeOscillatorManager(const G4PenelopeOscillatorManager&);
|
||||
|
||||
static G4PenelopeOscillatorManager* instance;
|
||||
|
||||
//In Penelope2008, the Ionisation and Compton oscillator tables are
|
||||
//slightly different!
|
||||
std::map<const G4Material*,G4PenelopeOscillatorTable*>
|
||||
*oscillatorStoreIonisation;
|
||||
|
||||
std::map<const G4Material*,G4PenelopeOscillatorTable*>
|
||||
*oscillatorStoreCompton;
|
||||
|
||||
std::map<const G4Material*,G4double> *atomicNumber;
|
||||
std::map<const G4Material*,G4double> *atomicMass;
|
||||
|
||||
std::map<const G4Material*,G4double> *excitationEnergy;
|
||||
std::map<const G4Material*,G4double> *plasmaSquared;
|
||||
|
||||
std::map<const G4Material*,G4double> *atomsPerMolecule;
|
||||
|
||||
//create both tables simultaneously
|
||||
void CheckForTablesCreated();
|
||||
|
||||
void ReadElementData();
|
||||
G4double elementData[5][2000];
|
||||
G4bool fReadElementData;
|
||||
|
||||
void BuildOscillatorTable(const G4Material*);
|
||||
|
||||
G4int verbosityLevel;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeRayleighModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4PenelopeRayleighModel.hh,v 1.3 2010/04/15 10:02:25 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -32,12 +32,15 @@
|
||||
// -----------
|
||||
// 13 Oct 2008 L. Pandola 1st implementation. Migration from EM process
|
||||
// to EM model
|
||||
// 18 Dec 2009 L. Pandola Added a dummy ComputeCrossSectioPerAtom() method issueing a
|
||||
// warning if users try to access atomic cross sections via
|
||||
// G4EmCalculator
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Rayleigh Scattering
|
||||
// with Penelope Model
|
||||
// with Penelope v2001 Model
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPERAYLEIGHMODEL_HH
|
||||
@@ -70,6 +73,16 @@ public:
|
||||
G4double cutEnergy = 0.0,
|
||||
G4double maxEnergy = DBL_MAX);
|
||||
|
||||
//*This is a dummy method. Never inkoved by the tracking, it just issues
|
||||
//*a warning if one tries to get Cross Sections per Atom via the
|
||||
//*G4EmCalculator.
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4PenelopeSamplingData.hh,v 1.1 2010/03/17 14:19:04 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 09 Dec 2009 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// This is a container of data that are used for sampling algorithm
|
||||
// of Penelope08 Rayleigh scattering
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPESAMPLINGDATA_HH
|
||||
#define G4PENELOPESAMPLINGDATA_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4DataVector.hh"
|
||||
//
|
||||
//This is a container of data that are used for sampling algoritm
|
||||
//
|
||||
class G4PenelopeSamplingData
|
||||
{
|
||||
|
||||
public:
|
||||
G4PenelopeSamplingData(G4int npoints=150);
|
||||
~G4PenelopeSamplingData();
|
||||
|
||||
void AddPoint(G4double x0,G4double pac0,G4double a0,G4double b0,size_t ITTL0,
|
||||
size_t ITTU0);
|
||||
size_t GetNumberOfStoredPoints();
|
||||
void Clear();
|
||||
void DumpTable();
|
||||
|
||||
G4double GetX(size_t index);
|
||||
G4double GetPAC(size_t index);
|
||||
G4double GetA(size_t index);
|
||||
G4double GetB(size_t index);
|
||||
|
||||
G4double SampleValue(G4double rndm);
|
||||
|
||||
private:
|
||||
G4PenelopeSamplingData & operator=(const G4PenelopeSamplingData &right);
|
||||
G4PenelopeSamplingData(const G4PenelopeSamplingData&);
|
||||
|
||||
//G4double xlow;
|
||||
//G4double xhigh;
|
||||
|
||||
G4DataVector* x; //grid points, in increasing order
|
||||
G4DataVector* pac; //value of the cumulative pdf at x_i
|
||||
G4DataVector* a; // rational inverse cumulative inverse distribution parameters
|
||||
G4DataVector* b;
|
||||
|
||||
std::vector<size_t> *ITTL; //largest j for which pac(j) < (i-1)/(np-1)
|
||||
std::vector<size_t> *ITTU; //smallest k for which pac(k) > i/(np-1)
|
||||
|
||||
G4int np; //number of grid points
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4AtomicTransitionManager.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Geant4 Header G4UAtomicDeexcitation
|
||||
//
|
||||
// Authors: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
//
|
||||
// Created 22 April 2010 from old G4AtomicDeexcitation class
|
||||
//
|
||||
// Modified:
|
||||
// ---------
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Implementation of atomic deexcitation
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4UAtomicDeexcitation_h
|
||||
#define G4UAtomicDeexcitation_h 1
|
||||
|
||||
#include "G4VAtomDeexcitation.hh"
|
||||
#include "G4AtomicShell.hh"
|
||||
#include "globals.hh"
|
||||
#include <vector>
|
||||
#include "G4DynamicParticle.hh"
|
||||
//#include "G4VhShellCrossSection.hh"
|
||||
#include "G4teoCrossSection.hh"
|
||||
#include "G4empCrossSection.hh"
|
||||
class G4AtomicTransitionManager;
|
||||
class G4VhShellCrossSection;
|
||||
//class G4teoCrossSection;
|
||||
//class G4empCrossSection;
|
||||
class G4UAtomicDeexcitation : public G4VAtomDeexcitation
|
||||
{
|
||||
public:
|
||||
|
||||
G4UAtomicDeexcitation();
|
||||
virtual ~G4UAtomicDeexcitation();
|
||||
|
||||
//=================================================================
|
||||
// methods that are requested to be implemented by the interface
|
||||
//=================================================================
|
||||
|
||||
// initialisation methods
|
||||
virtual void InitialiseForNewRun();
|
||||
virtual void InitialiseForExtraAtom(G4int Z);
|
||||
|
||||
|
||||
// Set threshold energy for fluorescence
|
||||
void SetCutForSecondaryPhotons(G4double cut);
|
||||
|
||||
// Set threshold energy for Auger electron production
|
||||
void SetCutForAugerElectrons(G4double cut);
|
||||
|
||||
|
||||
// Get atomic shell by shell index, used by discrete processes
|
||||
// (for example, photoelectric), when shell vacancy sampled by the model
|
||||
virtual
|
||||
const G4AtomicShell* GetAtomicShell(G4int Z,
|
||||
G4AtomicShellEnumerator shell);
|
||||
|
||||
// generation of deexcitation for given atom, shell vacancy and cuts
|
||||
virtual void GenerateParticles(std::vector<G4DynamicParticle*>* secVect,
|
||||
const G4AtomicShell*,
|
||||
G4int Z,
|
||||
G4double gammaCut,
|
||||
G4double eCut);
|
||||
|
||||
// access or compute PIXE cross section
|
||||
virtual
|
||||
G4double GetShellIonisationCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4int Z,
|
||||
G4AtomicShellEnumerator shell,
|
||||
G4double kinE);
|
||||
|
||||
// access or compute PIXE cross section
|
||||
virtual
|
||||
G4double ComputeShellIonisationCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4int Z,
|
||||
G4AtomicShellEnumerator shell,
|
||||
G4double kinE);
|
||||
|
||||
//=================================================================
|
||||
// concrete methods of the deextation class
|
||||
//=================================================================
|
||||
|
||||
private:
|
||||
|
||||
// Decides wether a radiative transition is possible and, if it is,
|
||||
// returns the identity of the starting shell for the transition
|
||||
G4int SelectTypeOfTransition(G4int Z, G4int shellId);
|
||||
|
||||
// Generates a particle from a radiative transition and returns it
|
||||
G4DynamicParticle* GenerateFluorescence(G4int Z, G4int shellId,
|
||||
G4int provShellId);
|
||||
|
||||
// Generates a particle from a non-radiative transition and returns it
|
||||
G4DynamicParticle* GenerateAuger(G4int Z, G4int shellId);
|
||||
|
||||
// copy constructor and hide assignment operator
|
||||
G4UAtomicDeexcitation(G4UAtomicDeexcitation &);
|
||||
G4UAtomicDeexcitation & operator=(const G4UAtomicDeexcitation &right);
|
||||
|
||||
const G4AtomicTransitionManager* transitionManager;
|
||||
|
||||
// Data member which stores the shells to be filled by
|
||||
// the radiative transition
|
||||
G4int newShellId;
|
||||
|
||||
G4double minGammaEnergy;
|
||||
G4double minElectronEnergy;
|
||||
// G4bool fAuger;
|
||||
|
||||
// Data member wich stores the id of the shell where is the vacancy
|
||||
// left from the Auger electron
|
||||
G4int augerVacancyId;
|
||||
|
||||
// Data member for the calculation of the proton and alpha ionisation XS
|
||||
|
||||
G4VhShellCrossSection* PIXEshellCS;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ class G4VIonDEDXScalingAlgorithm {
|
||||
|
||||
public:
|
||||
G4VIonDEDXScalingAlgorithm();
|
||||
~G4VIonDEDXScalingAlgorithm();
|
||||
virtual ~G4VIonDEDXScalingAlgorithm();
|
||||
|
||||
// Function for scaling the kinetic energy (no scaling by default).
|
||||
// Returns scaling factor for a given ion.
|
||||
|
||||
Regular → Executable
+11
-20
@@ -23,54 +23,45 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ecpssrCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
// Author: Haifa Ben Abdelouahed
|
||||
// Author: Alfonso Mantero
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 21 Apr 2008 H. Ben Abdelouahed 1st implementation
|
||||
// 21 Apr 2008 MGP Major revision according to a design iteration
|
||||
// 01 Sep 2009 Alf Created
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p ionisation, K shell
|
||||
// Low Energy Electromagnetic Physics, Cross section, p and alpha ionisation, L shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4ECPSSRCROSSSECTION_HH
|
||||
#define G4ECPSSRCROSSSECTION_HH 1
|
||||
#ifndef G4VECPSSRKMODEL_HH
|
||||
#define G4VECPSSRKMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
|
||||
class G4ecpssrCrossSection
|
||||
class G4VecpssrKModel
|
||||
|
||||
{
|
||||
public:
|
||||
|
||||
G4ecpssrCrossSection();
|
||||
G4VecpssrKModel();
|
||||
|
||||
virtual ~G4ecpssrCrossSection();
|
||||
virtual ~G4VecpssrKModel();
|
||||
|
||||
G4double CalculateCrossSection(G4int zTarget,G4int zIncident, G4double energyIncident);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double CalculateVelocity(G4int zTarget,G4int zIncident, G4double energyIncident);
|
||||
|
||||
G4double ExpIntFunction(G4int n,G4double x);//Exponential Integral Function
|
||||
|
||||
virtual G4double CalculateCrossSection(G4int zTarget,G4double massIncident, G4double energyIncident) = 0;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
G4ecpssrCrossSection(const G4ecpssrCrossSection&);
|
||||
G4ecpssrCrossSection & operator = (const G4ecpssrCrossSection &right);
|
||||
G4VecpssrKModel(const G4VecpssrKModel&);
|
||||
G4VecpssrKModel & operator = (const G4VecpssrKModel &right);
|
||||
|
||||
};
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4VecpssrLiModel.hh,v 1.4 2010/06/25 09:41:13 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Haifa Ben Abdelouahed
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 23 Apr 2008 H. Ben Abdelouahed 1st implementation
|
||||
// 28 Apr 2008 MGP Major revision according to a design iteration
|
||||
// 29 Apr 2009 ALF Updated Desing for Integration
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p and alpha ionisation, L shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4VECPSSRLIMODEL_HH
|
||||
#define G4VECPSSRLIMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
class G4VecpssrLiModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4VecpssrLiModel();
|
||||
|
||||
virtual ~G4VecpssrLiModel();
|
||||
|
||||
virtual G4double CalculateL1CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident) = 0;//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
virtual G4double CalculateL2CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident) = 0;//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
virtual G4double CalculateL3CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident) = 0;//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
G4VecpssrLiModel(const G4VecpssrLiModel&);
|
||||
G4VecpssrLiModel & operator = (const G4VecpssrLiModel &right);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Regular → Executable
+46
-42
@@ -23,64 +23,68 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4empCrossSection.hh,v 1.1 2009/06/17 16:39:55 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 21 Apr 2009 ALF 1st implementation
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4ModifiedTsai
|
||||
//
|
||||
// Author: Andreia Trindade (andreia@lip.pt)
|
||||
// Pedro Rodrigues (psilva@lip.pt)
|
||||
// Luis Peralta (luis@lip.pt)
|
||||
//
|
||||
// Creation date: 21 March 2003
|
||||
//
|
||||
// Modifications:
|
||||
// 21 Mar 2003 A. Trindade First implementation acording with new design
|
||||
// 24 Mar 2003 & Fix in Tsai generator in order to prevent theta generation above pi
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Concrete class for Bremsstrahlung Angular Distribution Generation - Tsai Model
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p ionisation, K shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4ModifiedTsai_h
|
||||
#define G4ModifiedTsai_h 1
|
||||
|
||||
#include "G4ios.hh"
|
||||
#ifndef G4EMPCROSSSECTION_HH
|
||||
#define G4EMPCROSSSECTION_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VBremAngularDistribution.hh"
|
||||
#include "G4VhShellCrossSection.hh"
|
||||
#include "G4PaulKCrossSection.hh"
|
||||
#include "G4OrlicLiCrossSection.hh"
|
||||
|
||||
class G4ModifiedTsai : public G4VBremAngularDistribution
|
||||
class G4empCrossSection : public G4VhShellCrossSection
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4ModifiedTsai(const G4String& name);
|
||||
G4empCrossSection();
|
||||
|
||||
~G4ModifiedTsai();
|
||||
~G4empCrossSection();
|
||||
|
||||
|
||||
G4double PolarAngle(const G4double initial_energy,
|
||||
const G4double final_energy,
|
||||
const G4int Z);
|
||||
|
||||
void PrintGeneratorInformation() const;
|
||||
|
||||
protected:
|
||||
std::vector<G4double> GetCrossSection(G4int Z,
|
||||
G4double incidentEnergy,
|
||||
G4double mass,
|
||||
G4double deltaEnergy,
|
||||
G4bool testFlag = false) const;
|
||||
|
||||
std::vector<G4double> Probabilities(G4int Z,
|
||||
G4double incidentEnergy,
|
||||
G4double mass,
|
||||
G4double deltaEnergy) const;
|
||||
|
||||
|
||||
void SetTotalCS(G4double);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// hide assignment operator
|
||||
G4ModifiedTsai & operator=(const G4ModifiedTsai &right);
|
||||
G4ModifiedTsai(const G4ModifiedTsai&);
|
||||
|
||||
|
||||
G4double totalCS;
|
||||
|
||||
G4PaulKCrossSection* paulShellK;
|
||||
G4OrlicLiCrossSection* orlicShellLi;
|
||||
|
||||
|
||||
G4empCrossSection(const G4empCrossSection&);
|
||||
G4empCrossSection & operator = (const G4empCrossSection &right);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
// 07 Dec 2001 V.Ivanchenko Add SetFluorescence method
|
||||
// 26 Feb 2002 V.Ivanchenko Add initialMass for GenericIons
|
||||
// 21 Jan 2003 V.Ivanchenko Cut per region
|
||||
// 03 Oct 2009 ALF added SelectShellIonisationCS
|
||||
// ------------------------------------------------------------
|
||||
|
||||
// Class Description:
|
||||
@@ -86,7 +87,7 @@
|
||||
#include "G4hIonEffChargeSquare.hh"
|
||||
#include "G4IonChuFluctuationModel.hh"
|
||||
#include "G4IonYangFluctuationModel.hh"
|
||||
#include "G4AtomicDeexcitation.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
#include "G4MaterialCutsCouple.hh"
|
||||
#include <map>
|
||||
|
||||
@@ -174,6 +175,9 @@ public: // With description
|
||||
void SetFluorescence(const G4bool val) {theFluo = val;};
|
||||
// This method switch on/off simulation of the fluorescence of the media.
|
||||
|
||||
void SelectShellIonisationCS(G4String);
|
||||
|
||||
|
||||
G4VParticleChange* AlongStepDoIt(const G4Track& trackData ,
|
||||
const G4Step& stepData ) ;
|
||||
// Function to determine total energy deposition on the step
|
||||
@@ -260,6 +264,7 @@ private:
|
||||
G4double hMass,
|
||||
G4double eLoss);
|
||||
|
||||
|
||||
G4int SelectRandomAtom(const G4MaterialCutsCouple* couple,
|
||||
G4double kineticEnergy) const;
|
||||
|
||||
@@ -308,12 +313,11 @@ private:
|
||||
G4double initialMass; // mass to calculate Lambda tables
|
||||
G4double fBarkas;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
G4UAtomicDeexcitation deexcitationManager;
|
||||
G4ShellVacancy* shellVacancy;
|
||||
G4VhShellCrossSection* shellCS;
|
||||
std::vector<G4VEMDataSet*> zFluoDataVector;
|
||||
G4bool theFluo;
|
||||
G4bool expFlag;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
+48
-41
@@ -23,63 +23,70 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4teoCrossSection.hh,v 1.6 2010/11/12 18:09:44 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 21 Apr 2008 ALF 1st implementation
|
||||
// 29 Apr 2009 ALF Updated Desing for Integration
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4VBremAngularDistribution
|
||||
//
|
||||
// Author: Pedro Rodrigues (psilva@lip.pt)
|
||||
// Andreia Trindade (andreia@lip.pt)
|
||||
// Luis Peralta (luis@lip.pt)
|
||||
// Design from Maria Grazia Pia (MariaGrazia.Pia@ge.infn.it)
|
||||
//
|
||||
//
|
||||
// Creation date: 21 March 2003
|
||||
//
|
||||
// Modifications:
|
||||
// 21 Mar 2003 A. Trindade First implementation acording with new design
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Abstract class for Bremsstrahlung Angular Distribution Generation
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p ionisation, K shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4VBremAngularDistribution_h
|
||||
#define G4VBremAngularDistribution_h 1
|
||||
|
||||
#include "G4ios.hh"
|
||||
#ifndef G4TEOCROSSSECTION_HH
|
||||
#define G4TEOCROSSSECTION_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VhShellCrossSection.hh"
|
||||
|
||||
class G4VBremAngularDistribution
|
||||
#include "G4AnalyticalEcpssrKCrossSection.hh"
|
||||
#include "G4AnalyticalEcpssrLiCrossSection.hh"
|
||||
|
||||
class G4teoCrossSection : public G4VhShellCrossSection
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4VBremAngularDistribution(const G4String& name);
|
||||
G4teoCrossSection(G4String);
|
||||
|
||||
virtual ~G4VBremAngularDistribution();
|
||||
~G4teoCrossSection();
|
||||
|
||||
|
||||
virtual G4double PolarAngle(const G4double initial_energy,
|
||||
const G4double final_energy,
|
||||
const G4int Z) = 0;
|
||||
|
||||
virtual void PrintGeneratorInformation() const = 0;
|
||||
|
||||
protected:
|
||||
std::vector<G4double> GetCrossSection(G4int Z,
|
||||
G4double incidentEnergy,
|
||||
G4double mass,
|
||||
G4double deltaEnergy = 0,
|
||||
G4bool testFlag = false) const;
|
||||
|
||||
std::vector<G4double> Probabilities(G4int Z,
|
||||
G4double incidentEnergy,
|
||||
G4double mass,
|
||||
G4double deltaEnergy = 0) const;
|
||||
|
||||
|
||||
void SetTotalCS(G4double);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// hide assignment operator
|
||||
G4VBremAngularDistribution & operator=(const G4VBremAngularDistribution &right);
|
||||
G4VBremAngularDistribution(const G4VBremAngularDistribution&);
|
||||
|
||||
|
||||
G4double totalCS;
|
||||
|
||||
G4VecpssrKModel* ecpssrShellK;
|
||||
G4VecpssrLiModel* ecpssrShellLi;
|
||||
|
||||
|
||||
G4teoCrossSection(const G4teoCrossSection&);
|
||||
G4teoCrossSection & operator = (const G4teoCrossSection &right);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user