NoiseAnalysis

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 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
#ifndef CondFormats_SiStripObjects_NoiseAnalysis_H
#define CondFormats_SiStripObjects_NoiseAnalysis_H

#include "CondFormats/SiStripObjects/interface/CommissioningAnalysis.h"
#include "DataFormats/SiStripCommon/interface/SiStripConstants.h"
#include <sstream>
#include <vector>
#include <cstdint>

/** 
    @class NoiseAnalysis
    @author M. Wingham, R.Bainbridge
    @brief Histogram-based analysis for pedestal run.
*/
class NoiseAnalysis : public CommissioningAnalysis {
public:
  // ---------- con(de)structors ----------

  NoiseAnalysis(const uint32_t& key);

  NoiseAnalysis();

  ~NoiseAnalysis() override { ; }

  friend class NoiseAlgorithm;

  // ---------- public interface ----------

  /** Identifies if analysis is valid or not. */
  bool isValid() const override;

  // Pedestal, noise and raw noise (128-strip vector per APV)
  inline const VVFloat& peds() const;
  inline const VVFloat& noise() const;
  inline const VVFloat& raw() const;

  // Dead and noisy strips (vector per APV)
  inline const VVInt& dead() const;
  inline const VVInt& noisy() const;

  // Mean and rms spread (value per APV)
  inline const VFloat& pedsMean() const;
  inline const VFloat& pedsSpread() const;
  inline const VFloat& noiseMean() const;
  inline const VFloat& noiseSpread() const;
  inline const VFloat& rawMean() const;
  inline const VFloat& rawSpread() const;

  // Max and min values (value per APV)
  inline const VFloat& pedsMax() const;
  inline const VFloat& pedsMin() const;
  inline const VFloat& noiseMax() const;
  inline const VFloat& noiseMin() const;
  inline const VFloat& rawMax() const;
  inline const VFloat& rawMin() const;

  // ---------- misc ----------

  /** Prints analysis results. */
  void print(std::stringstream&, uint32_t apv_number = 0) override;

  /** Overrides base method. */
  void summary(std::stringstream&) const override;

  /** Resets analysis member data. */
  void reset() override;

  // ---------- private member data ----------

private:
  // VVFloats means: 1 vector per APV, 1 value per strip.

  /** Peds values. */
  VVFloat peds_;

  /** Noise values. */
  VVFloat noise_;

  /** Raw noise values. */
  VVFloat raw_;

  // VVInts means: 1 vector per APV, values are strip numbers.

  /** Dead strips. */
  VVInt dead_;

  /** Noisy strips. */
  VVInt noisy_;

  // VFloat: 1 value per APV

  /** Mean peds value. */
  VFloat pedsMean_;

  /** Rms spread in peds. */
  VFloat pedsSpread_;

  /** Mean noise value. */
  VFloat noiseMean_;

  /** Rms spread in noise. */
  VFloat noiseSpread_;

  /** Mean raw noise value. */
  VFloat rawMean_;

  /** Rms spread in raw noise. */
  VFloat rawSpread_;

  /** Max peds value. */
  VFloat pedsMax_;

  /** Min peds value. */
  VFloat pedsMin_;

  /** Max noise value. */
  VFloat noiseMax_;

  /** Min noise value. */
  VFloat noiseMin_;

  /** Max raw noise value. */
  VFloat rawMax_;

  /** Min raw noise value. */
  VFloat rawMin_;

  // true if legacy histogram naming is used
  bool legacy_;
};

// ---------- Inline methods ----------

const NoiseAnalysis::VVFloat& NoiseAnalysis::peds() const { return peds_; }
const NoiseAnalysis::VVFloat& NoiseAnalysis::noise() const { return noise_; }
const NoiseAnalysis::VVFloat& NoiseAnalysis::raw() const { return raw_; }

const NoiseAnalysis::VVInt& NoiseAnalysis::dead() const { return dead_; }
const NoiseAnalysis::VVInt& NoiseAnalysis::noisy() const { return noisy_; }

const NoiseAnalysis::VFloat& NoiseAnalysis::pedsMean() const { return pedsMean_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::pedsSpread() const { return pedsSpread_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::noiseMean() const { return noiseMean_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::noiseSpread() const { return noiseSpread_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::rawMean() const { return rawMean_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::rawSpread() const { return rawSpread_; }

const NoiseAnalysis::VFloat& NoiseAnalysis::pedsMax() const { return pedsMax_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::pedsMin() const { return pedsMin_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::noiseMax() const { return noiseMax_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::noiseMin() const { return noiseMin_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::rawMax() const { return rawMax_; }
const NoiseAnalysis::VFloat& NoiseAnalysis::rawMin() const { return rawMin_; }

#endif  // CondFormats_SiStripObjects_NoiseAnalysis_H