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
// -*- C++ -*-
//
// Package:    DQM/SiStripMonitorHardware
// Class:      CMHistograms
//
/**\class CMHistograms DQM/SiStripMonitorHardware/interface/CMHistograms.hh

 Description: DQM source application to produce CM monitoring histograms for SiStrip data
*/
//
// Original Author:  Anne-Marie Magnan
//         Created:  2009/07/22
//

#ifndef DQM_SiStripMonitorHardware_CMHistograms_HH
#define DQM_SiStripMonitorHardware_CMHistograms_HH

#include <sstream>

#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include "DQM/SiStripCommon/interface/TkHistoMap.h"

#include "DQMServices/Core/interface/DQMStore.h"

#include "DQM/SiStripMonitorHardware/interface/HistogramBase.hh"

class CMHistograms : public HistogramBase {
public:
  struct CMvalues {
    unsigned int ChannelID;
    //bool IsShot;
    //uint16_t Length;
    std::pair<uint16_t, uint16_t> Medians;
    //std::pair<float,float> ShotMedians;
    std::pair<uint16_t, uint16_t> PreviousMedians;
  };

  CMHistograms();

  ~CMHistograms() override;

  //initialise histograms
  void initialise(const edm::ParameterSet& iConfig, std::ostringstream* pDebugStream) override;

  void fillHistograms(const std::vector<CMvalues>& aVec, float aTime, unsigned int aFedId);

  //book the top level histograms
  void bookTopLevelHistograms(DQMStore::IBooker&, const TkDetMap*);

  //book individual FED histograms or book all FED level histograms at once
  void bookFEDHistograms(DQMStore::IBooker&, unsigned int fedId);
  //void bookFEDHistograms(unsigned int fedId, unsigned int aCategory);
  void bookChannelsHistograms(DQMStore::IBooker&, unsigned int fedId);

  void bookAllFEDHistograms(DQMStore::IBooker&);

  bool tkHistoMapEnabled(unsigned int aIndex = 0) override;

  TkHistoMap* tkHistoMapPointer(unsigned int aIndex = 0) override;

protected:
private:
  //has individual FED histogram been booked? (index is FedId)
  std::vector<bool> histosBooked_;

  bool doFed_[500];

  HistogramConfig tkMapConfig_;
  std::unique_ptr<TkHistoMap> tkmapCM_[4];

  HistogramConfig medianAPV1vsAPV0_;
  HistogramConfig medianAPV0minusAPV1_;

  HistogramConfig meanCMPerFedvsFedId_;
  HistogramConfig meanCMPerFedvsTime_;

  //CM-previous value for all APVs
  HistogramConfig variationsPerFedvsFedId_;
  HistogramConfig variationsPerFedvsTime_;

  HistogramConfig medianAPV1vsAPV0perFED_;
  HistogramConfig medianAPV0minusAPV1perFED_;
  HistogramConfig medianperChannel_;
  HistogramConfig medianAPV0minusAPV1perChannel_;

  std::map<unsigned int, MonitorElement*> medianAPV1vsAPV0perFEDMap_;
  std::map<unsigned int, MonitorElement*> medianAPV0minusAPV1perFEDMap_;
  std::map<unsigned int, std::vector<MonitorElement*> > medianperChannelMap_;
  std::map<unsigned int, std::vector<MonitorElement*> > medianAPV0minusAPV1perChannelMap_;

};  //class

#endif  //DQM_SiStripMonitorHardware_CMHistograms_HH