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);
|