Geant4 Cross Reference |
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 // 070618 Comment out unused private member leaking by T. Koi 28 // 29 // P. Arce, June-2014 Conversion neutron_hp to particle_hp 30 // 31 #ifndef G4ParticleHPPartial_h 32 #define G4ParticleHPPartial_h 1 33 34 #include "G4InterpolationManager.hh" 35 #include "G4ParticleHPInterpolator.hh" 36 #include "G4ParticleHPVector.hh" 37 #include "globals.hh" 38 39 #include <CLHEP/Units/SystemOfUnits.h> 40 41 class G4ParticleHPPartial 42 { 43 public: 44 G4ParticleHPPartial(G4int n) 45 { 46 X = new G4double[n]; 47 data = new G4ParticleHPVector[n]; 48 nData = n; 49 T = nullptr; 50 } 51 52 G4ParticleHPPartial(G4int n1, G4int n2) 53 { 54 T = new G4double[n2]; 55 X = new G4double[n1]; 56 data = new G4ParticleHPVector[n1]; 57 nData = std::max(n1, n2); 58 } 59 60 void InitInterpolation(G4int i, std::istream& aDataFile) 61 { 62 data[i].InitInterpolation(aDataFile); 63 } 64 65 void InitInterpolation(std::istream& aDataFile) { theManager.Init(aDataFile); } 66 67 void Init(std::istream& aDataFile) 68 { 69 G4int i; 70 G4double e; 71 for (i = 0; i < nData; i++) { 72 aDataFile >> e; 73 e *= CLHEP::eV; 74 SetX(i, e); 75 InitData(i, aDataFile, CLHEP::eV); // energy and probability for gammas 76 } 77 } 78 79 void InitData(G4int i, std::istream& aDataFile, G4double unit = 1.) 80 { 81 G4int ii; 82 G4double eg, pg; 83 G4int neg; 84 aDataFile >> neg; 85 data[i].InitInterpolation(aDataFile); 86 for (ii = 0; ii < neg; ii++) { 87 aDataFile >> eg >> pg; 88 eg *= unit; 89 SetX(i, ii, eg); 90 SetY(i, ii, pg); 91 } 92 data[i].Hash(); 93 } 94 95 ~G4ParticleHPPartial() 96 { 97 delete[] X; 98 delete[] T; 99 delete[] data; 100 } 101 inline G4int GetNumberOfEnergies() { return nData; } 102 103 inline void SetX(G4int i, G4double x) { X[i] = x; } 104 inline void SetT(G4int i, G4double x) { T[i] = x; } 105 inline void SetX(G4int i, G4int j, G4double x) { data[i].SetX(j, x); } 106 inline void SetY(G4int i, G4int j, G4double y) { data[i].SetY(j, y); } 107 void DoneSetXY(G4int i) { data[i].Hash(); } 108 109 inline G4double GetX(G4int i) { return X[i]; } 110 inline G4double GetT(G4int i) { return T[i]; } 111 inline G4double GetX(G4int i, G4int j) { return data[i].GetX(j); } 112 inline G4double GetY(G4int i, G4int j) { return data[i].GetY(j); } 113 inline G4double GetY(G4int i, G4double e) { return data[i].GetY(e); } 114 inline G4int GetNEntries(G4int i) { return data[i].GetVectorLength(); } 115 G4ParticleHPVector* GetY(G4double e1); 116 G4double Sample(G4double x); 117 118 private: 119 G4double* X; 120 G4double* T; 121 G4ParticleHPVector* data; 122 // TKDB 123 // G4ParticleHPVector * theBuffer; 124 G4int nData; 125 G4InterpolationManager theManager; // interpolate between different data[i] 126 G4ParticleHPInterpolator theInt; 127 }; 128 129 #endif 130