CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
TSGForOI Class Reference

Create L3MuonTrajectorySeeds from L2 Muons updated at vertex in an outside in manner. More...

#include <TSGForOI.h>

Inheritance diagram for TSGForOI:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void produce (edm::StreamID sid, edm::Event &iEvent, const edm::EventSetup &iSetup) const override
 
 TSGForOI (const edm::ParameterSet &iConfig)
 
 ~TSGForOI () override
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::global::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

double calculateSFFromL2 (const reco::TrackRef track) const
 Function used to calculate the dynamic error SF by analysing the L2. More...
 
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. More...
 
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. More...
 
double match_Chi2 (const TrajectoryStateOnSurface &tsos1, const TrajectoryStateOnSurface &tsos2) const
 

Private Attributes

const bool adjustErrorsDynamicallyForHitless_
 
const bool adjustErrorsDynamicallyForHits_
 Whether or not to use an automatically calculated scale-factor value. More...
 
const std::string estimatorName_
 Estimator used to find dets and TrajectoryMeasurements. More...
 
const double eta1_
 
const double eta2_
 
const double fixedErrorRescalingForHitless_
 
const double fixedErrorRescalingForHits_
 How much to rescale errors from the L2 (fixed error vs pT, eta) More...
 
const double maxEtaForTOB_
 Maximum eta value to activate searching in the TOB. More...
 
const edm::EDGetTokenT< MeasurementTrackerEventmeasurementTrackerTag_
 
const double minEtaForTEC_
 Minimum eta value to activate searching in the TEC. More...
 
const unsigned int numOfHitsToTry_
 How many hits to try per layer. More...
 
const unsigned int numOfLayersToTry_
 How many layers to try. More...
 
const unsigned int numOfMaxSeedsParam_
 Maximum number of seeds for each L2. More...
 
const std::string propagatorName_
 Counters and flags for the implementation. More...
 
const double pT1_
 pT, eta ranges and scale factor values More...
 
const double pT2_
 
const double pT3_
 
const double SF1_
 
const double SF2_
 
const double SF3_
 
const double SF4_
 
const double SF5_
 
const edm::EDGetTokenT< reco::TrackCollectionsrc_
 Labels for input collections. More...
 
const std::string theCategory
 
const double tsosDiff_
 Distance of TSOSs to trigger using hits or not. More...
 
const std::unique_ptr< TrajectoryStateUpdatorupdator_
 KFUpdator defined in constructor. More...
 
const bool useHitLessSeeds_
 
const bool useStereoLayersInTEC_
 Switch ON to use Stereo layers instead of using every layer in TEC. More...
 

Additional Inherited Members

- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Create L3MuonTrajectorySeeds from L2 Muons updated at vertex in an outside in manner.

Author
Benjamin Radburn-Smith, Santiago Folgueras

Definition at line 33 of file TSGForOI.h.

Constructor & Destructor Documentation

◆ TSGForOI()

TSGForOI::TSGForOI ( const edm::ParameterSet iConfig)
explicit

Definition at line 15 of file TSGForOI.cc.

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()),
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 }

◆ ~TSGForOI()

TSGForOI::~TSGForOI ( )
override

Definition at line 48 of file TSGForOI.cc.

48 {}

Member Function Documentation

◆ calculateSFFromL2()

double TSGForOI::calculateSFFromL2 ( const reco::TrackRef  track) const
private

Function used to calculate the dynamic error SF by analysing the L2.

Definition at line 356 of file TSGForOI.cc.

356  {
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 }

References funct::abs(), eta1_, eta2_, LogTrace, pT1_, pT2_, pT3_, SF1_, SF2_, SF3_, SF4_, SF5_, theCategory, and HLT_2018_cff::track.

Referenced by findSeedsOnLayer().

◆ fillDescriptions()

void TSGForOI::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 482 of file TSGForOI.cc.

482  {
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 }

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addUntracked(), HLT_2018_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

◆ findSeedsOnLayer()

void TSGForOI::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
private

Function to find seeds on a given layer.

Definition at line 283 of file TSGForOI.cc.

295  {
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 }

References adjustErrorsDynamicallyForHitless_, adjustErrorsDynamicallyForHits_, calculateSFFromL2(), GeometricSearchDet::compatibleDetsV(), fixedErrorRescalingForHitless_, fixedErrorRescalingForHits_, LogTrace, makeSeedsFromHits(), numOfLayersToTry_, oppositeToMomentum, MillePedeFileConverter_cfg::out, trajectoryStateTransform::persistentState(), HLT_2018_cff::propagatorAlong, theCategory, and useHitLessSeeds_.

