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 ////////////////////////////////////////////// 27 // Class: G4AdjointInterpolator 28 // Author: L. Desorgher 29 // Organisation: SpaceIT GmbH 30 // 31 // Used by G4AdjointCSManager for interpolat 32 ////////////////////////////////////////////// 33 34 #ifndef G4AdjointInterpolator_h 35 #define G4AdjointInterpolator_h 1 36 37 #include "globals.hh" 38 39 #include <vector> 40 41 class G4AdjointInterpolator 42 { 43 public: 44 static G4AdjointInterpolator* GetAdjointInte 45 static G4AdjointInterpolator* GetInstance(); 46 47 ~G4AdjointInterpolator(); 48 49 // Caution: everywhere it is considered that 50 51 G4double LinearInterpolation(G4double& x, G4 52 G4double& y1, G 53 54 G4double LogarithmicInterpolation(G4double& 55 G4double& 56 57 G4double ExponentialInterpolation(G4double& 58 G4double& 59 60 G4double Interpolation(G4double& x, G4double 61 G4double& y2, const G 62 63 std::size_t FindPosition(G4double& x, std::v 64 std::size_t ind_min = 0, 65 66 std::size_t FindPositionForLogVector(G4doubl 67 68 // xvec should monotically increase 69 G4double Interpolate(G4double& x, std::vecto 70 std::vector<G4double>& 71 const G4String& InterPo 72 73 G4double InterpolateWithIndexVector( 74 G4double& x, std::vector<G4double>& x_vec, 75 std::vector<std::size_t>& index_vec, G4dou 76 G4double dx); // xvec should monotically 77 78 G4double InterpolateForLogVector(G4double& x 79 std::vector 80 81 G4AdjointInterpolator(G4AdjointInterpolator& 82 G4AdjointInterpolator& operator=(const G4Adj 83 84 private: 85 G4AdjointInterpolator(); 86 87 static G4ThreadLocal G4AdjointInterpolator* 88 }; 89 #endif 90