HIPHitMonitorVariables

HIPMonitorConfig

HIPMonitorVariables

HIPTrackMonitorVariables

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
#ifndef Alignment_HIPAlignmentAlgorithm_HIPMonitorConfig_h
#define Alignment_HIPAlignmentAlgorithm_HIPMonitorConfig_h

#include <vector>
#include <string>
#include "TTree.h"
#include <FWCore/ParameterSet/interface/ParameterSet.h>
#include <CondFormats/Alignment/interface/Definitions.h>

class HIPMonitorVariables {
protected:
  TTree* tree;

public:
  HIPMonitorVariables() : tree(nullptr) {}
  virtual ~HIPMonitorVariables() {}

  void setTree(TTree* tree_) { tree = tree_; }
  virtual void bookBranches() = 0;
  virtual void fill() = 0;
};
class HIPTrackMonitorVariables : public HIPMonitorVariables {
public:
  const int maxNEvents;
  const int maxTracksRcd;
  int nEvents;
  int nTracks;
  int m_Ntracks;
  std::vector<float> m_Pt, m_Eta, m_Phi, m_Chi2n, m_P, m_d0, m_dz, m_wt;
  std::vector<int> m_Nhits, m_nhPXB, m_nhPXF, m_nhTIB, m_nhTOB, m_nhTID, m_nhTEC;

  HIPTrackMonitorVariables(int maxNEvents_ = -1, int maxTracksRcd_ = -1)
      : HIPMonitorVariables(),
        maxNEvents(maxNEvents_),
        maxTracksRcd(maxTracksRcd_),
        nEvents(0),
        nTracks(0),
        m_Ntracks(0) {}

  void bookBranches() override;
  void fill() override;

protected:
  void resetPerEvent() {
    // Do not reset nTracks
    m_Ntracks = 0;
    m_Pt.clear();
    m_Eta.clear();
    m_Phi.clear();
    m_Chi2n.clear();
    m_P.clear();
    m_d0.clear();
    m_dz.clear();
    m_wt.clear();
    m_Nhits.clear();
    m_nhPXB.clear();
    m_nhPXF.clear();
    m_nhTIB.clear();
    m_nhTOB.clear();
    m_nhTID.clear();
    m_nhTEC.clear();
  }
  void resizeVectors(int NewSize) {
    m_Pt.resize(NewSize);
    m_Eta.resize(NewSize);
    m_Phi.resize(NewSize);
    m_Chi2n.resize(NewSize);
    m_P.resize(NewSize);
    m_d0.resize(NewSize);
    m_dz.resize(NewSize);
    m_wt.resize(NewSize);
    m_Nhits.resize(NewSize);
    m_nhPXB.resize(NewSize);
    m_nhPXF.resize(NewSize);
    m_nhTIB.resize(NewSize);
    m_nhTOB.resize(NewSize);
    m_nhTID.resize(NewSize);
    m_nhTEC.resize(NewSize);
  }
};
class HIPHitMonitorVariables : public HIPMonitorVariables {
public:
  const int maxHitsRcd;
  int nHits;

  bool m_hasHitProb;
  float m_sinTheta, m_hitwt, m_angle, m_probXY, m_probQ;
  unsigned int m_rawQualityWord;
  align::ID m_detId;

protected:
  void resetPerHit() {
    m_hasHitProb = false;
    m_sinTheta = 0;
    m_hitwt = 1;
    m_angle = 0;
    m_probXY = -1;
    m_probQ = -1;
    m_rawQualityWord = 9999;
    m_detId = 0;
  }

public:
  HIPHitMonitorVariables(int maxHitsRcd_ = -1) : HIPMonitorVariables(), maxHitsRcd(maxHitsRcd_), nHits(0) {
    resetPerHit();
  }

  void bookBranches() override;
  void fill() override;
};

struct HIPMonitorConfig {
  const edm::ParameterSet cfgMonitor;

  const std::string outfilecore;

  const int maxEventsPerJob;

  const bool fillTrackMonitoring;
  const int maxTracks;
  HIPTrackMonitorVariables trackmonitorvars;

  const bool fillTrackHitMonitoring;
  const int maxHits;
  HIPHitMonitorVariables hitmonitorvars;

  std::string outfile;

  int eventCounter;
  int hitCounter;

  HIPMonitorConfig(const edm::ParameterSet& cfg);
  HIPMonitorConfig(const HIPMonitorConfig& other);
  ~HIPMonitorConfig() {}

  bool checkNevents();
  bool checkNhits();
};

#endif