File indexing completed on 2024-04-06 12:11:19
0001 #ifndef RadialInterval_H
0002 #define RadialInterval_H
0003
0004
0005
0006
0007
0008 #include <vector>
0009
0010 class RandomEngineAndDistribution;
0011
0012 class RadialInterval {
0013 public:
0014
0015 RadialInterval(double RC, unsigned nSpots, double energy, const RandomEngineAndDistribution* engine);
0016 ~RadialInterval() { ; }
0017
0018
0019
0020 void addInterval(double, double);
0021
0022
0023 void compute();
0024
0025 inline unsigned nIntervals() const { return nInter; }
0026
0027 inline double getSpotEnergy(unsigned i) const {
0028
0029 return spotE[i];
0030 }
0031
0032 inline unsigned getNumberOfSpots(unsigned i) const {
0033
0034 return nspots[i];
0035 }
0036
0037 inline double getUmin(unsigned i) const {
0038
0039 return uMin[i];
0040 }
0041
0042 inline double getUmax(unsigned i) const {
0043
0044 return uMax[i];
0045 }
0046
0047 private:
0048 double currentRad;
0049 double currentEnergyFraction;
0050 double currentUlim;
0051 double theR;
0052 unsigned theNumberOfSpots;
0053 double theSpotEnergy;
0054 unsigned nInter;
0055
0056 std::vector<double> uMin;
0057 std::vector<double> uMax;
0058 std::vector<unsigned> nspots;
0059 std::vector<double> spotE;
0060 std::vector<double> dspotsunscaled;
0061 std::vector<double> spotfraction;
0062
0063 private:
0064
0065 double energyFractionInRadius(double rm);
0066
0067
0068 const RandomEngineAndDistribution* random;
0069 };
0070 #endif