Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // neutron_hp -- source file 27 // J.P. Wellisch, Nov-1996 28 // A prototype of the low energy neutron trans 29 // 30 #include "G4InterpolationManager.hh" 31 32 #include "G4HadronicException.hh" 33 34 G4InterpolationScheme G4InterpolationManager:: 35 { 36 G4InterpolationScheme result(LINLIN); 37 switch (it) { 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__, __LI 85 "G4Interpolati 86 break; 87 } 88 return result; 89 } 90 91 void G4InterpolationManager::AppendScheme(G4in 92 { 93 if (aPoint != nEntries) { 94 G4cout << "G4InterpolationManager::AppendS 95 throw G4HadronicException(__FILE__, __LINE 96 "Wrong usage of 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++; 112 G4int i; 113 auto buffer = new G4int[nRanges]; 114 auto buffer1 = new G4int[nRanges]; 115 auto buff2 = new G4InterpolationScheme[nRa 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] + 128 range[nRanges - 1] = 1; 129 scheme[nRanges - 1] = aScheme; 130 } 131 } 132