CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Public Attributes | Private Attributes
TrajectorySeedProducer Class Reference

#include <TrajectorySeedProducer.h>

Inheritance diagram for TrajectorySeedProducer:
edm::stream::EDProducer<> edm::stream::EDProducer<> edm::stream::EDProducerBase edm::stream::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper edm::ProductRegistryHelper

Public Types

typedef std::vector
< std::unique_ptr
< TrackingRegion > > 
Regions
 
- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDProducerBase
typedef EDProducerAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

bool compatibleWithBeamSpot (const GlobalPoint &gpos1, const GlobalPoint &gpos2, double error, bool forward) const
 
bool compatibleWithPrimaryVertex (const GlobalPoint &gpos1, const GlobalPoint &gpos2, double error, bool forward) const
 
const SeedingNode
< TrackingLayer > * 
insertHit (const std::vector< TrajectorySeedHitCandidate > &trackerRecHits, std::vector< int > &hitIndicesInTree, const SeedingNode< TrackingLayer > *node, unsigned int trackerHit) const
 
bool isHitOnLayer (const TrajectorySeedHitCandidate &trackerRecHit, const TrackingLayer &layer) const
 
virtual std::vector< unsigned int > iterateHits (unsigned int start, const std::vector< TrajectorySeedHitCandidate > &trackerRecHits, std::vector< int > hitIndicesInTree, bool processSkippedHits) const
 method tries to insert all hits into the tree structure. More...
 
bool pass2HitsCuts (const TrajectorySeedHitCandidate &hit1, const TrajectorySeedHitCandidate &hit2) const
 
bool passHitTuplesCuts (const SeedingNode< TrackingLayer > &seedingNode, const std::vector< TrajectorySeedHitCandidate > &trackerRecHits, const std::vector< int > &hitIndicesInTree, const TrajectorySeedHitCandidate &currentTrackerHit) const
 method checks if a SimTrack fulfills the quality requirements. More...
 
virtual void produce (edm::Event &e, const edm::EventSetup &es)
 
virtual void produce (edm::Event &e, const edm::EventSetup &es)
 
bool testWithRegions (const TrajectorySeedHitCandidate &innerHit, const TrajectorySeedHitCandidate &outerHit) const
 method inserts hit into the tree structure at an empty position. More...
 
 TrajectorySeedProducer (const edm::ParameterSet &conf)
 
 TrajectorySeedProducer (const edm::ParameterSet &conf)
 
virtual ~TrajectorySeedProducer ()
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
- Public Member Functions inherited from edm::stream::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (std::string const &iProcessName, std::string const &iModuleLabel, bool iPrint, std::vector< char const * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Public Attributes

const edm::EventSetupes_
 
const MeasurementTrackerEventmeasurementTrackerEvent
 
edm::EDGetTokenT
< MeasurementTrackerEvent
measurementTrackerEventToken
 
Regions regions
 

Private Attributes

SeedingTree< TrackingLayer_seedingTree
 
const reco::BeamSpotbeamSpot
 
bool hitMasks_exists
 
edm::EDGetTokenT< std::vector
< bool > > 
hitMasksToken
 
const MagneticFieldmagneticField
 
const MagneticFieldMapmagneticFieldMap
 
std::string measurementTrackerLabel
 
unsigned int minLayersCrossed
 
double nSigmaZ
 
double originHalfLength
 
double originRadius
 
const reco::VertexCollectionprimaryVertices
 
double ptMin
 
edm::EDGetTokenT
< FastTrackerRecHitCombinationCollection
recHitCombinationsToken
 
std::unique_ptr< SeedCreatorseedCreator
 
std::vector< std::vector
< TrackingLayer > > 
seedingLayers
 
double simTrack_maxD0
 
double simTrack_maxZ0
 
double simTrack_pTMin
 
bool skipSeedFinderSelector
 
bool testBeamspotCompatibility
 
bool testPrimaryVertexCompatibility
 
std::shared_ptr
< PropagatorWithMaterial
thePropagator
 
std::unique_ptr
< TrackingRegionProducer
theRegionProducer
 
const TrackerGeometrytrackerGeometry
 
const TrackerTopologytrackerTopology
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::stream::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
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 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)
 

