11 #include <vxd/dataobjects/VXDElectronDeposit.h>
12 #include <vxd/dataobjects/VXDSimHit.h>
17 float VXDSimHit::getElectrons()
const
20 return total.getElectrons();
23 std::vector<std::pair<float, float>> VXDSimHit::getElectronProfile()
const
25 std::vector<std::pair<float, float>> result;
26 result.reserve(m_electronProfile.size());
27 for (
unsigned int encoded : m_electronProfile) {
34 std::vector<std::pair<float, float>> VXDSimHit::getElectronsConstantDistance(
double length)
const
36 double totalLength = (getPosOut() - getPosIn()).Mag();
37 const int nSteps = (int)(totalLength / length) + 1;
38 std::vector<std::pair<float, float>> result;
39 result.reserve(nSteps);
42 const double deltaFraction = 1. / nSteps;
44 std::vector<unsigned int>::const_iterator currentPointIt = m_electronProfile.begin();
49 for (
int i = 0; i < nSteps; ++i) {
51 const double fraction = min((i + 1) * deltaFraction, 1.0);
55 lastPoint = currentPoint;
59 const double weight = (fraction - lastPoint.
getFraction()) /
63 result.emplace_back(fraction, electrons);
68 std::vector<std::pair<float, float>> VXDSimHit::getElectronsConstantNumber(
double electronsPerStep)
const
71 const int nSteps = (int)(total.getElectrons() / electronsPerStep) + 1;
72 std::vector<std::pair<float, float>> result;
73 result.reserve(nSteps);
75 double deltaElectrons = total.getElectrons() / nSteps;
77 std::vector<unsigned int>::const_iterator currentPointIt = m_electronProfile.begin();
82 for (
int i = 0; i < nSteps; ++i) {
84 const double electrons = min((i + 1) * deltaElectrons, (
double)total.getElectrons());
88 lastPoint = currentPoint;
92 const double weight = (electrons - lastPoint.
getElectrons()) /
96 result.emplace_back(fraction, electrons);