File indexing completed on 2024-04-06 12:04:40
0001 #ifndef DataFormats_Luminosity_LumiDetails_h
0002 #define DataFormats_Luminosity_LumiDetails_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include <utility>
0016 #include <vector>
0017 #include <string>
0018 #include <iosfwd>
0019
0020 class LumiDetails {
0021 public:
0022
0023
0024
0025
0026 enum Algos { kOCC1, kOCC2, kET, kPLT, kMaxNumAlgos };
0027 typedef unsigned int AlgoType;
0028 typedef std::pair<std::vector<float>::const_iterator, std::vector<float>::const_iterator> ValueRange;
0029 typedef std::pair<std::vector<float>::const_iterator, std::vector<float>::const_iterator> ErrorRange;
0030 typedef std::pair<std::vector<short>::const_iterator, std::vector<short>::const_iterator> QualityRange;
0031
0032 LumiDetails();
0033 explicit LumiDetails(std::string const& lumiVersion);
0034 ~LumiDetails();
0035
0036 void setLumiVersion(std::string const& lumiVersion);
0037 std::string const& lumiVersion() const;
0038 bool isValid() const;
0039
0040
0041
0042
0043 void fill(AlgoType algo,
0044 std::vector<float> const& values,
0045 std::vector<float> const& errors,
0046 std::vector<short> const& qualities);
0047
0048 void fillBeamIntensities(std::vector<float> const& beam1Intensities, std::vector<float> const& beam2Intensities);
0049
0050 float lumiValue(AlgoType algo, unsigned int bx) const;
0051 float lumiError(AlgoType algo, unsigned int bx) const;
0052 short lumiQuality(AlgoType algo, unsigned int bx) const;
0053 float lumiBeam1Intensity(unsigned int bx) const;
0054 float lumiBeam2Intensity(unsigned int bx) const;
0055
0056 ValueRange lumiValuesForAlgo(AlgoType algo) const;
0057 ErrorRange lumiErrorsForAlgo(AlgoType algo) const;
0058 QualityRange lumiQualitiesForAlgo(AlgoType algo) const;
0059 std::vector<float> const& lumiBeam1Intensities() const;
0060 std::vector<float> const& lumiBeam2Intensities() const;
0061
0062 bool isProductEqual(LumiDetails const& lumiDetails) const;
0063
0064 static std::vector<std::string> const& algoNames();
0065
0066 static std::vector<std::string> const& dipalgoNames();
0067
0068 private:
0069 void checkAlgo(AlgoType algo) const;
0070 void checkAlgoAndBX(AlgoType algo, unsigned int bx) const;
0071
0072 static std::vector<std::string> const m_algoNames;
0073
0074 std::string m_lumiVersion;
0075
0076
0077
0078
0079
0080
0081
0082
0083 std::vector<unsigned int> m_algoToFirstIndex;
0084 std::vector<float> m_allValues;
0085 std::vector<float> m_allErrors;
0086 std::vector<short> m_allQualities;
0087 std::vector<float> m_beam1Intensities;
0088 std::vector<float> m_beam2Intensities;
0089 };
0090
0091 std::ostream& operator<<(std::ostream& s, LumiDetails const& lumiDetails);
0092
0093 #endif