|
|
Go to the documentation of this file.
13 : killScenario_(killScenario),
14 trackerTopology_(trackerTopology),
15 trackerGeometry_(trackerGeometry),
22 fractionOfStubsToKillInLayers_(0),
23 fractionOfStubsToKillEverywhere_(0),
24 fractionOfModulesToKillEverywhere_(0) {
29 <<
"StubKiller: requires RandomNumberGeneratorService, not present in cfg file, namely:" << endl
30 <<
"process.RandomNumberGeneratorService=cms.Service('RandomNumberGeneratorService',TMTrackProducer=cms.PSet("
31 "initialSeed=cms.untracked.uint32(12345)))";
116 bool killStubRandomly =
killStub(stub,
129 return killStubRandomly || killStubInDeadModules;
142 const vector<int>& layersToKill,
143 const double minPhiToKill,
144 const double maxPhiToKill,
145 const double minZToKill,
146 const double maxZToKill,
147 const double minRToKill,
148 const double maxRToKill,
149 const double fractionOfStubsToKillInLayers,
150 const double fractionOfStubsToKillEverywhere)
const {
152 if (not layersToKill.empty()) {
168 if (
find(layersToKill.begin(), layersToKill.end(), layerID) != layersToKill.end()) {
171 const PixelGeomDetUnit* theGeomDet = dynamic_cast<const PixelGeomDetUnit*>(det0);
179 if (stubPhi > minPhiToKill && stubPhi < maxPhiToKill &&
pos.z() > minZToKill &&
pos.z() < maxZToKill &&
180 pos.perp() > minRToKill &&
pos.perp() < maxRToKill) {
182 if (fractionOfStubsToKillInLayers == 1) {
185 if (
rndmEngine_->flat() < fractionOfStubsToKillInLayers) {
195 if (fractionOfStubsToKillEverywhere > 0) {
196 if (
rndmEngine_->flat() < fractionOfStubsToKillEverywhere) {
212 if (deadModule->second == 1) {
241 float moduleR = gd->position().perp();
242 float moduleZ = gd->position().z();
244 DetId geoDetId = gd->geographicalId();
unsigned int side(const DetId &id) const
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
void chooseModulesToKill()
bool isLower(const DetId &id) const
double fractionOfStubsToKillInLayers_
constexpr double deltaPhi(double phi1, double phi2)
const TrackerTopology * trackerTopology_
edm::Service< edm::RandomNumberGenerator > rndmService_
unsigned int layer(const DetId &id) const
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
std::map< DetId, float > deadModules_
double fractionOfStubsToKillEverywhere_
KillOptions killScenario_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
CLHEP::HepRandomEngine * rndmEngine_
unsigned int tidWheel(const DetId &id) const
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
const edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > & clusterRef(unsigned int hitStackMember) const
Clusters composing the Stub – see https://twiki.cern.ch/twiki/bin/viewauth/CMS/SLHCTrackerTriggerSWTo...
const Plane & surface() const
The nominal surface of the GeomDet.
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
Class to store the L1 Track Trigger stubs.
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
bool killStubInDeadModule(const TTStub< Ref_Phase2TrackerDigi_ > *stub) const
static constexpr auto TIB
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
DetId getDetId() const
Detector element.
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
double fractionOfModulesToKillEverywhere_
const TrackerGeometry * trackerGeometry_
constexpr uint32_t rawId() const
get the raw id
static constexpr auto TOB
void addDeadLayerModulesToDeadModuleList()
std::vector< int > layersToKill_
=== This is the base class for the linearised chi-squared track fit algorithms.
bool killStub(const TTStub< Ref_Phase2TrackerDigi_ > *stub) const