File indexing completed on 2024-04-06 12:06:53
0001 #ifndef Vx3DHLTAnalyzer_H
0002 #define Vx3DHLTAnalyzer_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include <memory>
0014
0015 #include "FWCore/Framework/interface/Event.h"
0016 #include "FWCore/Framework/interface/MakerMacros.h"
0017
0018 #include "DQMServices/Core/interface/DQMStore.h"
0019 #include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
0020
0021 #include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHitCollection.h"
0022 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0023 #include "DataFormats/VertexReco/interface/Vertex.h"
0024
0025 #include <TText.h>
0026
0027 #include <iostream>
0028 #include <fstream>
0029 #include <vector>
0030
0031
0032
0033
0034 #define DIM 3
0035 typedef struct {
0036 double x;
0037 double y;
0038 double z;
0039 double Covariance[DIM][DIM];
0040 } VertexType;
0041
0042 class Vx3DHLTAnalyzer : public DQMOneLumiEDAnalyzer<> {
0043 public:
0044 Vx3DHLTAnalyzer(const edm::ParameterSet&);
0045 ~Vx3DHLTAnalyzer() override;
0046
0047 protected:
0048 double Gauss3DFunc(const double* par);
0049
0050 private:
0051 void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) override;
0052 void dqmBeginLuminosityBlock(const edm::LuminosityBlock& lumiBlock, const edm::EventSetup& iSetup) override;
0053 void dqmEndLuminosityBlock(const edm::LuminosityBlock& lumiBlock, const edm::EventSetup& iSetup) override;
0054 void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0055
0056 unsigned int HitCounter(const edm::Event& iEvent);
0057 std::string formatTime(const time_t& t);
0058 int MyFit(std::vector<double>* vals);
0059 void reset(std::string ResetType);
0060 void writeToFile(std::vector<double>* vals,
0061 edm::TimeValue_t BeginTimeOfFit,
0062 edm::TimeValue_t EndTimeOfFit,
0063 unsigned int BeginLumiOfFit,
0064 unsigned int EndLumiOfFit,
0065 int dataType);
0066 void printFitParams(const std::vector<double>& fitResults);
0067
0068
0069
0070
0071 edm::EDGetTokenT<reco::VertexCollection> vertexCollection;
0072 edm::EDGetTokenT<SiPixelRecHitCollection> pixelHitCollection;
0073 bool debugMode;
0074 bool dataFromFit;
0075 unsigned int nLumiFit;
0076 unsigned int maxLumiIntegration;
0077 unsigned int nLumiXaxisRange;
0078 unsigned int minNentries;
0079 double xRange;
0080 double xStep;
0081 double yRange;
0082 double yStep;
0083 double zRange;
0084 double zStep;
0085 double VxErrCorr;
0086 double minVxDoF;
0087 double minVxWgt;
0088 std::string fileName;
0089
0090
0091
0092
0093 MonitorElement* mXlumi;
0094 MonitorElement* mYlumi;
0095 MonitorElement* mZlumi;
0096
0097 MonitorElement* sXlumi;
0098 MonitorElement* sYlumi;
0099 MonitorElement* sZlumi;
0100
0101 MonitorElement* dxdzlumi;
0102 MonitorElement* dydzlumi;
0103
0104 MonitorElement* Vx_X;
0105 MonitorElement* Vx_Y;
0106 MonitorElement* Vx_Z;
0107
0108 MonitorElement* Vx_ZX;
0109 MonitorElement* Vx_ZY;
0110 MonitorElement* Vx_XY;
0111
0112 MonitorElement* Vx_X_Fit;
0113 MonitorElement* Vx_Y_Fit;
0114 MonitorElement* Vx_Z_Fit;
0115
0116 MonitorElement* Vx_X_Cum;
0117 MonitorElement* Vx_Y_Cum;
0118 MonitorElement* Vx_Z_Cum;
0119
0120 MonitorElement* Vx_ZX_Cum;
0121 MonitorElement* Vx_ZY_Cum;
0122 MonitorElement* Vx_XY_Cum;
0123
0124 MonitorElement* goodVxCounter;
0125 MonitorElement* hitCounter;
0126 MonitorElement* statusCounter;
0127
0128 MonitorElement* reportSummary;
0129 MonitorElement* reportSummaryMap;
0130
0131 MonitorElement* fitResults;
0132
0133
0134
0135
0136 std::ofstream outputFile;
0137 std::ofstream outputDebugFile;
0138 edm::TimeValue_t beginTimeOfFit;
0139 edm::TimeValue_t endTimeOfFit;
0140 unsigned int runNumber;
0141 unsigned int lumiCounter;
0142 unsigned int totalHits;
0143 unsigned int numberGoodFits;
0144 unsigned int numberFits;
0145 unsigned int beginLumiOfFit;
0146 unsigned int endLumiOfFit;
0147 unsigned int lastLumiOfFit;
0148 unsigned int nParams;
0149 bool internalDebug;
0150
0151 std::vector<VertexType> Vertices;
0152 bool considerVxCovariance;
0153 unsigned int counterVx;
0154 double maxTransRadius;
0155 double maxLongLength;
0156 double xPos, yPos, zPos;
0157 double pi;
0158 };
0159
0160 #endif