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
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () 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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
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<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
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)
 
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 ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, 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)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

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 16 of file TSGForOI.cc.

17  : src_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("src"))),
18  numOfMaxSeedsParam_(iConfig.getParameter<uint32_t>("maxSeeds")),
19  numOfLayersToTry_(iConfig.getParameter<int32_t>("layersToTry")),
20  numOfHitsToTry_(iConfig.getParameter<int32_t>("hitsToTry")),
21  fixedErrorRescalingForHits_(iConfig.getParameter<double>("fixedErrorRescaleFactorForHits")),
22  fixedErrorRescalingForHitless_(iConfig.getParameter<double>("fixedErrorRescaleFactorForHitless")),
23  adjustErrorsDynamicallyForHits_(iConfig.getParameter<bool>("adjustErrorsDynamicallyForHits")),
24  adjustErrorsDynamicallyForHitless_(iConfig.getParameter<bool>("adjustErrorsDynamicallyForHitless")),
25  estimatorName_(iConfig.getParameter<std::string>("estimator")),
26  minEtaForTEC_(iConfig.getParameter<double>("minEtaForTEC")),
27  maxEtaForTOB_(iConfig.getParameter<double>("maxEtaForTOB")),
28  useHitLessSeeds_(iConfig.getParameter<bool>("UseHitLessSeeds")),
29  useStereoLayersInTEC_(iConfig.getParameter<bool>("UseStereoLayersInTEC")),
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  SF1_(iConfig.getParameter<double>("SF1")),
39  SF2_(iConfig.getParameter<double>("SF2")),
40  SF3_(iConfig.getParameter<double>("SF3")),
41  SF4_(iConfig.getParameter<double>("SF4")),
42  SF5_(iConfig.getParameter<double>("SF5")),
43  tsosDiff_(iConfig.getParameter<double>("tsosDiff")),
44  propagatorName_(iConfig.getParameter<std::string>("propagatorName")),
45  theCategory(string("Muon|RecoMuon|TSGForOI")) {
46  produces<std::vector<TrajectorySeed> >();
47 }
const std::string estimatorName_
Estimator used to find dets and TrajectoryMeasurements.
Definition: TSGForOI.h:62
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const double tsosDiff_
Distance of TSOSs to trigger using hits or not.
Definition: TSGForOI.h:88
const std::string propagatorName_
Counters and flags for the implementation.
Definition: TSGForOI.h:91
const double SF3_
Definition: TSGForOI.h:85
const double maxEtaForTOB_
Maximum eta value to activate searching in the TOB.
Definition: TSGForOI.h:68
const double minEtaForTEC_
Minimum eta value to activate searching in the TEC.
Definition: TSGForOI.h:65
const double fixedErrorRescalingForHits_
How much to rescale errors from the L2 (fixed error vs pT, eta)
Definition: TSGForOI.h:54
const std::unique_ptr< TrajectoryStateUpdator > updator_
KFUpdator defined in constructor.
Definition: TSGForOI.h:78
const double eta2_
Definition: TSGForOI.h:84
const bool useHitLessSeeds_
Definition: TSGForOI.h:72
const unsigned int numOfLayersToTry_
How many layers to try.
Definition: TSGForOI.h:48
const double SF1_
Definition: TSGForOI.h:85
const bool useStereoLayersInTEC_
Switch ON to use Stereo layers instead of using every layer in TEC.
Definition: TSGForOI.h:75
const double SF5_
Definition: TSGForOI.h:85
const bool adjustErrorsDynamicallyForHitless_
Definition: TSGForOI.h:59
const double pT1_
pT, eta ranges and scale factor values
Definition: TSGForOI.h:83
const double SF4_
Definition: TSGForOI.h:85
const double pT2_
Definition: TSGForOI.h:83
const double eta1_
Definition: TSGForOI.h:84
const double pT3_
Definition: TSGForOI.h:83
const edm::EDGetTokenT< reco::TrackCollection > src_
Labels for input collections.
Definition: TSGForOI.h:42
const bool adjustErrorsDynamicallyForHits_
Whether or not to use an automatically calculated scale-factor value.
Definition: TSGForOI.h:58
const edm::EDGetTokenT< MeasurementTrackerEvent > measurementTrackerTag_
Definition: TSGForOI.h:80
const unsigned int numOfMaxSeedsParam_
Maximum number of seeds for each L2.
Definition: TSGForOI.h:45
const std::string theCategory
Definition: TSGForOI.h:92
const double SF2_
Definition: TSGForOI.h:85
const unsigned int numOfHitsToTry_
How many hits to try per layer.
Definition: TSGForOI.h:51
const double fixedErrorRescalingForHitless_
Definition: TSGForOI.h:55

