CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/RecoLocalMuon/CSCSegment/src/CSCSegAlgoShowering.h

Go to the documentation of this file.
00001 #ifndef CSCSegment_CSCSegAlgoShowering_h
00002 #define CSCSegment_CSCSegAlgoShowering_h
00003 
00017 #include <DataFormats/CSCRecHit/interface/CSCRecHit2D.h>
00018 #include <DataFormats/CSCRecHit/interface/CSCSegment.h>
00019 #include <Geometry/CSCGeometry/interface/CSCChamber.h>
00020 #include <FWCore/ParameterSet/interface/ParameterSet.h>
00021 
00022 #include <vector>
00023 
00024 class CSCSegAlgoShowering {
00025 
00026  public:
00027 
00028   typedef std::vector<const CSCRecHit2D*> ChamberHitContainer;
00029 
00031   explicit CSCSegAlgoShowering(const edm::ParameterSet& ps);
00032 
00034   virtual ~CSCSegAlgoShowering();
00035 
00036   CSCSegment showerSeg( const CSCChamber* aChamber, ChamberHitContainer rechits );
00037 
00038 
00039  private:
00040 
00042   bool isHitNearSegment(const CSCRecHit2D* h) const;
00043   bool addHit(const CSCRecHit2D* hit, int layer);
00044   void updateParameters(void);
00045   bool hasHitOnLayer(int layer) const;
00046   void compareProtoSegment(const CSCRecHit2D* h, int layer);
00047   CLHEP::HepMatrix derivativeMatrix(void) const;
00048   AlgebraicSymMatrix weightMatrix(void) const;
00049   AlgebraicSymMatrix calculateError(void) const;
00050   void flipErrors(AlgebraicSymMatrix&) const;
00051 
00052   void pruneFromResidual();
00053 
00054   // Member variables
00055   const std::string myName; 
00056   const CSCChamber* theChamber;
00057 
00058   ChamberHitContainer protoSegment;
00059   float       protoSlope_u;
00060   float       protoSlope_v;
00061   LocalPoint  protoIntercept;           
00062   double      protoChi2;
00063   LocalVector protoDirection;
00064 
00065   // input from .cfi file
00066   bool   debug;
00067   int    minHitsPerSegment;
00068   double dRPhiFineMax;
00069   double dPhiFineMax;
00070   float  tanPhiMax;
00071   float  tanThetaMax;
00072   float  chi2Max;
00073   float  maxRatioResidual;
00074 //  float  maxDR;
00075   float  maxDTheta;
00076   float  maxDPhi;
00077 
00078 };
00079 #endif
00080