File indexing completed on 2025-01-18 09:58:01
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 #ifndef G4ChannelingMaterialData_h
0029 #define G4ChannelingMaterialData_h 1
0030
0031 #include "G4ios.hh"
0032 #include "globals.hh"
0033
0034 #include "G4VMaterialExtension.hh"
0035 #include "G4ChannelingECHARM.hh"
0036 #include "G4StepPoint.hh"
0037 #include "G4Track.hh"
0038 #include <unordered_map>
0039 #include "G4PhysicsLinearVector.hh"
0040
0041 class G4ChannelingMaterialData : public G4VMaterialExtension{
0042 public:
0043
0044 G4ChannelingMaterialData(const G4String&);
0045 virtual ~G4ChannelingMaterialData();
0046
0047 public:
0048 void Print() const {G4cout << "Channeling Material Data" << G4endl;};
0049 void SetFilename(const G4String&);
0050 void SetFilenameElement(const G4String&,std::string);
0051
0052 public:
0053 G4ChannelingECHARM* GetPot() {return fPotential;};
0054 G4ChannelingECHARM* GetEFX() {return fElectricFieldX;};
0055 G4ChannelingECHARM* GetEFY() {return fElectricFieldY;};
0056 G4ChannelingECHARM* GetNuD() {return fNucleiDensity;};
0057 G4ChannelingECHARM* GetElD() {return fElectronDensity;};
0058
0059 private:
0060 G4ChannelingECHARM* fPotential;
0061 G4ChannelingECHARM* fElectricFieldX;
0062 G4ChannelingECHARM* fElectricFieldY;
0063 G4ChannelingECHARM* fNucleiDensity;
0064 G4ChannelingECHARM* fElectronDensity;
0065
0066 public:
0067 G4ChannelingECHARM* GetPotEl(std::string name) {return fPotentialElement[name];};
0068 G4ChannelingECHARM* GetEFXEl(std::string name) {return fElectricFieldXElement[name];};
0069 G4ChannelingECHARM* GetEFYEl(std::string name) {return fElectricFieldYElement[name];};
0070 G4ChannelingECHARM* GetNuDEl(std::string name) {return fNucleiDensityElement[name];};
0071 G4ChannelingECHARM* GetElDEl(std::string name) {return fElectronDensityElement[name];};
0072
0073 private:
0074 std::unordered_map<std::string,G4ChannelingECHARM*> fPotentialElement;
0075 std::unordered_map<std::string,G4ChannelingECHARM*> fElectricFieldXElement;
0076 std::unordered_map<std::string,G4ChannelingECHARM*> fElectricFieldYElement;
0077 std::unordered_map<std::string,G4ChannelingECHARM*> fNucleiDensityElement;
0078 std::unordered_map<std::string,G4ChannelingECHARM*> fElectronDensityElement;
0079
0080 public:
0081 virtual G4bool IsBent() {
0082 return bIsBent;
0083 };
0084
0085 virtual G4ThreeVector GetBR(G4ThreeVector& v3) {
0086 return G4ThreeVector(fVectorR->Value(v3.z()),0.,0.);
0087 };
0088 virtual void SetBR(const G4String&);
0089 virtual void SetBR(G4double);
0090
0091 protected:
0092 G4PhysicsVector* fVectorR;
0093 G4bool bIsBent;
0094 };
0095
0096 #endif
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106