00001 #ifndef DTSegment_DTMeantimerPatternReco4D_h 00002 #define DTSegment_DTMeantimerPatternReco4D_h 00003 00015 // Base Class Headers 00016 #include "RecoLocalMuon/DTSegment/src/DTRecSegment4DBaseAlgo.h" 00017 00018 class DTRecSegment2DBaseAlgo; 00019 00020 // Collaborating Class Declarations 00021 namespace edm { 00022 class ParameterSet; 00023 class EventSetup; 00024 } 00025 class DTSegmentUpdator; 00026 //class DTSegmentCleaner; 00027 00028 // C++ Headers 00029 #include <vector> 00030 //#include <utility> 00031 00032 #include "Geometry/DTGeometry/interface/DTGeometry.h" 00033 #include "FWCore/Framework/interface/ESHandle.h" 00034 00035 // ====================================================================== 00036 class DTSegmentCand; 00037 class DTMeantimerPatternReco; 00038 00039 // Class DTMeantimerPatternReco4D Interface 00040 00041 class DTMeantimerPatternReco4D : public DTRecSegment4DBaseAlgo { 00042 00043 public: 00044 00046 DTMeantimerPatternReco4D(const edm::ParameterSet& pset) ; 00047 00049 virtual ~DTMeantimerPatternReco4D(); 00050 00052 virtual edm::OwnVector<DTRecSegment4D> reconstruct(); 00053 00054 virtual std::string algoName() const { return theAlgoName; } 00055 00056 virtual void setES(const edm::EventSetup& setup); 00057 virtual void setDTRecHit1DContainer(edm::Handle<DTRecHitCollection> all1DHits); 00058 virtual void setDTRecSegment2DContainer(edm::Handle<DTRecSegment2DCollection> all2DSegments); 00059 virtual void setChamber(const DTChamberId &chId); 00060 virtual bool wants2DSegments(){return !allDTRecHits;} 00061 00062 protected: 00063 00064 private: 00065 std::vector<DTSegmentCand*> buildPhiSuperSegmentsCandidates(); 00066 DTRecSegment4D* segmentSpecialZed(DTRecSegment4D* seg); 00067 00068 00069 std::string theAlgoName; 00070 00071 bool debug; 00072 // DTSegmentUpdator* theUpdator; // the updator and fitter 00073 // DTSegmentCleaner* theCleaner; // the cleaner 00074 00075 edm::ESHandle<DTGeometry> theDTGeometry; // the DT geometry 00076 00077 // The reconstruction 2D algorithm 00078 // For the 2D reco I use thei reconstructor! 00079 DTMeantimerPatternReco* the2DAlgo; 00080 00081 // the updator 00082 DTSegmentUpdator *theUpdator; 00083 00084 const DTChamber *theChamber; 00085 00086 //the input type 00087 bool allDTRecHits; 00088 00089 // std::vector<DTRecHit1D> the1DPhiHits; 00090 std::vector<DTSLRecSegment2D> theSegments2DTheta; 00091 std::vector<DTRecHit1DPair> theHitsFromPhi1; 00092 std::vector<DTRecHit1DPair> theHitsFromTheta; 00093 std::vector<DTRecHit1DPair> theHitsFromPhi2; 00094 }; 00095 #endif