Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:00

0001 #ifndef CSCSegment_CSCSegAlgoShowering_h
0002 #define CSCSegment_CSCSegAlgoShowering_h
0003 
0004 /**
0005  * class CSCSegAlgoShowering
0006  *
0007  *  \author: D. Fortin - UC Riverside 
0008  *  \modified by J. Babb - UC Riverside
0009  *  Updated Tim Cox - UC Davis Feb-2015 - factored out segment fit
0010  *                                      
0011  * Handle case where too many hits are reconstructed in the chamber, even after preclustering
0012  * for normal segment reconstruction to properly handle these.
0013  * In this case, determine the average local (x,y) for each layer and find the hit closest to that localpoint
0014  * for that given layer.  From these hits, reconstruct a segment.
0015  * The idea is to give the reconstruction (seeding) a valid starting point for the kalman filter.
0016  */
0017 
0018 #include <DataFormats/CSCRecHit/interface/CSCRecHit2D.h>
0019 #include <DataFormats/CSCRecHit/interface/CSCSegment.h>
0020 #include <Geometry/CSCGeometry/interface/CSCChamber.h>
0021 #include <FWCore/ParameterSet/interface/ParameterSet.h>
0022 #include <vector>
0023 
0024 class CSCSegFit;
0025 
0026 class CSCSegAlgoShowering {
0027 public:
0028   typedef std::vector<const CSCRecHit2D*> ChamberHitContainer;
0029 
0030   /// Constructor
0031   explicit CSCSegAlgoShowering(const edm::ParameterSet& ps);
0032 
0033   /// Destructor
0034   virtual ~CSCSegAlgoShowering();
0035 
0036   CSCSegment showerSeg(const CSCChamber* aChamber, const ChamberHitContainer& rechits);
0037 
0038 private:
0039   /// Utility functions
0040   bool isHitNearSegment(const CSCRecHit2D* h) const;
0041   bool addHit(const CSCRecHit2D* hit, int layer);
0042   bool hasHitOnLayer(int layer) const;
0043   void compareProtoSegment(const CSCRecHit2D* h, int layer);
0044   void pruneFromResidual(void);
0045   void updateParameters(void);
0046 
0047   // Member variables
0048   const std::string myName;
0049   const CSCChamber* theChamber;
0050 
0051   ChamberHitContainer protoSegment;
0052 
0053   // input from .cfi file
0054   bool debug;
0055   int minHitsPerSegment;
0056   double dRPhiFineMax;
0057   double dPhiFineMax;
0058   float tanPhiMax;
0059   float tanThetaMax;
0060   float chi2Max;
0061   float maxRatioResidual;
0062   //  float  maxDR;
0063   float maxDTheta;
0064   float maxDPhi;
0065 
0066   CSCSegFit* sfit_;  // current fit
0067 };
0068 #endif