Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4LossTableBuilder.hh
Go to the documentation of this file.
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// $Id$
27//
28//
29// -------------------------------------------------------------------
30//
31// GEANT4 Class header file
32//
33//
34// File name: G4LossTableBuilder
35//
36// Author: Vladimir Ivanchenko on base of Laszlo Urban code
37//
38// Creation date: 03.01.2002
39//
40// Modifications:
41// 08-11-04 Migration to new interface of Store/Retrieve tables (V.Ivanchenko)
42// 17-07-08 Added splineFlag (V.Ivanchenko)
43//
44// Class Description:
45//
46// Provide building of dE/dx, range, and inverse range tables.
47
48// -------------------------------------------------------------------
49//
50
51#ifndef G4LossTableBuilder_h
52#define G4LossTableBuilder_h 1
53
54#include <vector>
55#include "globals.hh"
56#include "G4PhysicsTable.hh"
57
58class G4VEmModel;
60
62{
63
64public:
65
67
68 virtual ~G4LossTableBuilder();
69
70 // build sum of all energy loss processes
71 void BuildDEDXTable(G4PhysicsTable* dedxTable,
72 const std::vector<G4PhysicsTable*>&);
73
74 // build range
75 void BuildRangeTable(const G4PhysicsTable* dedxTable,
76 G4PhysicsTable* rangeTable,
77 G4bool isIonisation = false);
78
79 // build inverse range
80 void BuildInverseRangeTable(const G4PhysicsTable* rangeTable,
81 G4PhysicsTable* invRangeTable,
82 G4bool isIonisation = false);
83
84 // build a table requested by any model class
86 G4VEmModel* model,
88 G4double emin, G4double emax,
89 G4bool spline);
90
91 // initialise base materials
93
94
95 // access methods
96 inline const std::vector<G4int>* GetCoupleIndexes();
97
98 inline const std::vector<G4double>* GetDensityFactors();
99
100 inline G4bool GetFlag(size_t idx) const;
101
102 inline void SetSplineFlag(G4bool flag);
103
104 inline void SetInitialisationFlag(G4bool flag);
105
106private:
107
108 void InitialiseCouples();
109
110 G4LossTableBuilder & operator=(const G4LossTableBuilder &right);
112
113 G4bool splineFlag;
114 G4bool isInitialized;
115
116 std::vector<G4double>* theDensityFactor;
117 std::vector<G4int>* theDensityIdx;
118 std::vector<G4bool>* theFlag;
119
120};
121
122inline const std::vector<G4int>*
124{
125 if(theDensityIdx->size() == 0) { InitialiseCouples(); }
126 return theDensityIdx;
127}
128
129inline const std::vector<G4double>*
131{
132 if(theDensityIdx->size() == 0) { InitialiseCouples(); }
133 return theDensityFactor;
134}
135
136inline G4bool G4LossTableBuilder::GetFlag(size_t idx) const
137{
138 return (*theFlag)[idx];
139}
140
142{
143 splineFlag = flag;
144}
145
147{
148 isInitialized = flag;
149}
150
151//....oooOO0OOooo.......oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
152
153#endif
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
const std::vector< G4double > * GetDensityFactors()
void BuildDEDXTable(G4PhysicsTable *dedxTable, const std::vector< G4PhysicsTable * > &)
G4PhysicsTable * BuildTableForModel(G4PhysicsTable *table, G4VEmModel *model, const G4ParticleDefinition *, G4double emin, G4double emax, G4bool spline)
void BuildRangeTable(const G4PhysicsTable *dedxTable, G4PhysicsTable *rangeTable, G4bool isIonisation=false)
void InitialiseBaseMaterials(G4PhysicsTable *table)
const std::vector< G4int > * GetCoupleIndexes()
G4bool GetFlag(size_t idx) const
void SetSplineFlag(G4bool flag)
void SetInitialisationFlag(G4bool flag)
void BuildInverseRangeTable(const G4PhysicsTable *rangeTable, G4PhysicsTable *invRangeTable, G4bool isIonisation=false)