File indexing completed on 2024-06-07 02:29:54
0001 #ifndef CkfTrajectoryBuilder_H
0002 #define CkfTrajectoryBuilder_H
0003
0004 #include <vector>
0005
0006 class Propagator;
0007 class TrajectoryStateUpdator;
0008 class MeasurementEstimator;
0009 class TrajectorySeed;
0010 class TrajectoryStateOnSurface;
0011 class TrajectoryFilter;
0012
0013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0014 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0015 #include "FWCore/Framework/interface/EventSetup.h"
0016 #include "FWCore/Framework/interface/Event.h"
0017
0018 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h"
0019 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
0020 #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h"
0021
0022 #include "RecoTracker/CkfPattern/interface/BaseCkfTrajectoryBuilder.h"
0023
0024 #include "TrackingTools/PatternTools/interface/Trajectory.h"
0025 #include "TrackingTools/PatternTools/interface/TempTrajectory.h"
0026 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h"
0027
0028 #include <map>
0029
0030 class TransientTrackingRecHitBuilder;
0031 class TrajectoryFilter;
0032
0033 class CkfTrajectoryBuilder : public BaseCkfTrajectoryBuilder {
0034 public:
0035 typedef std::vector<Trajectory> TrajectoryContainer;
0036 typedef std::vector<TempTrajectory> TempTrajectoryContainer;
0037
0038 CkfTrajectoryBuilder(const edm::ParameterSet& conf, edm::ConsumesCollector iC);
0039 CkfTrajectoryBuilder(const edm::ParameterSet& conf,
0040 edm::ConsumesCollector iC,
0041 std::unique_ptr<TrajectoryFilter> filter);
0042
0043 ~CkfTrajectoryBuilder() override {}
0044
0045 static void fillPSetDescription(edm::ParameterSetDescription& iDesc);
0046
0047
0048 TrajectoryContainer trajectories(const TrajectorySeed& seed) const override;
0049
0050 void trajectories(const TrajectorySeed& seed, TrajectoryContainer& ret) const override;
0051
0052 void buildTrajectories(const TrajectorySeed&,
0053 TrajectoryContainer& ret,
0054 unsigned int& nCandPerSeed,
0055 const TrajectoryFilter*) const override;
0056
0057 void rebuildTrajectories(const TrajectorySeed&, TrajectoryContainer& result) const override {}
0058
0059
0060
0061
0062 protected:
0063 int theMaxCand;
0064
0065 float theLostHitPenalty;
0066 float theFoundHitBonus;
0067 int theMinHitForDoubleBonus;
0068 bool theIntermediateCleaning;
0069
0070 bool theAlwaysUseInvalidHits;
0071
0072 protected:
0073 void setEvent_(const edm::Event& iEvent, const edm::EventSetup& iSetup) override;
0074
0075 virtual void findCompatibleMeasurements(const TrajectorySeed& seed,
0076 const TempTrajectory& traj,
0077 std::vector<TrajectoryMeasurement>& result) const;
0078
0079 unsigned int limitedCandidates(const TrajectorySeed& seed,
0080 TempTrajectory& startingTraj,
0081 TrajectoryContainer& result) const;
0082 unsigned int limitedCandidates(const std::shared_ptr<const TrajectorySeed>& sharedSeed,
0083 TempTrajectoryContainer& candidates,
0084 TrajectoryContainer& result) const;
0085
0086 void updateTrajectory(TempTrajectory& traj, TM&& tm) const;
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099 };
0100
0101 #endif