00001 #ifndef DTSegment_DTCombinatorialPatternReco4D_h 00002 #define DTSegment_DTCombinatorialPatternReco4D_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 DTCombinatorialPatternReco; 00038 class DTHitPairForFit; 00039 00040 // Class DTCombinatorialPatternReco4D Interface 00041 00042 class DTCombinatorialPatternReco4D : public DTRecSegment4DBaseAlgo { 00043 00044 public: 00045 00047 DTCombinatorialPatternReco4D(const edm::ParameterSet& pset) ; 00048 00050 virtual ~DTCombinatorialPatternReco4D(); 00051 00053 virtual edm::OwnVector<DTRecSegment4D> reconstruct(); 00054 00055 virtual std::string algoName() const { return theAlgoName; } 00056 00057 virtual void setES(const edm::EventSetup& setup); 00058 virtual void setDTRecHit1DContainer(edm::Handle<DTRecHitCollection> all1DHits); 00059 virtual void setDTRecSegment2DContainer(edm::Handle<DTRecSegment2DCollection> all2DSegments); 00060 virtual void setChamber(const DTChamberId &chId); 00061 virtual bool wants2DSegments(){return !allDTRecHits;} 00062 00063 protected: 00064 00065 private: 00066 std::vector<DTSegmentCand*> buildPhiSuperSegmentsCandidates(std::vector<DTHitPairForFit*> &pairPhiOwned); 00067 DTRecSegment4D* segmentSpecialZed(const DTRecSegment4D* seg); 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 DTCombinatorialPatternReco* the2DAlgo; 00080 00081 // the updator 00082 DTSegmentUpdator *theUpdator; 00083 00084 const DTChamber *theChamber; 00085 00086 //the input type 00087 bool allDTRecHits; 00088 bool applyT0corr; 00089 bool computeT0corr; 00090 00091 // std::vector<DTRecHit1D> the1DPhiHits; 00092 std::vector<DTSLRecSegment2D> theSegments2DTheta; 00093 std::vector<DTRecHit1DPair> theHitsFromPhi1; 00094 std::vector<DTRecHit1DPair> theHitsFromTheta; 00095 std::vector<DTRecHit1DPair> theHitsFromPhi2; 00096 }; 00097 #endif