Effective gas: All quantities necessary to calculate PAI ionisation for gas mixture.
More...
#include <TRT_PAI_effectiveGas.h>
|
double | XSigma (double lnE, double dummy) |
|
double | XFReal (double lnD, double lnE) |
|
double | XGInt (double(TRT_PAI_effectiveGas::*pt2Func)(double, double), double lnLo, double lnHi, const double eps, double extraParameter) |
|
double | dndedx (double lgE, double gamma) |
|
void | initMessaging () const |
| Initialize our message level and MessageSvc. More...
|
|
Effective gas: All quantities necessary to calculate PAI ionisation for gas mixture.
Definition at line 18 of file TRT_PAI_effectiveGas.h.
◆ TRT_PAI_effectiveGas()
TRT_PAI_effectiveGas::TRT_PAI_effectiveGas |
( |
TRT_PAI_gasMixture * |
gm, |
|
|
double |
Emin, |
|
|
double |
Emax, |
|
|
double |
tempK, |
|
|
double |
eps |
|
) |
| |
- Parameters
-
gm | gas mixture |
Emin | minimum energy transfer considered in calculations [eV] |
Emax | maximum energy transfer considered in calculations [ev] |
tempK | gas temperature [Kelvin] |
eps | epsilon for numeric integration |
mlog | Message stream |
Definition at line 23 of file TRT_PAI_effectiveGas.cxx.
43 for (
int k=0;
k<Nelem;
k++ ) {
47 rho +=
w *
pe->getDensity(tempK);
48 Aeff +=
w *
pe->getAtomicA();
49 Zeff +=
w *
pe->getAtomicZ();
66 std::vector<float> tempv;
67 for (
int k=0;
k<Nelem;
k++ ) {
69 tempv =
pe->getLnELvls();
103 for (
int i=0;
i<NLvls;
i++ ) {
106 for (
int k=0;
k<Nelem;
k++ ) {
116 fosc = std::clamp(fosc, 1
e-300,1
e+300);
127 for (
int i=NLvls-1;
i>=0; --
i) {
141 for (
int i=0;
i<NLvls;
i++) {
147 for (
int i=0;
i<NLvls;
i++) {
◆ dndedx()
double TRT_PAI_effectiveGas::dndedx |
( |
double |
lgE, |
|
|
double |
gamma |
|
) |
| |
|
private |
Definition at line 237 of file TRT_PAI_effectiveGas.cxx.
244 double betaSq = 1.-1./gammaSq;
249 std::complex<double> Ceps1(er/(
E*
E),
std::exp(ei));
250 std::complex<double> C1 = 1./gammaSq - Ceps1*betaSq;
251 std::complex<double> C2 = C1/(1.+Ceps1) *
std::log(2.*betaSq*
MeeV/(
E*C1));
◆ GasTab()
void TRT_PAI_effectiveGas::GasTab |
( |
const std::vector< float > & |
gamvec, |
|
|
std::vector< float > & |
EArray, |
|
|
std::vector< std::vector< float > > & |
fnArray, |
|
|
std::vector< float > & |
dndx |
|
) |
| |
Tabulate double differential distribution.
- Parameters
-
gamvec | vector of gamma values for which to tabulate |
Earray | vector of energy transfer values |
fnArray | double differential distribution |
dndx | This array effectively contains the inverse of the mean free path as function of binned energy variable |
Definition at line 262 of file TRT_PAI_effectiveGas.cxx.
274 int nGamVals = gamvec.size();
278 double lnEs = -99999999.;
280 fnArray.resize(nGamVals);
284 for (
int ig=0; ig<nGamVals; ++ig ) {
285 fnArray[ig].push_back(0.);
290 for (
int ie=NLvls-1;
ie>=0; --
ie ) {
293 for (
int ig=0; ig<nGamVals; ++ig ) {
296 fnArray[ig][nEVals] +=
ds;
298 if ( std::abs(lnEs-lnEi) > Rener ||
ie==0 ) {
300 lnEarray.push_back( lnEs );
302 for (
int ig=0; ig<nGamVals; ++ig ) {
303 fnArray[ig].push_back( fnArray[ig][nEVals] );
311 dndx.resize(nGamVals);
312 for (
int ig = 0; ig < nGamVals; ++ig ) {
313 dndx[ig] = fnArray[ig][nEVals-1];
◆ initMessaging()
void AthMessaging::initMessaging |
( |
| ) |
const |
|
privateinherited |
Initialize our message level and MessageSvc.
This method should only be called once.
Definition at line 39 of file AthMessaging.cxx.
◆ msg() [1/2]
MsgStream & AthMessaging::msg |
( |
| ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 164 of file AthMessaging.h.
◆ msg() [2/2]
MsgStream & AthMessaging::msg |
( |
const MSG::Level |
lvl | ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 179 of file AthMessaging.h.
180 {
return msg() << lvl; }
◆ msgLvl()
bool AthMessaging::msgLvl |
( |
const MSG::Level |
lvl | ) |
const |
|
inlineinherited |
Test the output level.
- Parameters
-
lvl | The message level to test against |
- Returns
- boolean Indicating if messages at given level will be printed
- Return values
-
true | Messages at level "lvl" will be printed |
Definition at line 151 of file AthMessaging.h.
◆ setLevel()
void AthMessaging::setLevel |
( |
MSG::Level |
lvl | ) |
|
|
inherited |
◆ XFReal()
double TRT_PAI_effectiveGas::XFReal |
( |
double |
lnD, |
|
|
double |
lnE |
|
) |
| |
|
private |
◆ XGInt()
double TRT_PAI_effectiveGas::XGInt |
( |
double(TRT_PAI_effectiveGas::*)(double, double) |
pt2Func, |
|
|
double |
lnLo, |
|
|
double |
lnHi, |
|
|
const double |
eps, |
|
|
double |
extraParameter |
|
) |
| |
|
private |
Definition at line 193 of file TRT_PAI_effectiveGas.cxx.
205 const double U[M]={-.8611363,-.3399810, .3399810 ,.8611363};
206 const double W[M]={ .3478548, .6521452, .6521452, .3478548};
211 double Dt = 0.5*(lnHi-lnLo);
217 for (
int i=1;
i<=
N;
i++) {
218 for (
int k=0;
k<M;
k++) {
219 double arg = lnLo + D*(2*
i-1+U[
k]);
220 OTB +=
W[
k] * (this->*pt2Func)(
arg, extraParameter );
227 ATH_MSG_WARNING(
"effectiveGas::XGInt: integrate Divergence! " << std::abs(OTB-
Y) <<
" " << std::abs(eps*OTB) );
230 }
while ( (std::abs(OTB-
Y) > std::abs(eps*OTB)) && (eps>0) );
◆ XSigma()
double TRT_PAI_effectiveGas::XSigma |
( |
double |
lnE, |
|
|
double |
dummy |
|
) |
| |
|
private |
◆ ATLAS_THREAD_SAFE
std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT |
|
mutableprivateinherited |
◆ m_eps
const double TRT_PAI_effectiveGas::m_eps |
|
private |
◆ m_imsg
std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr } |
|
mutableprivateinherited |
◆ m_lnELvls
std::vector<float> TRT_PAI_effectiveGas::m_lnELvls |
|
private |
◆ m_lnEmax
const double TRT_PAI_effectiveGas::m_lnEmax |
|
private |
◆ m_lnEmin
const double TRT_PAI_effectiveGas::m_lnEmin |
|
private |
◆ m_lnEpsI
std::vector<float> TRT_PAI_effectiveGas::m_lnEpsI |
|
private |
◆ m_lnEpsR
std::vector<float> TRT_PAI_effectiveGas::m_lnEpsR |
|
private |
◆ m_lnFosc
std::vector<float> TRT_PAI_effectiveGas::m_lnFosc |
|
private |
◆ m_lnIntegratedSigmas
std::vector<float> TRT_PAI_effectiveGas::m_lnIntegratedSigmas |
|
private |
◆ m_lvl
std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL } |
|
mutableprivateinherited |
◆ m_msg_tls
boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls |
|
mutableprivateinherited |
MsgStream instance (a std::cout like with print-out levels)
Definition at line 132 of file AthMessaging.h.
◆ m_ne
double TRT_PAI_effectiveGas::m_ne |
|
private |
◆ m_nm
std::string AthMessaging::m_nm |
|
privateinherited |
◆ m_S1
double TRT_PAI_effectiveGas::m_S1 |
|
private |
◆ m_S2
double TRT_PAI_effectiveGas::m_S2 |
|
private |
◆ m_Wp2
double TRT_PAI_effectiveGas::m_Wp2 |
|
private |
The documentation for this class was generated from the following files:
DataModel_detail::iterator< DVL > unique(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of unique for DataVector/List.