|
ATLAS Offline Software
|
#include <ElectronCombinedMaterialEffects.h>
◆ MixtureParameters
◆ Polynomial
◆ ElectronCombinedMaterialEffects() [1/4]
Trk::ElectronCombinedMaterialEffects::ElectronCombinedMaterialEffects |
( |
const std::string & |
parameterisationFileName, |
|
|
const std::string & |
parameterisationFileNameHighX0 |
|
) |
| |
Definition at line 198 of file ElectronCombinedMaterialEffects.cxx.
206 std::string resolvedFileName =
208 if (resolvedFileName.empty()) {
209 std::ostringstream
ss;
210 ss <<
"Parameterisation file : " << parameterisationFileName
212 throw std::logic_error(
ss.str());
215 const char*
filename = resolvedFileName.c_str();
218 std::ostringstream
ss;
219 ss <<
"Error opening file: " << resolvedFileName;
220 throw std::logic_error(
ss.str());
224 int orderPolynomial = 0;
225 fin >> orderPolynomial;
229 std::ostringstream
ss;
230 ss <<
"numberOfComponents Parameter out of range 0- "
233 throw std::logic_error(
ss.str());
236 std::ostringstream
ss;
237 ss <<
"orderPolynomial order != "
239 throw std::logic_error(
ss.str());
242 std::ostringstream
ss;
243 ss <<
"transformationCode Parameter out of range 0-1: "
245 throw std::logic_error(
ss.str());
248 std::ostringstream
ss;
249 ss <<
"Error while reading file : " << resolvedFileName;
250 throw std::logic_error(
ss.str());
253 int componentIndex = 0;
262 std::string resolvedFileName =
264 if (resolvedFileName.empty()) {
265 std::ostringstream
ss;
266 ss <<
"Parameterisation file : " << parameterisationFileNameHighX0
268 throw std::logic_error(
ss.str());
271 const char*
filename = resolvedFileName.c_str();
274 std::ostringstream
ss;
275 ss <<
"Error opening file: " << resolvedFileName;
276 throw std::logic_error(
ss.str());
279 int orderPolynomial = 0;
280 fin >> orderPolynomial;
286 std::ostringstream
ss;
287 ss <<
"numberOfComponentsHighX0 Parameter out of range 0- "
290 throw std::logic_error(
ss.str());
293 std::ostringstream
ss;
294 ss <<
" numberOfComponentsHighX0 != numberOfComponents";
295 throw std::logic_error(
ss.str());
298 std::ostringstream
ss;
299 ss <<
"orderPolynomial order != "
301 throw std::logic_error(
ss.str());
304 std::ostringstream
ss;
305 ss <<
"transformationCode Parameter out of range "
308 throw std::logic_error(
ss.str());
312 int componentIndex = 0;
◆ ElectronCombinedMaterialEffects() [2/4]
Trk::ElectronCombinedMaterialEffects::ElectronCombinedMaterialEffects |
( |
| ) |
|
|
default |
◆ ElectronCombinedMaterialEffects() [3/4]
◆ ElectronCombinedMaterialEffects() [4/4]
◆ ~ElectronCombinedMaterialEffects()
Trk::ElectronCombinedMaterialEffects::~ElectronCombinedMaterialEffects |
( |
| ) |
|
|
default |
◆ BetheHeitler()
Definition at line 385 of file ElectronCombinedMaterialEffects.cxx.
397 const double radiationLength = materialProperties.x0();
398 const double momentum = globalMomentum.mag();
399 double pathlengthInX0 = pathLength / radiationLength;
401 if (pathlengthInX0 < s_singleGaussianRange) {
409 if (pathlengthInX0 < s_lowerRange) {
410 const double meanZ =
std::exp(-1. * pathlengthInX0);
416 double varQoverP(0.);
424 cache.
elements[0] = { 1., deltaP, varQoverP };
430 if (pathlengthInX0 > s_upperRange) {
431 pathlengthInX0 = s_upperRange;
436 if (pathlengthInX0 > s_xOverRange) {
467 int componentIndex = 0;
468 double weightToBeRemoved(0.);
469 int componentWithHighestMean(0);
471 if (mixture[componentIndex].
mean > mixture[componentWithHighestMean].
mean) {
472 componentWithHighestMean = componentIndex;
474 if (mixture[componentIndex].
mean >= s_componentMeanCut) {
477 weightToBeRemoved += mixture[componentIndex].weight;
482 double varianceInverseMomentum = 0;
484 if (mixture[componentIndex].
mean < s_componentMeanCut) {
487 double weight = mixture[componentIndex].weight;
488 if (componentIndex == componentWithHighestMean) {
489 weight += weightToBeRemoved;
494 deltaP =
momentum * (mixture[componentIndex].mean - 1.);
495 const double f = 1. / (
momentum * mixture[componentIndex].mean);
496 varianceInverseMomentum =
f *
f * mixture[componentIndex].variance;
500 deltaP =
momentum * (1. / mixture[componentIndex].mean - 1.);
501 varianceInverseMomentum =
508 varianceInverseMomentum };
◆ compute()
Definition at line 322 of file ElectronCombinedMaterialEffects.cxx.
335 cache_multipleScatter, componentParameters, materialProperties, pathLength);
350 cache_energyLoss.
elements[0] = { 1, 0, 0 };
359 double combinedWeight = cache_energyLoss.
elements[
i].weight;
360 double combinedDeltaP = cache_energyLoss.
elements[
i].deltaP;
365 const double covPhi = cache_multipleScatter.
deltaPhiCov;
367 const double covQoverP = cache_energyLoss.
elements[
i].deltaQOvePCov;
371 0, 0, 0, covTheta, 0,
372 0, 0, 0, 0, covQoverP;
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ m_BHnumberOfComponents
int Trk::ElectronCombinedMaterialEffects::m_BHnumberOfComponents {} |
|
private |
◆ m_BHnumberOfComponentsHighX0
int Trk::ElectronCombinedMaterialEffects::m_BHnumberOfComponentsHighX0 {} |
|
private |
◆ m_BHpolynomialMeans
◆ m_BHpolynomialMeansHighX0
◆ m_BHpolynomialVariances
◆ m_BHpolynomialVariancesHighX0
◆ m_BHpolynomialWeights
◆ m_BHpolynomialWeightsHighX0
◆ m_BHtransformationCode
int Trk::ElectronCombinedMaterialEffects::m_BHtransformationCode {} |
|
private |
◆ m_BHtransformationCodeHighX0
int Trk::ElectronCombinedMaterialEffects::m_BHtransformationCodeHighX0 {} |
|
private |
The documentation for this class was generated from the following files:
std::array< Polynomial, GSFConstants::maxNumberofMatComponents > m_BHpolynomialWeightsHighX0
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
std::array< double, GSFConstants::maxNumberofMatComponents > weights
Helper struct for multiple scattering effects single component description.
void BetheHeitler(GsfMaterial::EnergyLoss &cache, const ComponentParameters &componentParameters, const MaterialProperties &materialProperties, double pathLenght, PropDirection direction=anyDirection) const
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
std::array< element, GSFConstants::maxNumberofMatComponents > elements
Helper struct for energy loss effects, multicomponent description.
int m_BHtransformationCode
int m_BHnumberOfComponents
std::array< AmgSymMatrix(5), GSFConstants::maxNumberofMatComponents > deltaCovariances
std::array< ComponentValues, GSFConstants::maxNumberofMatComponents > MixtureParameters
AmgSymMatrix(5) &GXFTrackState
constexpr int8_t maxNumberofMatComponents
Maximum number of Gaussian components for the material effects description.
std::array< Polynomial, GSFConstants::maxNumberofMatComponents > m_BHpolynomialVariances
std::array< Polynomial, GSFConstants::maxNumberofMatComponents > m_BHpolynomialMeansHighX0
bool inRange(const double *boundaries, const double value, const double tolerance=0.02)
std::array< double, GSFConstants::maxNumberofMatComponents > deltaPs
int m_BHtransformationCodeHighX0
Eigen::Matrix< double, 3, 1 > Vector3D
constexpr int8_t polynomialCoefficients
Number of coefficients for the polynomials, parametrizing the mean,variace, weights of the Gaussian c...
const Amg::Vector3D & momentum() const
Access method for the momentum.
int m_BHnumberOfComponentsHighX0
std::array< Polynomial, GSFConstants::maxNumberofMatComponents > m_BHpolynomialVariancesHighX0
std::array< Polynomial, GSFConstants::maxNumberofMatComponents > m_BHpolynomialWeights
std::array< Polynomial, GSFConstants::maxNumberofMatComponents > m_BHpolynomialMeans
std::unique_ptr< Trk::TrackParameters > params