Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4HadronElastic.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// Geant4 Header : G4HadronElastic
28//
29// Author : V.Ivanchenko 29 June 2009 (redesign old elastic model)
30//
31// Modified:
32//
33// Class Description
34// Default model for elastic scattering; GHEISHA algorithm is used
35// Class Description - End
36
37#ifndef G4HadronElastic_h
38#define G4HadronElastic_h 1
39
40#include "globals.hh"
42#include "G4HadProjectile.hh"
43#include "G4Nucleus.hh"
44#include "G4NucleiProperties.hh"
45
47
49{
50public:
51
52 explicit G4HadronElastic(const G4String& name = "hElasticLHEP");
53
54 ~G4HadronElastic() override;
55
56 // implementation of the G4HadronicInteraction interface
58 G4Nucleus & targetNucleus) override;
59
60 // sample momentum transfer using Lab. momentum
62 G4int Z, G4int A) override;
63
64 G4double GetSlopeCof( const G4int pdg );
65
66 inline void SetLowestEnergyLimit(G4double value);
67
68 inline G4double LowestEnergyLimit() const;
69
71 G4double plab, G4int Z, G4int A);
72
73 void ModelDescription(std::ostream&) const override;
74
75protected:
76
78 G4int secID; // Creator model ID for the recoil
79
80private:
81
82 G4ParticleDefinition* theProton;
83 G4ParticleDefinition* theNeutron;
84 G4ParticleDefinition* theDeuteron;
85 G4ParticleDefinition* theAlpha;
86
87 G4double lowestEnergyLimit;
88 G4int nwarn;
89};
90
92{
93 lowestEnergyLimit = value;
94}
95
97{
98 return lowestEnergyLimit;
99}
100
101inline G4double
103 G4double plab, G4int Z, G4int A)
104{
105 G4double m1 = p->GetPDGMass();
106 G4double m12= m1*m1;
108 return plab*mass2/std::sqrt(m12 + mass2*mass2 + 2.*mass2*std::sqrt(m12 + plab*plab));
109}
110
111#endif
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
~G4HadronElastic() override
G4double LowestEnergyLimit() const
G4double ComputeMomentumCMS(const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
void ModelDescription(std::ostream &) const override
G4double SampleInvariantT(const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A) override
G4double GetSlopeCof(const G4int pdg)
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus) override
void SetLowestEnergyLimit(G4double value)
static G4double GetNuclearMass(const G4double A, const G4double Z)