File indexing completed on 2024-04-06 12:27:56
0001 #include "RecoTBCalo/EcalTBHodoscopeReconstructor/interface/EcalTBHodoscopeRecInfoProducer.h"
0002 #include "TBDataFormats/EcalTBObjects/interface/EcalTBHodoscopeRawInfo.h"
0003 #include "TBDataFormats/EcalTBObjects/interface/EcalTBHodoscopeRecInfo.h"
0004 #include "DataFormats/Common/interface/EDCollection.h"
0005 #include "DataFormats/Common/interface/Handle.h"
0006 #include "FWCore/Framework/interface/ESHandle.h"
0007 #include "FWCore/Framework/interface/EventSetup.h"
0008
0009 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0010
0011 EcalTBHodoscopeRecInfoProducer::EcalTBHodoscopeRecInfoProducer(edm::ParameterSet const& ps)
0012 : rawInfoProducerToken_(consumes(ps.getParameter<std::string>("rawInfoProducer"))),
0013 rawInfoCollection_(ps.getParameter<std::string>("rawInfoCollection")),
0014 recInfoCollection_(ps.getParameter<std::string>("recInfoCollection")),
0015 fitMethod_(ps.getParameter<int>("fitMethod")),
0016 algo_(fitMethod_,
0017 ps.getParameter<std::vector<double> >("planeShift"),
0018 ps.getParameter<std::vector<double> >("zPosition")) {
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 produces<EcalTBHodoscopeRecInfo>(recInfoCollection_);
0032 }
0033
0034 void EcalTBHodoscopeRecInfoProducer::produce(edm::StreamID, edm::Event& e, const edm::EventSetup& es) const {
0035
0036 edm::Handle<EcalTBHodoscopeRawInfo> ecalRawHodoscope = e.getHandle(rawInfoProducerToken_);
0037 const EcalTBHodoscopeRawInfo* ecalHodoRawInfo = nullptr;
0038 if (ecalRawHodoscope.isValid()) {
0039 ecalHodoRawInfo = ecalRawHodoscope.product();
0040 }
0041
0042 if (!ecalHodoRawInfo) {
0043 edm::LogError("EcalTBHodoscopeRecInfoError") << "Error! can't get the product " << rawInfoCollection_.c_str();
0044 return;
0045 }
0046
0047 if ((*ecalHodoRawInfo).planes() != 4) {
0048 edm::LogError("EcalTBHodoscopeRecInfoError")
0049 << "Number of planes different from expected " << rawInfoCollection_.c_str();
0050 return;
0051 }
0052
0053
0054
0055 e.put(std::make_unique<EcalTBHodoscopeRecInfo>(algo_.reconstruct(*ecalRawHodoscope)), recInfoCollection_);
0056 }