Geant4 Cross Reference |
>> 1 // This code implementation is the intellectual property of >> 2 // the GEANT4 collaboration. 1 // 3 // 2 // ******************************************* << 4 // By copying, distributing or modifying the Program (or any work 3 // * License and Disclaimer << 5 // based on the Program) you indicate your acceptance of this statement, 4 // * << 6 // and all its terms. 5 // * The Geant4 software is copyright of th << 7 // 6 // * the Geant4 Collaboration. It is provided << 8 // $Id: G4eplusAnnihilation.hh,v 1.1.10.1 1999/12/07 20:50:53 gunter Exp $ 7 // * conditions of the Geant4 Software License << 9 // GEANT4 tag $Name: geant4-01-01 $ 8 // * LICENSE and available at http://cern.ch/ << 10 // 9 // * include a list of copyright holders. << 11 // 10 // * << 12 // ------------------------------------------------------------ 11 // * Neither the authors of this software syst << 13 // GEANT 4 class header file 12 // * institutes,nor the agencies providing fin << 14 // CERN Geneva Switzerland 13 // * work make any representation or warran << 15 // 14 // * regarding this software system or assum << 16 // For information related to this code contact: 15 // * use. Please see the license in the file << 17 // CERN, IT Division, ASD group 16 // * for the full disclaimer and the limitatio << 18 // History: first implementation, based on object model of 17 // * << 19 // 2nd December 1995, G.Cosmo 18 // * This code implementation is the result << 20 // ------------ G4eplusAnnihilation process ------ 19 // * technical work of the GEANT4 collaboratio << 21 // by Michel Maire, 7 july 1996 20 // * By using, copying, modifying or distri << 22 // ************************************************************ 21 // * any work based on the software) you ag << 23 // 10-01-97, crossection table + meanfreepath table, M.Maire 22 // * use in resulting scientific publicati << 24 // 17-03-97, merge 'in fly' and 'at rest', M.Maire 23 // * acceptance of all terms of the Geant4 Sof << 25 // 31-08-98, new methods SetBining() and PrintInfo() 24 // ******************************************* << 26 // ------------------------------------------------------------ 25 // << 26 // << 27 // ------------------------------------------- << 28 // << 29 // GEANT4 Class header file << 30 // << 31 // << 32 // File name: G4eplusAnnihilation << 33 // << 34 // Author: Vladimir Ivanchenko on base << 35 // << 36 // Creation date: 02.08.2004 << 37 // << 38 // Modifications: << 39 // 08-11-04 Migration to new interface of Stor << 40 // 15-03-05 Update interface according to chan << 41 // in G4VEmProcess (V.Ivanchenko) << 42 // 08-04-05 Major optimisation of internal int << 43 // 04-05-05 Make class to be default (V.Ivanch << 44 // 04-12-05 SetProposedKineticEnergy(0.) for a << 45 // 09-08-06 add SetModel(G4VEmModel*) (mma) << 46 // 12-09-06, move SetModel(G4VEmModel*) in G4V << 47 // << 48 // << 49 // Class Description: << 50 // << 51 // This class manages the process of e+ annihi << 52 // It is possible to enable ApplyCuts and Enta << 53 // G4EmParameters class using UI commands or C << 54 // EM splitting or Russian roulette are allowe << 55 // are enabled. << 56 // << 57 // ------------------------------------------- << 58 // << 59 27 60 #ifndef G4eplusAnnihilation_h 28 #ifndef G4eplusAnnihilation_h 61 #define G4eplusAnnihilation_h 1 29 #define G4eplusAnnihilation_h 1 62 30 63 #include "G4VEmProcess.hh" << 31 #include "G4ios.hh" 64 << 32 #include "globals.hh" 65 class G4ParticleDefinition; << 33 #include "Randomize.hh" 66 class G4VPositronAtRestModel; << 34 #include "G4VRestDiscreteProcess.hh" 67 << 35 #include "G4PhysicsTable.hh" 68 class G4eplusAnnihilation : public G4VEmProces << 36 #include "G4PhysicsLogVector.hh" 69 { << 37 #include "G4ElementTable.hh" 70 << 38 #include "G4Gamma.hh" 71 public: << 39 #include "G4Positron.hh" 72 << 40 #include "G4Step.hh" 73 explicit G4eplusAnnihilation(const G4String& << 41 74 << 42 class G4eplusAnnihilation : public G4VRestDiscreteProcess 75 ~G4eplusAnnihilation() override; << 43 76 << 44 { 77 G4bool IsApplicable(const G4ParticleDefiniti << 45 public: 78 << 46 79 G4VParticleChange* AtRestDoIt( << 47 G4eplusAnnihilation(const G4String& processName ="annihil"); 80 const G4Track& tr << 48 81 const G4Step& ste << 49 ~G4eplusAnnihilation(); 82 << 50 83 G4double AtRestGetPhysicalInteractionLength( << 51 G4bool IsApplicable(const G4ParticleDefinition&); 84 const G4Track& tr << 52 85 G4ForceCondition* << 53 void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); 86 ) override; << 54 87 << 55 void BuildPhysicsTable(const G4ParticleDefinition& PositronType); 88 // print documentation in html format << 56 89 void ProcessDescription(std::ostream&) const << 57 void PrintInfoDefinition(); 90 << 58 91 G4eplusAnnihilation & operator=(const G4eplu << 59 G4double GetMeanFreePath(const G4Track& aTrack, 92 G4eplusAnnihilation(const G4eplusAnnihilatio << 60 G4double previousStepSize, 93 << 61 G4ForceCondition* condition); 94 protected: << 62 95 << 63 G4double GetCrossSectionPerAtom(G4DynamicParticle* aDynamicPositron, 96 void InitialiseProcess(const G4ParticleDefin << 64 G4Element* anElement); 97 << 65 98 // Print out of the class parameters << 66 G4VParticleChange* PostStepDoIt(const G4Track& aTrack, 99 void StreamProcessInfo(std::ostream& outFile << 67 const G4Step& aStep); 100 << 68 101 private: << 69 G4double GetMeanLifeTime(const G4Track& aTrack, 102 << 70 G4ForceCondition* condition); 103 G4VPositronAtRestModel* f2GammaAtRestModel{n << 71 104 G4VPositronAtRestModel* f3GammaAtRestModel{n << 72 G4VParticleChange* AtRestDoIt(const G4Track& aTrack, 105 G4int fEntanglementModelID; << 73 const G4Step& aStep); 106 G4bool isInitialised{false}; << 74 107 G4bool fEntangled{false}; << 75 protected: 108 G4bool fApplyCuts{false}; << 76 >> 77 virtual G4double ComputeCrossSectionPerAtom(G4double PositKinEnergy, >> 78 G4double AtomicNumber); >> 79 >> 80 virtual G4double ComputeMeanFreePath(G4double PositKinEnergy, >> 81 G4Material* aMaterial); >> 82 >> 83 private: >> 84 >> 85 // hide assignment operator as private >> 86 G4eplusAnnihilation& operator=(const G4eplusAnnihilation &right); >> 87 G4eplusAnnihilation(const G4eplusAnnihilation& ); >> 88 >> 89 private: >> 90 >> 91 G4PhysicsTable* theCrossSectionTable; // table for crossection >> 92 G4PhysicsTable* theMeanFreePathTable; >> 93 >> 94 G4double LowestEnergyLimit ; // low energy limit of the crossection formula >> 95 G4double HighestEnergyLimit ; // high energy limit of the crossection formula >> 96 G4int NumbBinTable ; // number of bins in the crossection table 109 }; 97 }; 110 98 111 //....oooOO0OOooo........oooOO0OOooo........oo << 99 #include "G4eplusAnnihilation.icc" 112 << 100 113 #endif 101 #endif >> 102 114 103