Import Geant4 10.6.0 source tree
This commit is contained in:
@@ -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
Reference in New Issue
Block a user