SiStripHashedDetIdFakeESSource

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
#include "FWCore/Framework/interface/ESProducer.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"

#include "Geometry/Records/interface/IdealGeometryRecord.h"
#include "Geometry/TrackerNumberingBuilder/interface/GeometricDet.h"
#include "Geometry/TrackerNumberingBuilder/interface/utils.h"

#include "CalibFormats/SiStripObjects/interface/SiStripHashedDetId.h"
#include "CalibTracker/Records/interface/SiStripHashedDetIdRcd.h"

class SiStripHashedDetIdFakeESSource : public edm::ESProducer {
public:
  explicit SiStripHashedDetIdFakeESSource(const edm::ParameterSet&);
  ~SiStripHashedDetIdFakeESSource() override;

  virtual std::unique_ptr<SiStripHashedDetId> produce(const SiStripHashedDetIdRcd&);

private:
  const edm::ESGetToken<GeometricDet, IdealGeometryRecord> geomDetToken_;
};

using namespace sistrip;

SiStripHashedDetIdFakeESSource::SiStripHashedDetIdFakeESSource(const edm::ParameterSet& pset)
    : geomDetToken_(setWhatProduced(this).consumes()) {}

SiStripHashedDetIdFakeESSource::~SiStripHashedDetIdFakeESSource() {}

std::unique_ptr<SiStripHashedDetId> SiStripHashedDetIdFakeESSource::produce(const SiStripHashedDetIdRcd& record) {
  edm::LogVerbatim("HashedDetId") << "[SiStripHashedDetIdFakeESSource::" << __func__ << "]"
                                  << " Building \"fake\" hashed DetId map from IdealGeometry";

  const auto& geomDetRcd = record.getRecord<TrackerDigiGeometryRecord>();
  const auto& geomDet = geomDetRcd.get(geomDetToken_);

  const std::vector<uint32_t> dets = TrackerGeometryUtils::getSiStripDetIds(geomDet);
  edm::LogVerbatim("HashedDetId") << "[SiStripHashedDetIdFakeESSource::" << __func__ << "]"
                                  << " Retrieved " << dets.size() << " DetIds from IdealGeometry!";

  auto hash = std::make_unique<SiStripHashedDetId>(dets);
  LogTrace("HashedDetId") << "[SiStripHashedDetIdFakeESSource::" << __func__ << "]"
                          << " DetId hash map: " << std::endl
                          << *hash;

  return hash;
}

#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/Framework/interface/ModuleFactory.h"
DEFINE_FWK_EVENTSETUP_MODULE(SiStripHashedDetIdFakeESSource);