Import Geant4 10.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2019-12-06 15:12:28 +01:00
parent b2a62ae692
commit 5baee230e9
2997 changed files with 141580 additions and 98673 deletions
@@ -14,10 +14,43 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
19 November 2019 G. Folger (hadr-lepnuc-V10-05-09)
----------------------------------------------
- remove using namespace std and using namespace CLHEP from header files:
G4NeutrinoNucleusModel.hh, G4NuMuNucleusCcModel.hh and G4NuMuNucleusNcModel.hh
13 November 2019 V. Grichine (hadr-lepnuc-V10-05-08)
----------------------------------------------
- G4NuMuNucleusCcModel, G4NuMuNucleusNcModel, G4NeutrinoNucleusModel, G4NeutrinoElectronCcModel, re-arrangement and clean-up, s-channel in nu-e-cc model
07 November 2019 V. Grichine (hadr-lepnuc-V10-05-07)
----------------------------------------------
- G4NuMuNucleusCcModel, G4NuMuNucleusNcModel, G4NeutrinoNucleusModel, coverity fixes and clean-up
04 November 2019 V. Grichine (hadr-lepnuc-V10-05-06)
----------------------------------------------
- G4NuMuNucleusCcModel, off-shell kintmatics, fixes in ApplyYourself, SampleLVkr and CoherenPion, new method RecoilDeexcitation to deexcite recoin nucleus
15 October 2019 V. Grichine (hadr-lepnuc-V10-05-05)
----------------------------------------------
- G4NuMuNucleusCcModel, 1p1h momentum sampling according to AS model, precompound interface was added
11 October 2019 V. Grichine (hadr-lepnuc-V10-05-04)
----------------------------------------------
- G4NeutrinoNucleusModel, two methods added for excitation energy and nucleon momentum sampling
25 August 2019 V. Grichine (hadr-lepnuc-V10-05-03)
----------------------------------------------
- bug fixed in G4NuMuNucelusCc(Nc)Model, m->e in nucleon 4-vectors, when nucleon move, iTeMax->100
03 July 2019 V. Grichine (hadr-lepnuc-V10-05-02)
----------------------------------------------
- bug fixed in G4NuMuNucelusCc(Nc)Model, indexes of x-, Q- arrays out of boundaries
20 June 2019 V. Grichine (hadr-lepnuc-V10-05-01)
----------------------------------------------
- bug fixed in G4NuMuNucelusCc(Nc)Model, kinematics of quasi-elastic neutrino scattering
---------------------------------------------------------------
03 May 2019 V. Grichine (hadr-lepnuc-V10-05-00)
----------------------------------------------
@@ -75,6 +75,11 @@ private:
G4ParticleDefinition* theNeutrinoE;
G4ParticleDefinition* theAntiNeutrinoE;
G4ParticleDefinition* theNeutrinoMu;
G4ParticleDefinition* theAntiNeutrinoMu;
G4ParticleDefinition* theNeutrinoTau;
G4ParticleDefinition* theAntiNeutrinoTau;
G4ParticleDefinition* theMuonMinus;
G4ParticleDefinition* theTauMinus;
@@ -46,11 +46,8 @@
#include "G4NucleiProperties.hh"
#include "G4LorentzVector.hh"
using namespace std;
using namespace CLHEP;
class G4ParticleDefinition;
// class G4VPreCompoundModel;
class G4PreCompoundModel;
// class G4CascadeInterface;
// class G4BinaryCascade;
// class G4TheoFSGenerator;
@@ -58,6 +55,9 @@ class G4ParticleDefinition;
// class G4ExcitedStringDecay;
// class G4INCLXXInterface;
class G4Nucleus;
class G4Fragment;
class G4GeneratorPrecompoundInterface;
class G4ExcitationHandler;
class G4NeutrinoNucleusModel : public G4HadronicInteraction
{
@@ -73,18 +73,7 @@ public:
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile & aTrack,
G4Nucleus & targetNucleus)=0;
////////// KR excitation kinematics ////////////////////
/*
void SampleLVkr(const G4HadProjectile & aTrack, G4Nucleus & targetNucleus);
G4double SampleXkr(G4double energy);
G4double GetXkr(G4int iEnergy, G4double prob);
G4double SampleQkr(G4double energy, G4double xx);
G4double GetQkr(G4int iE, G4int jX, G4double prob);
*/
//////// fragmentation functions /////////////////////////
//////// fragmentation functions /////////////////////////
void ClusterDecay( G4LorentzVector & lvX, G4int qX);
@@ -92,6 +81,8 @@ public:
void FinalBarion( G4LorentzVector & lvB, G4int qB, G4int pdgB);
void RecoilDeexcitation( G4Fragment& fragment);
void FinalMeson( G4LorentzVector & lvM, G4int qM, G4int pdgM);
void CoherentPion( G4LorentzVector & lvP, G4int pdgP, G4Nucleus & targetNucleus);
@@ -126,11 +117,11 @@ public:
G4LorentzVector GetLVt(){return fLVt;};
G4LorentzVector GetLVcpi(){return fLVcpi;};
G4double GetMinNuMuEnergy(){ return fMu + 0.5*fMu*fMu/fM1 + 4.*MeV; }; // kinematics + accuracy for sqrts
G4double GetMinNuMuEnergy(){ return fMu + 0.5*fMu*fMu/fM1 + 4.*CLHEP::MeV; }; // kinematics + accuracy for sqrts
G4double ThresholdEnergy(G4double mI, G4double mF, G4double mP) // for cluster decay
{
G4double w = sqrt(fW2);
G4double w = std::sqrt(fW2);
return w + 0.5*( (mP+mF)*(mP+mF)-(w+mI)*(w+mI) )/mI;
};
G4double FinalMomentum(G4double mI, G4double mF, G4double mP, G4LorentzVector lvX); // for cluster decay
@@ -139,7 +130,10 @@ public:
G4double FermiMomentum( G4Nucleus & targetNucleus);
G4double NucleonMomentum( G4Nucleus & targetNucleus);
G4double GetEx( G4int A, G4bool fP );
G4double GgSampleNM(G4Nucleus & nucl);
G4int GetEnergyIndex(G4double energy);
G4double GetNuMuQeTotRat(G4int index, G4double energy);
@@ -150,13 +144,13 @@ public:
protected:
// G4ParticleDefinition* theMuonMinus;
// G4ParticleDefinition* theMuonPlus;
G4ParticleDefinition* theMuonMinus;
G4ParticleDefinition* theMuonPlus;
G4double fSin2tW; // sin^2theta_Weinberg
G4double fCutEnergy; // minimal recoil electron energy detected
G4int fNbin, fIndex, fEindex, fXindex, fOnePionIndex, fPDGencoding;
G4int fNbin, fIndex, fEindex, fXindex, fQindex, fOnePionIndex, fPDGencoding;
G4bool fCascade, fString, fProton, f2p2h, fBreak;
G4double fNuEnergy, fQ2, fQtransfer, fXsample;
@@ -166,19 +160,12 @@ protected:
G4double fEmu, fEmuPi, fEx, fMr, fCosTheta, fCosThetaPi; // final lepton
G4LorentzVector fLVh, fLVl, fLVt, fLVcpi;
/*
G4VPreCompoundModel* fPrecoModel;
G4TheoFSGenerator* theFTFP;
G4TheoFSGenerator* theQGSP;
G4GeneratorPrecompoundInterface* fPrecoInterface;
G4PreCompoundModel* fPreCompound;
G4ExcitationHandler* fDeExcitation;
G4LundStringFragmentation* theFragmentation;
G4ExcitedStringDecay* theStringDecay;
G4CascadeInterface* theBertini;
// G4BinaryCascade* theBinary;
// G4INCLXXInterface* theINCLXX;
*/
G4Nucleus* fRecoil;
static const G4int fResNumber;
@@ -47,18 +47,10 @@
#include "G4LorentzVector.hh"
#include "G4Threading.hh"
using namespace std;
using namespace CLHEP;
class G4ParticleDefinition;
class G4VPreCompoundModel;
class G4CascadeInterface;
class G4BinaryCascade;
class G4TheoFSGenerator;
class G4LundStringFragmentation;
class G4ExcitedStringDecay;
class G4INCLXXInterface;
class G4PreCompoundModel;
class G4Nucleus;
class G4Fragment;
class G4NuMuNucleusCcModel : public G4NeutrinoNucleusModel // G4HadronicInteraction
{
@@ -86,104 +78,18 @@ public:
G4double SampleQkr(G4double energy, G4double xx);
G4double GetQkr(G4int iE, G4int jX, G4double prob);
//////// fragmentation functions /////////////////////////
void ClusterDecay( G4LorentzVector & lvX, G4int qX);
void MesonDecay( G4LorentzVector & lvX, G4int qX);
void FinalBarion( G4LorentzVector & lvB, G4int qB, G4int pdgB);
void FinalMeson( G4LorentzVector & lvM, G4int qM, G4int pdgM);
void CoherentPion( G4LorentzVector & lvP, G4int pdgP, G4Nucleus & targetNucleus);
/*
// set/get class fields
void SetCutEnergy(G4double ec){fCutEnergy=ec;};
G4double GetCutEnergy(){return fCutEnergy;};
G4double GetNuEnergy(){return fNuEnergy;};
G4double GetQtransfer(){return fQtransfer;};
G4double GetQ2(){return fQ2;};
G4double GetXsample(){return fXsample;};
G4int GetPDGencoding(){return fPDGencoding;};
G4bool GetCascade(){return fCascade;};
G4bool GetString(){return fString;};
G4double GetCosTheta(){return fCosTheta;};
G4double GetEmu(){return fEmu;};
G4double GetEx(){return fEx;};
G4double GetMuMass(){return fMu;};
G4double GetW2(){return fW2;};
G4double GetM1(){return fM1;};
G4double GetMr(){return fMr;};
G4double GetTr(){return fTr;};
G4double GetDp(){return fDp;};
G4LorentzVector GetLVl(){return fLVl;};
G4LorentzVector GetLVh(){return fLVh;};
G4LorentzVector GetLVt(){return fLVt;};
G4LorentzVector GetLVcpi(){return fLVcpi;};
*/
G4double GetMinNuMuEnergy(){ return fMu + 0.5*fMu*fMu/fM1 + 4.*MeV; }; // kinematics + accuracy for sqrts
G4double GetMinNuMuEnergy(){ return fMu + 0.5*fMu*fMu/fM1 + 4.*CLHEP::MeV; }; // kinematics + accuracy for sqrts
G4double ThresholdEnergy(G4double mI, G4double mF, G4double mP) // for cluster decay
{
G4double w = sqrt(fW2);
G4double w = std::sqrt(fW2);
return w + 0.5*( (mP+mF)*(mP+mF)-(w+mI)*(w+mI) )/mI;
};
G4double FinalMomentum(G4double mI, G4double mF, G4double mP, G4LorentzVector lvX); // for cluster decay
// nucleon binding
// G4double FermiMomentum( G4Nucleus & targetNucleus);
// G4double NucleonMomentum( G4Nucleus & targetNucleus);
G4int GetEnergyIndex(G4double energy);
G4double GetNuMuQeTotRat(G4int index, G4double energy);
G4int GetOnePionIndex(G4double energy);
G4double GetNuMuOnePionProb(G4int index, G4double energy);
virtual void ModelDescription(std::ostream&) const;
private:
G4ParticleDefinition* theMuonMinus;
G4ParticleDefinition* theMuonPlus;
G4double fSin2tW; // sin^2theta_Weinberg
G4double fCutEnergy; // minimal recoil electron energy detected
G4int fNbin, fIndex, fEindex, fXindex, fOnePionIndex, fPDGencoding;
G4bool fCascade, fString, fProton, f2p2h, fBreak;
G4double fNuEnergy, fQ2, fQtransfer, fXsample;
G4double fM1, fM2, fMt, fMu, fW2, fMpi, fW2pi, fMinNuEnergy, fDp, fTr;
G4double fEmu, fEmuPi, fEx, fMr, fCosTheta, fCosThetaPi; // final lepton
G4LorentzVector fLVh, fLVl, fLVt, fLVcpi;
/*
G4VPreCompoundModel* fPrecoModel;
G4TheoFSGenerator* theFTFP;
G4TheoFSGenerator* theQGSP;
G4LundStringFragmentation* theFragmentation;
G4ExcitedStringDecay* theStringDecay;
G4CascadeInterface* theBertini;
G4BinaryCascade* theBinary;
G4INCLXXInterface* theINCLXX;
G4Nucleus* fRecoil;
*/
static const G4int fResNumber;
static const G4double fResMass[6]; // [fResNumber];
@@ -208,11 +114,6 @@ private:
static const G4double fNuMuResQ[50][50];
static const G4double fNuMuEnergy[50];
static const G4double fNuMuQeTotRat[50];
static const G4double fOnePionEnergy[58];
static const G4double fOnePionProb[58];
G4bool fData, fMaster; // for one initialisation only
#ifdef G4MULTITHREADED
@@ -40,16 +40,13 @@
#define G4NuMuNucleusNcModel_h 1
#include "globals.hh"
#include "G4HadronicInteraction.hh"
#include "G4NeutrinoNucleusModel.hh"
#include "G4HadProjectile.hh"
#include "G4Nucleus.hh"
#include "G4NucleiProperties.hh"
#include "G4LorentzVector.hh"
#include "G4Threading.hh"
using namespace std;
using namespace CLHEP;
class G4ParticleDefinition;
class G4VPreCompoundModel;
class G4CascadeInterface;
@@ -60,7 +57,7 @@ class G4ExcitedStringDecay;
class G4INCLXXInterface;
class G4Nucleus;
class G4NuMuNucleusNcModel : public G4HadronicInteraction
class G4NuMuNucleusNcModel : public G4NeutrinoNucleusModel
{
public:
@@ -86,103 +83,23 @@ public:
G4double SampleQkr(G4double energy, G4double xx);
G4double GetQkr(G4int iE, G4int jX, G4double prob);
//////// fragmentation functions /////////////////////////
void ClusterDecay( G4LorentzVector & lvX, G4int qX);
void MesonDecay( G4LorentzVector & lvX, G4int qX);
void FinalBarion( G4LorentzVector & lvB, G4int qB, G4int pdgB);
void FinalMeson( G4LorentzVector & lvM, G4int qM, G4int pdgM);
void CoherentPion( G4LorentzVector & lvP, G4int pdgP, G4Nucleus & targetNucleus);
// set/get class fields
void SetCutEnergy(G4double ec){fCutEnergy=ec;};
G4double GetCutEnergy(){return fCutEnergy;};
G4double GetNuEnergy(){return fNuEnergy;};
G4double GetQtransfer(){return fQtransfer;};
G4double GetQ2(){return fQ2;};
G4double GetXsample(){return fXsample;};
G4int GetPDGencoding(){return fPDGencoding;};
G4bool GetCascade(){return fCascade;};
G4bool GetString(){return fString;};
G4double GetCosTheta(){return fCosTheta;};
G4double GetEmu(){return fEmu;};
G4double GetEx(){return fEx;};
G4double GetNuMuMass(){return fMnumu;};
G4double GetW2(){return fW2;};
G4double GetM1(){return fM1;};
G4double GetMr(){return fMr;};
G4double GetTr(){return fTr;};
G4double GetDp(){return fDp;};
G4LorentzVector GetLVl(){return fLVl;};
G4LorentzVector GetLVh(){return fLVh;};
G4LorentzVector GetLVt(){return fLVt;};
G4LorentzVector GetLVcpi(){return fLVcpi;};
G4double GetMinNuMuEnergy(){ return fMnumu + 0.5*fMnumu*fMnumu/fM1 + 4.*keV; }; // kinematics + accuracy for sqrts
G4double GetMinNuMuEnergy(){ return fMnumu + 0.5*fMnumu*fMnumu/fM1 + 4.*CLHEP::keV; }; // kinematics + accuracy for sqrts
G4double ThresholdEnergy(G4double mI, G4double mF, G4double mP) // for cluster decay
{
G4double w = sqrt(fW2);
G4double w = std::sqrt(fW2);
return w + 0.5*( (mP+mF)*(mP+mF)-(w+mI)*(w+mI) )/mI;
};
G4double FinalMomentum(G4double mI, G4double mF, G4double mP, G4LorentzVector lvX); // for cluster decay
// nucleon binding
G4double FermiMomentum( G4Nucleus & targetNucleus);
G4double NucleonMomentum( G4Nucleus & targetNucleus);
G4int GetEnergyIndex(G4double energy);
G4double GetNuMuQeTotRat(G4int index, G4double energy);
G4int GetOnePionIndex(G4double energy);
G4double GetNuMuOnePionProb(G4int index, G4double energy);
virtual void ModelDescription(std::ostream&) const;
private:
G4ParticleDefinition* theNuMu;
G4ParticleDefinition* theANuMu;
G4double fSin2tW; // sin^2theta_Weinberg
G4double fCutEnergy; // minimal recoil electron energy detected
G4int fNbin, fIndex, fEindex, fXindex, fOnePionIndex, fPDGencoding;
G4bool fCascade, fString, fProton, f2p2h, fBreak;
G4double fMnumu; // = 0 for <f|-state
G4double fNuEnergy, fQ2, fQtransfer, fXsample;
G4double fM1, fM2, fMt, fMnumu, fW2, fMpi, fW2pi, fMinNuEnergy, fDp, fTr;
G4double fEmu, fEmuPi, fEx, fMr, fCosTheta, fCosThetaPi; // final lepton
G4LorentzVector fLVh, fLVl, fLVt, fLVcpi;
/*
G4VPreCompoundModel* fPrecoModel;
G4TheoFSGenerator* theFTFP;
G4TheoFSGenerator* theQGSP;
G4LundStringFragmentation* theFragmentation;
G4ExcitedStringDecay* theStringDecay;
G4CascadeInterface* theBertini;
G4BinaryCascade* theBinary;
G4INCLXXInterface* theINCLXX;
*/
G4Nucleus* fRecoil;
static const G4int fResNumber;
static const G4double fResMass[6]; // [fResNumber];
@@ -207,12 +124,7 @@ private:
static const G4double fNuMuResQ[50][50];
static const G4double fNuMuEnergy[50];
static const G4double fNuMuQeTotRat[50];
static const G4double fOnePionEnergy[58];
static const G4double fOnePionProb[58];
G4bool fData, fMaster; // for one initialisation only
#ifdef G4MULTITHREADED
@@ -37,6 +37,11 @@
#include "Randomize.hh"
#include "G4NeutrinoE.hh"
#include "G4AntiNeutrinoE.hh"
#include "G4NeutrinoMu.hh"
#include "G4AntiNeutrinoMu.hh"
#include "G4NeutrinoTau.hh"
#include "G4AntiNeutrinoTau.hh"
#include "G4MuonMinus.hh"
#include "G4TauMinus.hh"
#include "G4HadronicParameters.hh"
@@ -53,6 +58,13 @@ G4NeutrinoElectronCcModel::G4NeutrinoElectronCcModel(const G4String& name)
theNeutrinoE = G4NeutrinoE::NeutrinoE();
theAntiNeutrinoE = G4AntiNeutrinoE::AntiNeutrinoE();
theNeutrinoMu = G4NeutrinoMu::NeutrinoMu();
theAntiNeutrinoMu = G4AntiNeutrinoMu::AntiNeutrinoMu();
theNeutrinoTau = G4NeutrinoTau::NeutrinoTau();
theAntiNeutrinoTau = G4AntiNeutrinoTau::AntiNeutrinoTau();
theMuonMinus = G4MuonMinus::MuonMinus();
theTauMinus = G4TauMinus::TauMinus();
@@ -85,19 +97,18 @@ G4bool G4NeutrinoElectronCcModel::IsApplicable(const G4HadProjectile & aPart,
{
G4bool result = false;
G4String pName = aPart.GetDefinition()->GetParticleName();
if(pName == "anti_nu_mu" || pName == "anti_nu_tau") return result; // no cc for anti_nu_(mu,tau)
G4double minEnergy = 0., energy = aPart.GetTotalEnergy();
G4double fmass, emass = electron_mass_c2;
if( pName == "nu_mu" || pName == "anti_nu_mu" ) fmass = theMuonMinus->GetPDGMass();
else if( pName == "nu_tau" || pName == "anti_nu_tau" ) fmass = theTauMinus->GetPDGMass();
else fmass = emass;
if( pName == "nu_mu" ) fmass = theMuonMinus->GetPDGMass();
else if( pName == "nu_tau" ) fmass = theTauMinus->GetPDGMass();
else fmass = emass;
minEnergy = (fmass-emass)*(fmass+emass)/emass;
SetMinEnergy( minEnergy );
if( ( pName == "nu_mu" || pName == "anti_nu_mu" ||
pName == "nu_tau" || pName == "anti_nu_tau" ) &&
energy > minEnergy )
if( ( pName == "nu_mu" || pName == "nu_tau" || pName == "anti_nu_e" ) && energy > minEnergy )
{
result = true;
}
@@ -122,9 +133,9 @@ G4HadFinalState* G4NeutrinoElectronCcModel::ApplyYourself(
G4String pName = aParticle->GetDefinition()->GetParticleName();
G4double minEnergy(0.), fmass(0.), emass = electron_mass_c2;
if( pName == "nu_mu" || pName == "anti_nu_mu" ) fmass = theMuonMinus->GetPDGMass();
else if( pName == "nu_tau" || pName == "anti_nu_tau" ) fmass = theTauMinus->GetPDGMass();
else fmass = emass;
if( pName == "nu_mu" ) fmass = theMuonMinus->GetPDGMass();
else if( pName == "nu_tau" ) fmass = theTauMinus->GetPDGMass();
else fmass = emass;
minEnergy = (fmass-emass)*(fmass+emass)/emass;
@@ -150,8 +161,8 @@ G4HadFinalState* G4NeutrinoElectronCcModel::ApplyYourself(
G4ThreeVector eP( sint*std::cos(phi), sint*std::sin(phi), cost );
if( pName == "nu_mu" || pName == "anti_nu_mu" ) massf = theMuonMinus->GetPDGMass();
else if( pName == "nu_tau" || pName == "anti_nu_tau") massf = theTauMinus->GetPDGMass();
if( pName == "nu_mu" ) massf = theMuonMinus->GetPDGMass();
else if( pName == "nu_tau" ) massf = theTauMinus->GetPDGMass();
massf2 = massf*massf;
@@ -171,15 +182,13 @@ G4HadFinalState* G4NeutrinoElectronCcModel::ApplyYourself(
{
aNu = new G4DynamicParticle( theNeutrinoE, lvp2 );
}
else if( pName == "anti_nu_mu" || pName == "anti_nu_tau")
{
aNu = new G4DynamicParticle( theAntiNeutrinoE, lvp2 );
}
if( pName == "nu_mu" || pName == "anti_nu_mu")
else if( pName == "anti_nu_e" ) aNu = new G4DynamicParticle( theAntiNeutrinoMu, lvp2 ); // s-channel for mu (tau later)
if( pName == "nu_mu" || pName == "anti_nu_e")
{
aLept = new G4DynamicParticle( theMuonMinus, lvt2 );
}
else if( pName == "nu_tau" || pName == "anti_nu_tau")
else if( pName == "nu_tau" ) // || pName == "anti_nu_tau")
{
aLept = new G4DynamicParticle( theTauMinus, lvt2 );
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff