DiMuonHistograms

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

/**   Class DiMuonHistograms
 *  
 *    DQM monitoring for dimuon mass
 *    
 *    Author:  S.Folgueras, U. Oviedo
 */

/* Base Class Headers */
#include <memory>
#include <fstream>
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/Event.h"

#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include "DQMServices/Core/interface/DQMEDAnalyzer.h"
#include "RecoMuon/TrackingTools/interface/MuonServiceProxy.h"

#include "DataFormats/MuonReco/interface/Muon.h"
#include "DataFormats/MuonReco/interface/MuonFwd.h"
#include "DataFormats/BeamSpot/interface/BeamSpot.h"
#include "DataFormats/VertexReco/interface/Vertex.h"
#include "DataFormats/VertexReco/interface/VertexFwd.h"

class DiMuonHistograms : public DQMEDAnalyzer {
public:
  /* Constructor */
  DiMuonHistograms(const edm::ParameterSet& pset);

  /* Destructor */
  ~DiMuonHistograms() override;

  /* Operations */
  void analyze(const edm::Event&, const edm::EventSetup&) override;
  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;

private:
  MuonServiceProxy* theService;
  edm::ParameterSet parameters;

  // Switch for verbosity
  std::string metname;

  //histo binning parameters
  int etaBin;
  int etaBBin;
  int etaEBin;
  int etaOvlpBin;

  //Defining relevant eta regions
  std::string EtaName[3];

  double EtaCutMin;
  double EtaCutMax;
  double etaBMin;
  double etaBMax;
  double etaECMin;
  double etaECMax;

  //Defining the relevant invariant mass regions
  double lowMassMin;
  double lowMassMax;
  double highMassMin;
  double highMassMax;

  std::vector<MonitorElement*> GlbGlbMuon_LM;
  std::vector<MonitorElement*> GlbGlbMuon_HM;
  std::vector<MonitorElement*> StaTrkMuon_LM;
  std::vector<MonitorElement*> StaTrkMuon_HM;
  std::vector<MonitorElement*> TrkTrkMuon_LM;
  std::vector<MonitorElement*> TrkTrkMuon_HM;

  std::vector<MonitorElement*> LooseLooseMuon;
  std::vector<MonitorElement*> MediumMediumMuon;
  std::vector<MonitorElement*> TightTightMuon;
  std::vector<MonitorElement*> SoftSoftMuon;
  std::vector<MonitorElement*> LooseLooseMuonBadFrac;
  std::vector<MonitorElement*> MediumMediumMuonBadFrac;
  std::vector<MonitorElement*> TightTightMuonBadFrac;
  std::vector<MonitorElement*> SoftSoftMuonBadFrac;

  MonitorElement* test;  // my test

  // Labels used
  edm::EDGetTokenT<edm::View<reco::Muon> > theMuonCollectionLabel_;
  edm::EDGetTokenT<reco::VertexCollection> theVertexLabel_;
  edm::EDGetTokenT<reco::BeamSpot> theBeamSpotLabel_;

  std::string theFolder;

  int nTightTight;
  int nMediumMedium;
  int nLooseLoose;
  int nGlbGlb;
};
#endif