Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4KaonMinusAbsorptionAtRest.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// File name: G4KaonMinusAbsorptionAtRest.hh
27//
28// Author: Christian V"olcker (Christian.Volcker@cern.ch),
29//
30// Creation date: 10. November 1997
31//
32// -------------------------------------------------------------------
33
34#ifndef G4KaonMinusAbsorptionAtRest_h
35#define G4KaonMinusAbsorptionAtRest_h 1
36
37// Class Description:
38//
39// Process for nuclear absorption of K- at rest.
40// To be used in your physics list in case you need this physics.
41
42#include "globals.hh"
43#include "Randomize.hh"
44#include "G4VRestProcess.hh"
45#include "G4ParticleTypes.hh"
46#include "G4Nucleus.hh"
47#include "G4DynamicParticle.hh"
49#include "G4NucleiProperties.hh"
51
52
53// *********************************************************
55// *********************************************************
56{
57private:
58 // hide assignment operator as private
61public:
62 G4KaonMinusAbsorptionAtRest(const G4String& processName ="KaonMinusAbsorptionAtRest",
63 G4ProcessType aType = fHadronic );
65
66 //override methods...
67public:
69 return( particle == *(G4KaonMinus::KaonMinus()) );
70 }
71
73
75
76 // the main method ...
77 G4VParticleChange* AtRestDoIt(const G4Track& aTrack, const G4Step& aStep);
78
79protected: // why?? might be private....
80 // zero mean lifetime
83 {
84 G4double result = 0;
85 if(aTrack.GetMaterial()->GetNumberOfElements() == 1)
86 if(aTrack.GetMaterial()->GetZ()<1.5) result = DBL_MAX;
87 return result;
88 }
89
90private:
91 // returns proton or neutron with fermi-momentum
92 G4DynamicParticle GetAbsorbingNucleon();
93
94 // returns proton or neutron particle definition;
95 G4ParticleDefinition* SelectAbsorbingNucleon();
96
97 // provides the neutron halo factor for absorption on nucleus surface.
98 // in the G4Nucleus
99 G4double NeutronHaloFactor(G4double Z, G4double N);
100
101 // creates the reaction products
102 G4DynamicParticleVector* KaonNucleonReaction();
103
104 // secondary pion absorption in parent nucleus
105 // if TRUE, then add excitation energy to the Nucleus
106 G4bool AbsorbPionByNucleus(G4DynamicParticle* aPion);
107
108 // secondary Sigma-Lambda conversion
109 // if conversion Done, then add excitation energy to the Nucleus
110 G4DynamicParticle *SigmaLambdaConversion(G4DynamicParticle* aSigma);
111
112 // instance variables ...
113private:
114 // pointer to current stopped hadron
115 const G4DynamicParticle *stoppedHadron;
116
117 // pointer to current target nucleus
118 G4Nucleus* nucleus;
119
120 // some constant parameters
121
122 G4double pionAbsorptionRate;
123
124 // primary production rates ( for absorption on Carbon)
125
126 G4double rateLambdaZeroPiZero;
127 G4double rateSigmaMinusPiPlus;
128 G4double rateSigmaPlusPiMinus;
129 G4double rateSigmaZeroPiZero;
130
131 G4double rateLambdaZeroPiMinus;
132 G4double rateSigmaZeroPiMinus;
133 G4double rateSigmaMinusPiZero;
134
135
136 // Sigma Lambda Conversion rates
137 // for sigma- p -> lambda n
138 // sigma+ n -> lambda p
139 // sigma- n -> lambda
140
141 G4double sigmaPlusLambdaConversionRate;
142 G4double sigmaMinusLambdaConversionRate;
143 G4double sigmaZeroLambdaConversionRate;
144
145};
146
147#endif
148
std::vector< G4DynamicParticle * > G4DynamicParticleVector
G4ForceCondition
G4ProcessType
@ fHadronic
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
G4double GetMeanLifeTime(const G4Track &aTrack, G4ForceCondition *)
void BuildPhysicsTable(const G4ParticleDefinition &)
G4bool IsApplicable(const G4ParticleDefinition &particle)
G4VParticleChange * AtRestDoIt(const G4Track &aTrack, const G4Step &aStep)
void PreparePhysicsTable(const G4ParticleDefinition &)
static G4KaonMinus * KaonMinus()
Definition: G4KaonMinus.cc:113
G4double GetZ() const
Definition: G4Material.cc:604
size_t GetNumberOfElements() const
Definition: G4Material.hh:185
Definition: G4Step.hh:78
G4Material * GetMaterial() const
#define DBL_MAX
Definition: templates.hh:83