Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NeutrinoPhysics Class Reference

#include <G4NeutrinoPhysics.hh>

+ Inheritance diagram for G4NeutrinoPhysics:

Public Member Functions

 G4NeutrinoPhysics (G4int ver=1)
 
 ~G4NeutrinoPhysics () override
 
void ConstructParticle () override
 
void ConstructProcess () override
 
void NuETotXscActivated (G4bool val)
 
void SetNuOscillation (G4bool val)
 
void SetNuEleCcBias (G4double bf)
 
void SetNuEleNcBias (G4double bf)
 
void SetNuNucleusBias (G4double bf)
 
void SetNuOscDistanceBias (G4double bf)
 
void SetNuDetectorName (const G4String &dn)
 
void SetNuOscDistanceName (const G4String &dn)
 
G4NeutrinoPhysicsoperator= (const G4NeutrinoPhysics &right)=delete
 
 G4NeutrinoPhysics (const G4NeutrinoPhysics &)=delete
 
- Public Member Functions inherited from G4VPhysicsConstructor
 G4VPhysicsConstructor (const G4String &="")
 
 G4VPhysicsConstructor (const G4String &name, G4int physics_type)
 
virtual ~G4VPhysicsConstructor ()
 
void SetPhysicsName (const G4String &="")
 
const G4StringGetPhysicsName () const
 
void SetPhysicsType (G4int)
 
G4int GetPhysicsType () const
 
G4int GetInstanceID () const
 
virtual void TerminateWorker ()
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
 
- Protected Types inherited from G4VPhysicsConstructor
using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
 
- Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 
PhysicsBuilder_V GetBuilders () const
 
void AddBuilder (G4PhysicsBuilderInterface *bld)
 
- Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel = 0
 
G4String namePhysics = ""
 
G4int typePhysics = 0
 
G4ParticleTabletheParticleTable = nullptr
 
G4int g4vpcInstanceID = 0
 
- Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 45 of file G4NeutrinoPhysics.hh.

Constructor & Destructor Documentation

◆ G4NeutrinoPhysics() [1/2]

G4NeutrinoPhysics::G4NeutrinoPhysics ( G4int ver = 1)

Definition at line 88 of file G4NeutrinoPhysics.cc.

88 :
89 G4VPhysicsConstructor("NeutrinoPhys"),
90 verbose(ver)
91{
92 theMessenger = new G4NeutrinoPhysicsMessenger(this);
93 if(verbose > 1) G4cout << "### G4NeutrinoPhysics" << G4endl;
94}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
G4VPhysicsConstructor(const G4String &="")

◆ ~G4NeutrinoPhysics()

G4NeutrinoPhysics::~G4NeutrinoPhysics ( )
override

Definition at line 96 of file G4NeutrinoPhysics.cc.

97{
98 delete theMessenger;
99}

◆ G4NeutrinoPhysics() [2/2]

G4NeutrinoPhysics::G4NeutrinoPhysics ( const G4NeutrinoPhysics & )
delete

Member Function Documentation

◆ ConstructParticle()

void G4NeutrinoPhysics::ConstructParticle ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 143 of file G4NeutrinoPhysics.cc.

144{
152}
static G4AntiNeutrinoE * AntiNeutrinoE()
static G4AntiNeutrinoMu * AntiNeutrinoMu()
static G4AntiNeutrinoTau * AntiNeutrinoTau()
static G4Electron * Electron()
Definition G4Electron.cc:91
static G4NeutrinoE * NeutrinoE()
static G4NeutrinoMu * NeutrinoMu()
static G4NeutrinoTau * NeutrinoTau()

◆ ConstructProcess()

void G4NeutrinoPhysics::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 154 of file G4NeutrinoPhysics.cc.

