ATLAS Offline Software
BichselData.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3  */
4  #ifndef BichselData_h
5  #define BichselData_h
6  //
7  #include <vector>
8  #include <utility>//std::pair
9  #include <cstddef> //size_t
10 
11 //=============================
12 // C U S T O M S T R U C T
13 //=============================
14 struct BichselData {
15  //publicly accessible data
16  std::vector<double> logBetaGammaVector;
17  std::vector<std::vector<double> > logCollisionEnergyVectorOfVector; // ColE = CollisionEnergy in eV
18  std::vector<std::vector<double> > logIntegratedCrossSectionsVectorOfVector; // IntX = Integrated Xsection. The unit doesn't matter
19  std::vector<double> logHighestCrossSectionsVector; // upper bound of log10(IntX)
20  //methods
21  //
22  bool empty() const{ return logBetaGammaVector.empty();}
23  size_t size() const{ return logBetaGammaVector.size();}
24  double lastBetaGammaValue() const;
25  void addNewLogBetaGamma(double logBetaGamma);
26  void addEntry(double logBetaGamma, double logCollisionEnergy, double logIntegratedCrossSection);
27  void updateAfterLastEntry();
28  //
29  std::pair<int, int> getBetaGammaIndices(double BetaGammaLog10) const ; // get beta-gamma index. This is so commonly used by other functions that a caching would be beneficial
30  double interpolateCollisionEnergy(std::pair<int, int> indices_BetaGammaLog10, double IntXLog10) const;
31  double interpolateCollisionEnergy(double BetaGammaLog10, double IntXLog10) const; // return ColE NOT ColELog10
32  double interpolateCrossSection(std::pair<int, int> indices_BetaGammaLog10, double BetaGammaLog10) const;// return IntX upper bound
33  double interpolateCrossSection(double BetaGammaLog10) const; // return IntX upper bound
34 
35 };
36 #endif
BichselData::interpolateCrossSection
double interpolateCrossSection(std::pair< int, int > indices_BetaGammaLog10, double BetaGammaLog10) const
Definition: BichselData.cxx:116
BichselData::getBetaGammaIndices
std::pair< int, int > getBetaGammaIndices(double BetaGammaLog10) const
Definition: BichselData.cxx:50
BichselData
Definition: BichselData.h:14
BichselData::size
size_t size() const
Definition: BichselData.h:23
BichselData::addEntry
void addEntry(double logBetaGamma, double logCollisionEnergy, double logIntegratedCrossSection)
Definition: BichselData.cxx:33
BichselData::logBetaGammaVector
std::vector< double > logBetaGammaVector
Definition: BichselData.h:16
BichselData::updateAfterLastEntry
void updateAfterLastEntry()
Definition: BichselData.cxx:41
BichselData::interpolateCollisionEnergy
double interpolateCollisionEnergy(std::pair< int, int > indices_BetaGammaLog10, double IntXLog10) const
Definition: BichselData.cxx:72
BichselData::logHighestCrossSectionsVector
std::vector< double > logHighestCrossSectionsVector
Definition: BichselData.h:19
BichselData::addNewLogBetaGamma
void addNewLogBetaGamma(double logBetaGamma)
Definition: BichselData.cxx:22
BichselData::logCollisionEnergyVectorOfVector
std::vector< std::vector< double > > logCollisionEnergyVectorOfVector
Definition: BichselData.h:17
BichselData::empty
bool empty() const
Definition: BichselData.h:22
BichselData::lastBetaGammaValue
double lastBetaGammaValue() const
Definition: BichselData.cxx:12
BichselData::logIntegratedCrossSectionsVectorOfVector
std::vector< std::vector< double > > logIntegratedCrossSectionsVectorOfVector
Definition: BichselData.h:18