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
 
 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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
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
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
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
 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 = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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 14 of file TSGForOIFromL2.cc.

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

◆ ~TSGForOIFromL2()

TSGForOIFromL2::~TSGForOIFromL2 ( )
override

Definition at line 57 of file TSGForOIFromL2.cc.

57 {}

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 440 of file TSGForOIFromL2.cc.

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

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

Referenced by produce().

◆ fillDescriptions()

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

Definition at line 509 of file TSGForOIFromL2.cc.

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

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, HLT_FULL_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 363 of file TSGForOIFromL2.cc.

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

References MeasurementDetWithData::fastMeasurements(), newFWLiteAna::found, MeasurementDetWithData::isNull(), TrajectoryStateOnSurface::isValid(), phase1PixelTopology::layer, LogTrace, maxHitSeeds_, HLTSiStripMonitoring_cff::measurementTracker, eostools::move(), numOfHitsToTry_, numOfLayersToTry_, oppositeToMomentum, MillePedeFileConverter_cfg::out, trajectoryStateTransform::persistentState(), HLT_FULL_cff::propagatorAlong, edm::OwnVector< T, P >::push_back(), TrajectoryStateOnSurface::rescaleError(), fileCollector::seed, edm::OwnVector< T, P >::size(), jetUpdater_cfi::sort, 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 329 of file TSGForOIFromL2.cc.

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

References phase1PixelTopology::layer, LogTrace, oppositeToMomentum, MillePedeFileConverter_cfg::out, trajectoryStateTransform::persistentState(), HLT_FULL_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 487 of file TSGForOIFromL2.cc.

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

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 62 of file TSGForOIFromL2.cc.

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

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_FULL_cff::propagatorAlong, propagatorName_, HLT_FULL_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
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
GeometricSearchTracker::tobLayers
std::vector< BarrelDetLayer const * > const & tobLayers() const
Definition: GeometricSearchTracker.h:46
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:329
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
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
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
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 >
fileCollector.seed
seed
Definition: fileCollector.py:127
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:45
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
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:54
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:79
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:16
GeometricSearchTracker::posTidLayers
std::vector< ForwardDetLayer const * > const & posTidLayers() const
Definition: GeometricSearchTracker.h:53
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
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
TSGForOIFromL2::tsosDiff2_
const double tsosDiff2_
Definition: TSGForOIFromL2.h:97
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
TSGForOIFromL2::eta1_
const double eta1_
Definition: TSGForOIFromL2.h:92
GeometricSearchTracker::negTecLayers
std::vector< ForwardDetLayer const * > const & negTecLayers() const
Definition: GeometricSearchTracker.h:50
HLT_FULL_cff.propagatorOpposite
propagatorOpposite
Definition: HLT_FULL_cff.py:116
MeasurementTrackerEvent::geometricSearchTracker
const GeometricSearchTracker * geometricSearchTracker() const
Definition: MeasurementTrackerEvent.h:73
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
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
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
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
HLT_FULL_cff.propagatorAlong
propagatorAlong
Definition: HLT_FULL_cff.py:118
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
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:18
TSGForOIFromL2::eta4_
const double eta4_
Definition: TSGForOIFromL2.h:92
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
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:363
edm::OwnVector::push_back
void push_back(D *&d)
Definition: OwnVector.h:326
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
mps_fire.result
result
Definition: mps_fire.py:311
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
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
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
TSGForOIFromL2::fixedErrorRescalingForHitless_
const double fixedErrorRescalingForHitless_
Definition: TSGForOIFromL2.h:66
edm::OwnVector< TrackingRecHit >
GeometricSearchTracker::negTidLayers
std::vector< ForwardDetLayer const * > const & negTidLayers() const
Definition: GeometricSearchTracker.h:49
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:440
TrackingComponentsRecord
Definition: TrackingComponentsRecord.h:12