Public Member Functions | List of all members
genie::mueloss::BezrukovBugaevModel Class Reference

Bezrukov-Bugaev model for the energy loss of high energy muons due to photonuclear interactions. Concrete implementation of the MuELossI interface. More...

#include <BezrukovBugaevModel.h>

Inheritance diagram for genie::mueloss::BezrukovBugaevModel:
genie::mueloss::MuELossI genie::Algorithm

Public Member Functions

 BezrukovBugaevModel ()
 
 BezrukovBugaevModel (string config)
 
virtual ~BezrukovBugaevModel ()
 
double dE_dx (double E, MuELMaterial_t material) const
 Implement the MuELossI interface. More...
 
MuELProcess_t Process (void) const
 
- Public Member Functions inherited from genie::mueloss::MuELossI
virtual ~MuELossI ()
 
- Public Member Functions inherited from genie::Algorithm
virtual ~Algorithm ()
 
virtual void Configure (const Registry &config)
 
virtual void Configure (string config)
 
virtual void FindConfig (void)
 
virtual const RegistryGetConfig (void) const
 
RegistryGetOwnedConfig (void)
 
virtual const AlgIdId (void) const
 Get algorithm ID. More...
 
virtual AlgStatus_t GetStatus (void) const
 Get algorithm status. More...
 
virtual bool AllowReconfig (void) const
 
virtual AlgCmp_t Compare (const Algorithm *alg) const
 Compare with input algorithm. More...
 
virtual void SetId (const AlgId &id)
 Set algorithm ID. More...
 
virtual void SetId (string name, string config)
 
const AlgorithmSubAlg (const RgKey &registry_key) const
 
void AdoptConfig (void)
 
void AdoptSubstructure (void)
 
virtual void Print (ostream &stream) const
 Print algorithm info. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from genie::Algorithm
static string BuildParamVectKey (const std::string &comm_name, unsigned int i)
 
static string BuildParamVectSizeKey (const std::string &comm_name)
 
- Protected Member Functions inherited from genie::mueloss::MuELossI
 MuELossI ()
 
 MuELossI (string name)
 
 MuELossI (string name, string config)
 
- Protected Member Functions inherited from genie::Algorithm
 Algorithm ()
 
 Algorithm (string name)
 
 Algorithm (string name, string config)
 
void Initialize (void)
 
void DeleteConfig (void)
 
void DeleteSubstructure (void)
 
RegistryExtractLocalConfig (const Registry &in) const
 
RegistryExtractLowerConfig (const Registry &in, const string &alg_key) const
 Split an incoming configuration Registry into a block valid for the sub-algo identified by alg_key. More...
 
template<class T >
bool GetParam (const RgKey &name, T &p, bool is_top_call=true) const
 
template<class T >
bool GetParamDef (const RgKey &name, T &p, const T &def) const
 
template<class T >
int GetParamVect (const std::string &comm_name, std::vector< T > &v, bool is_top_call=true) const
 Handle to load vectors of parameters. More...
 
int GetParamVectKeys (const std::string &comm_name, std::vector< RgKey > &k, bool is_top_call=true) const
 
int AddTopRegistry (Registry *rp, bool owns=true)
 add registry with top priority, also update ownership More...
 
int AddLowRegistry (Registry *rp, bool owns=true)
 add registry with lowest priority, also update ownership More...
 
int MergeTopRegistry (const Registry &r)
 
int AddTopRegisties (const vector< Registry * > &rs, bool owns=false)
 Add registries with top priority, also udated Ownerships. More...
 
- Protected Attributes inherited from genie::Algorithm
bool fAllowReconfig
 
bool fOwnsSubstruc
 true if it owns its substructure (sub-algs,...) More...
 
AlgId fID
 algorithm name and configuration set More...
 
vector< Registry * > fConfVect
 
vector< boolfOwnerships
 ownership for every registry in fConfVect More...
 
AlgStatus_t fStatus
 algorithm execution status More...
 
AlgMapfOwnedSubAlgMp
 local pool for owned sub-algs (taken out of the factory pool) More...
 

Detailed Description

Bezrukov-Bugaev model for the energy loss of high energy muons due to photonuclear interactions. Concrete implementation of the MuELossI interface.

