Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-04-07 08:08:30

0001 // FitFunctions.h
0002 #ifndef FITFUNCTIONS_H
0003 #define FITFUNCTIONS_H
0004 #include <vector>
0005 #include <string>
0006 #include <map>
0007 
0008 namespace FitFunctions {
0009   
0010   // Model function typedef
0011   typedef double (*modelFunction)(const double*, const double*);
0012 
0013   // Model structure
0014   struct modelStructure {
0015     modelFunction fun;
0016     std::string name;
0017     int nParams;
0018     std::vector<std::string> paramNames;
0019   };
0020   
0021   // Enum for all available fit models
0022   enum class FitModel { GAUSS, POLY2, POLY3, POLY5, ARGUSROOFIT, ARGUSMODIFIED, CHAT1, CHAT2, CHAT3 };
0023 
0024   // Get model information
0025   const modelStructure& GetModel(FitModel model);
0026 
0027   // Model functions prototypes
0028   double gauss(const double* x, const double* par);
0029   double poly2(const double* x, const double* par);
0030   double poly3(const double* x, const double* par);
0031   double poly5(const double* x, const double* par);
0032   double argusRoofit(const double* x, const double* par);
0033   double argusModified(const double* x, const double* par);
0034   double chat1(const double* x, const double* par);
0035   double chat2(const double* x, const double* par);
0036   double chat3(const double* x, const double* par);
0037 
0038   // Map linking model label to their respective information
0039   extern const std::map<FitModel, modelStructure> models;
0040 };
0041 
0042 #endif