Detailed Description

NOTE: what is called here 'FastTrackPreCandidate' is currently still known as 'FastTrackerRecHitCombination'

TrajectorySeedProducer emulates the reconstruction of TrajectorySeeds in FastSim.

The input data is a list of FastTrackPreCandidates. (input data are configured through the parameter 'src') In each given FastTrackPreCandidate, TrajectorySeedProducer searches for one combination of hits that matches all given seed requirements, (see parameters 'layerList','regionFactoryPSet') In that process it respects the order of the hits in the FastTrackPreCandidate. When such combination is found, a TrajectorySeed is reconstructed. Optionally, one can specify a list of hits to be ignored by TrajectorySeedProducer. (see parameter 'hitMasks')

The output data is the list of reconstructed TrajectorySeeds.

Definition at line 62 of file TrajectorySeedProducer.cc.

Member Typedef Documentation

typedef std::vector<std::unique_ptr<TrackingRegion> > TrajectorySeedProducer::Regions

Definition at line 192 of file TrajectorySeedProducer.h.

Constructor & Destructor Documentation

TrajectorySeedProducer::TrajectorySeedProducer ( const edm::ParameterSet conf)

region producer

Definition at line 94 of file TrajectorySeedProducer.cc.

References _seedingTree, edm::EDConsumerBase::consumesCollector(), SurfaceDeformationFactory::create(), TrackingLayer::createFromString(), edm::ParameterSet::exists(), reco::get(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), hitMasksToken, SeedingTree< DATA >::insert(), geometryCSVtoXML::line, measurementTrackerLabel, recHitCombinationsToken, seedCreator, skipSeedFinderSelector, AlCaHLTBitMon_QueryRunRegistry::string, and theRegionProducer.

