CMS 3D CMS Logo

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

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

#include <TSGForOIFromL2.h>

Inheritance diagram for TSGForOIFromL2:
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
 
 TSGForOIFromL2 (const edm::ParameterSet &iConfig)
 
 ~TSGForOIFromL2 () 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
 Calculate the dynamic error SF by analysing the L2. More...
 
void makeSeedsFromHits (const GeometricSearchDet &layer, const TrajectoryStateOnSurface &tsos, const Propagator &propagatorAlong, edm::ESHandle< Chi2MeasurementEstimatorBase > &estimator, edm::Handle< MeasurementTrackerEvent > &measurementTracker, double errorSF, unsigned int &hitSeedsMade, unsigned int &numSeedsMade, unsigned int &layerCount, std::vector< TrajectorySeed > &out) const
 Find hits on a given layer (TOB or TEC) and create seeds from updated TSOS with hit. More...
 
void makeSeedsWithoutHits (const GeometricSearchDet &layer, const TrajectoryStateOnSurface &tsos, const Propagator &propagatorAlong, edm::ESHandle< Chi2MeasurementEstimatorBase > &estimator, double errorSF, unsigned int &hitlessSeedsMade, unsigned int &numSeedsMade, std::vector< TrajectorySeed > &out) const
 Create seeds without hits on a given layer (TOB or TEC) More...
 
double match_Chi2 (const TrajectoryStateOnSurface &tsos1, const TrajectoryStateOnSurface &tsos2) const
 Find compatability between two TSOSs. More...
 

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 eta3_
 
const double eta4_
 
const double eta5_
 
const double eta6_
 
const double eta7_
 
const double fixedErrorRescalingForHitless_
 
const double fixedErrorRescalingForHits_
 Rescale L2 parameter uncertainties (fixed error vs pT, eta) More...
 
const double maxEtaForTOB_
 Maximum eta value to activate searching in the TOB. More...
 
const unsigned int maxHitlessSeeds_
 Maximum number of hitless seeds for each L2. More...
 
const unsigned int maxHitSeeds_
 Maximum number of hitbased seeds for each L2. More...
 
const unsigned int maxSeeds_
 Maximum number of seeds for each L2. More...
 
const edm::EDGetTokenT< MeasurementTrackerEventmeasurementTrackerTag_
 
const double minEtaForTEC_
 Minimum eta value to activate searching in the TEC. More...
 
const unsigned int numL2ValidHitsCutAllEndcap_
 
const unsigned int numL2ValidHitsCutAllEta_
 L2 valid hit cuts to decide seed creation by both states. More...
 
const unsigned int numOfHitsToTry_
 How many hits to try per layer. More...
 
const unsigned int numOfLayersToTry_
 How many layers to try. 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 double SF6_
 
const edm::EDGetTokenT< reco::TrackCollectionsrc_
 Labels for input collections. More...
 
const std::string theCategory_
 
const double tsosDiff1_
 Distance of L2 TSOSs before and after updated with vertex. More...
 
const double tsosDiff2_
 
const std::unique_ptr< TrajectoryStateUpdatorupdator_
 KFUpdator defined in constructor. More...
 
const bool useHitLessSeeds_
 

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, Bibhuprasad Mahakud, Jan Frederik Schulte (Purdue University, West Lafayette, USA)
Benjamin Radburn-Smith, Santiago Folgueras, Bibhuprasad Mahakud, Jan Frederik Schulte (Purdue University, West Lafayette)

Definition at line 34 of file TSGForOIFromL2.h.

Constructor & Destructor Documentation

◆ TSGForOIFromL2()

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

Definition at line 13 of file TSGForOIFromL2.cc.

14  : src_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("src"))),
15  maxSeeds_(iConfig.getParameter<uint32_t>("maxSeeds")),
16  maxHitlessSeeds_(iConfig.getParameter<uint32_t>("maxHitlessSeeds")),
17  maxHitSeeds_(iConfig.getParameter<uint32_t>("maxHitSeeds")),
18  numOfLayersToTry_(iConfig.getParameter<int32_t>("layersToTry")),
19  numOfHitsToTry_(iConfig.getParameter<int32_t>("hitsToTry")),
20  numL2ValidHitsCutAllEta_(iConfig.getParameter<uint32_t>("numL2ValidHitsCutAllEta")),
21  numL2ValidHitsCutAllEndcap_(iConfig.getParameter<uint32_t>("numL2ValidHitsCutAllEndcap")),
22  fixedErrorRescalingForHits_(iConfig.getParameter<double>("fixedErrorRescaleFactorForHits")),
23  fixedErrorRescalingForHitless_(iConfig.getParameter<double>("fixedErrorRescaleFactorForHitless")),
24  adjustErrorsDynamicallyForHits_(iConfig.getParameter<bool>("adjustErrorsDynamicallyForHits")),
25  adjustErrorsDynamicallyForHitless_(iConfig.getParameter<bool>("adjustErrorsDynamicallyForHitless")),
26  estimatorName_(iConfig.getParameter<std::string>("estimator")),
27  minEtaForTEC_(iConfig.getParameter<double>("minEtaForTEC")),
28  maxEtaForTOB_(iConfig.getParameter<double>("maxEtaForTOB")),
29  useHitLessSeeds_(iConfig.getParameter<bool>("UseHitLessSeeds")),
30  updator_(new KFUpdator()),
32  consumes<MeasurementTrackerEvent>(iConfig.getParameter<edm::InputTag>("MeasurementTrackerEvent"))),
33  pT1_(iConfig.getParameter<double>("pT1")),
34  pT2_(iConfig.getParameter<double>("pT2")),
35  pT3_(iConfig.getParameter<double>("pT3")),
36  eta1_(iConfig.getParameter<double>("eta1")),
37  eta2_(iConfig.getParameter<double>("eta2")),
38  eta3_(iConfig.getParameter<double>("eta3")),
39  eta4_(iConfig.getParameter<double>("eta4")),
40  eta5_(iConfig.getParameter<double>("eta5")),
41  eta6_(iConfig.getParameter<double>("eta6")),
42  eta7_(iConfig.getParameter<double>("eta7")),
43  SF1_(iConfig.getParameter<double>("SF1")),
44  SF2_(iConfig.getParameter<double>("SF2")),
45  SF3_(iConfig.getParameter<double>("SF3")),
46  SF4_(iConfig.getParameter<double>("SF4")),
47  SF5_(iConfig.getParameter<double>("SF5")),
48  SF6_(iConfig.getParameter<double>("SF6")),
49  tsosDiff1_(iConfig.getParameter<double>("tsosDiff1")),
50  tsosDiff2_(iConfig.getParameter<double>("tsosDiff2")),
51  propagatorName_(iConfig.getParameter<std::string>("propagatorName")),
52  theCategory_(std::string("Muon|RecoMuon|TSGForOIFromL2")) {
53  produces<std::vector<TrajectorySeed> >();
54 }

