CMS 3D CMS Logo

TSGForOI.cc
Go to the documentation of this file.
1 
9 
10 #include <memory>
11 
12 using namespace edm;
13 using namespace std;
14 
16  : src_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("src"))),
17  numOfMaxSeedsParam_(iConfig.getParameter<uint32_t>("maxSeeds")),
18  numOfLayersToTry_(iConfig.getParameter<int32_t>("layersToTry")),
19  numOfHitsToTry_(iConfig.getParameter<int32_t>("hitsToTry")),
20  fixedErrorRescalingForHits_(iConfig.getParameter<double>("fixedErrorRescaleFactorForHits")),
21  fixedErrorRescalingForHitless_(iConfig.getParameter<double>("fixedErrorRescaleFactorForHitless")),
22  adjustErrorsDynamicallyForHits_(iConfig.getParameter<bool>("adjustErrorsDynamicallyForHits")),
23  adjustErrorsDynamicallyForHitless_(iConfig.getParameter<bool>("adjustErrorsDynamicallyForHitless")),
24  estimatorName_(iConfig.getParameter<std::string>("estimator")),
25  minEtaForTEC_(iConfig.getParameter<double>("minEtaForTEC")),
26  maxEtaForTOB_(iConfig.getParameter<double>("maxEtaForTOB")),
27  useHitLessSeeds_(iConfig.getParameter<bool>("UseHitLessSeeds")),
28  useStereoLayersInTEC_(iConfig.getParameter<bool>("UseStereoLayersInTEC")),
29  updator_(new KFUpdator()),
30  measurementTrackerTag_(
31  consumes<MeasurementTrackerEvent>(iConfig.getParameter<edm::InputTag>("MeasurementTrackerEvent"))),
32  pT1_(iConfig.getParameter<double>("pT1")),
33  pT2_(iConfig.getParameter<double>("pT2")),
34  pT3_(iConfig.getParameter<double>("pT3")),
35  eta1_(iConfig.getParameter<double>("eta1")),
36  eta2_(iConfig.getParameter<double>("eta2")),
37  SF1_(iConfig.getParameter<double>("SF1")),
38  SF2_(iConfig.getParameter<double>("SF2")),
39  SF3_(iConfig.getParameter<double>("SF3")),
40  SF4_(iConfig.getParameter<double>("SF4")),
41  SF5_(iConfig.getParameter<double>("SF5")),
42  tsosDiff_(iConfig.getParameter<double>("tsosDiff")),
43  propagatorName_(iConfig.getParameter<std::string>("propagatorName")),
44  theCategory(string("Muon|RecoMuon|TSGForOI")) {
45  produces<std::vector<TrajectorySeed> >();
46 }
47 
49 
52  unsigned int numOfMaxSeeds = numOfMaxSeedsParam_;
53  unsigned int numSeedsMade = 0;
54  bool analysedL2 = false;
55  unsigned int layerCount = 0;
56 
59 
61  edm::Handle<MeasurementTrackerEvent> measurementTrackerH;
64  edm::ESHandle<Propagator> propagatorAlongH;
65  edm::ESHandle<Propagator> propagatorOppositeH;
66  edm::ESHandle<TrackerGeometry> tmpTkGeometryH;
68 
69  iSetup.get<IdealMagneticFieldRecord>().get(magfieldH);
70  iSetup.get<TrackingComponentsRecord>().get(propagatorName_, propagatorOppositeH);
71  iSetup.get<TrackingComponentsRecord>().get(propagatorName_, propagatorAlongH);
72  iSetup.get<GlobalTrackingGeometryRecord>().get(geometryH);
73  iSetup.get<TrackerDigiGeometryRecord>().get(tmpTkGeometryH);
74  iSetup.get<TrackingComponentsRecord>().get(estimatorName_, estimatorH);
75  iEvent.getByToken(measurementTrackerTag_, measurementTrackerH);
76 
79  iEvent.getByToken(src_, l2TrackCol);
80 
81  // The product:
82  std::unique_ptr<std::vector<TrajectorySeed> > result(new std::vector<TrajectorySeed>());
83 
84  // Get vector of Detector layers once:
85  std::vector<BarrelDetLayer const*> const& tob = measurementTrackerH->geometricSearchTracker()->tobLayers();
86  std::vector<ForwardDetLayer const*> const& tecPositive =
87  tmpTkGeometryH->isThere(GeomDetEnumerators::P2OTEC)
88  ? measurementTrackerH->geometricSearchTracker()->posTidLayers()
89  : measurementTrackerH->geometricSearchTracker()->posTecLayers();
90  std::vector<ForwardDetLayer const*> const& tecNegative =
91  tmpTkGeometryH->isThere(GeomDetEnumerators::P2OTEC)
92  ? measurementTrackerH->geometricSearchTracker()->negTidLayers()
93  : measurementTrackerH->geometricSearchTracker()->negTecLayers();
94  edm::ESHandle<TrackerTopology> tTopo_handle;
95  iSetup.get<TrackerTopologyRcd>().get(tTopo_handle);
96  const TrackerTopology* tTopo = tTopo_handle.product();
97 
98  // Get the suitable propagators:
99  std::unique_ptr<Propagator> propagatorAlong = SetPropagationDirection(*propagatorAlongH, alongMomentum);
100  std::unique_ptr<Propagator> propagatorOpposite = SetPropagationDirection(*propagatorOppositeH, oppositeToMomentum);
101 
102  edm::ESHandle<Propagator> SmartOpposite;
103  edm::ESHandle<Propagator> SHPOpposite;
104  iSetup.get<TrackingComponentsRecord>().get("hltESPSmartPropagatorAnyOpposite", SmartOpposite);
105  iSetup.get<TrackingComponentsRecord>().get("hltESPSteppingHelixPropagatorOpposite", SHPOpposite);
106 
107  // Loop over the L2's and make seeds for all of them:
108  LogTrace(theCategory) << "TSGForOI::produce: Number of L2's: " << l2TrackCol->size();
109  for (unsigned int l2TrackColIndex(0); l2TrackColIndex != l2TrackCol->size(); ++l2TrackColIndex) {
110  const reco::TrackRef l2(l2TrackCol, l2TrackColIndex);
111  std::unique_ptr<std::vector<TrajectorySeed> > out(new std::vector<TrajectorySeed>());
112  LogTrace("TSGForOI") << "TSGForOI::produce: L2 muon pT, eta, phi --> " << l2->pt() << " , " << l2->eta() << " , "
113  << l2->phi() << endl;
114 
116  dummyPlane->move(fts.position() - dummyPlane->position());
117  TrajectoryStateOnSurface tsosAtIP = TrajectoryStateOnSurface(fts, *dummyPlane);
118  LogTrace("TSGForOI") << "TSGForOI::produce: Created TSOSatIP: " << tsosAtIP << std::endl;
119 
120  // get the TSOS on the innermost layer of the L2.
121  TrajectoryStateOnSurface tsosAtMuonSystem =
122  trajectoryStateTransform::innerStateOnSurface(*l2, *geometryH, magfieldH.product());
123  LogTrace("TSGForOI") << "TSGForOI::produce: Created TSOSatMuonSystem: " << tsosAtMuonSystem << endl;
124 
125  LogTrace("TSGForOI") << "TSGForOI::produce: Check the error of the L2 parameter and use hit seeds if big errors"
126  << endl;
127  StateOnTrackerBound fromInside(propagatorAlong.get());
128  TrajectoryStateOnSurface outerTkStateInside = fromInside(fts);
129 
130  StateOnTrackerBound fromOutside(&*SmartOpposite);
131  TrajectoryStateOnSurface outerTkStateOutside = fromOutside(tsosAtMuonSystem);
132 
133  // for now only checking if the two positions (using updated and not-updated) agree withing certain extent,
134  // will probably have to design something fancier for the future.
135  auto dist = 0.0;
136  bool useBoth = false;
137  if (outerTkStateInside.isValid() && outerTkStateOutside.isValid()) {
138  dist = match_Chi2(outerTkStateInside, outerTkStateOutside);
139  }
140  if (dist > tsosDiff_) {
141  useBoth = true;
142  }
143 
144  numSeedsMade = 0;
145  analysedL2 = false;
146 
147  // if both TSOSs agree, use only the one at vertex, as it uses more information. If they do not agree, search for seed based on both
148 
149  // BARREL
150  if (std::abs(l2->eta()) < maxEtaForTOB_) {
151  layerCount = 0;
152  for (auto it = tob.rbegin(); it != tob.rend(); ++it) { //This goes from outermost to innermost layer
153  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TOB layer " << layerCount << endl;
154  findSeedsOnLayer(tTopo,
155  **it,
156  tsosAtIP,
157  *(propagatorAlong.get()),
158  *(propagatorOpposite.get()),
159  l2,
160  estimatorH,
161  measurementTrackerH,
162  numSeedsMade,
163  numOfMaxSeeds,
164  layerCount,
165  analysedL2,
166  out);
167  }
168  if (useBoth) {
169  numSeedsMade = 0;
170  for (auto it = tob.rbegin(); it != tob.rend(); ++it) { //This goes from outermost to innermost layer
171  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TOB layer " << layerCount << endl;
172  findSeedsOnLayer(tTopo,
173  **it,
174  tsosAtMuonSystem,
175  *(propagatorOpposite.get()),
176  *(propagatorOpposite.get()),
177  l2,
178  estimatorH,
179  measurementTrackerH,
180  numSeedsMade,
181  numOfMaxSeeds,
182  layerCount,
183  analysedL2,
184  out);
185  }
186  }
187  }
188  // Reset Number of seeds if in overlap region:
189 
190  if (std::abs(l2->eta()) > minEtaForTEC_ && std::abs(l2->eta()) < maxEtaForTOB_) {
191  numSeedsMade = 0;
192  }
193 
194  // ENDCAP+
195  if (l2->eta() > minEtaForTEC_) {
196  layerCount = 0;
197  for (auto it = tecPositive.rbegin(); it != tecPositive.rend(); ++it) {
198  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TEC+ layer " << layerCount << endl;
199  findSeedsOnLayer(tTopo,
200  **it,
201  tsosAtIP,
202  *(propagatorAlong.get()),
203  *(propagatorOpposite.get()),
204  l2,
205  estimatorH,
206  measurementTrackerH,
207  numSeedsMade,
208  numOfMaxSeeds,
209  layerCount,
210  analysedL2,
211  out);
212  }
213  if (useBoth) {
214  numSeedsMade = 0;
215  for (auto it = tecPositive.rbegin(); it != tecPositive.rend(); ++it) {
216  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TEC+ layer " << layerCount << endl;
217  findSeedsOnLayer(tTopo,
218  **it,
219  tsosAtMuonSystem,
220  *(propagatorOpposite.get()),
221  *(propagatorOpposite.get()),
222  l2,
223  estimatorH,
224  measurementTrackerH,
225  numSeedsMade,
226  numOfMaxSeeds,
227  layerCount,
228  analysedL2,
229  out);
230  }
231  }
232  }
233 
234  // ENDCAP-
235  if (l2->eta() < -minEtaForTEC_) {
236  layerCount = 0;
237  for (auto it = tecNegative.rbegin(); it != tecNegative.rend(); ++it) {
238  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TEC- layer " << layerCount << endl;
239  findSeedsOnLayer(tTopo,
240  **it,
241  tsosAtIP,
242  *(propagatorAlong.get()),
243  *(propagatorOpposite.get()),
244  l2,
245  estimatorH,
246  measurementTrackerH,
247  numSeedsMade,
248  numOfMaxSeeds,
249  layerCount,
250  analysedL2,
251  out);
252  }
253  if (useBoth) {
254  numSeedsMade = 0;
255  for (auto it = tecNegative.rbegin(); it != tecNegative.rend(); ++it) {
256  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TEC- layer " << layerCount << endl;
257  findSeedsOnLayer(tTopo,
258  **it,
259  tsosAtMuonSystem,
260  *(propagatorOpposite.get()),
261  *(propagatorOpposite.get()),
262  l2,
263  estimatorH,
264  measurementTrackerH,
265  numSeedsMade,
266  numOfMaxSeeds,
267  layerCount,
268  analysedL2,
269  out);
270  }
271  }
272  }
273 
274  for (std::vector<TrajectorySeed>::iterator it = out->begin(); it != out->end(); ++it) {
275  result->push_back(*it);
276  }
277  } //L2Collection
278  edm::LogInfo(theCategory) << "TSGForOI::produce: number of seeds made: " << result->size();
279 
280  iEvent.put(std::move(result));
281 }
282 
284  const GeometricSearchDet& layer,
285  const TrajectoryStateOnSurface& tsosAtIP,
288  const reco::TrackRef l2,
290  edm::Handle<MeasurementTrackerEvent>& measurementTrackerH,
291  unsigned int& numSeedsMade,
292  unsigned int& numOfMaxSeeds,
293  unsigned int& layerCount,
294  bool& analysedL2,
295  std::unique_ptr<std::vector<TrajectorySeed> >& out) const {
296  if (numSeedsMade > numOfMaxSeeds)
297  return;
298  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: numSeedsMade = " << numSeedsMade
299  << " , layerCount = " << layerCount << endl;
300 
301  double errorSFHits = 1.0;
302  double errorSFHitless = 1.0;
304  errorSFHits = fixedErrorRescalingForHits_;
305  else
306  errorSFHits = calculateSFFromL2(l2);
308  errorSFHitless = fixedErrorRescalingForHitless_;
309 
310  // Hitless: TO Be discarded from here at some point.
311  if (useHitLessSeeds_) {
312  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: Start hitless" << endl;
313  std::vector<GeometricSearchDet::DetWithState> dets;
314  layer.compatibleDetsV(tsosAtIP, propagatorAlong, *estimatorH, dets);
315  if (!dets.empty()) {
316  auto const& detOnLayer = dets.front().first;
317  auto const& tsosOnLayer = dets.front().second;
318  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: tsosOnLayer " << tsosOnLayer << endl;
319  if (!tsosOnLayer.isValid()) {
320  edm::LogInfo(theCategory) << "ERROR!: Hitless TSOS is not valid!";
321  } else {
322  // calculate SF from L2 (only once -- if needed)
323  if (!analysedL2 && adjustErrorsDynamicallyForHitless_) {
324  errorSFHitless = calculateSFFromL2(l2);
325  analysedL2 = true;
326  }
327 
328  dets.front().second.rescaleError(errorSFHitless);
329  PTrajectoryStateOnDet const& ptsod =
330  trajectoryStateTransform::persistentState(tsosOnLayer, detOnLayer->geographicalId().rawId());
332  out->push_back(TrajectorySeed(ptsod, rHC, oppositeToMomentum));
333  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: TSOD (Hitless) done " << endl;
334  numSeedsMade++;
335  }
336  }
337  }
338 
339  // Hits:
340  if (layerCount > numOfLayersToTry_)
341  return;
342  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: Start Hits" << endl;
343  if (makeSeedsFromHits(tTopo,
344  layer,
345  tsosAtIP,
346  *out,
348  *measurementTrackerH,
349  estimatorH,
350  numSeedsMade,
351  errorSFHits,
352  l2->eta()))
353  ++layerCount;
354 }
355 
357  double theSF = 1.0;
358  // L2 direction vs pT blowup - as was previously done:
359  // Split into 4 pT ranges: <pT1_, pT1_<pT2_, pT2_<pT3_, <pT4_: 13,30,70
360  // Split into 2 eta ranges for the middle two pT ranges: 1.0,1.4
361  double abseta = std::abs(track->eta());
362  if (track->pt() <= pT1_)
363  theSF = SF1_;
364  if (track->pt() > pT1_ && track->pt() <= pT2_) {
365  if (abseta <= eta1_)
366  theSF = SF3_;
367  if (abseta > eta1_ && abseta <= eta2_)
368  theSF = SF2_;
369  if (abseta > eta2_)
370  theSF = SF3_;
371  }
372  if (track->pt() > pT2_ && track->pt() <= pT3_) {
373  if (abseta <= eta1_)
374  theSF = SF5_;
375  if (abseta > eta1_ && abseta <= eta2_)
376  theSF = SF4_;
377  if (abseta > eta2_)
378  theSF = SF5_;
379  }
380  if (track->pt() > pT3_)
381  theSF = SF5_;
382 
383  LogTrace(theCategory) << "TSGForOI::calculateSFFromL2: SF has been calculated as: " << theSF;
384  return theSF;
385 }
386 
388  const GeometricSearchDet& layer,
389  const TrajectoryStateOnSurface& tsosAtIP,
390  std::vector<TrajectorySeed>& out,
394  unsigned int& numSeedsMade,
395  const double errorSF,
396  const double l2Eta) const {
397  // Error Rescaling:
398  TrajectoryStateOnSurface onLayer(tsosAtIP);
399  onLayer.rescaleError(errorSF);
400 
401  std::vector<GeometricSearchDet::DetWithState> dets;
402  layer.compatibleDetsV(onLayer, propagatorAlong, *estimatorH, dets);
403 
404  // Find Measurements on each DetWithState:
405  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: find measurements on each detWithState " << dets.size() << endl;
406  std::vector<TrajectoryMeasurement> meas;
407  for (std::vector<GeometricSearchDet::DetWithState>::iterator it = dets.begin(); it != dets.end(); ++it) {
408  MeasurementDetWithData det = measurementTracker.idToDet(it->first->geographicalId());
409  if (det.isNull()) {
410  continue;
411  }
412  if (!it->second.isValid())
413  continue; //Skip if TSOS is not valid
414 
415  std::vector<TrajectoryMeasurement> mymeas =
416  det.fastMeasurements(it->second, onLayer, propagatorAlong, *estimatorH); //Second TSOS is not used
417  for (std::vector<TrajectoryMeasurement>::const_iterator it2 = mymeas.begin(), ed2 = mymeas.end(); it2 != ed2;
418  ++it2) {
419  if (it2->recHit()->isValid())
420  meas.push_back(*it2); //Only save those which are valid
421  }
422  }
423 
424  // Update TSOS using TMs after sorting, then create Trajectory Seed and put into vector:
425  LogTrace("TSGForOI")
426  << "TSGForOI::findSeedsOnLayer: Update TSOS using TMs after sorting, then create Trajectory Seed, number of TM = "
427  << meas.size() << endl;
428  unsigned int found = 0;
429  std::sort(meas.begin(), meas.end(), TrajMeasLessEstim());
430  for (std::vector<TrajectoryMeasurement>::const_iterator it = meas.begin(); it != meas.end(); ++it) {
431  TrajectoryStateOnSurface updatedTSOS = updator_->update(it->forwardPredictedState(), *it->recHit());
432  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: TSOS for TM " << found << endl;
433  if (not updatedTSOS.isValid())
434  continue;
435 
436  // CHECK if is StereoLayer:
437  if (useStereoLayersInTEC_ && (fabs(l2Eta) > 0.8 && fabs(l2Eta) < 1.6)) {
438  DetId detid = ((*it).recHit()->hit())->geographicalId();
439  if (detid.subdetId() == StripSubdetector::TEC) {
440  if (!tTopo->tecIsStereo(detid.rawId()))
441  break; // try another layer
442  }
443  }
444 
446  seedHits.push_back(*it->recHit()->hit());
447  PTrajectoryStateOnDet const& pstate =
448  trajectoryStateTransform::persistentState(updatedTSOS, it->recHit()->geographicalId().rawId());
449  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: number of seedHits: " << seedHits.size() << endl;
450  TrajectorySeed seed(pstate, std::move(seedHits), oppositeToMomentum);
451  out.push_back(seed);
452  found++;
453  numSeedsMade++;
454  if (found == numOfHitsToTry_)
455  break;
456  }
457  return found;
458 }
459 //
462 
464  if (!tsos1.isValid() || !tsos2.isValid())
465  return -1.;
466 
468  AlgebraicSymMatrix55 m(tsos1.localError().matrix() + tsos2.localError().matrix());
469 
470  bool ierr = !m.Invert();
471 
472  if (ierr) {
473  edm::LogInfo("TSGForOI") << "Error inverting covariance matrix";
474  return -1;
475  }
476 
477  double est = ROOT::Math::Similarity(v, m);
478 
479  return est;
480 }
481 
484  desc.add<edm::InputTag>("src", edm::InputTag("hltL2Muons", "UpdatedAtVtx"));
485  desc.add<int>("layersToTry", 1);
486  desc.add<double>("fixedErrorRescaleFactorForHitless", 2.0);
487  desc.add<int>("hitsToTry", 1);
488  desc.add<bool>("adjustErrorsDynamicallyForHits", false);
489  desc.add<bool>("adjustErrorsDynamicallyForHitless", false);
490  desc.add<edm::InputTag>("MeasurementTrackerEvent", edm::InputTag("hltSiStripClusters"));
491  desc.add<bool>("UseHitLessSeeds", true);
492  desc.add<bool>("UseStereoLayersInTEC", false);
493  desc.add<std::string>("estimator", "hltESPChi2MeasurementEstimator100");
494  desc.add<double>("maxEtaForTOB", 1.2);
495  desc.add<double>("minEtaForTEC", 0.8);
496  desc.addUntracked<bool>("debug", true);
497  desc.add<double>("fixedErrorRescaleFactorForHits", 2.0);
498  desc.add<unsigned int>("maxSeeds", 1);
499  desc.add<double>("pT1", 13.0);
500  desc.add<double>("pT2", 30.0);
501  desc.add<double>("pT3", 70.0);
502  desc.add<double>("eta1", 1.0);
503  desc.add<double>("eta2", 1.4);
504  desc.add<double>("SF1", 3.0);
505  desc.add<double>("SF2", 4.0);
506  desc.add<double>("SF3", 5.0);
507  desc.add<double>("SF4", 7.0);
508  desc.add<double>("SF5", 10.0);
509  desc.add<double>("tsosDiff", 0.03);
510  desc.add<std::string>("propagatorName", "PropagatorWithMaterial");
511  descriptions.add("TSGForOI", desc);
512 }
513 
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
edm::StreamID
Definition: StreamID.h:30
TkRotation< float >
TSGForOI::adjustErrorsDynamicallyForHits_
const bool adjustErrorsDynamicallyForHits_
Whether or not to use an automatically calculated scale-factor value.
Definition: TSGForOI.h:58
electrons_cff.bool
bool
Definition: electrons_cff.py:372
MeasurementDetWithData::fastMeasurements
std::vector< TrajectoryMeasurement > fastMeasurements(const TrajectoryStateOnSurface &stateOnThisDet, const TrajectoryStateOnSurface &tsos2, const Propagator &prop, const MeasurementEstimator &est) const
Definition: MeasurementDetWithData.h:46
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
TSGForOI::calculateSFFromL2
double calculateSFFromL2(const reco::TrackRef track) const
Function used to calculate the dynamic error SF by analysing the L2.
Definition: TSGForOI.cc:356
TSGForOI::tsosDiff_
const double tsosDiff_
Distance of TSOSs to trigger using hits or not.
Definition: TSGForOI.h:88
TSGForOI::SF2_
const double SF2_
Definition: TSGForOI.h:85
trajectoryStateTransform::initialFreeState
FreeTrajectoryState initialFreeState(const reco::Track &tk, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:58
TSGForOI::updator_
const std::unique_ptr< TrajectoryStateUpdator > updator_
KFUpdator defined in constructor.
Definition: TSGForOI.h:78
HLTSiStripMonitoring_cff.measurementTracker
measurementTracker
Definition: HLTSiStripMonitoring_cff.py:178
TSGForOI::produce
void produce(edm::StreamID sid, edm::Event &iEvent, const edm::EventSetup &iSetup) const override
Definition: TSGForOI.cc:50
TSGForOI
Create L3MuonTrajectorySeeds from L2 Muons updated at vertex in an outside in manner.
Definition: TSGForOI.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackerTopology
Definition: TrackerTopology.h:16
trajectoryStateTransform::persistentState
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
Definition: TrajectoryStateTransform.cc:14
edm::LogInfo
Definition: MessageLogger.h:254
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
TSGForOI::minEtaForTEC_
const double minEtaForTEC_
Minimum eta value to activate searching in the TEC.
Definition: TSGForOI.h:65
TrackerTopology::tecIsStereo
bool tecIsStereo(const DetId &id) const
Definition: TrackerTopology.h:265
TSGForOI::maxEtaForTOB_
const double maxEtaForTOB_
Maximum eta value to activate searching in the TOB.
Definition: TSGForOI.h:68
oppositeToMomentum
Definition: PropagationDirection.h:4
GlobalTrackingGeometryRecord
Definition: GlobalTrackingGeometryRecord.h:17
TrajMeasLessEstim
Definition: TrajMeasLessEstim.h:10
SetPropagationDirection
std::unique_ptr< Propagator > SetPropagationDirection(Propagator const &iprop, PropagationDirection dir)
Definition: HelperPropagatorUtility.cc:5
LocalTrajectoryError::matrix
const AlgebraicSymMatrix55 & matrix() const
Definition: LocalTrajectoryError.h:60
ReferenceCountingPointer< Plane >
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
FreeTrajectoryState::position
GlobalPoint position() const
Definition: FreeTrajectoryState.h:67
TSGForOI::numOfLayersToTry_
const unsigned int numOfLayersToTry_
How many layers to try.
Definition: TSGForOI.h:48
findQualityFiles.v
v
Definition: findQualityFiles.py:179
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::Handle< MeasurementTrackerEvent >
TSGForOI::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: TSGForOI.cc:482
edm::Ref< TrackCollection >
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
Propagator
Definition: Propagator.h:44
DetId
Definition: DetId.h:17
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
TrackerTopology.h
TSGForOI::SF1_
const double SF1_
Definition: TSGForOI.h:85
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
edm::ESHandle< Chi2MeasurementEstimatorBase >
TSGForOI::findSeedsOnLayer
void findSeedsOnLayer(const TrackerTopology *tTopo, const GeometricSearchDet &layer, const TrajectoryStateOnSurface &tsosAtIP, const Propagator &propagatorAlong, const Propagator &propagatorOpposite, const reco::TrackRef l2, edm::ESHandle< Chi2MeasurementEstimatorBase > &estimator_, edm::Handle< MeasurementTrackerEvent > &measurementTrackerH, unsigned int &numSeedsMade, unsigned int &numOfMaxSeeds, unsigned int &layerCount, bool &analysedL2, std::unique_ptr< std::vector< TrajectorySeed > > &out) const
Function to find seeds on a given layer.
Definition: TSGForOI.cc:283
TSGForOI::propagatorName_
const std::string propagatorName_
Counters and flags for the implementation.
Definition: TSGForOI.h:91
LocalTrajectoryParameters::vector
AlgebraicVector5 vector() const
Definition: LocalTrajectoryParameters.h:120
GeomDetEnumerators::P2OTEC
Definition: GeomDetEnumerators.h:24
Point3DBase< float, GlobalTag >
TSGForOI::SF3_
const double SF3_
Definition: TSGForOI.h:85
TSGForOI::match_Chi2
double match_Chi2(const TrajectoryStateOnSurface &tsos1, const TrajectoryStateOnSurface &tsos2) const
Definition: TSGForOI.cc:463
TrackerGeometry::isThere
bool isThere(GeomDetEnumerators::SubDetector subdet) const
Definition: TrackerGeometry.cc:219
MeasurementDetWithData::isNull
bool isNull() const
Definition: MeasurementDetWithData.h:13
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
TSGForOI::eta2_
const double eta2_
Definition: TSGForOI.h:84
TSGForOI::~TSGForOI
~TSGForOI() override
Definition: TSGForOI.cc:48
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
TSGForOI::fixedErrorRescalingForHits_
const double fixedErrorRescalingForHits_
How much to rescale errors from the L2 (fixed error vs pT, eta)
Definition: TSGForOI.h:54
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TSGForOI::useHitLessSeeds_
const bool useHitLessSeeds_
Definition: TSGForOI.h:72
TrajectoryStateOnSurface::localParameters
const LocalTrajectoryParameters & localParameters() const
Definition: TrajectoryStateOnSurface.h:73
TSGForOI::pT2_
const double pT2_
Definition: TSGForOI.h:83
Plane::build
static PlanePointer build(Args &&... args)
Definition: Plane.h:33
edm::ParameterSetDescription::addUntracked
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:100
TSGForOI::measurementTrackerTag_
const edm::EDGetTokenT< MeasurementTrackerEvent > measurementTrackerTag_
Definition: TSGForOI.h:80
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
TSGForOI::eta1_
const double eta1_
Definition: TSGForOI.h:84
TSGForOI::SF4_
const double SF4_
Definition: TSGForOI.h:85
GeometricSearchDet::compatibleDetsV
virtual void compatibleDetsV(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const
Definition: GeometricSearchDet.cc:9
TSGForOI::useStereoLayersInTEC_
const bool useStereoLayersInTEC_
Switch ON to use Stereo layers instead of using every layer in TEC.
Definition: TSGForOI.h:75
iEvent
int iEvent
Definition: GenABIO.cc:224
TSGForOI::src_
const edm::EDGetTokenT< reco::TrackCollection > src_
Labels for input collections.
Definition: TSGForOI.h:42
TSGForOI::numOfHitsToTry_
const unsigned int numOfHitsToTry_
How many hits to try per layer.
Definition: TSGForOI.h:51
StateOnTrackerBound
Definition: StateOnTrackerBound.h:13
edm::EventSetup
Definition: EventSetup.h:57
TSGForOI::estimatorName_
const std::string estimatorName_
Estimator used to find dets and TrajectoryMeasurements.
Definition: TSGForOI.h:62
AlgebraicVector5
ROOT::Math::SVector< double, 5 > AlgebraicVector5
Definition: AlgebraicROOTObjects.h:14
get
#define get
TSGForOI::adjustErrorsDynamicallyForHitless_
const bool adjustErrorsDynamicallyForHitless_
Definition: TSGForOI.h:59
TSGForOI::SF5_
const double SF5_
Definition: TSGForOI.h:85
TSGForOI::pT1_
const double pT1_
pT, eta ranges and scale factor values
Definition: TSGForOI.h:83
HLT_2018_cff.propagatorAlong
propagatorAlong
Definition: HLT_2018_cff.py:118
TrajectoryStateOnSurface::rescaleError
void rescaleError(double factor)
Definition: TrajectoryStateOnSurface.h:82
TSGForOI::TSGForOI
TSGForOI(const edm::ParameterSet &iConfig)
Definition: TSGForOI.cc:15
cms::cuda::device::unique_ptr
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
Definition: device_unique_ptr.h:33
TSGForOI::theCategory
const std::string theCategory
Definition: TSGForOI.h:92
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
MeasurementDetWithData
Definition: MeasurementDetWithData.h:6
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
TrajectorySeed
Definition: TrajectorySeed.h:17
edm::OwnVector::push_back
void push_back(D *&d)
Definition: OwnVector.h:326
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
TSGForOI::fixedErrorRescalingForHitless_
const double fixedErrorRescalingForHitless_
Definition: TSGForOI.h:55
mps_fire.result
result
Definition: mps_fire.py:303
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:671
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
PTrajectoryStateOnDet
Definition: PTrajectoryStateOnDet.h:10
GeometricSearchDet
Definition: GeometricSearchDet.h:17
trajectoryStateTransform::innerStateOnSurface
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:110
TSGForOI.h
TSGForOI::makeSeedsFromHits
int makeSeedsFromHits(const TrackerTopology *tTopo, const GeometricSearchDet &layer, const TrajectoryStateOnSurface &tsosAtIP, std::vector< TrajectorySeed > &out, const Propagator &propagatorAlong, const MeasurementTrackerEvent &measurementTracker, edm::ESHandle< Chi2MeasurementEstimatorBase > &estimator_, unsigned int &numSeedsMade, const double errorSF, const double l2Eta) const
Function to find hits on layers and create seeds from updated TSOS.
Definition: TSGForOI.cc:387
HLT_2018_cff.propagatorOpposite
propagatorOpposite
Definition: HLT_2018_cff.py:116
edm::Event
Definition: Event.h:73
TrajectoryStateOnSurface::localError
const LocalTrajectoryError & localError() const
Definition: TrajectoryStateOnSurface.h:77
AlgebraicSymMatrix55
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
Definition: AlgebraicROOTObjects.h:23
edm::OwnVector::size
size_type size() const
Definition: OwnVector.h:300
TSGForOI::pT3_
const double pT3_
Definition: TSGForOI.h:83
edm::InputTag
Definition: InputTag.h:15
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
alongMomentum
Definition: PropagationDirection.h:4
KFUpdator
Definition: KFUpdator.h:32
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
SurveyInfoScenario_cff.seed
seed
Definition: SurveyInfoScenario_cff.py:295
TSGForOI::numOfMaxSeedsParam_
const unsigned int numOfMaxSeedsParam_
Maximum number of seeds for each L2.
Definition: TSGForOI.h:45
edm::OwnVector< TrackingRecHit >
HLTSiStripMonitoring_cff.MeasurementTrackerEvent
MeasurementTrackerEvent
Definition: HLTSiStripMonitoring_cff.py:224
TrackingComponentsRecord
Definition: TrackingComponentsRecord.h:12