W.Lohmann, R.Kopp and R.Voss, Energy Loss of Muons in the Energy Range 1-10000 GeV, CERN 85-03

Author
Costas Andreopoulos <constantinos.andreopoulos cern.ch> University of Liverpool & STFC Rutherford Appleton Laboratory

December 10, 2003

Copyright (c) 2003-2020, The GENIE Collaboration For the full text of the license visit http://copyright.genie-mc.org

Definition at line 34 of file BezrukovBugaevModel.h.

Constructor & Destructor Documentation

BezrukovBugaevModel::BezrukovBugaevModel ( )

Definition at line 23 of file BezrukovBugaevModel.cxx.

23  :
24 MuELossI("genie::mueloss::BezrukovBugaevModel")
25 {
26 
27 }
BezrukovBugaevModel::BezrukovBugaevModel ( string  config)

Definition at line 29 of file BezrukovBugaevModel.cxx.

29  :
30 MuELossI("genie::mueloss::BezrukovBugaevModel", config)
31 {
32 
33 }
static Config * config
Definition: config.cpp:1054
BezrukovBugaevModel::~BezrukovBugaevModel ( )
virtual

Definition at line 35 of file BezrukovBugaevModel.cxx.

36 {
37 
38 }

Member Function Documentation

double BezrukovBugaevModel::dE_dx ( double  E,
MuELMaterial_t  material 
) const
virtual

Implement the MuELossI interface.

Implements genie::mueloss::MuELossI.

Definition at line 40 of file BezrukovBugaevModel.cxx.

41 {
42 // Calculate the muon -dE/dx due to muon nuclear interaction (in GeV^-2).
43 // To convert the result to more handly units, eg MeV/(gr/cm^2), just write:
44 // dE_dx /= (units::MeV/(units::g/units::cm2));
45 
46  if(material == eMuUndefined) return 0;
47  if(E<=MuELProcess::Threshold(this->Process()) || E>=kMaxMuE) return 0;
48 
49  // material Z,E
50  double Z = MuELMaterial::Z(material);
51  double A = MuELMaterial::A(material);
52 
53  // calculate (the min,max) fraction of energy, v, carried to the photon
54  double Vmin = 0.;
55  double Vmax = 1. - 0.75*kSqrtNapierConst* (kMuonMass/E) * TMath::Power(Z,1/3.);
56 
57  // integrate the Bezrukov-Bugaev differential cross section v*ds/dv for
58  // muon nuclear interaction over v
59 
60  ROOT::Math::IBaseFunctionOneDim * integrand =
64 
65  double abstol = 1; // We mostly care about relative tolerance
66  double reltol = 1E-4;
67  int nmaxeval = 100000;
68  ROOT::Math::Integrator ig(*integrand,ig_type,abstol,reltol,nmaxeval);
69 
70  // calculate the b factor (bE = -dE/dx) in GeV^-3
71  A *= units::g;
72  double bnucl = (kNA/A) * ig.Integral(Vmin, Vmax);
73 
74  delete integrand;
75 
76  // calculate the dE/dx due to muon nuclear interaction in GeV^-2
77  double de_dx = bnucl*E;
78  return de_dx;
79 }
ROOT::Math::IntegrationOneDim::Type Integration1DimTypeFromString(string type)
Definition: GSLUtils.cxx:23
static constexpr double g
Definition: Units.h:144
int Type
Definition: 018_def.c:12
static const double kSqrtNapierConst
Definition: Constants.h:44
static double Z(MuELMaterial_t material)
Definition: MuELMaterial.h:236
static double Threshold(MuELProcess_t p)
Definition: MuELProcess.h:58
MuELProcess_t Process(void) const
static const double kNA
Definition: Constants.h:49
const double kMaxMuE
Definition: MuELossI.h:29
static const double kMuonMass
Definition: Constants.h:71
E
Definition: 018_def.c:13
#define A
Definition: memgrp.cpp:38
static double A(MuELMaterial_t material)
Definition: MuELMaterial.h:304
MuELProcess_t genie::mueloss::BezrukovBugaevModel::Process ( void  ) const
inlinevirtual

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