◆ ~TSGForOIFromL2()

TSGForOIFromL2::~TSGForOIFromL2 ( )
override

Definition at line 56 of file TSGForOIFromL2.cc.

56 {}

Member Function Documentation

◆ calculateSFFromL2()

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

Calculate the dynamic error SF by analysing the L2.

Definition at line 439 of file TSGForOIFromL2.cc.

439  {
440  double theSF = 1.0;
441  // L2 direction vs pT blowup - as was previously done:
442  // Split into 4 pT ranges: <pT1_, pT1_<pT2_, pT2_<pT3_, <pT4_: 13,30,70
443  // Split into different eta ranges depending in pT
444  double abseta = std::abs(track->eta());
445  if (track->pt() <= pT1_)
446  theSF = SF1_;
447  else if (track->pt() > pT1_ && track->pt() <= pT2_) {
448  if (abseta <= eta3_)
449  theSF = SF3_;
450  else if (abseta > eta3_ && abseta <= eta6_)
451  theSF = SF2_;
452  else if (abseta > eta6_)
453  theSF = SF3_;
454  } else if (track->pt() > pT2_ && track->pt() <= pT3_) {
455  if (abseta <= eta1_)
456  theSF = SF6_;
457  else if (abseta > eta1_ && abseta <= eta2_)
458  theSF = SF4_;
459  else if (abseta > eta2_ && abseta <= eta3_)
460  theSF = SF6_;
461  else if (abseta > eta3_ && abseta <= eta4_)
462  theSF = SF1_;
463  else if (abseta > eta4_ && abseta <= eta5_)
464  theSF = SF1_;
465  else if (abseta > eta5_)
466  theSF = SF5_;
467  } else if (track->pt() > pT3_) {
468  if (abseta <= eta3_)
469  theSF = SF5_;
470  else if (abseta > eta3_ && abseta <= eta4_)
471  theSF = SF4_;
472  else if (abseta > eta4_ && abseta <= eta5_)
473  theSF = SF4_;
474  else if (abseta > eta5_)
475  theSF = SF5_;
476  }
477 
478  LogTrace(theCategory_) << "TSGForOIFromL2::calculateSFFromL2: SF has been calculated as: " << theSF;
479 
480  return theSF;
481 }

References funct::abs(), eta1_, eta2_, eta3_, eta4_, eta5_, eta6_, LogTrace, pT1_, pT2_, pT3_, SF1_, SF2_, SF3_, SF4_, SF5_, SF6_, theCategory_, and HLT_2018_cff::track.

Referenced by produce().

◆ fillDescriptions()

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

Definition at line 508 of file TSGForOIFromL2.cc.

508  {
510  desc.add<edm::InputTag>("src", edm::InputTag("hltL2Muons", "UpdatedAtVtx"));
511  desc.add<int>("layersToTry", 2);
512  desc.add<double>("fixedErrorRescaleFactorForHitless", 2.0);
513  desc.add<int>("hitsToTry", 1);
514  desc.add<bool>("adjustErrorsDynamicallyForHits", false);
515  desc.add<bool>("adjustErrorsDynamicallyForHitless", true);
516  desc.add<edm::InputTag>("MeasurementTrackerEvent", edm::InputTag("hltSiStripClusters"));
517  desc.add<bool>("UseHitLessSeeds", true);
518  desc.add<std::string>("estimator", "hltESPChi2MeasurementEstimator100");
519  desc.add<double>("maxEtaForTOB", 1.8);
520  desc.add<double>("minEtaForTEC", 0.7);
521  desc.addUntracked<bool>("debug", false);
522  desc.add<double>("fixedErrorRescaleFactorForHits", 1.0);
523  desc.add<unsigned int>("maxSeeds", 20);
524  desc.add<unsigned int>("maxHitlessSeeds", 5);
525  desc.add<unsigned int>("maxHitSeeds", 1);
526  desc.add<unsigned int>("numL2ValidHitsCutAllEta", 20);
527  desc.add<unsigned int>("numL2ValidHitsCutAllEndcap", 30);
528  desc.add<double>("pT1", 13.0);
529  desc.add<double>("pT2", 30.0);
530  desc.add<double>("pT3", 70.0);
531  desc.add<double>("eta1", 0.2);
532  desc.add<double>("eta2", 0.3);
533  desc.add<double>("eta3", 1.0);
534  desc.add<double>("eta4", 1.2);
535  desc.add<double>("eta5", 1.6);
536  desc.add<double>("eta6", 1.4);
537  desc.add<double>("eta7", 2.1);
538  desc.add<double>("SF1", 3.0);
539  desc.add<double>("SF2", 4.0);
540  desc.add<double>("SF3", 5.0);
541  desc.add<double>("SF4", 7.0);
542  desc.add<double>("SF5", 10.0);
543  desc.add<double>("SF6", 2.0);
544  desc.add<double>("tsosDiff1", 0.2);
545  desc.add<double>("tsosDiff2", 0.02);
546  desc.add<std::string>("propagatorName", "PropagatorWithMaterialParabolicMf");
547  descriptions.add("TSGForOIFromL2", desc);
548 }

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

◆ makeSeedsFromHits()

