File indexing completed on 2024-04-06 12:04:40
0001 #ifndef DataFormats_Luminosity_LumiInfo_h
0002 #define DataFormats_Luminosity_LumiInfo_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include <vector>
0024 #include <iosfwd>
0025 #include <string>
0026 #include "DataFormats/Luminosity/interface/LumiConstants.h"
0027
0028 class LumiInfo {
0029 public:
0030
0031
0032
0033 LumiInfo() : deadtimeFraction_(0) {
0034 instLumiByBX_.assign(LumiConstants::numBX, 0.0);
0035 instLumiStatErrByBX_.assign(LumiConstants::numBX, 0.0);
0036 totalInstLuminosity_ = 0;
0037 totalInstLumiStatErr_ = 0;
0038 }
0039
0040
0041
0042
0043 LumiInfo(float deadtimeFraction, const std::vector<float>& instLumiByBX)
0044 : deadtimeFraction_(deadtimeFraction), instLumiByBX_(instLumiByBX) {
0045 instLumiStatErrByBX_.assign(LumiConstants::numBX, 0.0);
0046 setTotalInstToBXSum();
0047 totalInstLumiStatErr_ = 0;
0048 }
0049
0050
0051
0052
0053 LumiInfo(float deadtimeFraction, const std::vector<float>& instLumiByBX, float totalInstLumi)
0054 : deadtimeFraction_(deadtimeFraction), totalInstLuminosity_(totalInstLumi), instLumiByBX_(instLumiByBX) {
0055 instLumiStatErrByBX_.assign(LumiConstants::numBX, 0.0);
0056 totalInstLumiStatErr_ = 0;
0057 }
0058
0059
0060
0061
0062 LumiInfo(float deadtimeFraction,
0063 const std::vector<float>& instLumiByBX,
0064 float totalInstLumi,
0065 const std::vector<float>& instLumiErrByBX,
0066 float totalInstLumiErr)
0067 : deadtimeFraction_(deadtimeFraction),
0068 totalInstLuminosity_(totalInstLumi),
0069 totalInstLumiStatErr_(totalInstLumiErr),
0070 instLumiByBX_(instLumiByBX),
0071 instLumiStatErrByBX_(instLumiErrByBX) {}
0072
0073
0074
0075
0076 ~LumiInfo() {}
0077
0078
0079
0080
0081
0082
0083
0084
0085 float getTotalInstLumi() const { return totalInstLuminosity_; }
0086
0087
0088
0089 float getTotalInstStatError() const { return totalInstLumiStatErr_; }
0090
0091
0092
0093 const std::vector<float>& getInstLumiAllBX() const { return instLumiByBX_; }
0094
0095
0096
0097 const std::vector<float>& getErrorLumiAllBX() const { return instLumiStatErrByBX_; }
0098
0099
0100
0101 float getInstLumiBX(int bx) const { return instLumiByBX_.at(bx); }
0102
0103
0104
0105 float getDeadFraction() const { return deadtimeFraction_; }
0106
0107
0108
0109 float getLiveFraction() const { return 1 - deadtimeFraction_; }
0110
0111
0112
0113
0114
0115
0116
0117
0118 void setDeadFraction(float deadtimeFraction) { deadtimeFraction_ = deadtimeFraction; }
0119
0120
0121
0122 void setTotalInstLumi(float totalLumi) { totalInstLuminosity_ = totalLumi; }
0123
0124
0125
0126 void setTotalInstStatError(float statError) { totalInstLumiStatErr_ = statError; }
0127
0128
0129
0130 void setInstLumiAllBX(std::vector<float>& instLumiByBX);
0131
0132
0133
0134 void setErrorLumiAllBX(std::vector<float>& errLumiByBX);
0135
0136
0137
0138
0139
0140 void setTotalInstToBXSum();
0141
0142
0143
0144
0145
0146 float instLuminosityBXSum() const;
0147
0148
0149
0150 float integLuminosity() const;
0151
0152
0153
0154
0155 float recordedLuminosity() const;
0156
0157
0158
0159 float lumiSectionLength() const;
0160
0161
0162
0163
0164 bool isProductEqual(LumiInfo const& next) const;
0165
0166 private:
0167 float deadtimeFraction_;
0168 float totalInstLuminosity_;
0169 float totalInstLumiStatErr_;
0170 std::vector<float> instLumiByBX_;
0171 std::vector<float> instLumiStatErrByBX_;
0172 };
0173
0174 std::ostream& operator<<(std::ostream& s, const LumiInfo& lumiInfo);
0175
0176 #endif