155{
156 const G4ParticleDefinition* p[6] = {
163 };
164
165 // neutrino vacuum oscillation process
166 if (fNuOscillation) {
167 auto theNuVacOscProcess = new G4NuVacOscProcess(fNuOscDistanceName);
168 theNuVacOscProcess->SetBiasingFactor(fNuOscDistanceBias);
169
170
171 for (G4int i=0; i<6; ++i) {
172 p[i]->GetProcessManager()->AddDiscreteProcess(theNuVacOscProcess);
173 }
174 }
175
176 // neutrino-electron process
177 auto theNuEleProcess = new G4NeutrinoElectronProcess(fNuDetectorName);
179
180 if (fNuETotXscActivated) {
181 G4double bftot = std::max(fNuEleCcBias, fNuEleNcBias);
182 theNuEleProcess->SetBiasingFactor(bftot);
183 }
184 else {
185 theNuEleProcess->SetBiasingFactors(fNuEleCcBias, fNuEleNcBias);
186 theNuEleTotXsc->SetBiasingFactors(fNuEleCcBias, fNuEleNcBias);
187 }
188 theNuEleProcess->AddDataSet(theNuEleTotXsc);
189
192 theNuEleProcess->RegisterMe(ccModel);
193 theNuEleProcess->RegisterMe(ncModel);
194
195 for (G4int i=0; i<6; ++i) {
196 p[i]->GetProcessManager()->AddDiscreteProcess(theNuEleProcess);
197 }
198
199 // nu_mu nucleus interactions
200 auto theNuMuNucleusProcess = new G4MuNeutrinoNucleusProcess(fNuDetectorName);
201 auto theNuMuNucleusTotXsc = new G4MuNeutrinoNucleusTotXsc();
202
203 if (fNuETotXscActivated) {
204 theNuMuNucleusProcess->SetBiasingFactor(fNuNucleusBias);
205 }
206 theNuMuNucleusProcess->AddDataSet(theNuMuNucleusTotXsc);
207
208 G4NuMuNucleusCcModel* numunuclcc = new G4NuMuNucleusCcModel();
209 G4NuMuNucleusNcModel* numunuclnc = new G4NuMuNucleusNcModel();
210 G4ANuMuNucleusCcModel* anumunuclcc = new G4ANuMuNucleusCcModel();
211 G4ANuMuNucleusNcModel* anumunuclnc = new G4ANuMuNucleusNcModel();
212
213 theNuMuNucleusProcess->RegisterMe(numunuclcc);
214 theNuMuNucleusProcess->RegisterMe(numunuclnc);
215 theNuMuNucleusProcess->RegisterMe(anumunuclcc);
216 theNuMuNucleusProcess->RegisterMe(anumunuclnc);
217
218 for (G4int i=2; i<=3; ++i) {
219 p[i]->GetProcessManager()->AddDiscreteProcess(theNuMuNucleusProcess);
220 }
221
222 // nu_tau nucleus interactions
223 auto theNuTauNucleusProcess = new G4TauNeutrinoNucleusProcess(fNuDetectorName);
224 auto theNuTauNucleusTotXsc = new G4TauNeutrinoNucleusTotXsc();
225
226 if(fNuETotXscActivated) {
227 theNuTauNucleusProcess->SetBiasingFactor(fNuNucleusBias);
228 }
229 theNuTauNucleusProcess->AddDataSet(theNuTauNucleusTotXsc);
230
231 G4NuTauNucleusCcModel* nutaunuclcc = new G4NuTauNucleusCcModel();
232 G4NuTauNucleusNcModel* nutaunuclnc = new G4NuTauNucleusNcModel();
235
236 theNuTauNucleusProcess->RegisterMe(nutaunuclcc);
237 theNuTauNucleusProcess->RegisterMe(nutaunuclnc);
238 theNuTauNucleusProcess->RegisterMe(anutaunuclcc);
239 theNuTauNucleusProcess->RegisterMe(anutaunuclnc);
240
241 for (G4int i=4; i<=5; ++i) {
242 p[i]->GetProcessManager()->AddDiscreteProcess(theNuTauNucleusProcess);
243 }
244
245 // nu_e nucleus interactions
246 auto theNuElNucleusProcess = new G4ElNeutrinoNucleusProcess(fNuDetectorName);
247 auto theNuElNucleusTotXsc = new G4ElNeutrinoNucleusTotXsc();
248
249 if (fNuETotXscActivated) {
250 theNuElNucleusProcess->SetBiasingFactor(fNuNucleusBias);
251 }
252 theNuElNucleusProcess->AddDataSet(theNuElNucleusTotXsc);
253
254 G4NuElNucleusCcModel* nuelnuclcc = new G4NuElNucleusCcModel();
255 G4NuElNucleusNcModel* nuelnuclnc = new G4NuElNucleusNcModel();
256 G4ANuElNucleusCcModel* anuelnuclcc = new G4ANuElNucleusCcModel();
257 G4ANuElNucleusNcModel* anuelnuclnc = new G4ANuElNucleusNcModel();
258
259 theNuElNucleusProcess->RegisterMe(nuelnuclcc);
260 theNuElNucleusProcess->RegisterMe(nuelnuclnc);
261 theNuElNucleusProcess->RegisterMe(anuelnuclcc);
262 theNuElNucleusProcess->RegisterMe(anuelnuclnc);
263
264 for (G4int i=0; i<=1; ++i) {
265 p[i]->GetProcessManager()->AddDiscreteProcess(theNuElNucleusProcess);
266 }
267}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
void SetBiasingFactors(G4double bfCc, G4double bfNc)
G4ProcessManager * GetProcessManager() const
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)