void TSGForOIFromL2::makeSeedsFromHits ( const GeometricSearchDet layer,
const TrajectoryStateOnSurface tsos,
const Propagator propagatorAlong,
edm::ESHandle< Chi2MeasurementEstimatorBase > &  estimator,
edm::Handle< MeasurementTrackerEvent > &  measurementTracker,
double  errorSF,
unsigned int &  hitSeedsMade,
unsigned int &  numSeedsMade,
unsigned int &  layerCount,
std::vector< TrajectorySeed > &  out 
) const
private

Find hits on a given layer (TOB or TEC) and create seeds from updated TSOS with hit.

Definition at line 362 of file TSGForOIFromL2.cc.

371  {
372  if (layerCount > numOfLayersToTry_)
373  return;
374 
375  // Error Rescaling
376  TrajectoryStateOnSurface onLayer(tsos);
377  onLayer.rescaleError(errorSF);
378 
379  std::vector<GeometricSearchDet::DetWithState> dets;
380  layer.compatibleDetsV(onLayer, propagatorAlong, *estimator, dets);
381 
382  // Find Measurements on each DetWithState
383  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::makeSeedsFromHits: Find measurements on each detWithState "
384  << dets.size() << std::endl;
385  std::vector<TrajectoryMeasurement> meas;
386  for (std::vector<GeometricSearchDet::DetWithState>::iterator it = dets.begin(); it != dets.end(); ++it) {
387  MeasurementDetWithData det = measurementTracker->idToDet(it->first->geographicalId());
388  if (det.isNull())
389  continue;
390  if (!it->second.isValid())
391  continue; // Skip if TSOS is not valid
392 
393  std::vector<TrajectoryMeasurement> mymeas =
394  det.fastMeasurements(it->second, onLayer, propagatorAlong, *estimator); // Second TSOS is not used
395  for (std::vector<TrajectoryMeasurement>::const_iterator it2 = mymeas.begin(), ed2 = mymeas.end(); it2 != ed2;
396  ++it2) {
397  if (it2->recHit()->isValid())
398  meas.push_back(*it2); // Only save those which are valid
399  }
400  }
401 
402  // Update TSOS using TMs after sorting, then create Trajectory Seed and put into vector
403  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::makeSeedsFromHits: Update TSOS using TMs after sorting, then create "
404  "Trajectory Seed, number of TM = "
405  << meas.size() << std::endl;
406  std::sort(meas.begin(), meas.end(), TrajMeasLessEstim());
407 
408  unsigned int found = 0;
409  for (std::vector<TrajectoryMeasurement>::const_iterator it = meas.begin(); it != meas.end(); ++it) {
410  TrajectoryStateOnSurface updatedTSOS = updator_->update(it->forwardPredictedState(), *it->recHit());
411  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::makeSeedsFromHits: TSOS for TM " << found << std::endl;
412  if (not updatedTSOS.isValid())
413  continue;
414 
416  seedHits.push_back(*it->recHit()->hit());
417  PTrajectoryStateOnDet const& pstate =
418  trajectoryStateTransform::persistentState(updatedTSOS, it->recHit()->geographicalId().rawId());
419  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::makeSeedsFromHits: Number of seedHits: " << seedHits.size()
420  << std::endl;
421  TrajectorySeed seed(pstate, std::move(seedHits), oppositeToMomentum);
422  out.push_back(seed);
423  found++;
424  numSeedsMade++;
425  hitSeedsMade++;
426  if (found == numOfHitsToTry_)
427  break;
428  if (hitSeedsMade > maxHitSeeds_)
429  return;
430  }
431 
432  if (found)
433  layerCount++;
434 }

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

Referenced by produce().

◆ makeSeedsWithoutHits()

void TSGForOIFromL2::makeSeedsWithoutHits ( const GeometricSearchDet layer,
const TrajectoryStateOnSurface tsos,
const Propagator propagatorAlong,
edm::ESHandle< Chi2MeasurementEstimatorBase > &  estimator,
double  errorSF,
unsigned int &  hitlessSeedsMade,
unsigned int &  numSeedsMade,
std::vector< TrajectorySeed > &  out 
) const
private

Create seeds without hits on a given layer (TOB or TEC)

Definition at line 328 of file TSGForOIFromL2.cc.

335  {
336  // create hitless seeds
337  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::makeSeedsWithoutHits: Start hitless" << std::endl;
338  std::vector<GeometricSearchDet::DetWithState> dets;
339  layer.compatibleDetsV(tsos, propagatorAlong, *estimator, dets);
340  if (!dets.empty()) {
341  auto const& detOnLayer = dets.front().first;
342  auto const& tsosOnLayer = dets.front().second;
343  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::makeSeedsWithoutHits: tsosOnLayer " << tsosOnLayer << std::endl;
344  if (!tsosOnLayer.isValid()) {
345  edm::LogInfo(theCategory_) << "ERROR!: Hitless TSOS is not valid!";
346  } else {
347  dets.front().second.rescaleError(errorSF);
348  PTrajectoryStateOnDet const& ptsod =
349  trajectoryStateTransform::persistentState(tsosOnLayer, detOnLayer->geographicalId().rawId());
351  out.push_back(TrajectorySeed(ptsod, rHC, oppositeToMomentum));
352  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::makeSeedsWithoutHits: TSOS (Hitless) done " << std::endl;
353  hitlessSeedsMade++;
354  numSeedsMade++;
355  }
356  }
357 }

References GeometricSearchDet::compatibleDetsV(), LogTrace, oppositeToMomentum, MillePedeFileConverter_cfg::out, trajectoryStateTransform::persistentState(), HLT_2018_cff::propagatorAlong, and theCategory_.

Referenced by produce().

◆ match_Chi2()

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

Find compatability between two TSOSs.

Definition at line 486 of file TSGForOIFromL2.cc.

486  {
487  if (!tsos1.isValid() || !tsos2.isValid())
488  return -1.;
489 
491  AlgebraicSymMatrix55 m(tsos1.localError().matrix() + tsos2.localError().matrix());
492 
493  bool ierr = !m.Invert();
494 
495  if (ierr) {
496  edm::LogInfo("TSGForOIFromL2") << "Error inverting covariance matrix";
497  return -1;
498  }
499 
500  double est = ROOT::Math::Similarity(v, m);
501 
502  return est;
503 }

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

◆ produce()

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

Implements edm::global::EDProducerBase.

Definition at line 61 of file TSGForOIFromL2.cc.

61  {
62  // Initialize variables
63  unsigned int numSeedsMade = 0;
64  unsigned int layerCount = 0;
65  unsigned int hitlessSeedsMadeIP = 0;
66  unsigned int hitlessSeedsMadeMuS = 0;
67  unsigned int hitSeedsMade = 0;
68 
69  // Surface used to make a TSOS at the PCA to the beamline
71 
72  // Read ESHandles
73  edm::Handle<MeasurementTrackerEvent> measurementTrackerH;
76  edm::ESHandle<Propagator> propagatorAlongH;
77  edm::ESHandle<Propagator> propagatorOppositeH;
78  edm::ESHandle<TrackerGeometry> tmpTkGeometryH;
80 
81  iSetup.get<IdealMagneticFieldRecord>().get(magfieldH);
82  iSetup.get<TrackingComponentsRecord>().get(propagatorName_, propagatorOppositeH);
83  iSetup.get<TrackingComponentsRecord>().get(propagatorName_, propagatorAlongH);
84  iSetup.get<GlobalTrackingGeometryRecord>().get(geometryH);
85  iSetup.get<TrackerDigiGeometryRecord>().get(tmpTkGeometryH);
86  iSetup.get<TrackingComponentsRecord>().get(estimatorName_, estimatorH);
87  iEvent.getByToken(measurementTrackerTag_, measurementTrackerH);
88 
89  // Read L2 track collection
91  iEvent.getByToken(src_, l2TrackCol);
92 
93  // The product
94  std::unique_ptr<std::vector<TrajectorySeed> > result(new std::vector<TrajectorySeed>());
95 
96  // Get vector of Detector layers
97  std::vector<BarrelDetLayer const*> const& tob = measurementTrackerH->geometricSearchTracker()->tobLayers();
98  std::vector<ForwardDetLayer const*> const& tecPositive =
99  tmpTkGeometryH->isThere(GeomDetEnumerators::P2OTEC)
100  ? measurementTrackerH->geometricSearchTracker()->posTidLayers()
101  : measurementTrackerH->geometricSearchTracker()->posTecLayers();
102  std::vector<ForwardDetLayer const*> const& tecNegative =
103  tmpTkGeometryH->isThere(GeomDetEnumerators::P2OTEC)
104  ? measurementTrackerH->geometricSearchTracker()->negTidLayers()
105  : measurementTrackerH->geometricSearchTracker()->negTecLayers();
106 
107  // Get suitable propagators
108  std::unique_ptr<Propagator> propagatorAlong = SetPropagationDirection(*propagatorAlongH, alongMomentum);
109  std::unique_ptr<Propagator> propagatorOpposite = SetPropagationDirection(*propagatorOppositeH, oppositeToMomentum);
110 
111  // Stepping Helix Propagator for propogation from muon system to tracker
112  edm::ESHandle<Propagator> SHPOpposite;
113  iSetup.get<TrackingComponentsRecord>().get("hltESPSteppingHelixPropagatorOpposite", SHPOpposite);
114 
115  // Loop over the L2's and make seeds for all of them
116  LogTrace(theCategory_) << "TSGForOIFromL2::produce: Number of L2's: " << l2TrackCol->size();
117  for (unsigned int l2TrackColIndex(0); l2TrackColIndex != l2TrackCol->size(); ++l2TrackColIndex) {
118  const reco::TrackRef l2(l2TrackCol, l2TrackColIndex);
119 
120  // Container of Seeds
121  std::vector<TrajectorySeed> out;
122  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::produce: L2 muon pT, eta, phi --> " << l2->pt() << " , " << l2->eta()
123  << " , " << l2->phi() << std::endl;
124 
126 
127  dummyPlane->move(fts.position() - dummyPlane->position());
128  TrajectoryStateOnSurface tsosAtIP = TrajectoryStateOnSurface(fts, *dummyPlane);
129  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::produce: Created TSOSatIP: " << tsosAtIP << std::endl;
130 
131  // Get the TSOS on the innermost layer of the L2
132  TrajectoryStateOnSurface tsosAtMuonSystem =
133  trajectoryStateTransform::innerStateOnSurface(*l2, *geometryH, magfieldH.product());
134  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::produce: Created TSOSatMuonSystem: " << tsosAtMuonSystem
135  << std::endl;
136 
137  LogTrace("TSGForOIFromL2")
138  << "TSGForOIFromL2::produce: Check the error of the L2 parameter and use hit seeds if big errors" << std::endl;
139 
140  StateOnTrackerBound fromInside(propagatorAlong.get());
141  TrajectoryStateOnSurface outerTkStateInside = fromInside(fts);
142 
143  StateOnTrackerBound fromOutside(&*SHPOpposite);
144  TrajectoryStateOnSurface outerTkStateOutside = fromOutside(tsosAtMuonSystem);
145 
146  // Check if the two positions (using updated and not-updated TSOS) agree withing certain extent.
147  // If both TSOSs agree, use only the one at vertex, as it uses more information. If they do not agree, search for seeds based on both.
148  double L2muonEta = l2->eta();
149  double absL2muonEta = std::abs(L2muonEta);
150  bool useBoth = false;
151  if (outerTkStateInside.isValid() && outerTkStateOutside.isValid()) {
152  //following commented out variables dist1 (5 par compatibility of tsos at outertracker surface)
153  //dist2 (angle between two tsos) could further be explored in combination of L2 valid hits for seeding. So kept for
154  //future developers
155  //auto dist1 = match_Chi2(outerTkStateInside,outerTkStateOutside);//for future developers
156  //auto dist2 = deltaR(outerTkStateInside.globalMomentum(),outerTkStateOutside.globalMomentum());//for future developers
157  //if ((dist1 > tsosDiff1_ || dist2 > tsosDiff2_) && l2->numberOfValidHits() < 20) useBoth = true;//for future developers
158  if (l2->numberOfValidHits() < numL2ValidHitsCutAllEta_)
159  useBoth = true;
160  if (l2->numberOfValidHits() < numL2ValidHitsCutAllEndcap_ && absL2muonEta > eta7_)
161  useBoth = true;
162  if (absL2muonEta > eta1_ && absL2muonEta < eta1_)
163  useBoth = true;
164  }
165 
166  numSeedsMade = 0;
167  hitlessSeedsMadeIP = 0;
168  hitlessSeedsMadeMuS = 0;
169  hitSeedsMade = 0;
170 
171  // calculate scale factors
173  double errorSFHitless =
175 
176  // BARREL
177  if (absL2muonEta < maxEtaForTOB_) {
178  layerCount = 0;
179  for (auto it = tob.rbegin(); it != tob.rend(); ++it) {
180  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::produce: looping in TOB layer " << layerCount << std::endl;
181  if (useHitLessSeeds_ && hitlessSeedsMadeIP < maxHitlessSeeds_ && numSeedsMade < maxSeeds_)
183  tsosAtIP,
184  *(propagatorAlong.get()),
185  estimatorH,
186  errorSFHitless,
187  hitlessSeedsMadeIP,
188  numSeedsMade,
189  out);
190 
191  // Do not create hitbased seeds in barrel region
192  if (absL2muonEta > 1.0 && hitSeedsMade < maxHitSeeds_ && numSeedsMade < maxSeeds_)
193  makeSeedsFromHits(**it,
194  tsosAtIP,
195  *(propagatorAlong.get()),
196  estimatorH,
197  measurementTrackerH,
198  errorSFHits,
199  hitSeedsMade,
200  numSeedsMade,
201  layerCount,
202  out);
203 
204  if (useBoth) {
205  if (useHitLessSeeds_ && hitlessSeedsMadeMuS < maxHitlessSeeds_ && numSeedsMade < maxSeeds_)
207  outerTkStateOutside,
208  *(propagatorOpposite.get()),
209  estimatorH,
210  errorSFHitless,
211  hitlessSeedsMadeMuS,
212  numSeedsMade,
213  out);
214  }
215  }
216  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2:::produce: NumSeedsMade = " << numSeedsMade
217  << " , layerCount = " << layerCount << std::endl;
218  }
219 
220  // Reset number of seeds if in overlap region
221  if (absL2muonEta > minEtaForTEC_ && absL2muonEta < maxEtaForTOB_) {
222  numSeedsMade = 0;
223  hitlessSeedsMadeIP = 0;
224  hitlessSeedsMadeMuS = 0;
225  hitSeedsMade = 0;
226  }
227 
228  // ENDCAP+
229  if (L2muonEta > minEtaForTEC_) {
230  layerCount = 0;
231  for (auto it = tecPositive.rbegin(); it != tecPositive.rend(); ++it) {
232  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::produce: looping in TEC+ layer " << layerCount << std::endl;
233  if (useHitLessSeeds_ && hitlessSeedsMadeIP < maxHitlessSeeds_ && numSeedsMade < maxSeeds_)
235  tsosAtIP,
236  *(propagatorAlong.get()),
237  estimatorH,
238  errorSFHitless,
239  hitlessSeedsMadeIP,
240  numSeedsMade,
241  out);
242 
243  if (absL2muonEta > 1.0 && hitSeedsMade < maxHitSeeds_ && numSeedsMade < maxSeeds_)
244  makeSeedsFromHits(**it,
245  tsosAtIP,
246  *(propagatorAlong.get()),
247  estimatorH,
248  measurementTrackerH,
249  errorSFHits,
250  hitSeedsMade,
251  numSeedsMade,
252  layerCount,
253  out);
254 
255  if (useBoth) {
256  if (useHitLessSeeds_ && hitlessSeedsMadeMuS < maxHitlessSeeds_ && numSeedsMade < maxSeeds_)
258  outerTkStateOutside,
259  *(propagatorOpposite.get()),
260  estimatorH,
261  errorSFHitless,
262  hitlessSeedsMadeMuS,
263  numSeedsMade,
264  out);
265  }
266  }
267  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2:::produce: NumSeedsMade = " << numSeedsMade
268  << " , layerCount = " << layerCount << std::endl;
269  }
270 
271  // ENDCAP-
272  if (L2muonEta < -minEtaForTEC_) {
273  layerCount = 0;
274  for (auto it = tecNegative.rbegin(); it != tecNegative.rend(); ++it) {
275  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2::produce: looping in TEC- layer " << layerCount << std::endl;
276  if (useHitLessSeeds_ && hitlessSeedsMadeIP < maxHitlessSeeds_ && numSeedsMade < maxSeeds_)
278  tsosAtIP,
279  *(propagatorAlong.get()),
280  estimatorH,
281  errorSFHitless,
282  hitlessSeedsMadeIP,
283  numSeedsMade,
284  out);
285 
286  if (absL2muonEta > 1.0 && hitSeedsMade < maxHitSeeds_ && numSeedsMade < maxSeeds_)
287  makeSeedsFromHits(**it,
288  tsosAtIP,
289  *(propagatorAlong.get()),
290  estimatorH,
291  measurementTrackerH,
292  errorSFHits,
293  hitSeedsMade,
294  numSeedsMade,
295  layerCount,
296  out);
297 
298  if (useBoth) {
299  if (useHitLessSeeds_ && hitlessSeedsMadeMuS < maxHitlessSeeds_ && numSeedsMade < maxSeeds_)
301  outerTkStateOutside,
302  *(propagatorOpposite.get()),
303  estimatorH,
304  errorSFHitless,
305  hitlessSeedsMadeMuS,
306  numSeedsMade,
307  out);
308  }
309  }
310  LogTrace("TSGForOIFromL2") << "TSGForOIFromL2:::produce: NumSeedsMade = " << numSeedsMade
311  << " , layerCount = " << layerCount << std::endl;
312  }
313 
314  for (std::vector<TrajectorySeed>::iterator it = out.begin(); it != out.end(); ++it) {
315  result->push_back(*it);
316  }
317 
318  } // L2Collection
319 
320  edm::LogInfo(theCategory_) << "TSGForOIFromL2::produce: number of seeds made: " << result->size();
321 
322  iEvent.put(std::move(result));
323 }

