CommissioningAlgorithm

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
#ifndef DQM_SiStripCommissioningAnalysis_CommissioningAlgorithm_H
#define DQM_SiStripCommissioningAnalysis_CommissioningAlgorithm_H

#include <vector>
#include <string>
#include <cstdint>

class CommissioningAlgorithm;
class CommissioningAnalysis;
class TH1;

/**
   @class CommissioningAlgorithm
   @author R.Bainbridge 
   @brief 
*/
class CommissioningAlgorithm {
public:
  CommissioningAlgorithm(CommissioningAnalysis* const);

  CommissioningAlgorithm();

  virtual ~CommissioningAlgorithm() { ; }

  typedef std::pair<TH1*, std::string> Histo;

  /** Performs histogram analysis. */
  void analysis(const std::vector<TH1*>&);

protected:
  /** Extracts FED key from histogram title. */
  uint32_t extractFedKey(const TH1* const);

  /** Extracts and organises histograms. */
  virtual void extract(const std::vector<TH1*>&) = 0;

  /** Performs histogram anaylsis. */
  virtual void analyse() = 0;

  /** Analysis class. */
  inline CommissioningAnalysis* const anal() const;

private:
  /** Analysis class. */
  CommissioningAnalysis* anal_;
};

// ---------- inline methods ----------

CommissioningAnalysis* const CommissioningAlgorithm::anal() const { return anal_; }

#endif  // DQM_SiStripCommissioningAnalysis_CommissioningAlgorithm_H