◆ ~TSGForOI()

TSGForOI::~TSGForOI ( )
override

Definition at line 49 of file TSGForOI.cc.

49 {}

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 357 of file TSGForOI.cc.

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

Referenced by findSeedsOnLayer().

357  {
358  double theSF = 1.0;
359  // L2 direction vs pT blowup - as was previously done:
360  // Split into 4 pT ranges: <pT1_, pT1_<pT2_, pT2_<pT3_, <pT4_: 13,30,70
361  // Split into 2 eta ranges for the middle two pT ranges: 1.0,1.4
362  double abseta = std::abs(track->eta());
363  if (track->pt() <= pT1_)
364  theSF = SF1_;
365  if (track->pt() > pT1_ && track->pt() <= pT2_) {
366  if (abseta <= eta1_)
367  theSF = SF3_;
368  if (abseta > eta1_ && abseta <= eta2_)
369  theSF = SF2_;
370  if (abseta > eta2_)
371  theSF = SF3_;
372  }
373  if (track->pt() > pT2_ && track->pt() <= pT3_) {
374  if (abseta <= eta1_)
375  theSF = SF5_;
376  if (abseta > eta1_ && abseta <= eta2_)
377  theSF = SF4_;
378  if (abseta > eta2_)
379  theSF = SF5_;
380  }
381  if (track->pt() > pT3_)
382  theSF = SF5_;
383 
384  LogTrace(theCategory) << "TSGForOI::calculateSFFromL2: SF has been calculated as: " << theSF;
385  return theSF;
386 }
const double SF3_
Definition: TSGForOI.h:85
#define LogTrace(id)
const double eta2_
Definition: TSGForOI.h:84
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const double SF1_
Definition: TSGForOI.h:85
const double SF5_
Definition: TSGForOI.h:85
const double pT1_
pT, eta ranges and scale factor values
Definition: TSGForOI.h:83
const double SF4_
Definition: TSGForOI.h:85
const double pT2_
Definition: TSGForOI.h:83
const double eta1_
Definition: TSGForOI.h:84
const double pT3_
Definition: TSGForOI.h:83
const std::string theCategory
Definition: TSGForOI.h:92
const double SF2_
Definition: TSGForOI.h:85

◆ fillDescriptions()

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

Definition at line 483 of file TSGForOI.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, HLT_2022v12_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