References funct::abs(), adjustErrorsDynamicallyForHitless_, adjustErrorsDynamicallyForHits_, alongMomentum, Plane::build(), calculateSFFromL2(), estimatorName_, eta1_, eta7_, fixedErrorRescalingForHitless_, fixedErrorRescalingForHits_, MeasurementTrackerEvent::geometricSearchTracker(), edm::EventSetup::get(), get, iEvent, trajectoryStateTransform::initialFreeState(), trajectoryStateTransform::innerStateOnSurface(), TrackerGeometry::isThere(), TrajectoryStateOnSurface::isValid(), LogTrace, makeSeedsFromHits(), makeSeedsWithoutHits(), maxEtaForTOB_, maxHitlessSeeds_, maxHitSeeds_, maxSeeds_, measurementTrackerTag_, minEtaForTEC_, eostools::move(), GeometricSearchTracker::negTecLayers(), GeometricSearchTracker::negTidLayers(), numL2ValidHitsCutAllEndcap_, numL2ValidHitsCutAllEta_, oppositeToMomentum, MillePedeFileConverter_cfg::out, GeomDetEnumerators::P2OTEC, FreeTrajectoryState::position(), GeometricSearchTracker::posTecLayers(), GeometricSearchTracker::posTidLayers(), edm::ESHandle< T >::product(), HLT_2018_cff::propagatorAlong, propagatorName_, HLT_2018_cff::propagatorOpposite, mps_fire::result, SetPropagationDirection(), src_, theCategory_, GeometricSearchTracker::tobLayers(), and useHitLessSeeds_.

Member Data Documentation

◆ adjustErrorsDynamicallyForHitless_

const bool TSGForOIFromL2::adjustErrorsDynamicallyForHitless_
private

Definition at line 70 of file TSGForOIFromL2.h.

Referenced by produce().

◆ adjustErrorsDynamicallyForHits_

const bool TSGForOIFromL2::adjustErrorsDynamicallyForHits_
private

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

Definition at line 69 of file TSGForOIFromL2.h.

Referenced by produce().

◆ estimatorName_

const std::string TSGForOIFromL2::estimatorName_
private

Estimator used to find dets and TrajectoryMeasurements.

Definition at line 73 of file TSGForOIFromL2.h.

Referenced by produce().

◆ eta1_

const double TSGForOIFromL2::eta1_
private

Definition at line 92 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2(), and produce().

◆ eta2_

const double TSGForOIFromL2::eta2_
private

Definition at line 92 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ eta3_

const double TSGForOIFromL2::eta3_
private

Definition at line 92 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ eta4_

const double TSGForOIFromL2::eta4_
private

Definition at line 92 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ eta5_

const double TSGForOIFromL2::eta5_
private

Definition at line 92 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ eta6_

const double TSGForOIFromL2::eta6_
private

Definition at line 92 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ eta7_

const double TSGForOIFromL2::eta7_
private

Definition at line 92 of file TSGForOIFromL2.h.

Referenced by produce().

◆ fixedErrorRescalingForHitless_

const double TSGForOIFromL2::fixedErrorRescalingForHitless_
private

Definition at line 66 of file TSGForOIFromL2.h.

Referenced by produce().

◆ fixedErrorRescalingForHits_

const double TSGForOIFromL2::fixedErrorRescalingForHits_
private

Rescale L2 parameter uncertainties (fixed error vs pT, eta)

Definition at line 65 of file TSGForOIFromL2.h.

Referenced by produce().

◆ maxEtaForTOB_

const double TSGForOIFromL2::maxEtaForTOB_
private

Maximum eta value to activate searching in the TOB.

Definition at line 79 of file TSGForOIFromL2.h.

Referenced by produce().

◆ maxHitlessSeeds_

const unsigned int TSGForOIFromL2::maxHitlessSeeds_
private

Maximum number of hitless seeds for each L2.

Definition at line 49 of file TSGForOIFromL2.h.

Referenced by produce().

◆ maxHitSeeds_

const unsigned int TSGForOIFromL2::maxHitSeeds_
private

Maximum number of hitbased seeds for each L2.

Definition at line 52 of file TSGForOIFromL2.h.

Referenced by makeSeedsFromHits(), and produce().

◆ maxSeeds_

const unsigned int TSGForOIFromL2::maxSeeds_
private

Maximum number of seeds for each L2.

Definition at line 46 of file TSGForOIFromL2.h.

Referenced by produce().

◆ measurementTrackerTag_

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

Definition at line 88 of file TSGForOIFromL2.h.

Referenced by produce().

◆ minEtaForTEC_

const double TSGForOIFromL2::minEtaForTEC_
private

Minimum eta value to activate searching in the TEC.

Definition at line 76 of file TSGForOIFromL2.h.

Referenced by produce().

◆ numL2ValidHitsCutAllEndcap_

const unsigned int TSGForOIFromL2::numL2ValidHitsCutAllEndcap_
private

Definition at line 62 of file TSGForOIFromL2.h.

Referenced by produce().

◆ numL2ValidHitsCutAllEta_

const unsigned int TSGForOIFromL2::numL2ValidHitsCutAllEta_
private

L2 valid hit cuts to decide seed creation by both states.

Definition at line 61 of file TSGForOIFromL2.h.

Referenced by produce().

◆ numOfHitsToTry_

const unsigned int TSGForOIFromL2::numOfHitsToTry_
private

How many hits to try per layer.

Definition at line 58 of file TSGForOIFromL2.h.

Referenced by makeSeedsFromHits().

◆ numOfLayersToTry_

const unsigned int TSGForOIFromL2::numOfLayersToTry_
private

How many layers to try.

Definition at line 55 of file TSGForOIFromL2.h.

Referenced by makeSeedsFromHits().

◆ propagatorName_

const std::string TSGForOIFromL2::propagatorName_
private

Counters and flags for the implementation.

Definition at line 100 of file TSGForOIFromL2.h.

Referenced by produce().

◆ pT1_

const double TSGForOIFromL2::pT1_
private

pT, eta ranges and scale factor values

Definition at line 91 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ pT2_

const double TSGForOIFromL2::pT2_
private

Definition at line 91 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ pT3_

const double TSGForOIFromL2::pT3_
private

