21 : m_lumiVersion(
"-1"),
22 m_algoToFirstIndex(kMaxNumAlgos + 1, 0),
27 m_beam2Intensities() {}
47 std::vector<float>
const&
values,
48 std::vector<float>
const&
errors,
49 std::vector<short>
const& qualities) {
51 if (values.size() != errors.size() || values.size() != qualities.size() ||
54 <<
"The current implementation of LumiDetails only allows filling\n" 55 <<
"vectors for each algorithm once and the input vectors must\n" 56 <<
"all be the same size.\n";
67 std::vector<float>
const& beam2Intensities) {
132 <<
"Algorithm type argument out of range in a call to a function in LumiDetails\n";
140 <<
"Branch crossing argument out of range in call to a function in LumiDetails\n";
145 s <<
"\nDumping LumiDetails\n";
146 s << std::setw(12) <<
"lumi version " << lumiDetails.
lumiVersion() <<
"\n";
147 std::vector<std::string>::const_iterator
algo;
148 std::vector<std::string>::const_iterator algoEnd;
158 for (; algo != algoEnd; ++
algo, ++
i) {
160 std::vector<float>::const_iterator valueEnd = lumiDetails.
lumiValuesForAlgo(i).second;
164 s <<
"algorithm: " << *algo <<
"\n";
165 s << std::setw(12) <<
"value" << std::setw(12) <<
"error" << std::setw(12) <<
"quality" 169 s << std::setw(12) << *value << std::setw(12) << *error << std::setw(12) << *quality <<
"\n";
173 s <<
"beam 1 intensities:\n";
175 for (std::vector<float>::const_iterator intensity = beam1Intensities.begin(), iEnd = beam1Intensities.end();
178 s << *intensity <<
"\n";
180 s <<
"\nbeam 2 intensities:\n";
182 for (std::vector<float>::const_iterator intensity = beam2Intensities.begin(), iEnd = beam2Intensities.end();
185 s << *intensity <<
"\n";
float lumiBeam2Intensity(unsigned int bx) const
std::vector< float > const & lumiBeam2Intensities() const
std::pair< std::vector< float >::const_iterator, std::vector< float >::const_iterator > ValueRange
ValueRange lumiValuesForAlgo(AlgoType algo) const
void checkAlgoAndBX(AlgoType algo, unsigned int bx) const
std::vector< float > m_allErrors
std::pair< std::vector< float >::const_iterator, std::vector< float >::const_iterator > ErrorRange
std::vector< float > const & lumiBeam1Intensities() const
float lumiValue(AlgoType algo, unsigned int bx) const
std::vector< float > m_beam2Intensities
float lumiBeam1Intensity(unsigned int bx) const
static std::vector< std::string > const m_algoNames
short lumiQuality(AlgoType algo, unsigned int bx) const
void setLumiVersion(std::string const &lumiVersion)
std::string m_lumiVersion
std::pair< std::vector< short >::const_iterator, std::vector< short >::const_iterator > QualityRange
ErrorRange lumiErrorsForAlgo(AlgoType algo) const
void fill(AlgoType algo, std::vector< float > const &values, std::vector< float > const &errors, std::vector< short > const &qualities)
static std::vector< std::string > const s_dipalgoNames
static std::vector< std::string > const & dipalgoNames()
std::vector< float > m_allValues
static std::vector< std::string > const & algoNames()
void checkAlgo(AlgoType algo) const
std::vector< unsigned int > m_algoToFirstIndex
QualityRange lumiQualitiesForAlgo(AlgoType algo) const
float lumiError(AlgoType algo, unsigned int bx) const
std::vector< short > m_allQualities
void fillBeamIntensities(std::vector< float > const &beam1Intensities, std::vector< float > const &beam2Intensities)
std::ostream & operator<<(std::ostream &s, LumiDetails const &lumiDetails)
std::string const & lumiVersion() const
bool isProductEqual(LumiDetails const &lumiDetails) const
std::vector< float > m_beam1Intensities