Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:25:59

0001 #ifndef CSCSegment_CSCCondSegFit_h
0002 #define CSCSegment_CSCCondSegFit_h
0003 
0004 // CSCCondSegFit.h -- segment fit factored out of CSCSegAlgoST - Tim Cox
0005 // Last mod: 29.01.2015
0006 
0007 /* This class extends basic CSCSegFit with the complexities built into
0008  * the original entangled CSCSegAlgoST extension of the CSCSegAlgoSK fit.
0009  * i.e. the uncertainties on the rechit positions can be adjusted 
0010  * according to external conditions in various complex ways, according to 
0011  * the requirements of the CSC segment-building algorithm CSCSegAlgoST.
0012  */
0013 
0014 #include <RecoLocalMuon/CSCSegment/src/CSCSegFit.h>
0015 
0016 #include <FWCore/ParameterSet/interface/ParameterSet.h>
0017 
0018 class CSCCondSegFit : public CSCSegFit {
0019 public:
0020   CSCCondSegFit(const edm::ParameterSet& ps, const CSCChamber* csc, const CSCSetOfHits& hits)
0021       : CSCSegFit(csc, hits),
0022         worstHit_(0),
0023         chi2Norm_(ps.getParameter<double>("NormChi2Cut2D")),
0024         condSeed1_(ps.getParameter<double>("SeedSmall")),
0025         condSeed2_(ps.getParameter<double>("SeedBig")),
0026         covToAnyNumber_(ps.getParameter<bool>("ForceCovariance")),
0027         covToAnyNumberAll_(ps.getParameter<bool>("ForceCovarianceAll")),
0028         covAnyNumber_(ps.getParameter<double>("Covariance")) {}
0029 
0030   ~CSCCondSegFit() override {}
0031 
0032   // The fit - override base class version with this version
0033   // which passes in bool flags for up to two extra conditioning passes
0034   void fit(bool condpass1 = false, bool condpass2 = false);  // fill uslope_, vslope_, intercept_
0035 
0036   int worstHit(void) { return worstHit_; }
0037 
0038 private:
0039   // Rest can all be private since we don't plan on more derived classes
0040 
0041   // PRIVATE MEMBER FUNCTIONS
0042 
0043   // Calculate chi2 - override base class version with this version
0044   // which passes in bool flags for up to two extra conditioning passes
0045   void setChi2(bool condpass1, bool condpass2);  // fill chi2_ & ndof_
0046   void correctTheCovMatrix(CSCSegFit::SMatrixSym2& IC);
0047   void correctTheCovX(void);
0048 
0049   // EXTRA MEMBER VARIABLES
0050 
0051   int worstHit_;  //@@ FKA maxContrIndex
0052 
0053   // Parameters related to adjustment for numerical robustness
0054   std::vector<double> lex_;  //@@ FKA e_Cxx; LOCAL ERROR x COMPONENT FOR EACH HIT
0055   double chi2Norm_;          //@@ FKA chi2Norm_2D_
0056 
0057   // PSet values that might reasonably be accessed directly
0058   // since used ONLY in correctTheCovMatrix:
0059   //@@ the comments on following parameters don't help me understand them
0060   double condSeed1_, condSeed2_;  /// The correction parameters
0061   bool covToAnyNumber_;           /// Allow to use any number for covariance (by hand)
0062   bool covToAnyNumberAll_;        /// Allow to use any number for covariance for all RecHits
0063   double covAnyNumber_;           /// The number to force the Covariance
0064 };
0065 
0066 #endif