92{
93 if (aPoint != nEntries) {
94 G4cout <<
"G4InterpolationManager::AppendScheme - " << aPoint <<
" " << nEntries <<
G4endl;
95 throw G4HadronicException(__FILE__, __LINE__,
96 "Wrong usage of G4InterpolationManager::AppendScheme");
97 }
98 if (nEntries == 0) {
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 ++range[nRanges - 1];
107 nEntries++;
108 }
109 else {
110 nEntries++;
111 nRanges++;
113 auto buffer =
new G4int[nRanges];
114 auto buffer1 =
new G4int[nRanges];
116 for (i = 0; i < nRanges - 1; i++) {
117 buffer[i] = start[i];
118 buffer1[i] = range[i];
119 buff2[i] = scheme[i];
120 }
121 delete[] start;
122 delete[] range;
123 delete[] scheme;
124 start = buffer;
125 range = buffer1;
126 scheme = buff2;
127 start[nRanges - 1] = start[nRanges - 2] + range[nRanges - 2];
128 range[nRanges - 1] = 1;
129 scheme[nRanges - 1] = aScheme;
130 }
131}
G4GLOB_DLL std::ostream G4cout