1 #ifndef Alignment_MuonAlignmentAlgorithms_MuonResidualsFitter_H
2 #define Alignment_MuonAlignmentAlgorithms_MuonResidualsFitter_H
53 delete [] (*residual);
57 virtual int type()
const = 0;
61 virtual int npar() = 0;
62 virtual int ndata() = 0;
65 assert(0 <= parNum && parNum <
npar());
67 for (
int i = 0;
i <
npar();
i++) {
75 assert(0 <= parNum && parNum <
npar());
76 if (
m_fixed.size() == 0)
return false;
85 void fill(
double *residual) {
92 double value(
int parNum) { assert(0 <= parNum && parNum <
npar());
return m_value[parNum]; };
120 bool dofit(
void (*
fcn)(
int&,
double*,
double&,
double*,
int), std::vector<int> &parNum, std::vector<std::string> &parName, std::vector<double> &start, std::vector<double> &
step, std::vector<double> &low, std::vector<double> &high);
121 virtual void inform(TMinuit *tMinuit) = 0;
160 #endif // Alignment_MuonAlignmentAlgorithms_MuonResidualsFitter_H
double MuonResidualsFitter_logGaussPowerTails(double residual, double center, double sigma)
double MuonResidualsFitter_integrate_pureGaussian(double low, double high, double center, double sigma)
Double_t MuonResidualsFitter_powerLawTails_TF1(Double_t *xvec, Double_t *par)
virtual void inform(TMinuit *tMinuit)=0
void write(FILE *file, int which=0)
long numResiduals() const
void fix(int parNum, bool value=true)
std::vector< double > m_error
void read(FILE *file, int which=0)
void MuonResidualsPositionFitter_FCN(int &npar, double *gin, double &fval, double *par, int iflag)
virtual bool fit(Alignable *ali)=0
void fill(double *residual)
MuonResidualsFitter * fitter()
int residualsModel() const
bool dofit(void(*fcn)(int &, double *, double &, double *, int), std::vector< int > &parNum, std::vector< std::string > &parName, std::vector< double > &start, std::vector< double > &step, std::vector< double > &low, std::vector< double > &high)
double MuonResidualsFitter_logROOTVoigt(double residual, double center, double sigma, double gamma)
double MuonResidualsFitter_compute_log_convolution(double toversigma, double gammaoversigma, double max=1000., double step=0.001, double power=4.)
std::vector< double > m_value
std::vector< double * > m_residuals
const T & max(const T &a, const T &b)
virtual ~MuonResidualsFitter()
double MuonResidualsFitter_logPowerLawTails(double residual, double center, double sigma, double gamma)
Double_t MuonResidualsFitter_GaussPowerTails_TF1(Double_t *xvec, Double_t *par)
virtual double plot(std::string name, TFileDirectory *dir, Alignable *ali)=0
Double_t MuonResidualsFitter_pureGaussian_TF1(Double_t *xvec, Double_t *par)
void plotsimple(std::string name, TFileDirectory *dir, int which, double multiplier)
void setStrategy(int strategy)
virtual double sumofweights()=0
MuonResidualsFitter * m_fitter
double errorerror(int parNum)
void fcn(int &, double *, double &, double *, int)
std::vector< double * >::const_iterator residuals_end() const
void plotweighted(std::string name, TFileDirectory *dir, int which, int whichredchi2, double multiplier)
void MuonResidualsAngleFitter_FCN(int &npar, double *gin, double &fval, double *par, int iflag)
std::vector< bool > m_fixed
void setPrintLevel(int printLevel)
Double_t MuonResidualsFitter_ROOTVoigt_TF1(Double_t *xvec, Double_t *par)
std::vector< double * >::const_iterator residuals_begin() const
MuonResidualsFitter(int residualsModel, int minHits, bool weightAlignment=true)
virtual int type() const =0
MuonResidualsFitterFitInfo(MuonResidualsFitter *fitter)
double MuonResidualsFitter_logPureGaussian(double residual, double center, double sigma)
const double par[8 *NPar][4]