Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NeutrinoNucleusModel.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// $Id: G4NeutrinoNucleusModel.hh 90228 2015-05-21 08:49:57Z gcosmo $
28//
29// Geant4 Header : G4NeutrinoNucleusModel
30//
31// Author : V.Grichine 12.2.19
32//
33// Modified:
34//
35// Class Description
36// Default model for muon neutrino-nucleus charge current scattering;
37// Class Description - End
38
39#ifndef G4NeutrinoNucleusModel_h
40#define G4NeutrinoNucleusModel_h 1
41
42#include "globals.hh"
44#include "G4HadProjectile.hh"
45#include "G4Nucleus.hh"
46#include "G4NucleiProperties.hh"
47#include "G4LorentzVector.hh"
48
51// class G4CascadeInterface;
52// class G4BinaryCascade;
53// class G4TheoFSGenerator;
54// class G4LundStringFragmentation;
55// class G4ExcitedStringDecay;
56// class G4INCLXXInterface;
57class G4Nucleus;
58class G4Fragment;
61
63{
64public:
65
66 G4NeutrinoNucleusModel(const G4String& name = "neutrino-nucleus");
67
69
70 virtual G4bool IsApplicable(const G4HadProjectile & aTrack,
71 G4Nucleus & targetNucleus);
72
74 G4double GetXkr(G4int iEnergy, G4double prob);
76 G4double GetQkr(G4int iE, G4int jX, G4double prob);
77
79 G4Nucleus & targetNucleus)=0;
80
81 //////// fragmentation functions /////////////////////////
82
83 void ClusterDecay( G4LorentzVector & lvX, G4int qX);
84
85 void MesonDecay( G4LorentzVector & lvX, G4int qX);
86
87 void FinalBarion( G4LorentzVector & lvB, G4int qB, G4int pdgB);
88
89 void RecoilDeexcitation( G4Fragment& fragment);
90
91 void FinalMeson( G4LorentzVector & lvM, G4int qM, G4int pdgM);
92
93 void CoherentPion( G4LorentzVector & lvP, G4int pdgP, G4Nucleus & targetNucleus);
94
95
96 // set/get class fields
97
100
103 G4double GetQ2(){return fQ2;};
105
109
111 G4double GetEmu(){return fEmu;};
112 G4double GetEx(){return fEx;};
114 G4double GetW2(){return fW2;};
115 G4double GetM1(){return fM1;};
116 G4double GetMr(){return fMr;};
117 G4double GetTr(){return fTr;};
118 G4double GetDp(){return fDp;};
119
123
128
129 G4double GetMinNuMuEnergy(){ return fMu + 0.5*fMu*fMu/fM1 + 4.*CLHEP::MeV; }; // kinematics + accuracy for sqrts
130
131 G4double ThresholdEnergy(G4double mI, G4double mF, G4double mP) // for cluster decay
132 {
133 G4double w = std::sqrt(fW2);
134 return w + 0.5*( (mP+mF)*(mP+mF)-(w+mI)*(w+mI) )/mI;
135 };
137 void SetQEratioA( G4double qea ){ fQEratioA = qea; };
138
139
140 G4double FinalMomentum(G4double mI, G4double mF, G4double mP, G4LorentzVector lvX); // for cluster decay
141
142 // nucleon binding
143
144 G4double FermiMomentum( G4Nucleus & targetNucleus);
145 G4double NucleonMomentum( G4Nucleus & targetNucleus);
146
147 G4double GetEx( G4int A, G4bool fP );
149
151 G4double GetNuMuQeTotRat(G4int index, G4double energy);
152
155
157
158 virtual void ModelDescription(std::ostream&) const;
159
160protected:
161
164
165 G4double fSin2tW; // sin^2theta_Weinberg
166 G4double fCutEnergy; // minimal recoil electron energy detected
167
170
172
174
176
178
182
184
185 G4int fSecID; // Creator model ID for the secondaries created by this model
186
187 static const G4int fResNumber;
188 static const G4double fResMass[6]; // [fResNumber];
189
190 static const G4int fClustNumber;
191
192 static const G4double fMesMass[4];
193 static const G4int fMesPDG[4];
194
195 static const G4double fBarMass[4];
196 static const G4int fBarPDG[4];
197
198 static const G4double fNuMuResQ[50][50];
199
200
201 static const G4double fNuMuEnergy[50];
202 static const G4double fNuMuQeTotRat[50];
203 static const G4double fOnePionEnergy[58];
204 static const G4double fOnePionProb[58];
205
207
208 // KR sample distributions, X at E_nu and Q2 at E_nu and X
209
210 static G4double fNuMuXarrayKR[50][51];
211 static G4double fNuMuXdistrKR[50][50];
212 static G4double fNuMuQarrayKR[50][51][51];
213 static G4double fNuMuQdistrKR[50][51][50];
214
215 // QEratio(Z,A,Enu)
216
217 static const G4double fQEnergy[50];
218 static const G4double fANeMuQEratio[50];
219 static const G4double fNeMuQEratio[50];
220
221};
222
223
224
225#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
static const G4double fBarMass[4]
void CoherentPion(G4LorentzVector &lvP, G4int pdgP, G4Nucleus &targetNucleus)
static G4double fNuMuQarrayKR[50][51][51]
virtual void ModelDescription(std::ostream &) const
G4GeneratorPrecompoundInterface * fPrecoInterface
G4double FermiMomentum(G4Nucleus &targetNucleus)
static G4double fNuMuXarrayKR[50][51]
G4double NucleonMomentum(G4Nucleus &targetNucleus)
G4int GetOnePionIndex(G4double energy)
static const G4double fResMass[6]
static const G4int fMesPDG[4]
static const G4double fNuMuEnergy[50]
G4ExcitationHandler * fDeExcitation
G4double SampleXkr(G4double energy)
G4ParticleDefinition * theMuonMinus
static const G4double fQEnergy[50]
G4double SampleQkr(G4double energy, G4double xx)
G4double GetNuMuQeTotRat(G4int index, G4double energy)
G4int GetEnergyIndex(G4double energy)
G4double GetXkr(G4int iEnergy, G4double prob)
void MesonDecay(G4LorentzVector &lvX, G4int qX)
G4double GgSampleNM(G4Nucleus &nucl)
G4double GetNuMuOnePionProb(G4int index, G4double energy)
static const G4double fNeMuQEratio[50]
void FinalMeson(G4LorentzVector &lvM, G4int qM, G4int pdgM)
G4double GetQkr(G4int iE, G4int jX, G4double prob)
static const G4double fMesMass[4]
G4PreCompoundModel * fPreCompound
static const G4int fBarPDG[4]
static G4double fNuMuXdistrKR[50][50]
G4double ThresholdEnergy(G4double mI, G4double mF, G4double mP)
static G4double fNuMuQdistrKR[50][51][50]
G4double CalculateQEratioA(G4int Z, G4int A, G4double energy, G4int nepdg)
static const G4double fNuMuResQ[50][50]
virtual G4bool IsApplicable(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
static const G4double fNuMuQeTotRat[50]
G4double FinalMomentum(G4double mI, G4double mF, G4double mP, G4LorentzVector lvX)
G4ParticleDefinition * theMuonPlus
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)=0
void ClusterDecay(G4LorentzVector &lvX, G4int qX)
void FinalBarion(G4LorentzVector &lvB, G4int qB, G4int pdgB)
static const G4double fOnePionProb[58]
static const G4double fANeMuQEratio[50]
void RecoilDeexcitation(G4Fragment &fragment)
static const G4double fNuMuEnergyLogVector[50]
static const G4double fOnePionEnergy[58]