File indexing completed on 2025-01-18 09:58:56
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 #ifndef G4PIXESHELLDATASET_HH
0046 #define G4PIXESHELLDATASET_HH 1
0047
0048 #include <vector>
0049 #include <CLHEP/Units/SystemOfUnits.h>
0050
0051 #include "globals.hh"
0052 #include "G4IDataSet.hh"
0053
0054 class G4IInterpolator;
0055
0056 class G4PixeShellDataSet : public G4IDataSet
0057 {
0058 public:
0059 G4PixeShellDataSet(G4int Z,
0060 G4IInterpolator* algo,
0061
0062 const G4String& modelK="ecpssr",
0063 const G4String& modelL="ecpssr",
0064 const G4String& modelM="ecpssr",
0065 G4double eUnit=CLHEP::MeV,
0066 G4double dataUnit=CLHEP::barn);
0067
0068 virtual ~G4PixeShellDataSet();
0069
0070 virtual G4double FindValue(G4double energy, G4int componentId=0) const;
0071
0072 virtual void PrintData(void) const;
0073
0074 virtual const G4IDataSet* GetComponent(G4int componentId) const
0075 { return components[componentId]; }
0076
0077 virtual void AddComponent(G4IDataSet* dataSet)
0078 { components.push_back(dataSet); }
0079
0080 virtual size_t NumberOfComponents(void) const
0081 { return components.size(); }
0082
0083 virtual const G4DataVector& GetEnergies(G4int componentId) const
0084 { return GetComponent(componentId)->GetEnergies(0); }
0085
0086 virtual const G4DataVector& GetData(G4int componentId) const
0087 { return GetComponent(componentId)->GetData(0); }
0088
0089 virtual void SetEnergiesData(G4DataVector* energies,
0090 G4DataVector* data,
0091 G4int componentId);
0092
0093 virtual G4bool LoadData(const G4String& fileName);
0094 virtual G4bool SaveData(const G4String& fileName) const;
0095
0096 virtual G4double RandomSelect(G4int ) const {return -1.;};
0097
0098 protected:
0099
0100 G4double GetUnitEnergies() const { return unitEnergies; }
0101 G4double GetUnitData() const { return unitData; }
0102 const G4IInterpolator* GetAlgorithm() const { return algorithm; }
0103
0104 void CleanUpComponents(void);
0105
0106 private:
0107
0108 G4String FullFileName(const G4String& particleType,
0109 const G4String& subShell) const;
0110 G4int TranslateShell(const G4String& subShell) const;
0111
0112
0113 G4PixeShellDataSet();
0114 G4PixeShellDataSet(const G4PixeShellDataSet& copy);
0115 G4PixeShellDataSet& operator=(const G4PixeShellDataSet& right);
0116
0117 std::vector<G4IDataSet*> components;
0118
0119 G4int z;
0120 G4IInterpolator* algorithm;
0121
0122
0123
0124
0125 std::vector<G4String> crossModel;
0126 G4double unitEnergies;
0127 G4double unitData;
0128 std::vector<G4String> shellName;
0129 std::vector<G4String> subShellName;
0130
0131 };
0132 #endif