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

Last change on this file since 1196 was 1196, checked in by garnier, 15 years ago

update CVS release candidate geant4.9.3.01

File size: 6.1 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.8 2009/09/14 07:27:46 kurasige Exp $
28// GEANT4 tag $Name: geant4-09-03-cand-01 $
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  //  get/set max cut energy for all particle type
90  static G4double GetMaxEnergyCut();
91  static void SetMaxEnergyCut(G4double value);
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).
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   
109 protected:
110    static G4double               LowestEnergy, HighestEnergy;
111    static G4double               MaxEnergyCut; 
112    G4double                      fMaxEnergyCut;
113   
114    const G4ParticleDefinition*   theParticle;
115    typedef G4PhysicsTable        G4LossTable;
116    G4LossTable*                  theLossTable;
117    G4int                         NumberOfElements;
118 
119    typedef G4PhysicsLogVector    G4LossVector;
120    const G4int                   TotBin;
121
122  protected:// with description 
123    virtual void BuildLossTable();
124
125    virtual G4double ComputeLoss(G4double AtomicNumber,
126                                 G4double KineticEnergy
127                               ) const = 0;
128
129  //-------------- Range Table ------------------------------------------
130  protected:
131    typedef G4PhysicsLogVector G4RangeVector;
132
133    virtual void BuildRangeVector(const G4Material* aMaterial,
134                                   G4RangeVector* rangeVector);
135
136    std::vector< G4RangeVector* > fRangeVectorStore;   
137     
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
171inline 
172 const G4ParticleDefinition* G4VRangeToEnergyConverter::GetParticleType() const
173{
174   return theParticle;
175}
176#endif
177
178
179
180
181
182
183
184
Note: See TracBrowser for help on using the repository browser.