◆ NuETotXscActivated()

void G4NeutrinoPhysics::NuETotXscActivated ( G4bool val)

Definition at line 101 of file G4NeutrinoPhysics.cc.

102{
103 fNuETotXscActivated = val;
104}

Referenced by G4NeutrinoPhysicsMessenger::SetNewValue().

◆ operator=()

G4NeutrinoPhysics & G4NeutrinoPhysics::operator= ( const G4NeutrinoPhysics & right)
delete

◆ SetNuDetectorName()

void G4NeutrinoPhysics::SetNuDetectorName ( const G4String & dn)

Definition at line 131 of file G4NeutrinoPhysics.cc.

132{
133 fNuDetectorName = dn;
134}

Referenced by G4NeutrinoPhysicsMessenger::SetNewValue().

◆ SetNuEleCcBias()

void G4NeutrinoPhysics::SetNuEleCcBias ( G4double bf)

Definition at line 111 of file G4NeutrinoPhysics.cc.

112{
113 if(bf > 0.0) fNuEleCcBias = bf;
114}

Referenced by G4NeutrinoPhysicsMessenger::SetNewValue().

◆ SetNuEleNcBias()

void G4NeutrinoPhysics::SetNuEleNcBias ( G4double bf)

Definition at line 116 of file G4NeutrinoPhysics.cc.

117{
118 if(bf > 0.0) fNuEleNcBias = bf;
119}

Referenced by G4NeutrinoPhysicsMessenger::SetNewValue().

◆ SetNuNucleusBias()

void G4NeutrinoPhysics::SetNuNucleusBias ( G4double bf)

Definition at line 121 of file G4NeutrinoPhysics.cc.

122{
123 if(bf > 0.0) fNuNucleusBias = bf;
124}

Referenced by G4NeutrinoPhysicsMessenger::SetNewValue().

◆ SetNuOscDistanceBias()

void G4NeutrinoPhysics::SetNuOscDistanceBias ( G4double bf)

Definition at line 126 of file G4NeutrinoPhysics.cc.

127{
128 if(bf > 0.0) fNuOscDistanceBias = bf;
129}

Referenced by G4NeutrinoPhysicsMessenger::SetNewValue().

◆ SetNuOscDistanceName()

void G4NeutrinoPhysics::SetNuOscDistanceName ( const G4String & dn)

Definition at line 136 of file G4NeutrinoPhysics.cc.

137{
138 fNuOscDistanceName = dn;
139}

Referenced by G4NeutrinoPhysicsMessenger::SetNewValue().

◆ SetNuOscillation()

void G4NeutrinoPhysics::SetNuOscillation ( G4bool val)

Definition at line 106 of file G4NeutrinoPhysics.cc.

107{
108 fNuOscillation = val;
109}

The documentation for this class was generated from the following files: