source: trunk/source/processes/cuts/include/G4VRangeToEnergyConverter.hh@ 1114

Last change on this file since 1114 was 1007, checked in by garnier, 17 years ago

update to geant4.9.2

File size: 6.4 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id: G4VRangeToEnergyConverter.hh,v 1.4 2006/06/29 19:30:06 gunter Exp $
28// GEANT4 tag $Name: geant4-09-02 $
29//
30//
31// ------------------------------------------------------------
32// GEANT 4 class header file
33//
34//
35// Class Description
36// This class is base class for Range to Energy Converters.
37// Cut in energy corresponding to given cut value in range
38// is calculated for a material by using Convert method
39//
40// ------------------------------------------------------------
41// First Implementation 5 Oct. 2002 H.Kurahige
42// ------------------------------------------------------------
43
44#ifndef G4VRangeToEnergyConverter_h
45#define G4VRangeToEnergyConverter_h 1
46
47#include "globals.hh"
48#include <cmath>
49#include "G4ios.hh"
50#include <vector>
51
52#include "G4ParticleDefinition.hh"
53
54#include "G4PhysicsTable.hh"
55#include "G4Element.hh"
56#include "G4Material.hh"
57class G4PhysicsLogVector;
58
59class G4VRangeToEnergyConverter
60{
61 public: // with description
62 // constructor
63 G4VRangeToEnergyConverter();
64
65 // copy constructor
66 G4VRangeToEnergyConverter(const G4VRangeToEnergyConverter &right);
67
68 G4VRangeToEnergyConverter & operator=(const G4VRangeToEnergyConverter &right);
69
70 public:
71 // destructor
72 virtual ~G4VRangeToEnergyConverter();
73
74 // equal opperators
75 G4int operator==(const G4VRangeToEnergyConverter &right) const;
76 G4int operator!=(const G4VRangeToEnergyConverter &right) const;
77
78 public: // with description
79 // calculate energy cut from given range cut for the material
80 virtual G4double Convert(G4double rangeCut, const G4Material* material);
81
82 // set energy range for all particle type
83 static void SetEnergyRange(G4double lowedge, G4double highedge);
84
85 // get energy range for all particle type
86 static G4double GetLowEdgeEnergy();
87 static G4double GetHighEdgeEnergy();
88
89 // return pointer to the particle type which this converter takes care
90 const G4ParticleDefinition* GetParticleType() const;
91
92 // return the Loss Table
93 const G4PhysicsTable* GetLossTable() const;
94 //-------------- Loss Table ------------------------------------------
95 // theLossTable is a collection of loss vectors for all elements.
96 // Each loss vector has energy loss values (cross section values
97 // for neutral particles) which are calculated by
98 // ComputeLoss(G4double AtomicNumber,G4double KineticEnergy).
99
100 protected:
101 static G4double LowestEnergy, HighestEnergy;
102
103 const G4ParticleDefinition* theParticle;
104 typedef G4PhysicsTable G4LossTable;
105 G4LossTable* theLossTable;
106 G4int NumberOfElements;
107
108 typedef G4PhysicsLogVector G4LossVector;
109 G4int TotBin;
110
111 protected:// with description
112 virtual void BuildLossTable();
113
114 virtual G4double ComputeLoss(G4double AtomicNumber,
115 G4double KineticEnergy
116 ) const;
117
118 //-------------- Range Table ------------------------------------------
119 protected:
120 typedef G4PhysicsLogVector G4RangeVector;
121 virtual void BuildRangeVector(const G4Material* aMaterial,
122 G4double maxEnergy,
123 G4double aMass,
124 G4RangeVector* rangeVector);
125
126 protected:
127 G4double ConvertCutToKineticEnergy(
128 G4RangeVector* theRangeVector,
129 G4double theCutInLength,
130 size_t materialIndex
131 ) const;
132
133 G4double RangeLinSimpson(
134 G4int numberOfElements,
135 const G4ElementVector* elementVector,
136 const G4double* atomicNumDensityVector,
137 G4double aMass,
138 G4double taulow, G4double tauhigh,
139 G4int nbin
140 );
141
142 G4double RangeLogSimpson(
143 G4int numberOfElements,
144 const G4ElementVector* elementVector,
145 const G4double* atomicNumDensityVector,
146 G4double aMass,
147 G4double ltaulow, G4double ltauhigh,
148 G4int nbin
149 );
150
151 public: // with description
152 void SetVerboseLevel(G4int value);
153 G4int GetVerboseLevel() const;
154 // controle flag for output message
155 // 0: Silent
156 // 1: Warning message
157 // 2: More
158
159 private:
160 G4int verboseLevel;
161
162};
163
164inline
165 void G4VRangeToEnergyConverter::SetVerboseLevel(G4int value)
166{
167 verboseLevel = value;
168}
169
170inline
171 G4int G4VRangeToEnergyConverter::GetVerboseLevel() const
172{
173 return verboseLevel;
174}
175
176
177#endif
178
179
180
181
182
183
184
185
Note: See TracBrowser for help on using the repository browser.