95 {
96 
97  // produces
98  produces<TrajectorySeedCollection>();
99 
100  // consumes
101  recHitCombinationsToken = consumes<FastTrackerRecHitCombinationCollection>(conf.getParameter<edm::InputTag>("recHitCombinations"));
102  if (conf.exists("hitMasks")){
103  hitMasksToken = consumes<std::vector<bool> >(conf.getParameter<edm::InputTag>("hitMasks"));
104  }
105 
106  // read Layers
107  std::vector<std::string> layerStringList = conf.getParameter<std::vector<std::string>>("layerList");
108  for(auto it=layerStringList.cbegin(); it < layerStringList.cend(); ++it)
109  {
110  std::vector<TrackingLayer> trackingLayerList;
111  std::string line = *it;
113  while (pos != std::string::npos)
114  {
115  pos=line.find("+");
116  std::string layer = line.substr(0, pos);
118 
119  trackingLayerList.push_back(layerSpec);
120  line=line.substr(pos+1,std::string::npos);
121  }
122  _seedingTree.insert(trackingLayerList);
123  }
124 
126  edm::ParameterSet regfactoryPSet = conf.getParameter<edm::ParameterSet>("RegionFactoryPSet");
127  std::string regfactoryName = regfactoryPSet.getParameter<std::string>("ComponentName");
128  theRegionProducer.reset(TrackingRegionProducerFactory::get()->create(regfactoryName,regfactoryPSet, consumesCollector()));
129 
130  // seed creator
131  const edm::ParameterSet & seedCreatorPSet = conf.getParameter<edm::ParameterSet>("SeedCreatorPSet");
132  std::string seedCreatorName = seedCreatorPSet.getParameter<std::string>("ComponentName");
133  seedCreator.reset(SeedCreatorFactory::get()->create( seedCreatorName, seedCreatorPSet));
134 
135  // other parameters
136  measurementTrackerLabel = conf.getParameter<std::string>("measurementTracker");
137  skipSeedFinderSelector = conf.getUntrackedParameter<bool>("skipSeedFinderSelector",false);
138 
139 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< FastTrackerRecHitCombinationCollection > recHitCombinationsToken
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::unique_ptr< SeedCreator > seedCreator
uint16_t size_type
edm::EDGetTokenT< std::vector< bool > > hitMasksToken
bool insert(const std::vector< DATA > &dataList)
Definition: SeedingTree.h:178
std::unique_ptr< TrackingRegionProducer > theRegionProducer
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
static TrackingLayer createFromString(std::string layerSpecification)
SeedingTree< TrackingLayer > _seedingTree
SurfaceDeformation * create(int type, const std::vector< double > &params)
T get(const Candidate &c)
Definition: component.h:55
TrajectorySeedProducer::TrajectorySeedProducer ( const edm::ParameterSet conf)
virtual TrajectorySeedProducer::~TrajectorySeedProducer ( )
inlinevirtual

Definition at line 70 of file TrajectorySeedProducer.h.

71  {
72  }

Member Function Documentation

bool TrajectorySeedProducer::compatibleWithBeamSpot ( const GlobalPoint gpos1,
const GlobalPoint gpos2,
double  error,
bool  forward 
) const

Check that the seed is compatible with a track coming from within a cylinder of radius originRadius, with a decent pT.

bool TrajectorySeedProducer::compatibleWithPrimaryVertex ( const GlobalPoint gpos1,
const GlobalPoint gpos2,
double  error,
bool  forward 
) const

Check that the seed is compatible with a track coming from within a cylinder of radius originRadius, with a decent pT.

const SeedingNode<TrackingLayer>* TrajectorySeedProducer::insertHit ( const std::vector< TrajectorySeedHitCandidate > &  trackerRecHits,
std::vector< int > &  hitIndicesInTree,
const SeedingNode< TrackingLayer > *  node,
unsigned int  trackerHit 
) const
bool TrajectorySeedProducer::isHitOnLayer ( const TrajectorySeedHitCandidate trackerRecHit,
const TrackingLayer layer 
) const
inline

Definition at line 152 of file TrajectorySeedProducer.h.

References TrajectorySeedHitCandidate::getTrackingLayer().

153  {
154  return layer==trackerRecHit.getTrackingLayer();
155  }
const TrackingLayer & getTrackingLayer() const
virtual std::vector<unsigned int> TrajectorySeedProducer::iterateHits ( unsigned int  start,
const std::vector< TrajectorySeedHitCandidate > &  trackerRecHits,
std::vector< int >  hitIndicesInTree,
bool  processSkippedHits 
) const
virtual

method tries to insert all hits into the tree structure.

Parameters
startindex where to begin insertion. Important for recursion.
trackerRecHitslist of all TrackerRecHits.
hitIndicesInTreehit indices which translates the tree node to the hits in trackerRecHits.
currentTrackerHithit which is tested.
Returns
list of hit indices which form a found seed. Returns empty list if no seed was found.
bool TrajectorySeedProducer::pass2HitsCuts ( const TrajectorySeedHitCandidate hit1,
const TrajectorySeedHitCandidate hit2 
) const

Referenced by passHitTuplesCuts().

bool TrajectorySeedProducer::passHitTuplesCuts ( const SeedingNode< TrackingLayer > &  seedingNode,
const std::vector< TrajectorySeedHitCandidate > &  trackerRecHits,
const std::vector< int > &  hitIndicesInTree,
const TrajectorySeedHitCandidate currentTrackerHit 
) const
inline

method checks if a SimTrack fulfills the quality requirements.

Parameters
theSimTrackthe SimTrack to be tested.
theSimVertexthe associated SimVertex of the SimTrack.
Returns
true if a track fulfills the requirements.method checks if a TrajectorySeedHitCandidate fulfills the quality requirements.
Parameters
seedingNodetree node at which the hit will be inserted.
trackerRecHitslist of all TrackerRecHits.
hitIndicesInTreehit indices which translates the tree node to the hits in trackerRecHits.
currentTrackerHithit which is tested.
Returns
true if a hit fulfills the requirements.

Definition at line 91 of file TrajectorySeedProducer.h.

References SeedingNode< DATA >::getDepth(), SeedingNode< DATA >::getIndex(), SeedingNode< DATA >::getParent(), and pass2HitsCuts().

97  {
98  switch (seedingNode.getDepth())
99  {
100  case 0:
101  {
102  return true;
103  /* example for 1 hits
104  const TrajectorySeedHitCandidate& hit1 = currentTrackerHit;
105  return pass1HitsCuts(hit1,trackingAlgorithmId);
106  */
107  }
108 
109  case 1:
110  {
111  const SeedingNode<TrackingLayer>* parentNode = &seedingNode;
112  parentNode = parentNode->getParent();
113  const TrajectorySeedHitCandidate& hit1 = trackerRecHits[hitIndicesInTree[parentNode->getIndex()]];
114  const TrajectorySeedHitCandidate& hit2 = currentTrackerHit;
115 
116  return pass2HitsCuts(hit1,hit2);
117  }
118  case 2:
119  {
120  return true;
121  /* example for 3 hits
122  const SeedingNode<LayerSpec>* parentNode = &seedingNode;
123  parentNode = parentNode->getParent();
124  const TrajectorySeedHitCandidate& hit2 = trackerRecHits[hitIndicesInTree[parentNode->getIndex()]];
125  parentNode = parentNode->getParent();
126  const TrajectorySeedHitCandidate& hit1 = trackerRecHits[hitIndicesInTree[parentNode->getIndex()]];
127  const TrajectorySeedHitCandidate& hit3 = currentTrackerHit;
128  return pass3HitsCuts(hit1,hit2,hit3,trackingAlgorithmId);
129  */
130  }
131  }
132  return true;
133  }
unsigned int getDepth() const
Definition: SeedingTree.h:84
const SeedingNode * getParent() const
Definition: SeedingTree.h:112
bool pass2HitsCuts(const TrajectorySeedHitCandidate &hit1, const TrajectorySeedHitCandidate &hit2) const
unsigned int getIndex() const
Definition: SeedingTree.h:107
virtual void TrajectorySeedProducer::produce ( edm::Event e,
const edm::EventSetup es 
)
virtual
void TrajectorySeedProducer::produce ( edm::Event e,
const edm::EventSetup es 
)
virtual

Implements edm::stream::EDProducerBase.

Definition at line 142 of file TrajectorySeedProducer.cc.

References _seedingTree, clone(), TrackingRecHit::det(), HitPairGeneratorFromLayerPair::doublets(), GeomDet::geographicalId(), edm::EventSetup::get(), edm::Event::getByToken(), BaseTrackerRecHit::hit(), fastTrackingUtilities::hitIsMasked(), hitMasksToken, edm::EDGetTokenT< T >::isUninitialized(), HLT_25ns10e33_v2_cff::measurementTracker, measurementTrackerLabel, eostools::move(), nullptr, TrackingRegion::origin(), convertSQLitetoXML_cfg::output, edm::ESHandle< class >::product(), edm::OwnVector< T, P >::push_back(), edm::Event::put(), recHitCombinationsToken, HLT_25ns10e33_v2_cff::region, regions, mps_fire::result, seedCreator, HLT_25ns10e33_v2_cff::seedFinder, fastTrackingUtilities::setRecHitCombinationIndex(), edm::OwnVector< T, P >::size(), skipSeedFinderSelector, theRegionProducer, and trackerTopology.

Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().

143 {
144 
145  // services
147  edm::ESHandle<MeasurementTracker> measurementTrackerHandle;
148 
149  es.get<TrackerTopologyRcd>().get(trackerTopology);
150  es.get<CkfComponentsRecord>().get(measurementTrackerLabel, measurementTrackerHandle);
151  const MeasurementTracker * measurementTracker = &(*measurementTrackerHandle);
152 
153  // input data
155  e.getByToken(recHitCombinationsToken, recHitCombinations);
156  const std::vector<bool> * hitMasks = 0;
158  {
159  edm::Handle<std::vector<bool> > hitMasksHandle;
160  e.getByToken(hitMasksToken,hitMasksHandle);
161  hitMasks = &(*hitMasksHandle);
162  }
163 
164  // output data
165  std::unique_ptr<TrajectorySeedCollection> output(new TrajectorySeedCollection());
166 
167  // produce the regions;
168  const auto regions = theRegionProducer->regions(e,es);
169  // and make sure there is at least one region
170  if(regions.size() == 0)
171  {
172  e.put(std::move(output));
173  return;
174  }
175 
176  // pointer to selected region
177  TrackingRegion * selectedTrackingRegion = 0;
178 
179  // define a lambda function
180  // to select hit pairs, triplets, ... compatible with the region
181  SeedFinder::Selector selectorFunction = [&es,&measurementTracker,&selectedTrackingRegion](const std::vector<const FastTrackerRecHit*>& hits) -> bool
182  {
183  // criteria for hit pairs
184  // based on HitPairGeneratorFromLayerPair::doublets( const TrackingRegion& region, const edm::Event & iEvent, const edm::EventSetup& iSetup, Layers layers)
185  if (hits.size()==2)
186  {
187  const FastTrackerRecHit * innerHit = hits[0];
188  const FastTrackerRecHit * outerHit = hits[1];
189 
190  const DetLayer * innerLayer = measurementTracker->geometricSearchTracker()->detLayer(innerHit->det()->geographicalId());
191  const DetLayer * outerLayer = measurementTracker->geometricSearchTracker()->detLayer(outerHit->det()->geographicalId());
192 
193  std::vector<BaseTrackerRecHit const *> innerHits(1,(const BaseTrackerRecHit*) innerHit->hit());
194  std::vector<BaseTrackerRecHit const *> outerHits(1,(const BaseTrackerRecHit*) outerHit->hit());
195 
196  //const RecHitsSortedInPhi* ihm=new RecHitsSortedInPhi (innerHits, selectedTrackingRegion->origin(), innerLayer);
197  //const RecHitsSortedInPhi* ohm=new RecHitsSortedInPhi (outerHits, selectedTrackingRegion->origin(), outerLayer);
198  const RecHitsSortedInPhi ihm(innerHits, selectedTrackingRegion->origin(), innerLayer);
199  const RecHitsSortedInPhi ohm(outerHits, selectedTrackingRegion->origin(), outerLayer);
200 
201  HitDoublets result(ihm,ohm);
202  HitPairGeneratorFromLayerPair::doublets(*selectedTrackingRegion,*innerLayer,*outerLayer,ihm,ohm,es,0,result);
203 
204  if(result.size()!=0)
205  {
206  return true;
207  }
208  else
209  {
210  return false;
211  }
212  }
213  else
214  {
215 
216  // no criteria for hit combinations that are not pairs
217  return true;
218  }
219  };
220 
222  {
223  selectedTrackingRegion = regions[0].get();
224  selectorFunction = [](const std::vector<const FastTrackerRecHit*>& hits) -> bool
225  {
226  return true;
227  };
228  }
229 
230 
231  // instantiate the seed finder
232  SeedFinder seedFinder(_seedingTree,*trackerTopology.product());
233  seedFinder.setHitSelector(selectorFunction);
234 
235  // loop over the combinations
236  for ( unsigned icomb=0; icomb<recHitCombinations->size(); ++icomb)
237  {
238  FastTrackerRecHitCombination recHitCombination = (*recHitCombinations)[icomb];
239 
240  // create a list of hits cleaned from masked hits
241  std::vector<const FastTrackerRecHit * > seedHitCandidates;
242  for (const auto & _hit : recHitCombination )
243  {
244  if(hitMasks && fastTrackingUtilities::hitIsMasked(_hit.get(),hitMasks))
245  {
246  continue;
247  }
248  seedHitCandidates.push_back(_hit.get());
249  }
250 
251  // loop over the regions
252  for(auto region = regions.begin();region != regions.end(); ++region)
253  {
254 
255  // set the region
256  selectedTrackingRegion = region->get();
257 
258  // find the hits on the seeds
259  std::vector<unsigned int> seedHitNumbers = seedFinder.getSeed(seedHitCandidates);
260 
261  // create a seed from those hits
262  if (seedHitNumbers.size()>1)
263  {
264 
265  // copy the hits and make them aware of the combination they originate from
267  for(unsigned iIndex = 0;iIndex < seedHitNumbers.size();++iIndex)
268  {
269  seedHits.push_back(seedHitCandidates[seedHitNumbers[iIndex]]->clone());
270  }
272 
273  seedCreator->init(*selectedTrackingRegion,es,0);
274  seedCreator->makeSeed(
275  *output,
277  &seedHits[0],
278  &seedHits[1],
279  seedHits.size() >=3 ? &seedHits[2] : nullptr,
280  seedHits.size() >=4 ? &seedHits[3] : nullptr
281  )
282  );
283  break; // break the loop over the regions
284  }
285  }
286  }
287  e.put(std::move(output));
288 
289 }
void setRecHitCombinationIndex(edm::OwnVector< T > &recHits, int32_t icomb)
edm::EDGetTokenT< FastTrackerRecHitCombinationCollection > recHitCombinationsToken
GlobalPoint const & origin() const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
size_type size() const
Definition: OwnVector.h:264
BaseTrackerRecHit const * hit() const final
bool hitIsMasked(const FastTrackerRecHit *hit, const std::vector< bool > *hitMasks)
std::unique_ptr< SeedCreator > seedCreator
#define nullptr
std::function< bool(const std::vector< const FastTrackerRecHit * > &hits)> Selector
Definition: SeedFinder.h:19
edm::EDGetTokenT< std::vector< bool > > hitMasksToken
tuple result
Definition: mps_fire.py:83
std::unique_ptr< TrackingRegionProducer > theRegionProducer
void push_back(D *&d)
Definition: OwnVector.h:290
const TrackerTopology * trackerTopology
std::vector< TrajectorySeed > TrajectorySeedCollection
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:121
const GeomDet * det() const
def move
Definition: eostools.py:510
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:77
HitDoublets doublets(const TrackingRegion &reg, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
std::vector< FastTrackerRecHitRef > FastTrackerRecHitCombination
const T & get() const
Definition: EventSetup.h:56
SeedingTree< TrackingLayer > _seedingTree
T const * product() const
Definition: ESHandle.h:86
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
bool isUninitialized() const
Definition: EDGetToken.h:73
bool TrajectorySeedProducer::testWithRegions ( const TrajectorySeedHitCandidate innerHit,
const TrajectorySeedHitCandidate outerHit 
) const

method inserts hit into the tree structure at an empty position.

Parameters
trackerRecHitslist of all TrackerRecHits.
hitIndicesInTreehit indices which translates the tree node to the hits in trackerRecHits. Empty positions are identified with '-1'.
nodewhere to look for an empty position. Important for recursive tree traversing (Breadth-first). Starts with the root.
trackerHithit which is tested.
Returns
pointer if this hit is inserted at a leaf which means that a seed has been found. Returns 'nullptr' otherwise.

Member Data Documentation

SeedingTree< TrackingLayer > TrajectorySeedProducer::_seedingTree
private

Definition at line 75 of file TrajectorySeedProducer.cc.

Referenced by produce(), and TrajectorySeedProducer().

const reco::BeamSpot* TrajectorySeedProducer::beamSpot
private

Definition at line 61 of file TrajectorySeedProducer.h.

const edm::EventSetup* TrajectorySeedProducer::es_

Definition at line 199 of file TrajectorySeedProducer.h.

bool TrajectorySeedProducer::hitMasks_exists
private

Definition at line 59 of file TrajectorySeedProducer.h.

edm::EDGetTokenT< std::vector< bool > > TrajectorySeedProducer::hitMasksToken
private

Definition at line 70 of file TrajectorySeedProducer.cc.

Referenced by produce(), and TrajectorySeedProducer().

const MagneticField* TrajectorySeedProducer::magneticField
private

Definition at line 41 of file TrajectorySeedProducer.h.

const MagneticFieldMap* TrajectorySeedProducer::magneticFieldMap
private

Definition at line 42 of file TrajectorySeedProducer.h.

const MeasurementTrackerEvent* TrajectorySeedProducer::measurementTrackerEvent

Definition at line 198 of file TrajectorySeedProducer.h.

edm::EDGetTokenT<MeasurementTrackerEvent> TrajectorySeedProducer::measurementTrackerEventToken

Definition at line 197 of file TrajectorySeedProducer.h.

std::string TrajectorySeedProducer::measurementTrackerLabel
private

Definition at line 79 of file TrajectorySeedProducer.cc.

Referenced by produce(), and TrajectorySeedProducer().

unsigned int TrajectorySeedProducer::minLayersCrossed
private

Definition at line 51 of file TrajectorySeedProducer.h.

double TrajectorySeedProducer::nSigmaZ
private

Definition at line 57 of file TrajectorySeedProducer.h.

double TrajectorySeedProducer::originHalfLength
private

Definition at line 56 of file TrajectorySeedProducer.h.

double TrajectorySeedProducer::originRadius
private

Definition at line 54 of file TrajectorySeedProducer.h.

const reco::VertexCollection* TrajectorySeedProducer::primaryVertices
private

Definition at line 63 of file TrajectorySeedProducer.h.

double TrajectorySeedProducer::ptMin
private

Definition at line 55 of file TrajectorySeedProducer.h.

edm::EDGetTokenT< FastTrackerRecHitCombinationCollection > TrajectorySeedProducer::recHitCombinationsToken
private

Definition at line 69 of file TrajectorySeedProducer.cc.

Referenced by produce(), and TrajectorySeedProducer().

Regions TrajectorySeedProducer::regions

Definition at line 193 of file TrajectorySeedProducer.h.

Referenced by produce().

std::unique_ptr< SeedCreator > TrajectorySeedProducer::seedCreator
private

Definition at line 77 of file TrajectorySeedProducer.cc.

Referenced by produce(), and TrajectorySeedProducer().

std::vector< std::vector< TrackingLayer > > TrajectorySeedProducer::seedingLayers
private

Definition at line 74 of file TrajectorySeedProducer.cc.

double TrajectorySeedProducer::simTrack_maxD0
private

Definition at line 48 of file TrajectorySeedProducer.h.

double TrajectorySeedProducer::simTrack_maxZ0
private

Definition at line 49 of file TrajectorySeedProducer.h.

double TrajectorySeedProducer::simTrack_pTMin
private

Definition at line 47 of file TrajectorySeedProducer.h.

bool TrajectorySeedProducer::skipSeedFinderSelector
private

Definition at line 81 of file TrajectorySeedProducer.cc.

Referenced by produce(), and TrajectorySeedProducer().

bool TrajectorySeedProducer::testBeamspotCompatibility
private

Definition at line 60 of file TrajectorySeedProducer.h.

bool TrajectorySeedProducer::testPrimaryVertexCompatibility
private

Definition at line 62 of file TrajectorySeedProducer.h.

std::shared_ptr<PropagatorWithMaterial> TrajectorySeedProducer::thePropagator
private

Definition at line 45 of file TrajectorySeedProducer.h.

std::unique_ptr< TrackingRegionProducer > TrajectorySeedProducer::theRegionProducer
private

Definition at line 78 of file TrajectorySeedProducer.cc.

Referenced by produce(), and TrajectorySeedProducer().

const TrackerGeometry* TrajectorySeedProducer::trackerGeometry
private

Definition at line 43 of file TrajectorySeedProducer.h.

const TrackerTopology* TrajectorySeedProducer::trackerTopology
private

Definition at line 44 of file TrajectorySeedProducer.h.

Referenced by produce().