Referenced by produce().

◆ makeSeedsFromHits()

int TSGForOI::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
private

Function to find hits on layers and create seeds from updated TSOS.

Definition at line 387 of file TSGForOI.cc.

396  {
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 }

References GeometricSearchDet::compatibleDetsV(), MeasurementDetWithData::fastMeasurements(), newFWLiteAna::found, MeasurementDetWithData::isNull(), TrajectoryStateOnSurface::isValid(), LogTrace, HLTSiStripMonitoring_cff::measurementTracker, eostools::move(), numOfHitsToTry_, oppositeToMomentum, MillePedeFileConverter_cfg::out, trajectoryStateTransform::persistentState(), HLT_2018_cff::propagatorAlong, edm::OwnVector< T, P >::push_back(), DetId::rawId(), TrajectoryStateOnSurface::rescaleError(), SurveyInfoScenario_cff::seed, edm::OwnVector< T, P >::size(), DetId::subdetId(), StripSubdetector::TEC, TrackerTopology::tecIsStereo(), updator_, and useStereoLayersInTEC_.

Referenced by findSeedsOnLayer().

◆ match_Chi2()

double TSGForOI::match_Chi2 ( const TrajectoryStateOnSurface tsos1,
const TrajectoryStateOnSurface tsos2 
) const
private

Definition at line 463 of file TSGForOI.cc.

463  {
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 }

References TrajectoryStateOnSurface::isValid(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), visualization-live-secondInstance_cfg::m, LocalTrajectoryError::matrix(), findQualityFiles::v, and LocalTrajectoryParameters::vector().

Referenced by produce().

◆ produce()

