CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/RecoLocalMuon/DTSegment/src/DTCombinatorialPatternReco4D.h

Go to the documentation of this file.
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