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

Last change on this file since 1306 was 1228, checked in by garnier, 16 years ago

update geant4.9.3 tag

File size: 6.0 KB
RevLine 
[819]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//
[1196]27// $Id: G4VRangeToEnergyConverter.hh,v 1.8 2009/09/14 07:27:46 kurasige Exp $
[1228]28// GEANT4 tag $Name: geant4-09-03 $
[819]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();
[1196]88
89 // get/set max cut energy for all particle type
90 static G4double GetMaxEnergyCut();
91 static void SetMaxEnergyCut(G4double value);
[819]92
93 // return pointer to the particle type which this converter takes care
94 const G4ParticleDefinition* GetParticleType() const;
95
96 // return the Loss Table
97 const G4PhysicsTable* GetLossTable() const;
98 //-------------- Loss Table ------------------------------------------
99 // theLossTable is a collection of loss vectors for all elements.
100 // Each loss vector has energy loss values (cross section values
101 // for neutral particles) which are calculated by
102 // ComputeLoss(G4double AtomicNumber,G4double KineticEnergy).
[1196]103 // ComputeLoss method is pure virtual and should be provided for each
104 // particle type
105
106 // reset Loss Table and Range Vectors
107 virtual void Reset();
108
[819]109 protected:
110 static G4double LowestEnergy, HighestEnergy;
[1196]111 static G4double MaxEnergyCut;
112 G4double fMaxEnergyCut;
113
[819]114 const G4ParticleDefinition* theParticle;
115 typedef G4PhysicsTable G4LossTable;
116 G4LossTable* theLossTable;
117 G4int NumberOfElements;
[1196]118
[819]119 typedef G4PhysicsLogVector G4LossVector;
[1196]120 const G4int TotBin;
[819]121
122 protected:// with description
[1196]123 virtual void BuildLossTable();
[819]124
125 virtual G4double ComputeLoss(G4double AtomicNumber,
126 G4double KineticEnergy
[1196]127 ) const = 0;
[819]128
129 //-------------- Range Table ------------------------------------------
130 protected:
131 typedef G4PhysicsLogVector G4RangeVector;
[1196]132
[819]133 virtual void BuildRangeVector(const G4Material* aMaterial,
[1196]134 G4RangeVector* rangeVector);
[819]135
[1196]136 std::vector< G4RangeVector* > fRangeVectorStore;
137
[819]138 protected:
139 G4double ConvertCutToKineticEnergy(
140 G4RangeVector* theRangeVector,
141 G4double theCutInLength,
142 size_t materialIndex
143 ) const;
144
145 public: // with description
146 void SetVerboseLevel(G4int value);
147 G4int GetVerboseLevel() const;
148 // controle flag for output message
149 // 0: Silent
150 // 1: Warning message
151 // 2: More
152
153 private:
154 G4int verboseLevel;
155
156};
157
158inline
159 void G4VRangeToEnergyConverter::SetVerboseLevel(G4int value)
160{
161 verboseLevel = value;
162}
163
164inline
165 G4int G4VRangeToEnergyConverter::GetVerboseLevel() const
166{
167 return verboseLevel;
168}
169
170
[1196]171inline
172 const G4ParticleDefinition* G4VRangeToEnergyConverter::GetParticleType() const
173{
174 return theParticle;
175}
[819]176#endif
177
178
179
180
181
182
183
184
Note: See TracBrowser for help on using the repository browser.