CMS 3D CMS Logo

SeedFromGenericPairOrTriplet.h
Go to the documentation of this file.
1 #ifndef SpecialSeedGenerators_SeedFromGenericPairOrTriplet_h
2 #define SpecialSeedGenerators_SeedFromGenericPairOrTriplet_h
3 /*
4 Class that produces a TrajectorySeed from a generic hit pair or triplet withou the vertex constraint.
5 If used without B (e.g. cosmics) it checks the three hits are aligned.
6 If used with B it checks the initial state has a momentum greated than the threshold set in the cfg
7 */
8 //FWK
11 //DataFormats
15 //RecoLocal
17 //TrackingTools
23 //Geometry
25 //MagneticField
27 
28 #include <vector>
29 
31 public:
33  const TrackerGeometry* geom,
34  const TransientTrackingRecHitBuilder* builder,
37  const std::vector<int>& charges,
38  bool momFromPSet,
39  double errorRescaling);
41  void setMomentumTo(double mom) { theP = mom; };
42  bool momentumFromPSet() { return theSetMomentum; };
43  //builds a seed from a pair or triplet. it returns a null pointer if the seed does not pass the quality filter
44  std::vector<TrajectorySeed*> seed(const SeedingHitSet& hits,
46  const NavigationDirection& seedDir,
47  const edm::EventSetup& iSetup);
50  const NavigationDirection& seedDir,
51  const edm::EventSetup& iSetup,
52  int charge = -1) const;
55  const NavigationDirection& seedDir,
56  int charge = -1) const;
57 
58 private:
59  TrajectorySeed* buildSeed(const GlobalVector& momentum,
60  int charge,
61  //const TrackingRecHit* firsthit,
62  std::vector<const BaseTrackerRecHit*>& trHits,
63  const PropagationDirection& dir) const;
64  //initial error estimate
65  //CurvilinearTrajectoryError initialError(const TrackingRecHit* rechit);
66  //in the case of noB it returns false if 3 hist are not aligned
67  //if the B is on it returns false if the initial momentum is less than p
68  bool qualityFilter(const SeedingHitSet& hits) const;
69  bool qualityFilter(const GlobalVector& momentum) const;
75 
76  float theP;
78  std::vector<int> theCharges;
80 };
81 
82 #endif
TrajectorySeed * seedFromPair(const SeedingHitSet &hits, const PropagationDirection &dir, const NavigationDirection &seedDir, int charge=-1) const
bool qualityFilter(const SeedingHitSet &hits) const
PropagationDirection
const TransientTrackingRecHitBuilder * theBuilder
TrajectorySeed * seedFromTriplet(const SeedingHitSet &hits, const PropagationDirection &dir, const NavigationDirection &seedDir, const edm::EventSetup &iSetup, int charge=-1) const
TrajectorySeed * buildSeed(const GlobalVector &momentum, int charge, std::vector< const BaseTrackerRecHit *> &trHits, const PropagationDirection &dir) const
std::vector< TrajectorySeed * > seed(const SeedingHitSet &hits, const PropagationDirection &dir, const NavigationDirection &seedDir, const edm::EventSetup &iSetup)
SeedFromGenericPairOrTriplet(const MagneticField *mf, const TrackerGeometry *geom, const TransientTrackingRecHitBuilder *builder, const Propagator *propagatorAlong, const Propagator *propagatorOpposite, const std::vector< int > &charges, bool momFromPSet, double errorRescaling)
charges
only generated particles of these IDs are considered