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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#include "FastSimulation/TrackingRecHitProducer/interface/TrackingRecHitAlgorithm.h"
#include "FWCore/AbstractServices/interface/RandomNumberGenerator.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/ConsumesCollector.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "DataFormats/DetId/interface/DetId.h"
#include "DataFormats/TrackerRecHit2D/interface/FastSingleTrackerRecHit.h"
#include "SimDataFormats/TrackingHit/interface/PSimHit.h"
#include "FastSimulation/TrackingRecHitProducer/interface/TrackingRecHitProduct.h"
#include "FWCore/Utilities/interface/Exception.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
TrackingRecHitAlgorithm::TrackingRecHitAlgorithm(const std::string& name,
const edm::ParameterSet& config,
edm::ConsumesCollector& consumesCollector)
: _name(name),
_selectionString(config.getParameter<std::string>("select")),
_trackerTopology(nullptr),
_trackerGeometry(nullptr),
_misalignedTrackerGeometry(nullptr),
trackerTopologyESToken_(consumesCollector.esConsumes()),
trackerGeometryESToken_(consumesCollector.esConsumes()),
misalignedTrackerGeometryESToken_(consumesCollector.esConsumes(edm::ESInputTag("", "MisAligned"))),
_randomEngine(nullptr) {}
const TrackerTopology& TrackingRecHitAlgorithm::getTrackerTopology() const {
if (!_trackerTopology) {
throw cms::Exception("TrackingRecHitAlgorithm ") << _name << ": TrackerTopology not defined";
}
return *_trackerTopology;
}
const TrackerGeometry& TrackingRecHitAlgorithm::getTrackerGeometry() const {
if (!_trackerGeometry) {
throw cms::Exception("TrackingRecHitAlgorithm ") << _name << ": TrackerGeometry not defined";
}
return *_trackerGeometry;
}
const TrackerGeometry& TrackingRecHitAlgorithm::getMisalignedGeometry() const {
if (!_misalignedTrackerGeometry) {
throw cms::Exception("TrackingRecHitAlgorithm ") << _name << ": MisalignedGeometry not defined";
}
return *_misalignedTrackerGeometry;
}
const RandomEngineAndDistribution& TrackingRecHitAlgorithm::getRandomEngine() const {
if (!_randomEngine) {
throw cms::Exception("TrackingRecHitAlgorithm ") << _name << ": RandomEngineAndDistribution not defined";
}
return *_randomEngine;
}
void TrackingRecHitAlgorithm::beginStream(const edm::StreamID& id) {
_randomEngine = std::make_shared<RandomEngineAndDistribution>(id);
}
void TrackingRecHitAlgorithm::beginRun(edm::Run const& run,
const edm::EventSetup& eventSetup,
const SiPixelTemplateDBObject* pixelTemplateDBObjectPtr,
const std::vector<SiPixelTemplateStore>& tempStoreRef) {
// The default is to do nothing.
}
void TrackingRecHitAlgorithm::beginEvent(edm::Event& event, const edm::EventSetup& eventSetup) {
_trackerTopology = &eventSetup.getData(trackerTopologyESToken_);
_trackerGeometry = &eventSetup.getData(trackerGeometryESToken_);
_misalignedTrackerGeometry = &eventSetup.getData(misalignedTrackerGeometryESToken_);
}
TrackingRecHitProductPtr TrackingRecHitAlgorithm::process(TrackingRecHitProductPtr product) const { return product; }
void TrackingRecHitAlgorithm::endEvent(edm::Event& event, const edm::EventSetup& eventSetup) {
//set these to 0 -> ensures that beginEvent needs to be executed before accessing these pointers again
_trackerGeometry = nullptr;
_trackerTopology = nullptr;
_misalignedTrackerGeometry = nullptr;
}
void TrackingRecHitAlgorithm::endStream() { _randomEngine.reset(); }
TrackingRecHitAlgorithm::~TrackingRecHitAlgorithm() {}
|