void TSGForOI::produce ( edm::StreamID  sid,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
overridevirtual

Init variables

Surface used to make a TSOS at the PCA to the beamline

Read ESHandles

Read L2 track collection

Implements edm::global::EDProducerBase.

Definition at line 50 of file TSGForOI.cc.

50  {
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 }

References funct::abs(), alongMomentum, Plane::build(), estimatorName_, findSeedsOnLayer(), edm::EventSetup::get(), get, iEvent, trajectoryStateTransform::initialFreeState(), trajectoryStateTransform::innerStateOnSurface(), TrackerGeometry::isThere(), TrajectoryStateOnSurface::isValid(), LogTrace, match_Chi2(), maxEtaForTOB_, measurementTrackerTag_, minEtaForTEC_, eostools::move(), numOfMaxSeedsParam_, oppositeToMomentum, MillePedeFileConverter_cfg::out, GeomDetEnumerators::P2OTEC, FreeTrajectoryState::position(), edm::ESHandle< T >::product(), HLT_2018_cff::propagatorAlong, propagatorName_, HLT_2018_cff::propagatorOpposite, mps_fire::result, SetPropagationDirection(), src_, theCategory, and tsosDiff_.

Member Data Documentation

◆ adjustErrorsDynamicallyForHitless_

const bool TSGForOI::adjustErrorsDynamicallyForHitless_
private

Definition at line 59 of file TSGForOI.h.

Referenced by findSeedsOnLayer().

◆ adjustErrorsDynamicallyForHits_

const bool TSGForOI::adjustErrorsDynamicallyForHits_
private

Whether or not to use an automatically calculated scale-factor value.

Definition at line 58 of file TSGForOI.h.

Referenced by findSeedsOnLayer().

◆ estimatorName_

const std::string TSGForOI::estimatorName_
private

Estimator used to find dets and TrajectoryMeasurements.

Definition at line 62 of file TSGForOI.h.

Referenced by produce().

◆ eta1_

const double TSGForOI::eta1_
private

Definition at line 84 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ eta2_

const double TSGForOI::eta2_
private

Definition at line 84 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ fixedErrorRescalingForHitless_

const double TSGForOI::fixedErrorRescalingForHitless_
private

Definition at line 55 of file TSGForOI.h.

Referenced by findSeedsOnLayer().

◆ fixedErrorRescalingForHits_

const double TSGForOI::fixedErrorRescalingForHits_
private

How much to rescale errors from the L2 (fixed error vs pT, eta)

Definition at line 54 of file TSGForOI.h.

Referenced by findSeedsOnLayer().

◆ maxEtaForTOB_

const double TSGForOI::maxEtaForTOB_
private

Maximum eta value to activate searching in the TOB.

Definition at line 68 of file TSGForOI.h.

Referenced by produce().

◆ measurementTrackerTag_

const edm::EDGetTokenT<MeasurementTrackerEvent> TSGForOI::measurementTrackerTag_
private

Definition at line 80 of file TSGForOI.h.

Referenced by produce().

◆ minEtaForTEC_

const double TSGForOI::minEtaForTEC_
private

Minimum eta value to activate searching in the TEC.

Definition at line 65 of file TSGForOI.h.

Referenced by produce().

◆ numOfHitsToTry_

const unsigned int TSGForOI::numOfHitsToTry_
private

How many hits to try per layer.

Definition at line 51 of file TSGForOI.h.

Referenced by makeSeedsFromHits().

◆ numOfLayersToTry_

const unsigned int TSGForOI::numOfLayersToTry_
private

How many layers to try.

Definition at line 48 of file TSGForOI.h.

Referenced by findSeedsOnLayer().

◆ numOfMaxSeedsParam_

const unsigned int TSGForOI::numOfMaxSeedsParam_
private

Maximum number of seeds for each L2.

Definition at line 45 of file TSGForOI.h.

Referenced by produce().

◆ propagatorName_

const std::string TSGForOI::propagatorName_
private

Counters and flags for the implementation.

Definition at line 91 of file TSGForOI.h.

Referenced by produce().

◆ pT1_

const double TSGForOI::pT1_
private

pT, eta ranges and scale factor values

Definition at line 83 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ pT2_

const double TSGForOI::pT2_
private

Definition at line 83 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ pT3_

const double TSGForOI::pT3_
private

Definition at line 83 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ SF1_

const double TSGForOI::SF1_
private

Definition at line 85 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ SF2_

const double TSGForOI::SF2_
private

Definition at line 85 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ SF3_

const double TSGForOI::SF3_
private

Definition at line 85 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ SF4_

const double TSGForOI::SF4_
private

Definition at line 85 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ SF5_

const double TSGForOI::SF5_
private

Definition at line 85 of file TSGForOI.h.

Referenced by calculateSFFromL2().

◆ src_

const edm::EDGetTokenT<reco::TrackCollection> TSGForOI::src_
private

Labels for input collections.

Definition at line 42 of file TSGForOI.h.

Referenced by produce().

◆ theCategory

const std::string TSGForOI::theCategory
private

Definition at line 92 of file TSGForOI.h.

Referenced by calculateSFFromL2(), findSeedsOnLayer(), and produce().

◆ tsosDiff_

const double TSGForOI::tsosDiff_
private

Distance of TSOSs to trigger using hits or not.

Definition at line 88 of file TSGForOI.h.

Referenced by produce().

◆ updator_

const std::unique_ptr<TrajectoryStateUpdator> TSGForOI::updator_
private

KFUpdator defined in constructor.

Definition at line 78 of file TSGForOI.h.

Referenced by makeSeedsFromHits().

◆ useHitLessSeeds_

const bool TSGForOI::useHitLessSeeds_
private

Switch ON (True) : use additional hits for seeds depending on the L2 properties (ignores numOfMaxSeeds_) Switch OFF (False): the numOfMaxSeeds_ defines if we will use hitless (numOfMaxSeeds_==1) or hitless+hits (numOfMaxSeeds_>1)

Definition at line 72 of file TSGForOI.h.

Referenced by findSeedsOnLayer().

◆ useStereoLayersInTEC_

const bool TSGForOI::useStereoLayersInTEC_
private

Switch ON to use Stereo layers instead of using every layer in TEC.

Definition at line 75 of file TSGForOI.h.

Referenced by makeSeedsFromHits().

edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
TkRotation< float >
TSGForOI::adjustErrorsDynamicallyForHits_
const bool adjustErrorsDynamicallyForHits_
Whether or not to use an automatically calculated scale-factor value.
Definition: TSGForOI.h:58
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
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 >
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 >
edm::Ref< TrackCollection >
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
DetId
Definition: DetId.h:17
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
TSGForOI::SF1_
const double SF1_
Definition: TSGForOI.h:85
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
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::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
TSGForOI::measurementTrackerTag_
const edm::EDGetTokenT< MeasurementTrackerEvent > measurementTrackerTag_
Definition: TSGForOI.h:80
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
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
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
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
TSGForOI::theCategory
const std::string theCategory
Definition: TSGForOI.h:92
eostools.move
def move(src, dest)
Definition: eostools.py:511
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
trajectoryStateTransform::innerStateOnSurface
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:110
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
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
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 >
TrackingComponentsRecord
Definition: TrackingComponentsRecord.h:12