CSCPedestalDBReadAnalyzer

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
/*----------------------------------------------------------------------

Toy EDProducers and EDProducts for testing purposes only.

----------------------------------------------------------------------*/

#include <stdexcept>
#include <string>
#include <iostream>
#include <fstream>
#include "FWCore/Framework/interface/one/EDAnalyzer.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"

#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Utilities/interface/ESGetToken.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"

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

#include "CondFormats/CSCObjects/interface/CSCDBPedestals.h"
#include "CondFormats/DataRecord/interface/CSCDBPedestalsRcd.h"

namespace edmtest {
  class CSCPedestalDBReadAnalyzer : public edm::one::EDAnalyzer<> {
  public:
    explicit CSCPedestalDBReadAnalyzer(edm::ParameterSet const& p) : token_{esConsumes()} {}
    ~CSCPedestalDBReadAnalyzer() override {}
    void analyze(const edm::Event& e, const edm::EventSetup& c) override;

  private:
    edm::ESGetToken<CSCDBPedestals, CSCDBPedestalsRcd> token_;
  };

  void CSCPedestalDBReadAnalyzer::analyze(const edm::Event& e, const edm::EventSetup& context) {
    const float epsilon = 1.E-09;  // some 'small' value to test for non-positive values.

    using namespace edm::eventsetup;
    std::ofstream DBPedestalFile("dbpeds.dat", std::ios::out);
    int counter = 0;

    edm::LogSystem log("CSCDBPedestals");

    log << " I AM IN RUN NUMBER " << e.id().run() << std::endl;
    log << " ---EVENT NUMBER " << e.id().event() << std::endl;

    const CSCDBPedestals* myped = &context.getData(token_);
    CSCDBPedestals::PedestalContainer::const_iterator it;

    for (it = myped->pedestals.begin(); it != myped->pedestals.end(); ++it) {
      counter++;
      DBPedestalFile << counter << "  " << it->ped << "  " << it->rms << std::endl;
      if (it->rms <= epsilon)
        DBPedestalFile << " ERROR? pedestal width <= " << epsilon << std::endl;
    }
  }
  DEFINE_FWK_MODULE(CSCPedestalDBReadAnalyzer);
}  // namespace edmtest