File indexing completed on 2024-04-06 12:08:11
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #ifndef __PixelLumi_PixelLumiDQM_PixelLumiDQM_h__
0027 #define __PixelLumi_PixelLumiDQM_PixelLumiDQM_h__
0028
0029 #include <fstream>
0030 #include <map>
0031 #include <string>
0032 #include <vector>
0033
0034 #include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
0035 #include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h"
0036 #include "FWCore/Framework/interface/Frameworkfwd.h"
0037
0038 class ConfigurationDescriptions;
0039 class TrackerGeometry;
0040 class TrackerDigiGeometryRecord;
0041 class PixelLumiDQM : public DQMOneEDAnalyzer<edm::one::WatchLuminosityBlocks> {
0042 public:
0043 explicit PixelLumiDQM(const edm::ParameterSet &);
0044 ~PixelLumiDQM() override;
0045 static constexpr double FREQ_ORBIT = 11245.5;
0046 static constexpr double SECONDS_PER_LS = double(0x40000) / double(FREQ_ORBIT);
0047
0048
0049 static constexpr double XSEC_PIXEL_CLUSTER = 10.08e-24;
0050 static constexpr double XSEC_PIXEL_CLUSTER_UNC = 0.17e-24;
0051
0052
0053 static constexpr double rXSEC_PIXEL_CLUSTER = 9.4e-24;
0054 static constexpr double rXSEC_PIXEL_CLUSTER_UNC = 0.119e-24;
0055 static constexpr double CM2_TO_NANOBARN = 1.0 / 1.e-33;
0056 static const unsigned int lastBunchCrossing = 3564;
0057
0058 static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
0059
0060 private:
0061 void analyze(const edm::Event &, const edm::EventSetup &) override;
0062 void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
0063 void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override;
0064 void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override;
0065
0066
0067
0068
0069
0070 unsigned int calculateBunchMask(MonitorElement *, std::vector<bool> &);
0071 unsigned int calculateBunchMask(std::vector<float> &, unsigned int, std::vector<bool> &);
0072
0073
0074
0075 static constexpr size_t kNumLayers = 5;
0076 static constexpr size_t kNumDisks = 12;
0077 static constexpr size_t kOffsetLayers = 0;
0078 static constexpr size_t kOffsetDisks = 4;
0079
0080 class PixelClusterCount {
0081
0082
0083 public:
0084 PixelClusterCount()
0085 : numB(kNumLayers, 0),
0086 numFM(kNumDisks, 0),
0087 numFP(kNumDisks, 0),
0088 dnumB(kNumLayers, 0.0),
0089 dnumFM(kNumDisks, 0.0),
0090 dnumFP(kNumDisks, 0.0)
0091
0092 {}
0093 void Reset() {
0094 for (unsigned int i = 0; i < numB.size(); i++) {
0095 numB[i] = 0;
0096 dnumB[i] = 0.0;
0097 }
0098 for (unsigned int i = 0; i < numFM.size(); i++) {
0099 numFM[i] = 0;
0100 numFP[i] = 0;
0101 dnumFM[i] = 0.0;
0102 dnumFP[i] = 0.0;
0103 }
0104 }
0105 std::vector<UInt_t> numB;
0106 std::vector<UInt_t> numFM;
0107 std::vector<UInt_t> numFP;
0108 std::vector<double> dnumB;
0109 std::vector<double> dnumFM;
0110 std::vector<double> dnumFP;
0111
0112 private:
0113 };
0114
0115 edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster>> fPixelClusterLabel;
0116 edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> tkGeomToken_;
0117
0118 UInt_t fRunNo;
0119 UInt_t fEvtNo;
0120 UInt_t fLSNo;
0121 UInt_t fBXNo;
0122 UInt_t fTimestamp;
0123 UInt_t fNumVtx;
0124 UInt_t fNumVtxGood;
0125 UInt_t fNumTrkPerVtx;
0126 Double_t fVtxX;
0127 Double_t fVtxY;
0128 Double_t fVtxZ;
0129 Double_t fChi2;
0130 Double_t fNdof;
0131 std::map<int, PixelClusterCount> fNumPixelClusters;
0132
0133 bool fIncludeVertexInfo;
0134 bool fIncludePixelClusterInfo;
0135 bool fIncludePixelQualCheckHistos;
0136 int fResetIntervalInLumiSections;
0137
0138 std::map<std::string, MonitorElement *> fHistContainerThisRun;
0139
0140
0141
0142 std::vector<uint32_t> fDeadModules;
0143
0144
0145
0146
0147 int fMinPixelsPerCluster;
0148
0149
0150 double fMinClusterCharge;
0151
0152
0153
0154 MonitorElement *fIntActiveCrossingsFromDB;
0155 MonitorElement *fHistnBClusVsLS[3];
0156 MonitorElement *fHistnFPClusVsLS[2];
0157 MonitorElement *fHistnFMClusVsLS[2];
0158 MonitorElement *fHistBunchCrossings;
0159 MonitorElement *fHistBunchCrossingsLastLumi;
0160 MonitorElement *fHistClusterCountByBxLastLumi;
0161 MonitorElement *fHistClusterCountByBxCumulative;
0162 MonitorElement *fHistClusByLS;
0163 MonitorElement *fHistTotalRecordedLumiByLS;
0164 MonitorElement *fHistRecordedByBxLastLumi;
0165 MonitorElement *fHistRecordedByBxCumulative;
0166
0167 std::vector<bool> bunchTriggerMask;
0168 unsigned int filledAndUnmaskedBunches;
0169 bool useInnerBarrelLayer;
0170 unsigned int fFillNumber;
0171 std::string fLogFileName_;
0172
0173 std::ofstream logFile_;
0174 };
0175
0176 #endif