CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/RecoLocalMuon/CSCSegment/src/CSCSegAlgoHitPruning.h

Go to the documentation of this file.
00001 #ifndef CSCSegment_CSCSegAlgoHitPruning_h
00002 #define CSCSegAlgoHitPruning_h
00003 
00015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00016 #include <DataFormats/CSCRecHit/interface/CSCRecHit2D.h>
00017 #include <DataFormats/CSCRecHit/interface/CSCSegment.h>
00018 
00019 #include <vector>
00020 
00021 class CSCChamber;
00022 
00023 class CSCSegAlgoHitPruning {
00024 
00025  public:
00026 
00027   typedef std::vector<const CSCRecHit2D*> ChamberHitContainer;
00028 
00030   explicit CSCSegAlgoHitPruning(const edm::ParameterSet& ps);
00031 
00033   ~CSCSegAlgoHitPruning();
00034 
00036   std::vector<CSCSegment> pruneBadHits(const CSCChamber* aChamber, std::vector<CSCSegment> segments);
00037 
00038  private:
00039   void fitSlopes(void);
00040   void fillChiSquared(void);
00041   void fillLocalDirection(void);
00042   CLHEP::HepMatrix derivativeMatrix(void) const;
00043   AlgebraicSymMatrix weightMatrix(void) const;
00044   AlgebraicSymMatrix calculateError(void) const;
00045   void flipErrors(AlgebraicSymMatrix&) const;
00046 
00047   const CSCChamber* theChamber;
00048 
00049   ChamberHitContainer protoSegment;
00050   float       protoSlope_u;
00051   float       protoSlope_v;
00052   LocalPoint  protoIntercept;           
00053   double      protoChi2;
00054   LocalVector protoDirection;
00055 
00056   bool    BrutePruning;
00057 };
00058 #endif