CSCIndexerAnalyzer

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
#include <memory>

#include "FWCore/Framework/interface/one/EDAnalyzer.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include "CalibMuon/CSCCalibration/interface/CSCIndexerBase.h"
#include "CalibMuon/CSCCalibration/interface/CSCIndexerRecord.h"
#include <iostream>

class CSCIndexerAnalyzer : public edm::one::EDAnalyzer<> {
public:
  explicit CSCIndexerAnalyzer(const edm::ParameterSet &);
  ~CSCIndexerAnalyzer() override = default;

private:
  virtual void analyze(const edm::Event &, const edm::EventSetup &) override;
  const edm::ESGetToken<CSCIndexerBase, CSCIndexerRecord> theCSCIndexerToken_;

  std::string algoName;
};

CSCIndexerAnalyzer::CSCIndexerAnalyzer(const edm::ParameterSet &pset) : theCSCIndexerToken_(esConsumes()) {}

void CSCIndexerAnalyzer::analyze(const edm::Event &ev, const edm::EventSetup &iSetup) {
  const int evalues[10] = {1, 2, 1, 2, 1, 2, 1, 2, 1, 2};    // endcap 1=+z, 2=-z
  const int svalues[10] = {1, 1, 1, 1, 4, 4, 4, 4, 4, 4};    // station 1-4
  const int rvalues[10] = {1, 1, 4, 4, 2, 2, 2, 2, 2, 2};    // ring 1-4
  const int cvalues[10] = {1, 1, 1, 1, 1, 1, 36, 36, 1, 1};  // chamber 1-18/36
  const int lvalues[10] = {1, 1, 1, 1, 1, 1, 1, 1, 6, 6};    // layer 1-6
  const int tvalues[10] = {1, 1, 1, 1, 1, 1, 1, 1, 80, 80};  // strip 1-80 (16, 48 64)

  const auto indexer_ = &iSetup.getData(theCSCIndexerToken_);
  algoName = indexer_->name();

  std::cout << "CSCIndexerAnalyzer: analyze sees algorithm " << algoName << " in Event Setup" << std::endl;

  for (int i = 0; i < 10; ++i) {
    int ie = evalues[i];
    int is = svalues[i];
    int ir = rvalues[i];
    int ic = cvalues[i];
    int il = lvalues[i];
    int istrip = tvalues[i];

    std::cout << "CSCIndexerAnalyzer: calling " << algoName << "::stripChannelIndex(" << ie << "," << is << "," << ir
              << "," << ic << "," << il << "," << istrip
              << ") = " << indexer_->stripChannelIndex(ie, is, ir, ic, il, istrip) << std::endl;
  }
}

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