RecombinationModels.h
Go to the documentation of this file.
1 #ifndef WIRECELLGEN_RECOMBINATIONMODEL
2 #define WIRECELLGEN_RECOMBINATIONMODEL
3 
4 #include "WireCellUtil/Units.h"
7 
8 #include "WireCellUtil/Units.h"
9 
10 namespace WireCell {
11  namespace Gen {
12 
13  /// Model for a MIP, dQ = (Rmip/Wi)*dE
15  double m_rmip, m_wi;
16  public:
17  MipRecombination(double Rmip=0.7, double Wi = 23.6*units::eV/(-1*units::eplus));
18  virtual ~MipRecombination();
19  virtual double operator()(double dE, double dX=0.0);
20  virtual void configure(const WireCell::Configuration& config);
22 
23  };
24 
25  /// Birks model, R = a/(1+b*dE/dX), dQ = (R/Wi)*dE
26  /// a = A3t, b=k3t/(Efield*rho) as defined in:
27  /// http://lar.bnl.gov/properties/pass.html#recombination
29  double m_a3t, m_k3t, m_efield, m_rho, m_wi;
30 
31  public:
32  BirksRecombination(double Efield = 500*units::volt/units::cm,
33  double A3t = 0.8,
35  double rho = 1.396*units::gram/units::cm3,
36  double Wi = 23.6*units::eV/(-1*units::eplus));
37  virtual ~BirksRecombination();
38  virtual double operator()(double dE, double dX=0.0);
39  virtual void configure(const WireCell::Configuration& config);
41  };
42 
43 
44  /// Modified Box model, R = ln(a+b*dE/dX)/(b*dE/dX), dQ = (R/Wi)*dE
45  /// a=A, b=B/(Efield*rho) as defined in:
46  /// http://lar.bnl.gov/properties/pass.html#recombination
48  double m_efield, m_a, m_b, m_rho, m_wi;
49 
50  public:
51  BoxRecombination(double Efield = 500*units::volt/units::cm,
52  double A = 0.930,
53  double B = 0.212*units::gram/(units::MeV*units::cm2)*(units::kilovolt/units::cm),
54  double rho = 1.396*units::gram/units::cm3,
55  double Wi = 23.6*units::eV/(-1*units::eplus));
56  virtual ~BoxRecombination();
57  virtual double operator()(double dE, double dX=0.0);
58  virtual void configure(const WireCell::Configuration& config);
60  };
61 
62  }
63 }
64 
65 #endif
static const double kilovolt
Definition: Units.h:176
virtual WireCell::Configuration default_configuration() const
Optional, override to return a hard-coded default configuration.
static const double eplus
Definition: Units.h:110
Model for a MIP, dQ = (Rmip/Wi)*dE.
static const double gram
Definition: Units.h:139
static const double cm3
Definition: Units.h:61
static Config * config
Definition: config.cpp:1054
static const double eV
Definition: Units.h:129
static const double MeV
Definition: Units.h:128
static const double cm
Definition: Units.h:59
Definition: Main.h:22
virtual void configure(const WireCell::Configuration &config)
Accept a configuration.
virtual double operator()(double dE, double dX=0.0)
Json::Value Configuration
Definition: Configuration.h:50
MipRecombination(double Rmip=0.7, double Wi=23.6 *units::eV/(-1 *units::eplus))
static const double volt
Definition: Units.h:177
static const double cm2
Definition: Units.h:60