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 /// \brief Identical to G4VRestProcess with de 28 // 29 // WARNING : This class is released as a proto 30 // It might strongly evolve or even disapear i 31 // 32 // Author: Mathieu Karamitros 33 34 // The code is developed in the framework of t 35 // 36 // We would be very happy hearing from you, se 37 // 38 // In order for Geant4-DNA to be maintained an 39 // article citations are crucial. 40 // If you use Geant4-DNA chemistry and you pub 41 // in addition to the general paper on Geant4- 42 // 43 // Int. J. Model. Simul. Sci. Comput. 1 (2010) 44 // 45 // we would be very happy if you could please 46 // reference papers on chemistry: 47 // 48 // J. Comput. Phys. 274 (2014) 841-882 49 // Prog. Nucl. Sci. Tec. 2 (2011) 503-508 50 51 #ifndef G4VITRestProcess_h 52 #define G4VITRestProcess_h 1 53 54 #include <CLHEP/Units/SystemOfUnits.h> 55 56 #include "G4VITProcess.hh" 57 58 /** 59 * Identical to G4VRestProcess with dependency 60 */ 61 62 class G4VITRestProcess : public G4VITProcess 63 { 64 // Abstract class which defines the public 65 // physics interactions at rest. 66 67 public: 68 G4VITRestProcess(const G4String&, G4ProcessT 69 G4VITRestProcess(const G4VITRestProcess&); 70 71 ~G4VITRestProcess() override; 72 73 public: 74 // with description 75 G4double AtRestGetPhysicalInteractionLength( 76 77 78 G4VParticleChange* AtRestDoIt(const G4Track& 79 80 // no operation in PostStepDoIt and Along 81 G4double AlongStepGetPhysicalInteractionLeng 82 83 84 85 86 { 87 return -1.0; 88 } 89 90 G4double PostStepGetPhysicalInteractionLengt 91 92 93 { 94 return -1.0; 95 } 96 97 // no operation in PostStepDoIt and Along 98 G4VParticleChange* PostStepDoIt(const G4Trac 99 { 100 return nullptr; 101 } 102 103 G4VParticleChange* AlongStepDoIt(const G4Tra 104 { 105 return nullptr; 106 } 107 108 protected: 109 // with description 110 111 virtual G4double GetMeanLifeTime(const G4Tra 112 G4ForceCond 113 // Calculates the mean life-time (i.e. for 114 // particle at rest due to the occurrence o 115 // or converts the probability of interacti 116 // annihilation) into the life-time of the 117 // occurrence of the given process. 118 119 protected: 120 // hide default constructor and assignment o 121 G4VITRestProcess(); 122 G4VITRestProcess & operator=(const G4VITRest 123 }; 124 125 // ----------------------------------------- 126 // inlined function members implementation 127 // ----------------------------------------- 128 inline G4double G4VITRestProcess::AtRestGetPhy 129 130 { 131 // beggining of tracking 132 ResetNumberOfInteractionLengthLeft(); 133 134 // condition is set to "Not Forced" 135 *condition = NotForced; 136 137 // get mean life time 138 fpState->currentInteractionLength = GetMeanL 139 140 #ifdef G4VERBOSE 141 if((fpState->currentInteractionLength < 0.0) 142 { 143 G4cout << "G4VITRestProcess::AtRestGetPhys 144 G4cout << "[ " << GetProcessName() << "]" 145 track.GetDynamicParticle()->DumpInfo(); 146 G4cout << " in Material " << track.GetMat 147 G4cout << "MeanLifeTime = " << fpState->cu 148 << "[ns]" << G4endl; 149 } 150 #endif 151 152 return (fpState->theNumberOfInteractionLengt 153 * (fpState->currentInteractionLength); 154 } 155 156 inline G4VParticleChange* G4VITRestProcess::At 157 158 { 159 ClearNumberOfInteractionLengthLeft(); 160 ClearInteractionTimeLeft(); 161 return pParticleChange; 162 } 163 164 #endif 165 166