CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DTCombinatorialExtendedPatternReco.h
Go to the documentation of this file.
1 #ifndef DTSegment_DTCombinatorialExtendedPatternReco_h
2 #define DTSegment_DTCombinatorialExtendedPatternReco_h
3 
15 /* Base Class Headers */
17 
18 /* Collaborating Class Declarations */
19 namespace edm {
20  class ParameterSet;
21  class EventSetup;
22  // class ESHandle;
23 }
24 class DTSegmentUpdator;
25 class DTSegmentCleaner;
26 class DTHitPairForFit;
27 class DTSegmentCand;
30 
31 /* C++ Headers */
32 #include <vector>
33 #include <deque>
34 #include <utility>
35 
38 
39 /* ====================================================================== */
40 
41 /* Class DTCombinatorialExtendedPatternReco Interface */
42 
44 
45  public:
46 
49 
52 
53  /* Operations */
54 
57  reconstruct(const DTSuperLayer* sl,
58  const std::vector<DTRecHit1DPair>& hits);
59 
61  virtual std::string algoName() const { return theAlgoName; }
62 
65  virtual void setES(const edm::EventSetup& setup);
66 
67  // pass clusters to algo
68  void setClusters(std::vector<DTSLRecCluster> clusters);
69 
70  protected:
71 
72  private:
73  typedef std::pair<DTHitPairForFit*, DTEnums::DTCellSide> AssPoint;
74 
75  // create the DTHitPairForFit from the pairs for easy use
76  std::vector<DTHitPairForFit*> initHits(const DTSuperLayer* sl,
77  const std::vector<DTRecHit1DPair>& hits);
78 
79  // search for candidate, starting from pairs of hits in different layers
80  std::vector<DTSegmentCand*> buildSegments(const DTSuperLayer* sl,
81  const std::vector<DTHitPairForFit*>& hits);
82 
83  // find all the hits compatible with the candidate
84  std::vector<AssPoint> findCompatibleHits(const LocalPoint& pos,
85  const LocalVector& dir,
86  const std::vector<DTHitPairForFit*>& hits);
87 
88  // build segments from hits collection
89  DTSegmentExtendedCand* buildBestSegment(std::vector<AssPoint>& assHits,
90  const DTSuperLayer* sl) ;
91 
92  bool checkDoubleCandidates(std::vector<DTSegmentCand*>& segs,
93  DTSegmentCand* seg);
94 
97  void buildPointsCollection(std::vector<AssPoint>& points,
98  std::deque<DTHitPairForFit* >& pointsNoLR,
99  std::vector<DTSegmentCand*>& candidates,
100  const DTSuperLayer* sl);
101 
103  std::vector<DTSegmentExtendedCand*> extendCandidates(std::vector<DTSegmentCand*>& candidates,
104  const DTSuperLayer* sl);
105 
106  bool closeSL(const DTSuperLayerId& id1, const DTSuperLayerId& id2);
107 
108  private:
109 
110  std::string theAlgoName;
111  unsigned int theMaxAllowedHits;
114  bool debug;
115  bool usePairs;
116  DTSegmentUpdator* theUpdator; // the updator and fitter
117  DTSegmentCleaner* theCleaner; // the cleaner
118 
120 
121  private:
122 
123  std::vector<std::vector<int> > theTriedPattern;
124  std::vector<DTSLRecCluster> theClusters;
125 };
126 #endif // DTSegment_DTCombinatorialExtendedPatternReco_h
std::vector< DTHitPairForFit * > initHits(const DTSuperLayer *sl, const std::vector< DTRecHit1DPair > &hits)
std::vector< AssPoint > findCompatibleHits(const LocalPoint &pos, const LocalVector &dir, const std::vector< DTHitPairForFit * > &hits)
std::vector< DTSegmentCand * > buildSegments(const DTSuperLayer *sl, const std::vector< DTHitPairForFit * > &hits)
virtual edm::OwnVector< DTSLRecSegment2D > reconstruct(const DTSuperLayer *sl, const std::vector< DTRecHit1DPair > &hits)
this function is called in the producer
std::pair< DTHitPairForFit *, DTEnums::DTCellSide > AssPoint
virtual std::string algoName() const
return the algo name
DTCombinatorialExtendedPatternReco(const edm::ParameterSet &pset)
Constructor.
bool checkDoubleCandidates(std::vector< DTSegmentCand * > &segs, DTSegmentCand *seg)
virtual void setES(const edm::EventSetup &setup)
DTSegmentExtendedCand * buildBestSegment(std::vector< AssPoint > &assHits, const DTSuperLayer *sl)
void buildPointsCollection(std::vector< AssPoint > &points, std::deque< DTHitPairForFit * > &pointsNoLR, std::vector< DTSegmentCand * > &candidates, const DTSuperLayer *sl)
std::vector< std::vector< int > > theTriedPattern
std::vector< DTSegmentExtendedCand * > extendCandidates(std::vector< DTSegmentCand * > &candidates, const DTSuperLayer *sl)
void setClusters(std::vector< DTSLRecCluster > clusters)
bool closeSL(const DTSuperLayerId &id1, const DTSuperLayerId &id2)
dbl *** dir
Definition: mlp_gen.cc:35
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")