Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:59:57

0001 #ifndef CalibTracker_SiStripLorentzAngle_SymmetryFit
0002 #define CalibTracker_SiStripLorentzAngle_SymmetryFit
0003 
0004 #include "TH1.h"
0005 #include "TF1.h"
0006 #include <string>
0007 
0008 class SymmetryFit {
0009 public:
0010   static TH1* symmetryChi2(std::string, const std::vector<TH1*>&, const std::pair<unsigned, unsigned>);
0011   static TH1* symmetryChi2(const TH1*, const std::pair<unsigned, unsigned>);
0012   static std::string name(std::string base) { return base + "_symmchi2"; }
0013   static TF1* fitfunction();
0014   static std::vector<double> pol2_from_pol2(TH1* hist);
0015   static std::vector<double> pol2_from_pol3(TH1* hist);
0016 
0017 private:
0018   SymmetryFit(const TH1*, const std::pair<unsigned, unsigned>);
0019   std::pair<unsigned, unsigned> findUsableMinMax() const;
0020   std::vector<std::pair<unsigned, unsigned> > continuousRanges() const;
0021   float chi2_element(std::pair<unsigned, unsigned>);
0022   float chi2(std::pair<unsigned, unsigned>);
0023   void makeChi2Histogram();
0024   void fillchi2();
0025   int fit();
0026   SymmetryFit operator+=(const SymmetryFit& R) {
0027     ndf_ += R.ndf_;
0028     chi2_->Add(R.chi2_);
0029     return *this;
0030   }
0031 
0032   const TH1* symm_candidate_;
0033   const unsigned minDF_;
0034   const std::pair<unsigned, unsigned> range_, minmaxUsable_;
0035   unsigned ndf_;
0036   TH1* chi2_;
0037 };
0038 
0039 #endif