Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4PaulKxsModel Class Reference

#include <G4PaulKxsModel.hh>

Public Member Functions

 G4PaulKxsModel ()
 
virtual ~G4PaulKxsModel ()
 
G4double CalculateKCrossSection (G4int zTarget, G4double massIncident, G4double energyIncident)
 

Detailed Description

Definition at line 51 of file G4PaulKxsModel.hh.

Constructor & Destructor Documentation

G4PaulKxsModel::G4PaulKxsModel ( )

Definition at line 56 of file G4PaulKxsModel.cc.

57 {
58 
59 
60  interpolation = new G4LogLogInterpolation();
61 
62 
63  for (G4int i=4; i<93; i++) {
64  protonDataSetMap[i] = new G4EMDataSet(i,interpolation);
65  protonDataSetMap[i]->LoadData("pixe/kpcsPaul/kcs-");
66  }
67  for (G4int i=6; i<93; i++) {
68  alphaDataSetMap[i] = new G4EMDataSet(i,interpolation);
69  alphaDataSetMap[i]->LoadData("pixe/kacsPaul/kacs-");
70  }
71 
72 
73 
74 
75 }
int G4int
Definition: G4Types.hh:78
G4PaulKxsModel::~G4PaulKxsModel ( )
virtual

Definition at line 77 of file G4PaulKxsModel.cc.

78 {
79 
80  protonDataSetMap.clear();
81  alphaDataSetMap.clear();
82  delete interpolation;
83 
84 }

Member Function Documentation

G4double G4PaulKxsModel::CalculateKCrossSection ( G4int  zTarget,
G4double  massIncident,
G4double  energyIncident 
)

Definition at line 86 of file G4PaulKxsModel.cc.

87 {
88 
89  G4Proton* aProtone = G4Proton::Proton();
90  G4Alpha* aAlpha = G4Alpha::Alpha();
91 
92  G4double sigma = 0;
93 
94  if (massIncident == aProtone->GetPDGMass() && zTarget < 93 && zTarget > 3)
95  {
96 
97  // G4EMDataSet* currentDataset = protonDataSetMap[zTarget];
98  // currentDataset->GetEnergies
99 
100  if (energyIncident > protonDataSetMap[zTarget]->GetEnergies(0).back() ||
101  energyIncident < protonDataSetMap[zTarget]->GetEnergies(0).front() )
102  {sigma = 0;}
103  else {
104  sigma = protonDataSetMap[zTarget]->FindValue(energyIncident/MeV);
105  }
106  }
107  else
108  {
109  if (massIncident == aAlpha->GetPDGMass() && zTarget < 93 && zTarget > 5)
110  {
111  if (energyIncident > alphaDataSetMap[zTarget]->GetEnergies(0).back() ||
112  energyIncident < alphaDataSetMap[zTarget]->GetEnergies(0).front() )
113  {sigma = 0;}
114  else {
115  sigma = alphaDataSetMap[zTarget]->FindValue(energyIncident/MeV);
116  }
117  }
118  else
119  {
120 
121 // G4Exception("G4PaulKxsModel::CalculateKCrossSection()","de0004",JustWarning, "Energy deposited locally");
122  sigma = 0.;
123 
124  }
125  }
126 
127 
128  // sigma is in internal units (mm^2)
129  return sigma;
130 }
static G4Proton * Proton()
Definition: G4Proton.cc:93
G4double GetPDGMass() const
static constexpr double MeV
Definition: G4SIunits.hh:214
static G4Alpha * Alpha()
Definition: G4Alpha.cc:89
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:


The documentation for this class was generated from the following files: