DTRunConditionVarClient

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

/** \class DTRunConditionVarClient
 *
 * Description:
 *  
 *
 * \author : Paolo Bellan, Antonio Branca
 * $date   : 23/09/2011 15:42:04 CET $
 *
 * Modification:
 *
 *  threadsafe version (//-) oct/nov 2014 - WATWanAbdullah -ncpp-um-my
 *
 *
 */

#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Framework/interface/LuminosityBlock.h"

#include "CondFormats/DTObjects/interface/DTMtime.h"
#include "CondFormats/DataRecord/interface/DTMtimeRcd.h"
#include "CondFormats/DTObjects/interface/DTRecoConditions.h"
#include "CondFormats/DataRecord/interface/DTRecoConditionsVdriftRcd.h"

#include "DQMServices/Core/interface/DQMStore.h"
#include "FWCore/ServiceRegistry/interface/Service.h"

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

#include <memory>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <map>

class DTGeometry;
class DTChamberId;
class DTLayerId;
class DTMtime;
class DTRecoConditions;

class DTRunConditionVarClient : public DQMEDHarvester {
public:
  /// Constructor
  DTRunConditionVarClient(const edm::ParameterSet& ps);

  /// Destructor
  ~DTRunConditionVarClient() override;

  void beginRun(const edm::Run& r, const edm::EventSetup& c) override;

protected:
  void dqmEndJob(DQMStore::IBooker&, DQMStore::IGetter&) override;

  /// book the report summary

  void bookWheelHistos(DQMStore::IBooker&,
                       std::string histoType,
                       std::string subfolder,
                       int wh,
                       int nbins,
                       float min,
                       float max,
                       bool isVDCorr = false,
                       bool makeRings = false);

  /// DQM Client Diagnostic
  void dqmEndLuminosityBlock(DQMStore::IBooker&,
                             DQMStore::IGetter&,
                             edm::LuminosityBlock const&,
                             edm::EventSetup const&) override;

  float varQuality(float var, float maxGood, float minBad);
  void percDevVDrift(DTChamberId indexCh, float meanVD, float sigmaVD, float& devVD, float& errdevVD);

private:
  MonitorElement* getChamberHistos(DQMStore::IGetter&, const DTChamberId&, std::string);

  int nevents;

  float minRangeVDrift;
  float maxRangeVDrift;
  float minRangeT0;
  float maxRangeT0;

  float maxGoodVDriftDev;
  float minBadVDriftDev;
  float maxGoodT0;
  float minBadT0;

  float maxGoodVDriftSigma;
  float minBadVDriftSigma;
  float maxGoodT0Sigma;
  float minBadT0Sigma;

  edm::ESGetToken<DTMtime, DTMtimeRcd> mTimeMapToken_;
  const DTMtime* mTimeMap_;  // legacy DB object

  edm::ESGetToken<DTRecoConditions, DTRecoConditionsVdriftRcd> vDriftToken_;
  const DTRecoConditions* vDriftMap_;  // DB object in new format
  bool readLegacyVDriftDB;             // which one to use

  bool bookingdone;

  MonitorElement* glbVDriftSummary;
  MonitorElement* glbT0Summary;

  std::map<int, std::map<std::string, MonitorElement*> > wheelHistos;
  std::map<int, std::map<int, std::map<std::string, MonitorElement*> > > wheelRingHistos;
  std::map<std::string, MonitorElement*> summaryHistos;
  std::map<std::string, MonitorElement*> allwheelHistos;
};

#endif