CMS 3D CMS Logo

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

#include <PixelTrackReconstruction.h>

Public Member Functions

 PixelTrackReconstruction (const edm::ParameterSet &conf, edm::ConsumesCollector &&iC)
 
void run (pixeltrackfitting::TracksWithTTRHs &tah, edm::Event &ev, const edm::EventSetup &es)
 
 ~PixelTrackReconstruction ()
 

Static Public Member Functions

static void fillDescriptions (edm::ParameterSetDescription &desc)
 

Private Attributes

std::string theCleanerName
 
edm::EDGetTokenT< PixelTrackFiltertheFilterToken
 
edm::EDGetTokenT< PixelFittertheFitterToken
 
edm::EDGetTokenT< RegionsSeedingHitSetstheHitSetsToken
 

Detailed Description

Definition at line 19 of file PixelTrackReconstruction.h.

Constructor & Destructor Documentation

PixelTrackReconstruction::PixelTrackReconstruction ( const edm::ParameterSet conf,
edm::ConsumesCollector &&  iC 
)

Definition at line 31 of file PixelTrackReconstruction.cc.

References edm::ParameterSet::getParameter(), edm::InputTag::label(), and theFilterToken.

33  : theHitSetsToken(iC.consumes<RegionsSeedingHitSets>(cfg.getParameter<edm::InputTag>("SeedingHitSets"))),
34  theFitterToken(iC.consumes<PixelFitter>(cfg.getParameter<edm::InputTag>("Fitter"))),
35  theCleanerName(cfg.getParameter<std::string>("Cleaner"))
36 {
37  edm::InputTag filterTag = cfg.getParameter<edm::InputTag>("Filter");
38  if(filterTag.label() != "") {
39  theFilterToken = iC.consumes<PixelTrackFilter>(filterTag);
40  }
41 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< PixelTrackFilter > theFilterToken
std::string const & label() const
Definition: InputTag.h:36
edm::EDGetTokenT< RegionsSeedingHitSets > theHitSetsToken
edm::EDGetTokenT< PixelFitter > theFitterToken
PixelTrackReconstruction::~PixelTrackReconstruction ( )

Definition at line 43 of file PixelTrackReconstruction.cc.

44 {
45 }

Member Function Documentation

void PixelTrackReconstruction::fillDescriptions ( edm::ParameterSetDescription desc)
static

Definition at line 47 of file PixelTrackReconstruction.cc.

References edm::ParameterSetDescription::add(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by PixelTrackProducer::fillDescriptions().

47  {
48  desc.add<edm::InputTag>("SeedingHitSets", edm::InputTag("pixelTracksHitTriplets"));
49  desc.add<edm::InputTag>("Fitter", edm::InputTag("pixelFitterByHelixProjections"));
50  desc.add<edm::InputTag>("Filter", edm::InputTag("pixelTrackFilterByKinematics"));
51  desc.add<std::string>("Cleaner", "pixelTrackCleanerBySharedHits");
52 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void PixelTrackReconstruction::run ( pixeltrackfitting::TracksWithTTRHs tah,
edm::Event ev,
const edm::EventSetup es 
)

FIXME at some point we need to migrate the fitter...

Definition at line 54 of file PixelTrackReconstruction.cc.

References PixelTrackCleanerWrapper::clean(), ALCARECOTkAlBeamHalo_cff::filter, edm::EventSetup::get(), edm::Event::getByToken(), hfClusterShapes_cfi::hits, edm::EDGetTokenT< T >::isUninitialized(), edm::Handle< T >::product(), theCleanerName, theFilterToken, theFitterToken, theHitSetsToken, and HiIsolationCommonParameters_cff::track.

Referenced by PixelTrackProducer::produce().

55 {
57  ev.getByToken(theHitSetsToken, hhitSets);
58  const auto& hitSets = *hhitSets;
59 
61  ev.getByToken(theFitterToken, hfitter);
62  const auto& fitter = *hfitter;
63 
64  const PixelTrackFilter *filter = nullptr;
67  ev.getByToken(theFilterToken, hfilter);
68  filter = hfilter.product();
69  }
70 
71  std::vector<const TrackingRecHit *> hits;hits.reserve(4);
72  for(const auto& regionHitSets: hitSets) {
73  const TrackingRegion& region = regionHitSets.region();
74 
75  for(const SeedingHitSet& tuplet: regionHitSets) {
77  auto nHits = tuplet.size(); hits.resize(nHits);
78  for (unsigned int iHit = 0; iHit < nHits; ++iHit) hits[iHit] = tuplet[iHit];
79 
80  // fitting
81  std::unique_ptr<reco::Track> track = fitter.run(hits, region);
82  if (!track) continue;
83 
84  if (filter) {
85  if (!(*filter)(track.get(), hits)) {
86  continue;
87  }
88  }
89 
90  // add tracks
91  tracks.emplace_back(track.release(), tuplet);
92  }
93  }
94 
95  // skip ovelrapped tracks
96  if(!theCleanerName.empty()) {
98  es.get<PixelTrackCleaner::Record>().get(theCleanerName, hcleaner);
99  const auto& cleaner = *hcleaner;
100  if(cleaner.fast())
101  cleaner.cleanTracks(tracks);
102  else
104  }
105 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:508
pixeltrackfitting::TracksWithTTRHs clean(const pixeltrackfitting::TracksWithTTRHs &initialT_TTRHs) const
edm::EDGetTokenT< PixelTrackFilter > theFilterToken
T const * product() const
Definition: Handle.h:81
const T & get() const
Definition: EventSetup.h:55
bool isUninitialized() const
Definition: EDGetToken.h:73
edm::EDGetTokenT< RegionsSeedingHitSets > theHitSetsToken
edm::EDGetTokenT< PixelFitter > theFitterToken

Member Data Documentation

std::string PixelTrackReconstruction::theCleanerName
private

Definition at line 34 of file PixelTrackReconstruction.h.

Referenced by run().

edm::EDGetTokenT<PixelTrackFilter> PixelTrackReconstruction::theFilterToken
private

Definition at line 33 of file PixelTrackReconstruction.h.

Referenced by PixelTrackReconstruction(), and run().

edm::EDGetTokenT<PixelFitter> PixelTrackReconstruction::theFitterToken
private

Definition at line 32 of file PixelTrackReconstruction.h.

Referenced by run().

edm::EDGetTokenT<RegionsSeedingHitSets> PixelTrackReconstruction::theHitSetsToken
private

Definition at line 31 of file PixelTrackReconstruction.h.

Referenced by run().