Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4InterpolationManager.cc
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// neutron_hp -- source file
27// J.P. Wellisch, Nov-1996
28// A prototype of the low energy neutron transport model.
29//
32
34 {
36 switch(it)
37 {
38 case 1:
39 result = HISTO;
40 break;
41 case 2:
42 result = LINLIN;
43 break;
44 case 3:
45 result = LINLOG;
46 break;
47 case 4:
48 result = LOGLIN;
49 break;
50 case 5:
51 result = LOGLOG;
52 break;
53 case 11:
54 result = CHISTO;
55 break;
56 case 12:
57 result = CLINLIN;
58 break;
59 case 13:
60 result = CLINLOG;
61 break;
62 case 14:
63 result = CLOGLIN;
64 break;
65 case 15:
66 result = CLOGLOG;
67 break;
68 case 21:
69 result = UHISTO;
70 break;
71 case 22:
72 result = ULINLIN;
73 break;
74 case 23:
75 result = ULINLOG;
76 break;
77 case 24:
78 result = ULOGLIN;
79 break;
80 case 25:
81 result = ULOGLOG;
82 break;
83 default:
84 throw G4HadronicException(__FILE__, __LINE__, "G4InterpolationManager: unknown interpolation scheme");
85 break;
86 }
87 return result;
88 }
89
91 {
92 if(aPoint!=nEntries)
93 {
94 G4cout <<"G4InterpolationManager::AppendScheme - "<<aPoint<<" "<<nEntries<<G4endl;
95 throw G4HadronicException(__FILE__, __LINE__, "Wrong usage of G4InterpolationManager::AppendScheme");
96 }
97 if(nEntries==0)
98 {
99 nEntries = 1;
100 nRanges = 1;
101 start[0] = 0;
102 range [0] = 1;
103 scheme[0] = aScheme;
104 }
105 else if(aScheme==scheme[nRanges-1])
106 {
107 ++range[nRanges-1];
108 nEntries++;
109 }
110 else
111 {
112 nEntries++;
113 nRanges++;
114 G4int i;
115 G4int * buffer = new G4int[nRanges];
116 G4int * buffer1 = new G4int[nRanges];
117 G4InterpolationScheme* buff2 = new G4InterpolationScheme[nRanges];
118 for(i=0; i<nRanges-1; i++)
119 {
120 buffer[i] = start[i];
121 buffer1[i] = range[i];
122 buff2[i] = scheme[i];
123 }
124 delete [] start;
125 delete [] range;
126 delete [] scheme;
127 start = buffer;
128 range = buffer1;
129 scheme = buff2;
130 start[nRanges-1] = start[nRanges-2]+range[nRanges-2];
131 range[nRanges-1] = 1;
132 scheme[nRanges-1] = aScheme;
133 }
134 }
G4InterpolationScheme
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
void AppendScheme(G4int aPoint, const G4InterpolationScheme &aScheme)
G4InterpolationScheme MakeScheme(G4int it)