00001 #ifndef NUFCFITTER_H
00002 #define NUFCFITTER_H
00003
00020
00021 class NuMatrixSpectrum;
00022 class NuFCExperiment;
00023 class NuMMHelperCPT;
00024 class NuMMRunFC;
00025
00026
00027 #include "NtupleUtils/NuSystFitter.h"
00028 #include "NtupleUtils/NuMMParameters.h"
00029
00030 class NuFCFitter
00031 {
00032 public:
00043 NuFCFitter(NuFCExperiment *experiment, NuMMHelperCPT *helper,
00044 NuMatrixSpectrum *ndNQData, NuMatrixSpectrum *ndPQData,
00045 const NuMMParameters& trueparams);
00046 NuFCFitter(NuMMHelperCPT *helper,
00047 NuMatrixSpectrum *fdNQData, NuMatrixSpectrum *fdPQData,
00048 NuMatrixSpectrum *ndNQData, NuMatrixSpectrum *ndPQData,
00049 const NuMMParameters& trueparams);
00050 NuFCFitter(NuMMRunFC *_run,
00051 const NuMMParameters& trueparams);
00052 virtual ~NuFCFitter();
00053
00058 Double_t Fit(const NuMMParameters &fitParameters);
00059
00061 const NuMMParameters* BestFit() const;
00062
00064 void AlwaysArchive(std::string filename) {
00065 fArchiveFilename = filename;
00066 fArchive = true;
00067 }
00068
00069 void ArchiveTo(std::string filename) {
00070 fArchiveFilename = filename;
00071 }
00072
00073 void Archive(std::string filename);
00074
00075 void SetSilent(bool _silent = true) {silent = _silent;}
00076
00077
00078 private:
00080 NuMMParameters GridSearch(TH2D &likesurf, NuMMParameters mmGrid, NuMMParameters *Ref = 0);
00081
00083 NuMMParameters CoarseGridSearch(NuMMParameters start);
00085 NuMMParameters FineGridSearch(NuMMParameters start);
00086
00088 NuMMParameters MinuitFit(NuMMParameters start);
00089
00091 Double_t DeltaChi(const NuMMParameters& bestfit);
00092
00094 NuMMParameters RecoverNegativeDeltaChi( const NuMMParameters& bestfit);
00095
00097 void ClassifyFitPoint(const NuMMParameters& mmFit);
00098
00100 void DoOutput(const NuMMParameters &mmFit, Double_t deltachi );
00101
00103 void ShiftHistogram(TH2D &surface, Double_t shift);
00104
00106 NuMMRunFC *fRun;
00107
00110 NuMatrixSpectrum *ffdNQData;
00111 NuMatrixSpectrum *ffdPQData;
00112
00114 NuSystFitter fsystFitter;
00115
00117 NuMMParameters *fBestFit;
00118
00119
00120 Bool_t fFineGridSearch;
00121 Bool_t fNegativeDeltaChi;
00122
00123 Bool_t fHighFitPoint;
00124 Bool_t fZeroFitPoint;
00125
00126 Bool_t fArchive;
00127 std::string fArchiveFilename;
00128
00129
00130 const NuMMParameters fTrueParams;
00131
00132 bool silent;
00133
00134 ClassDef(NuFCFitter,0);
00135 };
00136
00137 #endif
00138