Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-09-07 04:37:41

0001 #ifndef DTSegment_DTRefitAndCombineReco4D_h
0002 #define DTSegment_DTRefitAndCombineReco4D_h
0003 
0004 /** \class DTRefitAndCombineReco4D
0005  *
0006  * Algo for reconstructing 4d segment in DT refitting the 2D phi SL hits and combining
0007  * the results with the theta view.
0008  *  
0009  * \author Stefano Lacaprara - INFN Legnaro <stefano.lacaprara@pd.infn.it>
0010  * \author Riccardo Bellan - INFN TO <riccardo.bellan@cern.ch>
0011  *
0012  */
0013 
0014 // Base Class Headers
0015 #include "RecoLocalMuon/DTSegment/src/DTRecSegment4DBaseAlgo.h"
0016 
0017 //class DTRecSegment2DBaseAlgo;
0018 
0019 // Collaborating Class Declarations
0020 namespace edm {
0021   class ParameterSet;
0022   class EventSetup;
0023 }  // namespace edm
0024 class DTSegmentUpdator;
0025 //class DTSegmentCleaner;
0026 class MuonGeometryRecord;
0027 
0028 // C++ Headers
0029 #include <vector>
0030 //#include <utility>
0031 
0032 #include "Geometry/DTGeometry/interface/DTGeometry.h"
0033 #include "FWCore/Framework/interface/ESHandle.h"
0034 #include "FWCore/Utilities/interface/ESGetToken.h"
0035 #include "FWCore/Framework/interface/FrameworkfwdMostUsed.h"
0036 
0037 // ======================================================================
0038 //#include "DataFormats/DTRecHit/interface/DTRecSegment2DPhi.h"
0039 
0040 // Class DTRefitAndCombineReco4D Interface
0041 
0042 class DTRefitAndCombineReco4D : public DTRecSegment4DBaseAlgo {
0043 public:
0044   /// Constructor
0045   DTRefitAndCombineReco4D(const edm::ParameterSet &pset, edm::ConsumesCollector cc);
0046 
0047   /// Destructor
0048   ~DTRefitAndCombineReco4D() override {}
0049 
0050   /// Operations
0051   edm::OwnVector<DTRecSegment4D> reconstruct() override;
0052 
0053   std::string algoName() const override { return theAlgoName; }
0054 
0055   void setES(const edm::EventSetup &setup) override;
0056 
0057   void setDTRecHit1DContainer(edm::Handle<DTRecHitCollection> all1DHits) override {}
0058   void setDTRecSegment2DContainer(edm::Handle<DTRecSegment2DCollection> all2DSegments) override;
0059   void setChamber(const DTChamberId &chId) override;
0060   bool wants2DSegments() override { return true; }
0061 
0062 protected:
0063 private:
0064   std::vector<DTChamberRecSegment2D> refitSuperSegments();
0065 
0066   std::string theAlgoName;
0067 
0068   double theMaxChi2forPhi;
0069 
0070   bool debug;
0071   // DTSegmentUpdator* theUpdator; // the updator and fitter
0072   // DTSegmentCleaner* theCleaner; // the cleaner
0073 
0074   edm::ESHandle<DTGeometry> theDTGeometry;  // the DT geometry
0075   const edm::ESGetToken<DTGeometry, MuonGeometryRecord> theDTGeometryToken;
0076 
0077   //   // The reconstruction 2D algorithm
0078   // DTRecSegment2DBaseAlgo* the2DAlgo;
0079 
0080   // the updator
0081   DTSegmentUpdator *theUpdator;
0082 
0083   const DTChamber *theChamber;
0084   std::vector<DTSLRecSegment2D> theSegments2DPhi1;
0085   std::vector<DTSLRecSegment2D> theSegments2DTheta;
0086   std::vector<DTSLRecSegment2D> theSegments2DPhi2;
0087 };
0088 #endif