LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
MyG4MuIonisationNoDelta Class Reference

#include "MyG4MuIonisationNoDelta.hh"

Inheritance diagram for MyG4MuIonisationNoDelta:

Public Member Functions

 MyG4MuIonisationNoDelta (const G4String &name="muIoni")
 
 ~MyG4MuIonisationNoDelta ()=default
 
virtual G4bool IsApplicable (const G4ParticleDefinition &p) override
 
virtual G4double MinPrimaryEnergy (const G4ParticleDefinition *p, const G4Material *, G4double cut) override
 
virtual void PrintInfo () override
 
virtual void ProcessDescription (std::ostream &) const override
 

Protected Member Functions

virtual void InitialiseEnergyLossProcess (const G4ParticleDefinition *, const G4ParticleDefinition *) override
 

Private Member Functions

MyG4MuIonisationNoDeltaoperator= (const MyG4MuIonisationNoDelta &right)=delete
 
 MyG4MuIonisationNoDelta (const MyG4MuIonisationNoDelta &)=delete
 

Private Attributes

G4double mass
 
G4double ratio
 
const G4ParticleDefinition * theParticle
 
const G4ParticleDefinition * theBaseParticle
 
G4bool isInitialised
 

Detailed Description

Definition at line 87 of file MyG4MuIonisationNoDelta.hh.

Constructor & Destructor Documentation

MyG4MuIonisationNoDelta::MyG4MuIonisationNoDelta ( const G4String name = "muIoni")
explicit

Definition at line 107 of file MyG4MuIonisationNoDelta.cc.

References mass, and ratio.

108  : G4VEnergyLossProcess(name),
109  theParticle(nullptr),
110  theBaseParticle(nullptr),
111  isInitialised(false)
112 {
113  mass = ratio = 0;
114  SetProcessSubType(fIonisation);
115  SetSecondaryParticle(G4Electron::Electron());
116 }
const G4ParticleDefinition * theBaseParticle
const G4ParticleDefinition * theParticle
MyG4MuIonisationNoDelta::~MyG4MuIonisationNoDelta ( )
default
MyG4MuIonisationNoDelta::MyG4MuIonisationNoDelta ( const MyG4MuIonisationNoDelta )
privatedelete

Member Function Documentation

void MyG4MuIonisationNoDelta::InitialiseEnergyLossProcess ( const G4ParticleDefinition *  part,
const G4ParticleDefinition *  bpart 
)
overrideprotectedvirtual

Definition at line 138 of file MyG4MuIonisationNoDelta.cc.

References isInitialised, mass, part, ratio, theBaseParticle, and theParticle.

140 {
141  if(!isInitialised) {
142 
143  theParticle = part;
144  theBaseParticle = bpart;
145 
146  mass = theParticle->GetPDGMass();
147  G4double q = theParticle->GetPDGCharge();
148 
149  G4EmParameters* param = G4EmParameters::Instance();
150  G4double elow = 0.2*MeV;
151  G4double emax = param->MaxKinEnergy();
152  G4double ehigh = std::min(1*GeV, emax);
153 
154  // Bragg peak model
155  if (!EmModel(0)) {
156  if(q > 0.0) { SetEmModel(new G4BraggModel()); }
157  else { SetEmModel(new G4ICRU73QOModel()); }
158  }
159  EmModel(0)->SetLowEnergyLimit(param->MinKinEnergy());
160  EmModel(0)->SetHighEnergyLimit(elow);
161  AddEmModel(1, EmModel(0), new G4IonFluctuations());
162 
163  // high energy fluctuation model
164  if (!FluctModel()) { SetFluctModel(new G4UniversalFluctuation()); }
165 
166  // moderate energy model
167  //if (!EmModel(1)) { SetEmModel(new G4BetheBlochModel()); }
168  if (!EmModel(1)) { SetEmModel(new G4BetheBlochNoDeltaModel()); }
169  EmModel(1)->SetLowEnergyLimit(elow);
170  EmModel(1)->SetHighEnergyLimit(ehigh);
171  AddEmModel(2, EmModel(1), FluctModel());
172 
173  // high energy model
174  if(ehigh < emax) {
175  //if (!EmModel(2)) { SetEmModel(new G4MuBetheBlochModel()); }
176  if (!EmModel(2)) { SetEmModel(new G4BetheBlochNoDeltaModel()); }
177  EmModel(2)->SetLowEnergyLimit(ehigh);
178  EmModel(2)->SetHighEnergyLimit(emax);
179  AddEmModel(3, EmModel(2), FluctModel());
180  }
181  ratio = electron_mass_c2/mass;
182  isInitialised = true;
183  }
184 }
const G4ParticleDefinition * theBaseParticle
const G4ParticleDefinition * theParticle
TString part[npart]
Definition: Style.C:32
G4bool MyG4MuIonisationNoDelta::IsApplicable ( const G4ParticleDefinition &  p)
overridevirtual

Definition at line 120 of file MyG4MuIonisationNoDelta.cc.

121 {
122  return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);
123 }
G4double MyG4MuIonisationNoDelta::MinPrimaryEnergy ( const G4ParticleDefinition *  p,
const G4Material *  ,
G4double  cut 
)
overridevirtual

Definition at line 127 of file MyG4MuIonisationNoDelta.cc.

References mass, ratio, and x.

130 {
131  G4double x = 0.5*cut/electron_mass_c2;
132  G4double gam = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));
133  return mass*(gam - 1.0);
134 }
Float_t x
Definition: compare.C:6
MyG4MuIonisationNoDelta& MyG4MuIonisationNoDelta::operator= ( const MyG4MuIonisationNoDelta right)
privatedelete
void MyG4MuIonisationNoDelta::PrintInfo ( )
overridevirtual

Definition at line 188 of file MyG4MuIonisationNoDelta.cc.

189 {}
void MyG4MuIonisationNoDelta::ProcessDescription ( std::ostream &  out) const
overridevirtual

Definition at line 193 of file MyG4MuIonisationNoDelta.cc.

194 {
195  out << " Muon ionisation with NO delta production";
196  G4VEnergyLossProcess::ProcessDescription(out);
197 }

Member Data Documentation

G4bool MyG4MuIonisationNoDelta::isInitialised
private

Definition at line 123 of file MyG4MuIonisationNoDelta.hh.

Referenced by InitialiseEnergyLossProcess().

G4double MyG4MuIonisationNoDelta::mass
private
G4double MyG4MuIonisationNoDelta::ratio
private
const G4ParticleDefinition* MyG4MuIonisationNoDelta::theBaseParticle
private

Definition at line 122 of file MyG4MuIonisationNoDelta.hh.

Referenced by InitialiseEnergyLossProcess().

const G4ParticleDefinition* MyG4MuIonisationNoDelta::theParticle
private

Definition at line 121 of file MyG4MuIonisationNoDelta.hh.

Referenced by InitialiseEnergyLossProcess().


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