CMS 3D CMS Logo

TrajectoryFitter.h
Go to the documentation of this file.
1 #ifndef _TrajectoryFitter_H_
2 #define _TrajectoryFitter_H_
3 
6 
8 
9 #include <memory>
10 
11 class TrajectorySeed;
13 class TkCloner;
14 
20 
22 public:
23  enum fitType { standard = 0, looper = 1 };
24 
27 
28  virtual ~TrajectoryFitter() {}
29  virtual std::unique_ptr<TrajectoryFitter> clone() const = 0;
30 
31  // FIXME a prototype: final inplementaiton may differ
32  virtual void setHitCloner(TkCloner const*) = 0;
33 
34  // new interface return one trajectory: if fit fails trajectory is invalid...
35  virtual Trajectory fitOne(const Trajectory& traj, fitType type = standard) const = 0;
36  virtual Trajectory fitOne(const TrajectorySeed& seed,
37  const RecHitContainer& hits,
38  fitType typee = standard) const = 0;
39  virtual Trajectory fitOne(const TrajectorySeed& seed,
40  const RecHitContainer& hits,
41  const TrajectoryStateOnSurface& tsos,
42  fitType type = standard) const = 0;
43 
44  // backward compatible interface...
45  std::vector<Trajectory> fit(const Trajectory& traj, fitType type = standard) const {
46  return makeVect(fitOne(traj, type));
47  }
48 
49  std::vector<Trajectory> fit(const TrajectorySeed& seed, const RecHitContainer& hits, fitType type = standard) const {
50  return makeVect(fitOne(seed, hits, type));
51  }
52  std::vector<Trajectory> fit(const TrajectorySeed& seed,
53  const RecHitContainer& hits,
54  const TrajectoryStateOnSurface& tsos,
55  fitType type = standard) const {
56  return makeVect(fitOne(seed, hits, tsos, type));
57  }
58 
59 private:
60  static std::vector<Trajectory> makeVect(Trajectory&& outTraj) {
61  if (outTraj.isValid())
62  return std::vector<Trajectory>(1, std::move(outTraj));
63  return std::vector<Trajectory>();
64  }
65 };
66 
67 #endif
type
Definition: HCALResponse.h:21
std::vector< Trajectory > fit(const TrajectorySeed &seed, const RecHitContainer &hits, const TrajectoryStateOnSurface &tsos, fitType type=standard) const
std::vector< Trajectory > fit(const TrajectorySeed &seed, const RecHitContainer &hits, fitType type=standard) const
virtual Trajectory fitOne(const Trajectory &traj, fitType type=standard) const =0
Definition: looper.py:1
virtual std::unique_ptr< TrajectoryFitter > clone() const =0
virtual void setHitCloner(TkCloner const *)=0
virtual ~TrajectoryFitter()
static std::vector< Trajectory > makeVect(Trajectory &&outTraj)
ConstRecHitContainer RecHitContainer
Definition: Trajectory.h:42
TrajectoryFitterRecord Record
std::vector< Trajectory > fit(const Trajectory &traj, fitType type=standard) const
Trajectory::RecHitContainer RecHitContainer
def move(src, dest)
Definition: eostools.py:511