/* * ProfilerPlaneSliceFitter.hh * * Created on: Oct 17, 2015 * Author: Hovanes Egiyan */ #ifndef PROFILERPLANESLICEFITTER_HH_ #define PROFILERPLANESLICEFITTER_HH_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "CauchyDistribution.hh" #include "Minuit2/MnUserParameters.h" #include "Minuit2/FunctionMinimum.h" #include "Minuit2/CombinedMinimizer.h" #include "TError.h" #include "MtxLock.hh" #include "MutexedClass.hh" #include "ProfilerPlaneFitter.hh" #include "ProfilerPlaneSlice.hh" class ProfilerPlaneSliceFitter: public ProfilerPlaneSlice, public ProfilerPlaneFitter { protected: static double ppsfRange; static double ppsfMaxWidthGuess; // Function with gradient to fit distribution in the slice CauchyDistribution* ppsfDistFunc; //private: // // Protect default constructor // ProfilerPlaneSliceFitter() : MutexedClass(), ProfilerPlaneSlice(), ProfilerPlaneFitter() { // return; // } public: ProfilerPlaneSliceFitter( const std::string name, const std::vector& xAxis, const std::vector& yAxis ) ; ProfilerPlaneSliceFitter( const ProfilerPlaneSliceFitter& f ); virtual ~ProfilerPlaneSliceFitter(); ProfilerPlaneSliceFitter& operator=( const ProfilerPlaneSliceFitter& f ); // Clone this object and return the pointer inline virtual ProfilerPlaneSliceFitter* cloneSlice() { return new ProfilerPlaneSliceFitter( *this ); } const ROOT::Minuit2::MnUserParameterState& checkFit( ROOT::Minuit2::FunctionMinimum& fitMin, ROOT::Minuit2::MnUserParameters& pars ); // Fit with a Cauchy distribution virtual bool fitWithCauchy(); // Find initial values for the fir parameters. virtual ROOT::Minuit2::MnUserParameters findInitialParameters(); }; #endif /* PROFILERPLANESLICEFITTER_HH_ */