Definition at line 91 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ SF1_

const double TSGForOIFromL2::SF1_
private

Definition at line 93 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ SF2_

const double TSGForOIFromL2::SF2_
private

Definition at line 93 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ SF3_

const double TSGForOIFromL2::SF3_
private

Definition at line 93 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ SF4_

const double TSGForOIFromL2::SF4_
private

Definition at line 93 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ SF5_

const double TSGForOIFromL2::SF5_
private

Definition at line 93 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ SF6_

const double TSGForOIFromL2::SF6_
private

Definition at line 93 of file TSGForOIFromL2.h.

Referenced by calculateSFFromL2().

◆ src_

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

Labels for input collections.

Definition at line 43 of file TSGForOIFromL2.h.

Referenced by produce().

◆ theCategory_

const std::string TSGForOIFromL2::theCategory_
private

Definition at line 101 of file TSGForOIFromL2.h.

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

◆ tsosDiff1_

const double TSGForOIFromL2::tsosDiff1_
private

Distance of L2 TSOSs before and after updated with vertex.

Definition at line 96 of file TSGForOIFromL2.h.

◆ tsosDiff2_

const double TSGForOIFromL2::tsosDiff2_
private

Definition at line 97 of file TSGForOIFromL2.h.

◆ updator_

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

KFUpdator defined in constructor.

Definition at line 86 of file TSGForOIFromL2.h.

Referenced by makeSeedsFromHits().

◆ useHitLessSeeds_

const bool TSGForOIFromL2::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 83 of file TSGForOIFromL2.h.

Referenced by produce().

edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
TkRotation< float >
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
GeometricSearchTracker::tobLayers
std::vector< BarrelDetLayer const * > const & tobLayers() const
Definition: GeometricSearchTracker.h:39
trajectoryStateTransform::initialFreeState
FreeTrajectoryState initialFreeState(const reco::Track &tk, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:58
TSGForOIFromL2::pT2_
const double pT2_
Definition: TSGForOIFromL2.h:91
TSGForOIFromL2::SF2_
const double SF2_
Definition: TSGForOIFromL2.h:93
HLTSiStripMonitoring_cff.measurementTracker
measurementTracker
Definition: HLTSiStripMonitoring_cff.py:178
TSGForOIFromL2::useHitLessSeeds_
const bool useHitLessSeeds_
Definition: TSGForOIFromL2.h:83
TSGForOIFromL2::SF4_
const double SF4_
Definition: TSGForOIFromL2.h:93
TSGForOIFromL2::SF5_
const double SF5_
Definition: TSGForOIFromL2.h:93
trajectoryStateTransform::persistentState
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
Definition: TrajectoryStateTransform.cc:14
TSGForOIFromL2::makeSeedsWithoutHits
void makeSeedsWithoutHits(const GeometricSearchDet &layer, const TrajectoryStateOnSurface &tsos, const Propagator &propagatorAlong, edm::ESHandle< Chi2MeasurementEstimatorBase > &estimator, double errorSF, unsigned int &hitlessSeedsMade, unsigned int &numSeedsMade, std::vector< TrajectorySeed > &out) const
Create seeds without hits on a given layer (TOB or TEC)
Definition: TSGForOIFromL2.cc:328
edm::LogInfo
Definition: MessageLogger.h:254
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
TSGForOIFromL2::src_
const edm::EDGetTokenT< reco::TrackCollection > src_
Labels for input collections.
Definition: TSGForOIFromL2.h:43
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
findQualityFiles.v
v
Definition: findQualityFiles.py:179
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::Handle< MeasurementTrackerEvent >
TSGForOIFromL2::numL2ValidHitsCutAllEndcap_
const unsigned int numL2ValidHitsCutAllEndcap_
Definition: TSGForOIFromL2.h:62
TSGForOIFromL2::tsosDiff1_
const double tsosDiff1_
Distance of L2 TSOSs before and after updated with vertex.
Definition: TSGForOIFromL2.h:96
TSGForOIFromL2::maxSeeds_
const unsigned int maxSeeds_
Maximum number of seeds for each L2.
Definition: TSGForOIFromL2.h:46
TSGForOIFromL2::minEtaForTEC_
const double minEtaForTEC_
Minimum eta value to activate searching in the TEC.
Definition: TSGForOIFromL2.h:76
edm::Ref< TrackCollection >
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
TSGForOIFromL2::adjustErrorsDynamicallyForHits_
const bool adjustErrorsDynamicallyForHits_
Whether or not to use an automatically calculated scale-factor value.
Definition: TSGForOIFromL2.h:69
PVValHelper::estimator
estimator
Definition: PVValidationHelpers.h:44
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
TSGForOIFromL2::pT3_
const double pT3_
Definition: TSGForOIFromL2.h:91
TSGForOIFromL2::measurementTrackerTag_
const edm::EDGetTokenT< MeasurementTrackerEvent > measurementTrackerTag_
Definition: TSGForOIFromL2.h:88
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
TSGForOIFromL2::maxHitlessSeeds_
const unsigned int maxHitlessSeeds_
Maximum number of hitless seeds for each L2.
Definition: TSGForOIFromL2.h:49
GeometricSearchTracker::posTecLayers
std::vector< ForwardDetLayer const * > const & posTecLayers() const
Definition: GeometricSearchTracker.h:47
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
TSGForOIFromL2::eta2_
const double eta2_
Definition: TSGForOIFromL2.h:92
TSGForOIFromL2::maxHitSeeds_
const unsigned int maxHitSeeds_
Maximum number of hitbased seeds for each L2.
Definition: TSGForOIFromL2.h:52
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
GeometricSearchTracker::posTidLayers
std::vector< ForwardDetLayer const * > const & posTidLayers() const
Definition: GeometricSearchTracker.h:46
edm::ESHandle< Chi2MeasurementEstimatorBase >
LocalTrajectoryParameters::vector
AlgebraicVector5 vector() const
Definition: LocalTrajectoryParameters.h:120
GeomDetEnumerators::P2OTEC
Definition: GeomDetEnumerators.h:24
TSGForOIFromL2::maxEtaForTOB_
const double maxEtaForTOB_
Maximum eta value to activate searching in the TOB.
Definition: TSGForOIFromL2.h:79
Point3DBase< float, GlobalTag >
TrackerGeometry::isThere
bool isThere(GeomDetEnumerators::SubDetector subdet) const
Definition: TrackerGeometry.cc:219
MeasurementDetWithData::isNull
bool isNull() const
Definition: MeasurementDetWithData.h:13
TSGForOIFromL2::tsosDiff2_
const double tsosDiff2_
Definition: TSGForOIFromL2.h:97
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TrajectoryStateOnSurface::localParameters
const LocalTrajectoryParameters & localParameters() const
Definition: TrajectoryStateOnSurface.h:73
Plane::build
static PlanePointer build(Args &&... args)
Definition: Plane.h:33
TSGForOIFromL2::SF6_
const double SF6_
Definition: TSGForOIFromL2.h:93
TSGForOIFromL2::eta3_
const double eta3_
Definition: TSGForOIFromL2.h:92
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
TSGForOIFromL2::eta1_
const double eta1_
Definition: TSGForOIFromL2.h:92
GeometricSearchTracker::negTecLayers
std::vector< ForwardDetLayer const * > const & negTecLayers() const
Definition: GeometricSearchTracker.h:43
MeasurementTrackerEvent::geometricSearchTracker
const GeometricSearchTracker * geometricSearchTracker() const
Definition: MeasurementTrackerEvent.h:66
GeometricSearchDet::compatibleDetsV
virtual void compatibleDetsV(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const
Definition: GeometricSearchDet.cc:9
TSGForOIFromL2::theCategory_
const std::string theCategory_
Definition: TSGForOIFromL2.h:101
TSGForOIFromL2::SF3_
const double SF3_
Definition: TSGForOIFromL2.h:93
iEvent
int iEvent
Definition: GenABIO.cc:224
StateOnTrackerBound
Definition: StateOnTrackerBound.h:13
TSGForOIFromL2::adjustErrorsDynamicallyForHitless_
const bool adjustErrorsDynamicallyForHitless_
Definition: TSGForOIFromL2.h:70
TSGForOIFromL2::fixedErrorRescalingForHits_
const double fixedErrorRescalingForHits_
Rescale L2 parameter uncertainties (fixed error vs pT, eta)
Definition: TSGForOIFromL2.h:65
TSGForOIFromL2::pT1_
const double pT1_
pT, eta ranges and scale factor values
Definition: TSGForOIFromL2.h:91
TSGForOIFromL2::SF1_
const double SF1_
Definition: TSGForOIFromL2.h:93
AlgebraicVector5
ROOT::Math::SVector< double, 5 > AlgebraicVector5
Definition: AlgebraicROOTObjects.h:14
get
#define get
HLT_2018_cff.propagatorAlong
propagatorAlong
Definition: HLT_2018_cff.py:118
TSGForOIFromL2::eta7_
const double eta7_
Definition: TSGForOIFromL2.h:92
TSGForOIFromL2::numL2ValidHitsCutAllEta_
const unsigned int numL2ValidHitsCutAllEta_
L2 valid hit cuts to decide seed creation by both states.
Definition: TSGForOIFromL2.h:61
TSGForOIFromL2::propagatorName_
const std::string propagatorName_
Counters and flags for the implementation.
Definition: TSGForOIFromL2.h:100
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
eostools.move
def move(src, dest)
Definition: eostools.py:511
TSGForOIFromL2::numOfLayersToTry_
const unsigned int numOfLayersToTry_
How many layers to try.
Definition: TSGForOIFromL2.h:55
MeasurementDetWithData
Definition: MeasurementDetWithData.h:6
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
TrajectorySeed
Definition: TrajectorySeed.h:17
TSGForOIFromL2::eta4_
const double eta4_
Definition: TSGForOIFromL2.h:92
TSGForOIFromL2::updator_
const std::unique_ptr< TrajectoryStateUpdator > updator_
KFUpdator defined in constructor.
Definition: TSGForOIFromL2.h:86
TSGForOIFromL2::makeSeedsFromHits
void makeSeedsFromHits(const GeometricSearchDet &layer, const TrajectoryStateOnSurface &tsos, const Propagator &propagatorAlong, edm::ESHandle< Chi2MeasurementEstimatorBase > &estimator, edm::Handle< MeasurementTrackerEvent > &measurementTracker, double errorSF, unsigned int &hitSeedsMade, unsigned int &numSeedsMade, unsigned int &layerCount, std::vector< TrajectorySeed > &out) const
Find hits on a given layer (TOB or TEC) and create seeds from updated TSOS with hit.
Definition: TSGForOIFromL2.cc:362
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
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
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
TSGForOIFromL2::eta5_
const double eta5_
Definition: TSGForOIFromL2.h:92
HLT_2018_cff.propagatorOpposite
propagatorOpposite
Definition: HLT_2018_cff.py:116
TSGForOIFromL2::eta6_
const double eta6_
Definition: TSGForOIFromL2.h:92
TrajectoryStateOnSurface::localError
const LocalTrajectoryError & localError() const
Definition: TrajectoryStateOnSurface.h:77
TSGForOIFromL2::numOfHitsToTry_
const unsigned int numOfHitsToTry_
How many hits to try per layer.
Definition: TSGForOIFromL2.h:58
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
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
TSGForOIFromL2::fixedErrorRescalingForHitless_
const double fixedErrorRescalingForHitless_
Definition: TSGForOIFromL2.h:66
edm::OwnVector< TrackingRecHit >
GeometricSearchTracker::negTidLayers
std::vector< ForwardDetLayer const * > const & negTidLayers() const
Definition: GeometricSearchTracker.h:42
TSGForOIFromL2::estimatorName_
const std::string estimatorName_
Estimator used to find dets and TrajectoryMeasurements.
Definition: TSGForOIFromL2.h:73
TSGForOIFromL2::calculateSFFromL2
double calculateSFFromL2(const reco::TrackRef track) const
Calculate the dynamic error SF by analysing the L2.
Definition: TSGForOIFromL2.cc:439
TrackingComponentsRecord
Definition: TrackingComponentsRecord.h:12