source: Sophya/trunk/SophyaPI/PIext/piafitting.h@ 4078

Last change on this file since 4078 was 3572, checked in by cmv, 17 years ago

char* -> const char* pour regler les problemes de deprecated string const... + comparaison unsigned signed + suppression EVOL_PLANCK rz+cmv 07/02/2009

File size: 3.0 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2// Classe d ajustement pour piapp
3// cmv 98-99
4// CEA-DAPNIA LAL-IN2P3/CNRS
5
6#ifndef PIAFITTING_H_SEEN
7#define PIAFITTING_H_SEEN
8
9#include "machdefs.h"
10#include <string>
11#include <vector>
12
13#include "nomgadapter.h"
14
15#include "pdlmgr.h"
16#include "dlftypes.h"
17#include "piacmd.h"
18#include "zthread.h"
19
20class PIStdImgApp;
21class PIAFitterWind;
22
23#include "tvector.h"
24namespace SOPHYA {
25class GeneralFunction; class GeneralFunc; class GeneralFit;
26class GeneralFitData;
27}
28
29class PIAFitter : public CmdExecutor {
30public :
31 PIAFitter(PIACmd* piac, PIStdImgApp* app);
32 virtual ~PIAFitter();
33 virtual int Execute(string& keyw, vector<string>& args, string& toks);
34 virtual void LinkFitFunc(string const& fname, string const& funcname
35 ,int nvar,int npar);
36 virtual void PrepareFitFuncCFile(string const& fname, string const& funcname
37 ,int nvar,int npar);
38
39 inline void SetFgEvtLoopFlag(bool fg=false) { fg_evtloop = fg; }
40 inline ZMutex & getMutex() { return singlefit_mutex; }
41
42friend class PIAFitterWind;
43
44protected :
45bool fg_evtloop; // true : appel depuis Boucle d'evts, PIAFitterWind
46// Attributs pour controle de thread
47ZMutex singlefit_mutex; // Pour empecher l'execution simultanee de deux fits
48
49typedef struct DFOptions {
50 bool okres, okfun;
51 int polcx,polcy; double xc,yc;
52 GeneralFitData::FitErrType err_type;
53 double err_scale,err_min;
54 double stc2;
55 int nstep;
56 int lp,lpg;
57 int_4 i1,i2,j1,j2;
58 bool fromlastfit,autoinifit;
59} DFOPTIONS ;
60
61void ResetOptions(void);
62void DecodeOptions(string opt);
63void DecodeObject(string obj);
64void CheckOptions(void);
65void PrintOptions(void);
66void FillGData(void);
67void GetCentering(void);
68void DecodeFunction(string func);
69void ReSetParam(void);
70void AutoIniFit(void);
71void InitParFromLastFit(void);
72void DecodeParam(string par,string step,string min,string max,string fix);
73int DoFit(void);
74void FitFunRes(void);
75void LinFit(void);
76
77// pour initialiser les parametres du fit
78void IniFitP1ou2D(void);
79void IniFitGhP1D(void);
80void IniFitGvP1D(void);
81void IniFitGv2D(void);
82static int IniFitGaus(GeneralFitData& g,double& h,double& v
83 ,double& x0,double& y0,double& sx,double& sy,double& f);
84
85// Graphique
86PIStdImgApp* mApp; // Do not delete
87PIAFitterWind* FWindFit; // Fenetre de config interactive
88// Objet a fitter
89string mNObj;
90NObjMgrAdapter* mAdObj; // Ne pas deleter
91// Structure de data pour le fit, parametres et options
92GeneralFitData* mGData;
93bool delmGData;
94int_4 mNPar,mNVar,mNData;
95Vector mPar; Vector mStep; Vector mMin; Vector mMax; Vector mFix;
96Vector mParSave; Vector mStepSave; Vector mMinSave; Vector mMaxSave; Vector mFixSave;
97GeneralFit* mFit;
98DFOPTIONS mOpt;
99DFOPTIONS mOptSave;
100// Gestion des fonctions de fit predefinies
101GeneralFunction* mFunction; string mFName;
102// Gestion de fonction de fit definie par l'utilisateur
103GeneralFunc* mFunc;
104PDynLinkMgr* mDlUFunc;
105string mNameFitFunc;
106DlUserFitFunc mFitFunc;
107DlUserFitFuncDer mFitFuncDer;
108int_4 mUFNVar, mUFNPar;
109};
110
111#endif
Note: See TracBrowser for help on using the repository browser.