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 00068 std::string theAlgoName; 00069 00070 bool debug; 00071 // DTSegmentUpdator* theUpdator; // the updator and fitter 00072 // DTSegmentCleaner* theCleaner; // the cleaner 00073 00074 edm::ESHandle<DTGeometry> theDTGeometry; // the DT geometry 00075 00076 // The reconstruction 2D algorithm 00077 // For the 2D reco I use thei reconstructor! 00078 DTCombinatorialPatternReco* the2DAlgo; 00079 00080 // the updator 00081 DTSegmentUpdator *theUpdator; 00082 00083 const DTChamber *theChamber; 00084 00085 //the input type 00086 bool allDTRecHits; 00087 00088 // std::vector<DTRecHit1D> the1DPhiHits; 00089 std::vector<DTSLRecSegment2D> theSegments2DTheta; 00090 std::vector<DTRecHit1DPair> theHitsFromPhi1; 00091 std::vector<DTRecHit1DPair> theHitsFromTheta; 00092 std::vector<DTRecHit1DPair> theHitsFromPhi2; 00093 }; 00094 #endif