File indexing completed on 2023-03-17 10:39:11
0001 #ifndef Alignment_HIPAlignmentAlgorithm_HIPMonitorConfig_h
0002 #define Alignment_HIPAlignmentAlgorithm_HIPMonitorConfig_h
0003
0004 #include <vector>
0005 #include <string>
0006 #include "TTree.h"
0007 #include <FWCore/ParameterSet/interface/ParameterSet.h>
0008 #include <CondFormats/Alignment/interface/Definitions.h>
0009
0010 class HIPMonitorVariables {
0011 protected:
0012 TTree* tree;
0013
0014 public:
0015 HIPMonitorVariables() : tree(nullptr) {}
0016 virtual ~HIPMonitorVariables() {}
0017
0018 void setTree(TTree* tree_) { tree = tree_; }
0019 virtual void bookBranches() = 0;
0020 virtual void fill() = 0;
0021 };
0022 class HIPTrackMonitorVariables : public HIPMonitorVariables {
0023 public:
0024 const int maxNEvents;
0025 const int maxTracksRcd;
0026 int nEvents;
0027 int nTracks;
0028 int m_Ntracks;
0029 std::vector<float> m_Pt, m_Eta, m_Phi, m_Chi2n, m_P, m_d0, m_dz, m_wt;
0030 std::vector<int> m_Nhits, m_nhPXB, m_nhPXF, m_nhTIB, m_nhTOB, m_nhTID, m_nhTEC;
0031
0032 HIPTrackMonitorVariables(int maxNEvents_ = -1, int maxTracksRcd_ = -1)
0033 : HIPMonitorVariables(),
0034 maxNEvents(maxNEvents_),
0035 maxTracksRcd(maxTracksRcd_),
0036 nEvents(0),
0037 nTracks(0),
0038 m_Ntracks(0) {}
0039
0040 void bookBranches() override;
0041 void fill() override;
0042
0043 protected:
0044 void resetPerEvent() {
0045
0046 m_Ntracks = 0;
0047 m_Pt.clear();
0048 m_Eta.clear();
0049 m_Phi.clear();
0050 m_Chi2n.clear();
0051 m_P.clear();
0052 m_d0.clear();
0053 m_dz.clear();
0054 m_wt.clear();
0055 m_Nhits.clear();
0056 m_nhPXB.clear();
0057 m_nhPXF.clear();
0058 m_nhTIB.clear();
0059 m_nhTOB.clear();
0060 m_nhTID.clear();
0061 m_nhTEC.clear();
0062 }
0063 void resizeVectors(int NewSize) {
0064 m_Pt.resize(NewSize);
0065 m_Eta.resize(NewSize);
0066 m_Phi.resize(NewSize);
0067 m_Chi2n.resize(NewSize);
0068 m_P.resize(NewSize);
0069 m_d0.resize(NewSize);
0070 m_dz.resize(NewSize);
0071 m_wt.resize(NewSize);
0072 m_Nhits.resize(NewSize);
0073 m_nhPXB.resize(NewSize);
0074 m_nhPXF.resize(NewSize);
0075 m_nhTIB.resize(NewSize);
0076 m_nhTOB.resize(NewSize);
0077 m_nhTID.resize(NewSize);
0078 m_nhTEC.resize(NewSize);
0079 }
0080 };
0081 class HIPHitMonitorVariables : public HIPMonitorVariables {
0082 public:
0083 const int maxHitsRcd;
0084 int nHits;
0085
0086 bool m_hasHitProb;
0087 float m_sinTheta, m_hitwt, m_angle, m_probXY, m_probQ;
0088 unsigned int m_rawQualityWord;
0089 align::ID m_detId;
0090
0091 protected:
0092 void resetPerHit() {
0093 m_hasHitProb = false;
0094 m_sinTheta = 0;
0095 m_hitwt = 1;
0096 m_angle = 0;
0097 m_probXY = -1;
0098 m_probQ = -1;
0099 m_rawQualityWord = 9999;
0100 m_detId = 0;
0101 }
0102
0103 public:
0104 HIPHitMonitorVariables(int maxHitsRcd_ = -1) : HIPMonitorVariables(), maxHitsRcd(maxHitsRcd_), nHits(0) {
0105 resetPerHit();
0106 }
0107
0108 void bookBranches() override;
0109 void fill() override;
0110 };
0111
0112 struct HIPMonitorConfig {
0113 const edm::ParameterSet cfgMonitor;
0114
0115 const std::string outfilecore;
0116
0117 const int maxEventsPerJob;
0118
0119 const bool fillTrackMonitoring;
0120 const int maxTracks;
0121 HIPTrackMonitorVariables trackmonitorvars;
0122
0123 const bool fillTrackHitMonitoring;
0124 const int maxHits;
0125 HIPHitMonitorVariables hitmonitorvars;
0126
0127 std::string outfile;
0128
0129 int eventCounter;
0130 int hitCounter;
0131
0132 HIPMonitorConfig(const edm::ParameterSet& cfg);
0133 HIPMonitorConfig(const HIPMonitorConfig& other);
0134 ~HIPMonitorConfig() {}
0135
0136 bool checkNevents();
0137 bool checkNhits();
0138 };
0139
0140 #endif