Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-13 08:21:05

0001 
0002 #ifndef G4HepEmPositronInteractionAnnihilation_HH
0003 #define G4HepEmPositronInteractionAnnihilation_HH
0004 
0005 #include "G4HepEmMacros.hh"
0006 
0007 class  G4HepEmTLData;
0008 class  G4HepEmRandomEngine;
0009 
0010 // e+ annihilation to two gamma interaction described by the Heitler model.
0011 // Used between 0 eV - 100 TeV primary e+ kinetic energies i.e. 
0012 // covers both in-flight and at-rest annihilation.
0013 class G4HepEmPositronInteractionAnnihilation {
0014 private:
0015   G4HepEmPositronInteractionAnnihilation() = delete;
0016 
0017 public:
0018   static void Perform(G4HepEmTLData* tlData, bool isatrest);
0019 
0020   // e+ is already at rest case
0021   static void AnnihilateAtRest(G4HepEmTLData* tlData);
0022   // e+ is in-flight case
0023   static void AnnihilateInFlight(G4HepEmTLData* tlData);
0024 
0025   G4HepEmHostDevice
0026   static void SampleEnergyAndDirectionsInFlight(const double thePrimEkin, const double *thePrimDir,
0027                                                 double *theGamma1Ekin, double *theGamma1Dir,
0028                                                 double *theGamma2Ekin, double *theGamma2Dir,
0029                                                 G4HepEmRandomEngine* rnge);
0030 };
0031 
0032 #endif // G4HepEmPositronInteractionAnnihilation_HH