483  {
485  desc.add<edm::InputTag>("src", edm::InputTag("hltL2Muons", "UpdatedAtVtx"));
486  desc.add<int>("layersToTry", 1);
487  desc.add<double>("fixedErrorRescaleFactorForHitless", 2.0);
488  desc.add<int>("hitsToTry", 1);
489  desc.add<bool>("adjustErrorsDynamicallyForHits", false);
490  desc.add<bool>("adjustErrorsDynamicallyForHitless", false);
491  desc.add<edm::InputTag>("MeasurementTrackerEvent", edm::InputTag("hltSiStripClusters"));
492  desc.add<bool>("UseHitLessSeeds", true);
493  desc.add<bool>("UseStereoLayersInTEC", false);
494  desc.add<std::string>("estimator", "hltESPChi2MeasurementEstimator100");
495  desc.add<double>("maxEtaForTOB", 1.2);
496  desc.add<double>("minEtaForTEC", 0.8);
497  desc.addUntracked<bool>("debug", true);
498  desc.add<double>("fixedErrorRescaleFactorForHits", 2.0);
499  desc.add<unsigned int>("maxSeeds", 1);
500  desc.add<double>("pT1", 13.0);
501  desc.add<double>("pT2", 30.0);
502  desc.add<double>("pT3", 70.0);
503  desc.add<double>("eta1", 1.0);
504  desc.add<double>("eta2", 1.4);
505  desc.add<double>("SF1", 3.0);
506  desc.add<double>("SF2", 4.0);
507  desc.add<double>("SF3", 5.0);
508  desc.add<double>("SF4", 7.0);
509  desc.add<double>("SF5", 10.0);
510  desc.add<double>("tsosDiff", 0.03);
511  desc.add<std::string>("propagatorName", "PropagatorWithMaterial");
512  descriptions.add("TSGForOI", desc);
513 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ 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 284 of file TSGForOI.cc.

References adjustErrorsDynamicallyForHitless_, adjustErrorsDynamicallyForHits_, calculateSFFromL2(), fixedErrorRescalingForHitless_, fixedErrorRescalingForHits_, phase1PixelTopology::layer, LogTrace, makeSeedsFromHits(), numOfLayersToTry_, oppositeToMomentum, MillePedeFileConverter_cfg::out, trajectoryStateTransform::persistentState(), L1TMuonDQMOffline_cfi::propagatorAlong, theCategory, and useHitLessSeeds_.

Referenced by produce().

296  {
297  if (numSeedsMade > numOfMaxSeeds)
298  return;
299  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: numSeedsMade = " << numSeedsMade
300  << " , layerCount = " << layerCount << endl;
301 
302  double errorSFHits = 1.0;
303  double errorSFHitless = 1.0;
305  errorSFHits = fixedErrorRescalingForHits_;
306  else
307  errorSFHits = calculateSFFromL2(l2);
309  errorSFHitless = fixedErrorRescalingForHitless_;
310 
311  // Hitless: TO Be discarded from here at some point.
312  if (useHitLessSeeds_) {
313  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: Start hitless" << endl;
314  std::vector<GeometricSearchDet::DetWithState> dets;
315  layer.compatibleDetsV(tsosAtIP, propagatorAlong, *estimatorH, dets);
316  if (!dets.empty()) {
317  auto const& detOnLayer = dets.front().first;
318  auto const& tsosOnLayer = dets.front().second;
319  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: tsosOnLayer " << tsosOnLayer << endl;
320  if (!tsosOnLayer.isValid()) {
321  edm::LogInfo(theCategory) << "ERROR!: Hitless TSOS is not valid!";
322  } else {
323  // calculate SF from L2 (only once -- if needed)
324  if (!analysedL2 && adjustErrorsDynamicallyForHitless_) {
325  errorSFHitless = calculateSFFromL2(l2);
326  analysedL2 = true;
327  }
328 
329  dets.front().second.rescaleError(errorSFHitless);
330  PTrajectoryStateOnDet const& ptsod =
331  trajectoryStateTransform::persistentState(tsosOnLayer, detOnLayer->geographicalId().rawId());
333  out->push_back(TrajectorySeed(ptsod, rHC, oppositeToMomentum));
334  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: TSOD (Hitless) done " << endl;
335  numSeedsMade++;
336  }
337  }
338  }
339 
340  // Hits:
341  if (layerCount > numOfLayersToTry_)
342  return;
343  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: Start Hits" << endl;
344  if (makeSeedsFromHits(tTopo,
345  layer,
346  tsosAtIP,
347  *out,
349  *measurementTrackerH,
350  estimatorH,
351  numSeedsMade,
352  errorSFHits,
353  l2->eta()))
354  ++layerCount;
355 }
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:388
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
#define LogTrace(id)
constexpr std::array< uint8_t, layerIndexSize > layer
const double fixedErrorRescalingForHits_
How much to rescale errors from the L2 (fixed error vs pT, eta)
Definition: TSGForOI.h:54
const bool useHitLessSeeds_
Definition: TSGForOI.h:72
const unsigned int numOfLayersToTry_
How many layers to try.
Definition: TSGForOI.h:48
const bool adjustErrorsDynamicallyForHitless_
Definition: TSGForOI.h:59
Log< level::Info, false > LogInfo
double calculateSFFromL2(const reco::TrackRef track) const
Function used to calculate the dynamic error SF by analysing the L2.
Definition: TSGForOI.cc:357
const bool adjustErrorsDynamicallyForHits_
Whether or not to use an automatically calculated scale-factor value.
Definition: TSGForOI.h:58
const std::string theCategory
Definition: TSGForOI.h:92
const double fixedErrorRescalingForHitless_
Definition: TSGForOI.h:55

◆ 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 388 of file TSGForOI.cc.

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

Referenced by findSeedsOnLayer().

397  {
398  // Error Rescaling:
399  TrajectoryStateOnSurface onLayer(tsosAtIP);
400  onLayer.rescaleError(errorSF);
401 
402  std::vector<GeometricSearchDet::DetWithState> dets;
403  layer.compatibleDetsV(onLayer, propagatorAlong, *estimatorH, dets);
404 
405  // Find Measurements on each DetWithState:
406  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: find measurements on each detWithState " << dets.size() << endl;
407  std::vector<TrajectoryMeasurement> meas;
408  for (std::vector<GeometricSearchDet::DetWithState>::iterator it = dets.begin(); it != dets.end(); ++it) {
409  MeasurementDetWithData det = measurementTracker.idToDet(it->first->geographicalId());
410  if (det.isNull()) {
411  continue;
412  }
413  if (!it->second.isValid())
414  continue; //Skip if TSOS is not valid
415 
416  std::vector<TrajectoryMeasurement> mymeas =
417  det.fastMeasurements(it->second, onLayer, propagatorAlong, *estimatorH); //Second TSOS is not used
418  for (std::vector<TrajectoryMeasurement>::const_iterator it2 = mymeas.begin(), ed2 = mymeas.end(); it2 != ed2;
419  ++it2) {
420  if (it2->recHit()->isValid())
421  meas.push_back(*it2); //Only save those which are valid
422  }
423  }
424 
425  // Update TSOS using TMs after sorting, then create Trajectory Seed and put into vector:
426  LogTrace("TSGForOI")
427  << "TSGForOI::findSeedsOnLayer: Update TSOS using TMs after sorting, then create Trajectory Seed, number of TM = "
428  << meas.size() << endl;
429  unsigned int found = 0;
430  std::sort(meas.begin(), meas.end(), TrajMeasLessEstim());
431  for (std::vector<TrajectoryMeasurement>::const_iterator it = meas.begin(); it != meas.end(); ++it) {
432  TrajectoryStateOnSurface updatedTSOS = updator_->update(it->forwardPredictedState(), *it->recHit());
433  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: TSOS for TM " << found << endl;
434  if (not updatedTSOS.isValid())
435  continue;
436 
437  // CHECK if is StereoLayer:
438  if (useStereoLayersInTEC_ && (fabs(l2Eta) > 0.8 && fabs(l2Eta) < 1.6)) {
439  DetId detid = ((*it).recHit()->hit())->geographicalId();
440  if (detid.subdetId() == StripSubdetector::TEC) {
441  if (!tTopo->tecIsStereo(detid.rawId()))
442  break; // try another layer
443  }
444  }
445 
447  seedHits.push_back(*it->recHit()->hit());
448  PTrajectoryStateOnDet const& pstate =
449  trajectoryStateTransform::persistentState(updatedTSOS, it->recHit()->geographicalId().rawId());
450  LogTrace("TSGForOI") << "TSGForOI::findSeedsOnLayer: number of seedHits: " << seedHits.size() << endl;
451  TrajectorySeed seed(pstate, std::move(seedHits), oppositeToMomentum);
452  out.push_back(seed);
453  found++;
454  numSeedsMade++;
455  if (found == numOfHitsToTry_)
456  break;
457  }
458  return found;
459 }
static constexpr auto TEC
std::vector< TrajectoryMeasurement > fastMeasurements(const TrajectoryStateOnSurface &stateOnThisDet, const TrajectoryStateOnSurface &tsos2, const Propagator &prop, const MeasurementEstimator &est) const
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
#define LogTrace(id)
constexpr std::array< uint8_t, layerIndexSize > layer
void push_back(D *&d)
Definition: OwnVector.h:326
const std::unique_ptr< TrajectoryStateUpdator > updator_
KFUpdator defined in constructor.
Definition: TSGForOI.h:78
size_type size() const
Definition: OwnVector.h:300
const bool useStereoLayersInTEC_
Switch ON to use Stereo layers instead of using every layer in TEC.
Definition: TSGForOI.h:75
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
Definition: DetId.h:17
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
bool tecIsStereo(const DetId &id) const
def move(src, dest)
Definition: eostools.py:511
const unsigned int numOfHitsToTry_
How many hits to try per layer.
Definition: TSGForOI.h:51

◆ match_Chi2()

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

Definition at line 464 of file TSGForOI.cc.

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

Referenced by produce().

464  {
465  if (!tsos1.isValid() || !tsos2.isValid())
466  return -1.;
467 
469  AlgebraicSymMatrix55 m(tsos1.localError().matrix() + tsos2.localError().matrix());
470 
471  bool ierr = !m.Invert();
472 
473  if (ierr) {
474  edm::LogInfo("TSGForOI") << "Error inverting covariance matrix";
475  return -1;
476  }
477 
478  double est = ROOT::Math::Similarity(v, m);
479 
480  return est;
481 }
const LocalTrajectoryError & localError() const
const LocalTrajectoryParameters & localParameters() const
AlgebraicVector5 vector() const
ROOT::Math::SVector< double, 5 > AlgebraicVector5
Log< level::Info, false > LogInfo
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
const AlgebraicSymMatrix55 & matrix() const

◆ 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 51 of file TSGForOI.cc.

References funct::abs(), alongMomentum, Plane::build(), estimatorName_, findSeedsOnLayer(), edm::EventSetup::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(), L1TMuonDQMOffline_cfi::propagatorAlong, propagatorName_, L1TMuonDQMOffline_cfi::propagatorOpposite, mps_fire::result, SetPropagationDirection(), src_, theCategory, and tsosDiff_.

51  {
53  unsigned int numOfMaxSeeds = numOfMaxSeedsParam_;
54  unsigned int numSeedsMade = 0;
55  bool analysedL2 = false;
56  unsigned int layerCount = 0;
57 
60 
62  edm::Handle<MeasurementTrackerEvent> measurementTrackerH;
65  edm::ESHandle<Propagator> propagatorAlongH;
66  edm::ESHandle<Propagator> propagatorOppositeH;
67  edm::ESHandle<TrackerGeometry> tmpTkGeometryH;
69 
70  iSetup.get<IdealMagneticFieldRecord>().get(magfieldH);
71  iSetup.get<TrackingComponentsRecord>().get(propagatorName_, propagatorOppositeH);
72  iSetup.get<TrackingComponentsRecord>().get(propagatorName_, propagatorAlongH);
73  iSetup.get<GlobalTrackingGeometryRecord>().get(geometryH);
74  iSetup.get<TrackerDigiGeometryRecord>().get(tmpTkGeometryH);
75  iSetup.get<TrackingComponentsRecord>().get(estimatorName_, estimatorH);
76  iEvent.getByToken(measurementTrackerTag_, measurementTrackerH);
77 
80  iEvent.getByToken(src_, l2TrackCol);
81 
82  // The product:
83  std::unique_ptr<std::vector<TrajectorySeed> > result(new std::vector<TrajectorySeed>());
84 
85  // Get vector of Detector layers once:
86  std::vector<BarrelDetLayer const*> const& tob = measurementTrackerH->geometricSearchTracker()->tobLayers();
87  std::vector<ForwardDetLayer const*> const& tecPositive =
88  tmpTkGeometryH->isThere(GeomDetEnumerators::P2OTEC)
89  ? measurementTrackerH->geometricSearchTracker()->posTidLayers()
90  : measurementTrackerH->geometricSearchTracker()->posTecLayers();
91  std::vector<ForwardDetLayer const*> const& tecNegative =
92  tmpTkGeometryH->isThere(GeomDetEnumerators::P2OTEC)
93  ? measurementTrackerH->geometricSearchTracker()->negTidLayers()
94  : measurementTrackerH->geometricSearchTracker()->negTecLayers();
95  edm::ESHandle<TrackerTopology> tTopo_handle;
96  iSetup.get<TrackerTopologyRcd>().get(tTopo_handle);
97  const TrackerTopology* tTopo = tTopo_handle.product();
98 
99  // Get the suitable propagators:
100  std::unique_ptr<Propagator> propagatorAlong = SetPropagationDirection(*propagatorAlongH, alongMomentum);
101  std::unique_ptr<Propagator> propagatorOpposite = SetPropagationDirection(*propagatorOppositeH, oppositeToMomentum);
102 
103  edm::ESHandle<Propagator> SmartOpposite;
104  edm::ESHandle<Propagator> SHPOpposite;
105  iSetup.get<TrackingComponentsRecord>().get("hltESPSmartPropagatorAnyOpposite", SmartOpposite);
106  iSetup.get<TrackingComponentsRecord>().get("hltESPSteppingHelixPropagatorOpposite", SHPOpposite);
107 
108  // Loop over the L2's and make seeds for all of them:
109  LogTrace(theCategory) << "TSGForOI::produce: Number of L2's: " << l2TrackCol->size();
110  for (unsigned int l2TrackColIndex(0); l2TrackColIndex != l2TrackCol->size(); ++l2TrackColIndex) {
111  const reco::TrackRef l2(l2TrackCol, l2TrackColIndex);
112  std::unique_ptr<std::vector<TrajectorySeed> > out(new std::vector<TrajectorySeed>());
113  LogTrace("TSGForOI") << "TSGForOI::produce: L2 muon pT, eta, phi --> " << l2->pt() << " , " << l2->eta() << " , "
114  << l2->phi() << endl;
115 
117  dummyPlane->move(fts.position() - dummyPlane->position());
118  TrajectoryStateOnSurface tsosAtIP = TrajectoryStateOnSurface(fts, *dummyPlane);
119  LogTrace("TSGForOI") << "TSGForOI::produce: Created TSOSatIP: " << tsosAtIP << std::endl;
120 
121  // get the TSOS on the innermost layer of the L2.
122  TrajectoryStateOnSurface tsosAtMuonSystem =
123  trajectoryStateTransform::innerStateOnSurface(*l2, *geometryH, magfieldH.product());
124  LogTrace("TSGForOI") << "TSGForOI::produce: Created TSOSatMuonSystem: " << tsosAtMuonSystem << endl;
125 
126  LogTrace("TSGForOI") << "TSGForOI::produce: Check the error of the L2 parameter and use hit seeds if big errors"
127  << endl;
128  StateOnTrackerBound fromInside(propagatorAlong.get());
129  TrajectoryStateOnSurface outerTkStateInside = fromInside(fts);
130 
131  StateOnTrackerBound fromOutside(&*SmartOpposite);
132  TrajectoryStateOnSurface outerTkStateOutside = fromOutside(tsosAtMuonSystem);
133 
134  // for now only checking if the two positions (using updated and not-updated) agree withing certain extent,
135  // will probably have to design something fancier for the future.
136  auto dist = 0.0;
137  bool useBoth = false;
138  if (outerTkStateInside.isValid() && outerTkStateOutside.isValid()) {
139  dist = match_Chi2(outerTkStateInside, outerTkStateOutside);
140  }
141  if (dist > tsosDiff_) {
142  useBoth = true;
143  }
144 
145  numSeedsMade = 0;
146  analysedL2 = false;
147 
148  // 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
149 
150  // BARREL
151  if (std::abs(l2->eta()) < maxEtaForTOB_) {
152  layerCount = 0;
153  for (auto it = tob.rbegin(); it != tob.rend(); ++it) { //This goes from outermost to innermost layer
154  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TOB layer " << layerCount << endl;
155  findSeedsOnLayer(tTopo,
156  **it,
157  tsosAtIP,
158  *(propagatorAlong.get()),
159  *(propagatorOpposite.get()),
160  l2,
161  estimatorH,
162  measurementTrackerH,
163  numSeedsMade,
164  numOfMaxSeeds,
165  layerCount,
166  analysedL2,
167  out);
168  }
169  if (useBoth) {
170  numSeedsMade = 0;
171  for (auto it = tob.rbegin(); it != tob.rend(); ++it) { //This goes from outermost to innermost layer
172  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TOB layer " << layerCount << endl;
173  findSeedsOnLayer(tTopo,
174  **it,
175  tsosAtMuonSystem,
176  *(propagatorOpposite.get()),
177  *(propagatorOpposite.get()),
178  l2,
179  estimatorH,
180  measurementTrackerH,
181  numSeedsMade,
182  numOfMaxSeeds,
183  layerCount,
184  analysedL2,
185  out);
186  }
187  }
188  }
189  // Reset Number of seeds if in overlap region:
190 
191  if (std::abs(l2->eta()) > minEtaForTEC_ && std::abs(l2->eta()) < maxEtaForTOB_) {
192  numSeedsMade = 0;
193  }
194 
195  // ENDCAP+
196  if (l2->eta() > minEtaForTEC_) {
197  layerCount = 0;
198  for (auto it = tecPositive.rbegin(); it != tecPositive.rend(); ++it) {
199  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TEC+ layer " << layerCount << endl;
200  findSeedsOnLayer(tTopo,
201  **it,
202  tsosAtIP,
203  *(propagatorAlong.get()),
204  *(propagatorOpposite.get()),
205  l2,
206  estimatorH,
207  measurementTrackerH,
208  numSeedsMade,
209  numOfMaxSeeds,
210  layerCount,
211  analysedL2,
212  out);
213  }
214  if (useBoth) {
215  numSeedsMade = 0;
216  for (auto it = tecPositive.rbegin(); it != tecPositive.rend(); ++it) {
217  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TEC+ layer " << layerCount << endl;
218  findSeedsOnLayer(tTopo,
219  **it,
220  tsosAtMuonSystem,
221  *(propagatorOpposite.get()),
222  *(propagatorOpposite.get()),
223  l2,
224  estimatorH,
225  measurementTrackerH,
226  numSeedsMade,
227  numOfMaxSeeds,
228  layerCount,
229  analysedL2,
230  out);
231  }
232  }
233  }
234 
235  // ENDCAP-
236  if (l2->eta() < -minEtaForTEC_) {
237  layerCount = 0;
238  for (auto it = tecNegative.rbegin(); it != tecNegative.rend(); ++it) {
239  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TEC- layer " << layerCount << endl;
240  findSeedsOnLayer(tTopo,
241  **it,
242  tsosAtIP,
243  *(propagatorAlong.get()),
244  *(propagatorOpposite.get()),
245  l2,
246  estimatorH,
247  measurementTrackerH,
248  numSeedsMade,
249  numOfMaxSeeds,
250  layerCount,
251  analysedL2,
252  out);
253  }
254  if (useBoth) {
255  numSeedsMade = 0;
256  for (auto it = tecNegative.rbegin(); it != tecNegative.rend(); ++it) {
257  LogTrace("TSGForOI") << "TSGForOI::produce: looping in TEC- layer " << layerCount << endl;
258  findSeedsOnLayer(tTopo,
259  **it,
260  tsosAtMuonSystem,
261  *(propagatorOpposite.get()),
262  *(propagatorOpposite.get()),
263  l2,
264  estimatorH,
265  measurementTrackerH,
266  numSeedsMade,
267  numOfMaxSeeds,
268  layerCount,
269  analysedL2,
270  out);
271  }
272  }
273  }
274 
275  for (std::vector<TrajectorySeed>::iterator it = out->begin(); it != out->end(); ++it) {
276  result->push_back(*it);
277  }
278  } //L2Collection
279  edm::LogInfo(theCategory) << "TSGForOI::produce: number of seeds made: " << result->size();
280 
281  iEvent.put(std::move(result));
282 }
const std::string estimatorName_
Estimator used to find dets and TrajectoryMeasurements.
Definition: TSGForOI.h:62
const double tsosDiff_
Distance of TSOSs to trigger using hits or not.
Definition: TSGForOI.h:88
const std::string propagatorName_
Counters and flags for the implementation.
Definition: TSGForOI.h:91
const double maxEtaForTOB_
Maximum eta value to activate searching in the TOB.
Definition: TSGForOI.h:68
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:284
#define LogTrace(id)
static PlanePointer build(Args &&... args)
Definition: Plane.h:33
GlobalPoint position() const
std::unique_ptr< Propagator > SetPropagationDirection(Propagator const &iprop, PropagationDirection dir)
const double minEtaForTEC_
Minimum eta value to activate searching in the TEC.
Definition: TSGForOI.h:65
int iEvent
Definition: GenABIO.cc:224
T const * product() const
Definition: ESHandle.h:86
bool isThere(GeomDetEnumerators::SubDetector subdet) const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
T get() const
Definition: EventSetup.h:82
double match_Chi2(const TrajectoryStateOnSurface &tsos1, const TrajectoryStateOnSurface &tsos2) const
Definition: TSGForOI.cc:464
Log< level::Info, false > LogInfo
const edm::EDGetTokenT< reco::TrackCollection > src_
Labels for input collections.
Definition: TSGForOI.h:42
const edm::EDGetTokenT< MeasurementTrackerEvent > measurementTrackerTag_
Definition: TSGForOI.h:80
const unsigned int numOfMaxSeedsParam_
Maximum number of seeds for each L2.
Definition: TSGForOI.h:45
const std::string theCategory
Definition: TSGForOI.h:92
FreeTrajectoryState initialFreeState(const reco::Track &tk, const MagneticField *field, bool withErr=true)
def move(src, dest)
Definition: eostools.py:511
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)

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().