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 // G4ImportanceProcess 27 // 28 // Class description: 29 // 30 // Used internally by importance sampling in t 31 // This process is a forced post step process. 32 // importance sampling if the particle crosses 33 // "mass" geometry. 34 35 // Author: Michael Dressel, 2002 36 // ------------------------------------------- 37 #ifndef G4ImportanceProcess_hh 38 #define G4ImportanceProcess_hh 1 39 40 #include "G4VProcess.hh" 41 #include "G4VTrackTerminator.hh" 42 #include "G4VTouchable.hh" 43 44 class G4SamplingPostStepAction; 45 class G4VImportanceAlgorithm; 46 class G4VIStore; 47 48 class G4Step; 49 class G4Navigator; 50 class G4TransportationManager; 51 class G4PathFinder; 52 53 #include "G4FieldTrack.hh" 54 #include "G4TouchableHandle.hh" 55 #include "G4MultiNavigator.hh" // For ELimit 56 57 class G4ImportanceProcess : public G4VProcess, 58 { 59 60 public: 61 62 G4ImportanceProcess(const G4VImportanceAlgor 63 const G4VIStore &aIstore 64 const G4VTrackTerminator 65 const G4String &aName = 66 G4bool para = fals 67 // creates a G4ParticleChange 68 69 virtual ~G4ImportanceProcess(); 70 // delete the G4ParticleChange 71 72 G4ImportanceProcess(const G4ImportanceProces 73 G4ImportanceProcess &operator=(const G4Impor 74 75 //------------------------------------------ 76 // Set Parallel World 77 //------------------------------------------ 78 79 void SetParallelWorld(const G4String& parall 80 81 //------------------------------------------ 82 // Process interface 83 //------------------------------------------ 84 85 void StartTracking(G4Track*); 86 87 88 virtual G4double 89 PostStepGetPhysicalInteractionLength(const G 90 G4doubl 91 G4Force 92 // make process beeing forced 93 94 virtual G4VParticleChange* PostStepDoIt(cons 95 // manage the importance sampling in the " 96 97 virtual void KillTrack() const; 98 // used in case no scoring process follows 99 100 virtual const G4String& GetName() const; 101 102 // no operation in AtRestDoIt and AlongSt 103 104 virtual G4double 105 AlongStepGetPhysicalInteractionLength(const 106 G4doub 107 G4doub 108 G4doub 109 G4GPIL 110 virtual G4double 111 AtRestGetPhysicalInteractionLength(const G4T 112 G4ForceCo 113 114 virtual G4VParticleChange* AtRestDoIt(const 115 virtual G4VParticleChange* AlongStepDoIt(con 116 117 private: 118 119 void CopyStep(const G4Step& step); 120 121 G4Step* fGhostStep = nullptr; 122 G4StepPoint* fGhostPreStepPoint = nullptr; 123 G4StepPoint* fGhostPostStepPoint = nullptr; 124 125 G4ParticleChange* fParticleChange = nullptr; 126 const G4VImportanceAlgorithm &fImportanceAlg 127 const G4VIStore& fIStore; 128 G4SamplingPostStepAction* fPostStepAction = 129 130 G4TransportationManager* fTransportationMana 131 G4PathFinder* fPathFinder = nullptr; 132 133 // ------------------------------- 134 // Navigation in the Ghost World: 135 // ------------------------------- 136 G4String fGhostWorldName = "NoPa 137 G4VPhysicalVolume* fGhostWorld = nullptr; 138 G4Navigator* fGhostNavigator = nullp 139 G4int fNavigatorID = -1; 140 G4TouchableHandle fOldGhostTouchable; 141 G4TouchableHandle fNewGhostTouchable; 142 G4FieldTrack fFieldTrack = '0'; 143 G4double fGhostSafety = -1; 144 G4bool fOnBoundary = false; 145 146 G4bool fParaflag = false; 147 G4FieldTrack fEndTrack = '0'; 148 ELimited feLimited = kDoNot; 149 }; 150 151 #endif 152