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
#include "DQM/RCTMonitor/interface/RCTMonitor.h"
#include "DQM/RCTMonitor/interface/somedefinitions.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include <iostream>

RCTMonitor::RCTMonitor(const edm::ParameterSet &iConfig) {
  // set Token(-s)
  m_rctSourceToken_ = consumes<L1CaloEmCollection>(iConfig.getUntrackedParameter<edm::InputTag>("rctSource"));
}

RCTMonitor::~RCTMonitor() {}

void RCTMonitor::bookHistograms(DQMStore::IBooker &iBooker, edm::Run const &, edm::EventSetup const &) {
  // Book RCT histograms
  iBooker.setCurrentFolder("RCT");

  m_rctIsoEmRankEtaPhi1 =
      iBooker.book2D("RctIsoEmRankEtaPhi", "ISO EM RANK", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctIsoEmOccEtaPhi1 =
      iBooker.book2D("RctIsoEmOccEtaPhi", "ISO EM OCCUPANCY", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctIsoEmRank1 = iBooker.book1D("RctIsoEmRank", "ISO EM RANK", R6BINS, R6MIN, R6MAX);
  m_rctIsoEmRankEtaPhi10 =
      iBooker.book2D("RctIsoEmRankEtaPhi10", "ISO EM RANK", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctIsoEmOccEtaPhi10 =
      iBooker.book2D("RctIsoEmOccEtaPhi10", "ISO EM OCCUPANCY", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctIsoEmRank10 = iBooker.book1D("RctIsoEmRank10", "ISO EM RANK", R6BINS, R6MIN, R6MAX);

  m_rctNonIsoEmRankEtaPhi1 =
      iBooker.book2D("RctNonIsoEmRankEtaPhi", "NON-ISO EM RANK", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctNonIsoEmOccEtaPhi1 =
      iBooker.book2D("RctNonIsoEmOccEtaPhi", "NON-ISO EM OCCUPANCY", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctNonIsoEmRank1 = iBooker.book1D("RctNonIsoEmRank", "NON-ISO EM RANK", R6BINS, R6MIN, R6MAX);
  m_rctNonIsoEmRankEtaPhi10 =
      iBooker.book2D("RctNonIsoEmRankEtaPhi10", "NON-ISO EM RANK", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctNonIsoEmOccEtaPhi10 = iBooker.book2D(
      "RctNonIsoEmOccEtaPhi10", "NON-ISO EM OCCUPANCY", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctNonIsoEmRank10 = iBooker.book1D("RctNonIsoEmRank10", "NON-ISO EM RANK", R6BINS, R6MIN, R6MAX);

  m_rctRelaxedEmRankEtaPhi1 =
      iBooker.book2D("RctRelaxedEmRankEtaPhi", "RELAXED EM RANK", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctRelaxedEmOccEtaPhi1 =
      iBooker.book2D("RctRelaxedEmOccEtaPhi", "RELAXED EM OCCUPANCY", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctRelaxedEmRank1 = iBooker.book1D("RctRelaxedEmRank", "RELAXED EM RANK", R6BINS, R6MIN, R6MAX);
  m_rctRelaxedEmRankEtaPhi10 =
      iBooker.book2D("RctRelaxedEmRankEtaPhi", "RELAXED EM RANK", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctRelaxedEmOccEtaPhi10 = iBooker.book2D(
      "RctRelaxedEmOccEtaPhi10", "RELAXED EM OCCUPANCY", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctRelaxedEmRank10 = iBooker.book1D("RctRelaxedEmRank", "RELAXED EM RANK", R6BINS, R6MIN, R6MAX);

  m_rctRegionsEtEtaPhi =
      iBooker.book2D("RctRegionsEtEtaPhi", "REGION E_{T}", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctRegionsOccEtaPhi =
      iBooker.book2D("RctRegionsOccEtaPhi", "REGION OCCUPANCY", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctTauVetoEtaPhi =
      iBooker.book2D("RctTauVetoEtaPhi", "TAU VETO OCCUPANCY", PHIBINS, PHIMIN, PHIMAX, ETABINS, ETAMIN, ETAMAX);
  m_rctRegionEt = iBooker.book1D("RctRegionEt", "REGION E_{T}", R10BINS, R10MIN, R10MAX);
}

void RCTMonitor::analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) {
  // Fill histograms
  FillRCT(iEvent, iSetup);
}

float DynamicScale(int EtaStamp) {
  // This function weights bin elements according to spatial extent of
  // calorimeter tower.
  if (EtaStamp >= 6 && EtaStamp <= 15) {
    return ScaleINNER;
  } else if (EtaStamp == 5 || EtaStamp == 16) {
    return ScaleIN;
  } else if (EtaStamp == 4 || EtaStamp == 17) {
    return ScaleOUT;
  } else {
    return 0.000000;
  }
}

void RCTMonitor::FillRCT(const edm::Event &iEvent, const edm::EventSetup &iSetup) {
  // Get the RCT digis
  edm::Handle<L1CaloEmCollection> em;

  iEvent.getByToken(m_rctSourceToken_, em);

  // Isolated and non-isolated EM with cut at >1 GeV
  for (L1CaloEmCollection::const_iterator iem = em->begin(); iem != em->end(); iem++) {
    if (iem->rank() > 1.) {   // applies the 1 GeV cut
      if (iem->isolated()) {  // looks for isolated EM candidates only
        m_rctIsoEmRank1->Fill(iem->rank());
        // std::cout << "Just to show what is there " << iem->rank() <<
        // std::endl ;
        m_rctIsoEmRankEtaPhi1->Fill(iem->regionId().iphi(), iem->regionId().ieta(), iem->rank());
        m_rctIsoEmOccEtaPhi1->Fill(
            iem->regionId().iphi(), iem->regionId().ieta(), DynamicScale(iem->regionId().ieta()));
        m_rctRelaxedEmRankEtaPhi1->Fill(iem->regionId().iphi(), iem->regionId().ieta(), iem->rank());
        m_rctRelaxedEmOccEtaPhi1->Fill(
            iem->regionId().iphi(), iem->regionId().ieta(), DynamicScale(iem->regionId().ieta()));
        m_rctRelaxedEmRank1->Fill(iem->rank());
      } else {  // instructions for Non-isolated EM candidates
        m_rctNonIsoEmRank1->Fill(iem->rank());
        m_rctNonIsoEmRankEtaPhi1->Fill(iem->regionId().iphi(), iem->regionId().ieta(), iem->rank());
        m_rctNonIsoEmOccEtaPhi1->Fill(
            iem->regionId().iphi(), iem->regionId().ieta(), DynamicScale(iem->regionId().ieta()));
        m_rctRelaxedEmRankEtaPhi1->Fill(iem->regionId().iphi(), iem->regionId().ieta(), iem->rank());
        m_rctRelaxedEmOccEtaPhi1->Fill(
            iem->regionId().iphi(), iem->regionId().ieta(), DynamicScale(iem->regionId().ieta()));
        m_rctRelaxedEmRank1->Fill(iem->rank());
      }
    }
    if (iem->rank() > 10.) {  // applies the 10 GeV cut
      if (iem->isolated()) {  // looks for isolated EM candidates only
        m_rctIsoEmOccEtaPhi10->Fill(
            iem->regionId().iphi(), iem->regionId().ieta(), DynamicScale(iem->regionId().ieta()));
        m_rctRelaxedEmOccEtaPhi10->Fill(
            iem->regionId().iphi(), iem->regionId().ieta(), DynamicScale(iem->regionId().ieta()));
      } else {  // instructions for Non-isolated EM candidates
        m_rctNonIsoEmOccEtaPhi10->Fill(
            iem->regionId().iphi(), iem->regionId().ieta(), DynamicScale(iem->regionId().ieta()));
        m_rctRelaxedEmOccEtaPhi10->Fill(
            iem->regionId().iphi(), iem->regionId().ieta(), DynamicScale(iem->regionId().ieta()));
      }
    }
  }
}

// define this as a plug-in
DEFINE_FWK_MODULE(RCTMonitor);