JG ROOT Tools libraries  version 5.0 - august 2014
RFitPeak.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file RFitPeak.hh
3  *
4  * Include file for class RFitPeak
5  */
6 //======================================================================
7 
8 #ifndef R_FIT_PEAK_HH
9 #define R_FIT_PEAK_HH
10 
11 #include "RFitBase1D.hh"
12 #include "RFitDataPeak.hh"
13 
14 // Fit function.
15 #include "RAsymetricGaus.hh"
16 extern Double_t RFitPeakFunction ( Double_t *x, Double_t *p );
17 
18 extern const char *rPeakBgName[];
19 
20 // Peak fit options added to RFitOptions namespace
21 namespace RFitOptions
22 {
23  /*! Utilisation de la surface du pic comme paramètre, au lieu
24  * de l'amplitude.
25  */
26  static const u_int modeCounts = 0x00000010;
27 
28  /*! Prise en compte d'une compoasante de traîne exponentielle.*/
29  static const u_int modeTail = 0x00000020;
30 
31  /*! Tous les pics ont la même largeur.*/
32  static const u_int commonSigma = 0x00000100;
33 
34  /*! Tous les pics ont une traîne exponentielle avec la même longueur.*/
35  static const u_int commonTail = 0x00000200;
36 
37  /*! Tous les pics ont une traîne exponentielle représentant la même
38  * fraction de la surface totale.
39  */
40  static const u_int commonRatio = 0x00000400;
41 }
42 
43 //======================================================================
44 /*! \class RFitPeak
45  *
46  * Voir les remarques générales de la classe de base RFitBase1D.
47  *
48  * Cette classe permet de fitter des pics gaussiens dans un histogramme 1D
49  * en prenant en compte un fond éventuel, et une traîne asymétrique pour
50  * les pics.
51  *
52  * Chaque pic est définit par 3 à 5 paramètres:
53  * - le facteur de normalisation de la gaussienne: soit l'amplitude, soit
54  * le nombre de coups intégré * - le centre de la gaussienne * - la largeur de la gaussienne * - dans le cas d'un pic avec traîne asymétrique, un paramètre supplémentaire * définit l'asymétrie, un autre l'intensité relative de la partie * asymétrique par rapport au total du pic. * * Paramètres relatifs: * * Les paramètres des pics peuvent être définis relativement aux valeurs * d'un autre pic (de référence). * Le numéro du pic de référence doit être inférieur à celui du pic * considéré. * * * Les options de fit sont définies dans l'espace de nom RFitOptions, et les * modes de fit (minimisation de chi2, maximum de vraisemblance) sont * définis dans l'espace de nom RFitModes. * * Modes de fit: * - fitChi2 : minimisation de chi2 * - fitLikelyhood : maximum de vraisemblance * * Options pour le fit (options générales): * - modeErrNorm : les erreurs obtenues sur les paramètres sont * renormalisées pour obtenir un Chi2 de 1. * * Options pour le fit (options spécifiques): * - modeCounts : le paramètre utilisé pour la constante de normalisation * du pic est le nombre de coups dans le pics, au lieu de l'amplitude. * - modeTail : les pics comportent traînes exponentielles * - commonSigma : le paramètre sigma est commun à tous les pics * - commonTail : le paramètre de traîne est commun à tous les pics * - commonRatio : le paramètre de rapport traîne/gaussienne est commun * à tous les pics * * Types de fond: * - bgNone: pas de fond * - bgConst: fond constant * - bgLin: fond linéaire * - bgQuad: fond quadratique * - bgExp: fond exponentiel * - bgExp2: fond exponentiel avec terme quadratique * - bgStep: fond constant avec palier * - bgLinStep: fond linéaire avec palier * - bgLinLin: fond linéaire à droite et gauche * * Pour les fonds avec palier (bgStep et bgLinStep), s'il y a plusieurs * pics, le paramètre du palier indique la hauteur totale du palier, et * à chaque pic est associé un saut proportionnel à la hauteur du pic * (amplitude), en valeur absolue (pour éviter une amplitude totale * nulle en cas de pics négatifs !). * * \note Les variables et fonctions utilisées par les fonctions de fit * sont définies de façon statique, ce qui implique qu'elles * doublent certaines variables déjà définies dans la classe * de base des données de fit. */ class RFitPeak : virtual public RFitDataPeak, virtual public RFitBase1D { //------------------------------------------------------------ /*! \object_doc{RFitPeak} */ GObject(RFitPeak); //------------------------------------------------------------ friend Double_t RFitPeakFunction (Double_t *, Double_t *); ///! Background types identifiers enum BgType { bgNone = 0, bgConst = 1, bgLin = 2, bgQuad = 3, bgExp = 4, bgExp2 = 5, bgStep = 6, bgLinStep = 7, bgLinLin = 8 }; protected: // données statiques #ifndef __MAKECINT__ static UInt_t bg_type; ///< Type de fond (statique pour être vue dans la fonction de fit) static UInt_t bg_par_number[RPEAK_BG_MAX]; ///< Table du nombre de paramètres selon le type de fond static Int_t peaks_number; ///< Nombre de pics à fitter static Int_t index_bg[RPEAK_MAX_BG_PAR]; ///< Index des paramètres de fond dans la table des paramètres static Int_t index_fact [RPEAK_MAX]; ///< Index des facteurs de normalisation (amplitude ou surface) dans la table des paramètres static Int_t index_ctr [RPEAK_MAX]; ///< Index des centres dans la table des paramètres static Int_t index_sig [RPEAK_MAX]; ///< Index des sigma dans la table des paramètres static Int_t index_tail [RPEAK_MAX]; ///< Index des traines dans la table des paramètres static Int_t index_ratio[RPEAK_MAX]; ///< Index des rapports de traine dans la table des paramètres static Int_t rel_ctr [RPEAK_MAX]; ///< Tableau des positions relatives des centres static Int_t rel_fact [RPEAK_MAX]; ///< Tableau des valeurs relatives des constantes (amplitude/surface) static Int_t rel_sig [RPEAK_MAX]; ///< Tableau des valeurs relatives des sigma static Int_t rel_tail [RPEAK_MAX]; ///< Tableau des valeurs relatives des longueurs de traînes static Int_t rel_ratio [RPEAK_MAX]; ///< Tableau des valeurs relatives des rapports de traînes static bool calc_peak [RPEAK_MAX]; ///< Indique les pics à calculer static bool calc_gaus; ///< Indique s'il faut calculer les termes gaussiens static bool calc_tail; ///< Indique s'il faut calculer les traines static bool calc_bg; ///< Indique s'il faut calculer le fond #endif Double_t xbg1; ///< Point de prédéfinition du fond Double_t xbg2; ///< Point de prédéfinition du fond // attributs de lignes static TAttLine latt_peak; ///< Attributs de lignes pour tracé des pics individuels static TAttLine latt_gaus; ///< Attributs de lignes pour tracé des termes gaussiens static TAttLine latt_tail; ///< Attributs de lignes pour tracé des termes gaussiens static TAttLine latt_bg; ///< Attributs de lignes pour tracé du fond //------------------------------------------------------------ // Constructors / affectation / destructor public: RFitPeak ( TH1 * hptr, TH1 * herr = NULL ); RFitPeak ( TH1 * hptr, const RFitDataPeak & fit_data ); RFitPeak ( TH1 * hptr, TH1 * herr, const RFitDataPeak & fit_data ); RFitPeak ( const RFitPeak & original ); virtual ~RFitPeak ( ); //------------------------------------------------------------ // surcharge des fonctions de la classe de base virtual void InitMode ( ); virtual void SetFitLimits ( const Double_t x1, const Double_t x2 ); //------------------------------------------------------------ virtual void SetPeaksNumber ( const Int_t num ); static Int_t GetStaticPeaksNumber ( ); // type de fond (statiques pour pouvoir être vues dans la fonction de fit) virtual void SetBgType ( const Int_t bg ); static Int_t GetStaticBgType ( ); static Int_t GetStaticBgParNumber ( ); static Int_t GetBgParNumber ( const Int_t bg ); /*! Redefinition of RFitDataDecay function, to avoid compilation * warning due to -Woverloaded-virtual option.*/ virtual Int_t GetBgParNumber ( ) const { return (GetStaticBgParNumber()); } // index des paramètres selon leur type virtual Int_t GetBgParIndex ( const Int_t p ); virtual Int_t GetCenterParIndex ( const Int_t pk ); virtual Int_t GetFactorParIndex ( const Int_t pk ); virtual Int_t GetSigmaParIndex ( const Int_t pk ); virtual Int_t GetTailParIndex ( const Int_t pk ); virtual Int_t GetRatioParIndex ( const Int_t pk ); // prédéfinition du fond et des pics virtual bool SetRelativeCenter ( const Int_t pk, const Int_t pkref = -1 ); virtual bool SetRelativeFactor ( const Int_t pk, const Int_t pkref = -1 ); virtual bool SetRelativeSigma ( const Int_t pk, const Int_t pkref = -1 ); virtual bool SetRelativeTail ( const Int_t pk, const Int_t pkref = -1 ); virtual bool SetRelativeRatio ( const Int_t pk, const Int_t pkref = -1 ); virtual void SetBgPar ( const Int_t p, const Double_t val ); virtual void SetCenter ( const Int_t pk, const Double_t val ); virtual void SetAbsCenter ( const Int_t pk, const Double_t val ); virtual void SetFactor ( const Int_t pk, const Double_t val ); virtual void SetAbsFactor ( const Int_t pk, const Double_t val ); virtual void SetAmplitude ( const Int_t pk, const Double_t val ); virtual void SetAbsAmplitude ( const Int_t pk, const Double_t val ); virtual void SetSigma ( const Int_t pk, const Double_t val ); virtual void SetAbsSigma ( const Int_t pk, const Double_t val ); virtual void SetTail ( const Int_t pk, const Double_t val ); virtual void SetAbsTail ( const Int_t pk, const Double_t val ); virtual void SetRatio ( const Int_t pk, const Double_t val ); virtual void SetAbsRatio ( const Int_t pk, const Double_t val ); virtual Double_t GetBgPar ( const Int_t p ) const; virtual Double_t GetCenter ( const Int_t pk = 0 ) const; virtual Double_t GetAbsCenter ( const Int_t pk = 0 ) const; virtual Double_t GetFactor ( const Int_t pk = 0 ) const; virtual Double_t GetAbsFactor ( const Int_t pk = 0 ) const; virtual Double_t GetAmplitude ( const Int_t pk = 0 ) const; virtual Double_t GetCounts ( const Int_t pk = 0 ) const; virtual Double_t GetSigma ( const Int_t pk = 0 ) const; virtual Double_t GetAbsSigma ( const Int_t pk = 0 ) const; virtual Double_t GetTail ( const Int_t pk = 0 ) const; virtual Double_t GetAbsTail ( const Int_t pk = 0 ) const; virtual Double_t GetRatio ( const Int_t pk = 0 ) const; virtual Double_t GetAbsRatio ( const Int_t pk = 0 ) const; virtual Double_t GetBgParError ( const Int_t p ) const; virtual Double_t GetCenterError ( const Int_t pk = 0 ) const; virtual Double_t GetAbsCenterError ( const Int_t pk = 0 ) const; virtual Double_t GetFactorError ( const Int_t pk = 0 ) const; virtual Double_t GetAbsFactorError ( const Int_t pk = 0 ) const; virtual Double_t GetAmplitudeError ( const Int_t pk = 0 ) const; virtual Double_t GetCountsError ( const Int_t pk = 0 ) const; virtual Double_t GetSigmaError ( const Int_t pk = 0 ) const; virtual Double_t GetAbsSigmaError ( const Int_t pk = 0 ) const; virtual Double_t GetTailError ( const Int_t pk = 0 ) const; virtual Double_t GetAbsTailError ( const Int_t pk = 0 ) const; virtual Double_t GetRatioError ( const Int_t pk = 0 ) const; virtual Double_t GetAbsRatioError ( const Int_t pk = 0 ) const; virtual void PresetBg ( const Double_t x1, const Double_t x2 = 0. ); virtual void PresetPeak ( const Int_t pk, const Double_t ctr, const Double_t sig = -1. ); // paramètres fixes virtual void FixBgParameter ( const Int_t p, const bool b = true ); virtual void FixCenterParameter ( const Int_t pk, const bool b = true ); virtual void FixFactorParameter ( const Int_t pk, const bool b = true ); virtual void FixSigmaParameter ( const Int_t pk, const bool b = true ); virtual void FixTailParameter ( const Int_t pk, const bool b = true ); virtual void FixRatioParameter ( const Int_t pk, const bool b = true ); virtual bool IsFixBgParameter ( const Int_t p ) const; virtual bool IsFixCenterParameter ( const Int_t pk ) const; virtual bool IsFixFactorParameter ( const Int_t pk ) const; virtual bool IsFixSigmaParameter ( const Int_t pk ) const; virtual bool IsFixTailParameter ( const Int_t pk ) const; virtual bool IsFixRatioParameter ( const Int_t pk ) const; //------------------------------------------------------------ // styles de tracé static void SetPeakLineAtt ( const TAttLine att ); static void SetGausLineAtt ( const TAttLine att ); static void SetTailLineAtt ( const TAttLine att ); static void SetBgLineAtt ( const TAttLine att ); static void SetPeakLineAtt ( const Color_t c, const Style_t s, const Width_t w ); static void SetGausLineAtt ( const Color_t c, const Style_t s, const Width_t w ); static void SetTailLineAtt ( const Color_t c, const Style_t s, const Width_t w ); static void SetBgLineAtt ( const Color_t c, const Style_t s, const Width_t w ); //------------------------------------------------------------ // tracés de la fonction virtual void SetCalcAll ( ); virtual void SetCalcNone ( ); virtual void SetFunction ( ); virtual void ScaleFunction ( const Double_t s ); virtual void DrawPeak ( const Int_t pk, const bool bg = true, const char *opts = "" ); virtual void DrawPeakGaus ( const Int_t pk, const bool bg = true, const char *opts = "" ); virtual void DrawPeakTail ( const Int_t pk, const bool bg = true, const char *opts = "" ); virtual void DrawPeakAll ( const Int_t pk, const bool bg = true, const char *opts = "" ); virtual void DrawBg ( const char *opts = "" ); virtual int CalcIntegral ( double & val, double & err, const double x1, const double x2, const string opts, const int npts = 1000, const double frac = 0.1 ); /*! Redefinition of RFitBase1D function, to avoid compilation * warning due to -Woverloaded-virtual option.*/ virtual int CalcIntegral ( double & val, double & err, const double x1, const double x2, const int npts = 1000, const double frac = 0.1 ) { return (CalcIntegral ( val, err, x1, x2, "", npts, frac )); } virtual void DrawFctResult ( TVirtualPad * pad, const ROptionString &opts = "" ); // création d'histogrammes à partir de la fonction virtual TH1 * GetPeakHisto ( const char *name, const Int_t pk, const bool bg = false ); virtual TH1 * GetPeakGausHisto ( const char *name, const Int_t pk, const bool bg = false ); virtual TH1 * GetPeakTailHisto ( const char *name, const Int_t pk, const bool bg = false ); virtual TH1 * GetBgHisto ( const char *name ); // résultat (texte) virtual string GetFitText ( ) const; virtual RFitData1D * CreateFitData ( ); virtual RFitData1D * GetFitData ( ); virtual void SetFitData ( const RFitData1D * fit_data ); virtual Int_t LoadFitData ( const string &fname ); //------------------------------------------------------------ /*! For ROOT dictionary.*/ public: ClassDef(RFitPeak,0); }; //---------------------------------------------------------------------- // Inline functions #include "icc/RFitPeak.icc" //====================================================================== #endif
55  * - le centre de la gaussienne
56  * - la largeur de la gaussienne
57  * - dans le cas d'un pic avec traîne asymétrique, un paramètre supplémentaire
58  * définit l'asymétrie, un autre l'intensité relative de la partie
59  * asymétrique par rapport au total du pic.
60  *
61  * Paramètres relatifs:
62  *
63  * Les paramètres des pics peuvent être définis relativement aux valeurs
64  * d'un autre pic (de référence).
65  * Le numéro du pic de référence doit être inférieur à celui du pic
66  * considéré.
67  *
68  *
69  * Les options de fit sont définies dans l'espace de nom RFitOptions, et les
70  * modes de fit (minimisation de chi2, maximum de vraisemblance) sont
71  * définis dans l'espace de nom RFitModes.
72  *
73  * Modes de fit:
74  * - fitChi2 : minimisation de chi2
75  * - fitLikelyhood : maximum de vraisemblance
76  *
77  * Options pour le fit (options générales):
78  * - modeErrNorm : les erreurs obtenues sur les paramètres sont
79  * renormalisées pour obtenir un Chi2 de 1.
80  *
81  * Options pour le fit (options spécifiques):
82  * - modeCounts : le paramètre utilisé pour la constante de normalisation
83  * du pic est le nombre de coups dans le pics, au lieu de l'amplitude.
84  * - modeTail : les pics comportent traînes exponentielles
85  * - commonSigma : le paramètre sigma est commun à tous les pics
86  * - commonTail : le paramètre de traîne est commun à tous les pics
87  * - commonRatio : le paramètre de rapport traîne/gaussienne est commun
88  * à tous les pics
89  *
90  * Types de fond:
91  * - bgNone: pas de fond
92  * - bgConst: fond constant
93  * - bgLin: fond linéaire
94  * - bgQuad: fond quadratique
95  * - bgExp: fond exponentiel
96  * - bgExp2: fond exponentiel avec terme quadratique
97  * - bgStep: fond constant avec palier
98  * - bgLinStep: fond linéaire avec palier
99  * - bgLinLin: fond linéaire à droite et gauche
100  *
101  * Pour les fonds avec palier (bgStep et bgLinStep), s'il y a plusieurs
102  * pics, le paramètre du palier indique la hauteur totale du palier, et
103  * à chaque pic est associé un saut proportionnel à la hauteur du pic
104  * (amplitude), en valeur absolue (pour éviter une amplitude totale
105  * nulle en cas de pics négatifs !).
106  *
107  * \note Les variables et fonctions utilisées par les fonctions de fit
108  * sont définies de façon statique, ce qui implique qu'elles
109  * doublent certaines variables déjà définies dans la classe
110  * de base des données de fit.
111  */
112 class RFitPeak : virtual public RFitDataPeak, virtual public RFitBase1D
113 {
114  //------------------------------------------------------------
115  /*! \object_doc{RFitPeak} */
116  GObject(RFitPeak);
117  //------------------------------------------------------------
118 
119  friend Double_t RFitPeakFunction (Double_t *, Double_t *);
120 
121  ///! Background types identifiers
122  enum BgType
123  {
124  bgNone = 0,
125  bgConst = 1,
126  bgLin = 2,
127  bgQuad = 3,
128  bgExp = 4,
129  bgExp2 = 5,
130  bgStep = 6,
131  bgLinStep = 7,
132  bgLinLin = 8
133  };
134 
135  protected:
136 
137  // données statiques
138 #ifndef __MAKECINT__
139 
140  static UInt_t bg_type; ///< Type de fond (statique pour être vue dans la fonction de fit)
141  static UInt_t bg_par_number[RPEAK_BG_MAX]; ///< Table du nombre de paramètres selon le type de fond
142 
143  static Int_t peaks_number; ///< Nombre de pics à fitter
144 
145  static Int_t index_bg[RPEAK_MAX_BG_PAR]; ///< Index des paramètres de fond dans la table des paramètres
146  static Int_t index_fact [RPEAK_MAX]; ///< Index des facteurs de normalisation (amplitude ou surface) dans la table des paramètres
147  static Int_t index_ctr [RPEAK_MAX]; ///< Index des centres dans la table des paramètres
148  static Int_t index_sig [RPEAK_MAX]; ///< Index des sigma dans la table des paramètres
149  static Int_t index_tail [RPEAK_MAX]; ///< Index des traines dans la table des paramètres
150  static Int_t index_ratio[RPEAK_MAX]; ///< Index des rapports de traine dans la table des paramètres
151 
152  static Int_t rel_ctr [RPEAK_MAX]; ///< Tableau des positions relatives des centres
153  static Int_t rel_fact [RPEAK_MAX]; ///< Tableau des valeurs relatives des constantes (amplitude/surface)
154  static Int_t rel_sig [RPEAK_MAX]; ///< Tableau des valeurs relatives des sigma
155  static Int_t rel_tail [RPEAK_MAX]; ///< Tableau des valeurs relatives des longueurs de traînes
156  static Int_t rel_ratio [RPEAK_MAX]; ///< Tableau des valeurs relatives des rapports de traînes
157 
158  static bool calc_peak [RPEAK_MAX]; ///< Indique les pics à calculer
159  static bool calc_gaus; ///< Indique s'il faut calculer les termes gaussiens
160  static bool calc_tail; ///< Indique s'il faut calculer les traines
161  static bool calc_bg; ///< Indique s'il faut calculer le fond
162 #endif
163 
164  Double_t xbg1; ///< Point de prédéfinition du fond
165  Double_t xbg2; ///< Point de prédéfinition du fond
166 
167  // attributs de lignes
168  static TAttLine latt_peak; ///< Attributs de lignes pour tracé des pics individuels
169  static TAttLine latt_gaus; ///< Attributs de lignes pour tracé des termes gaussiens
170  static TAttLine latt_tail; ///< Attributs de lignes pour tracé des termes gaussiens
171  static TAttLine latt_bg; ///< Attributs de lignes pour tracé du fond
172 
173  //------------------------------------------------------------
174  // Constructors / affectation / destructor
175  public:
176  RFitPeak ( TH1 * hptr, TH1 * herr = NULL );
177  RFitPeak ( TH1 * hptr, const RFitDataPeak & fit_data );
178  RFitPeak ( TH1 * hptr, TH1 * herr, const RFitDataPeak & fit_data );
179  RFitPeak ( const RFitPeak & original );
180 
181  virtual ~RFitPeak ( );
182 
183  //------------------------------------------------------------
184  // surcharge des fonctions de la classe de base
185  virtual void InitMode ( );
186 
187  virtual void SetFitLimits ( const Double_t x1, const Double_t x2 );
188 
189  //------------------------------------------------------------
190  virtual void SetPeaksNumber ( const Int_t num );
191  static Int_t GetStaticPeaksNumber ( );
192 
193  // type de fond (statiques pour pouvoir être vues dans la fonction de fit)
194  virtual void SetBgType ( const Int_t bg );
195  static Int_t GetStaticBgType ( );
196  static Int_t GetStaticBgParNumber ( );
197  static Int_t GetBgParNumber ( const Int_t bg );
198 
199  /*! Redefinition of RFitDataDecay function, to avoid compilation
200  * warning due to -Woverloaded-virtual option.*/
201  virtual Int_t GetBgParNumber ( ) const
202  { return (GetStaticBgParNumber()); }
203 
204  // index des paramètres selon leur type
205  virtual Int_t GetBgParIndex ( const Int_t p );
206  virtual Int_t GetCenterParIndex ( const Int_t pk );
207  virtual Int_t GetFactorParIndex ( const Int_t pk );
208  virtual Int_t GetSigmaParIndex ( const Int_t pk );
209  virtual Int_t GetTailParIndex ( const Int_t pk );
210  virtual Int_t GetRatioParIndex ( const Int_t pk );
211 
212  // prédéfinition du fond et des pics
213  virtual bool SetRelativeCenter ( const Int_t pk, const Int_t pkref = -1 );
214  virtual bool SetRelativeFactor ( const Int_t pk, const Int_t pkref = -1 );
215  virtual bool SetRelativeSigma ( const Int_t pk, const Int_t pkref = -1 );
216  virtual bool SetRelativeTail ( const Int_t pk, const Int_t pkref = -1 );
217  virtual bool SetRelativeRatio ( const Int_t pk, const Int_t pkref = -1 );
218 
219  virtual void SetBgPar ( const Int_t p, const Double_t val );
220  virtual void SetCenter ( const Int_t pk, const Double_t val );
221  virtual void SetAbsCenter ( const Int_t pk, const Double_t val );
222  virtual void SetFactor ( const Int_t pk, const Double_t val );
223  virtual void SetAbsFactor ( const Int_t pk, const Double_t val );
224  virtual void SetAmplitude ( const Int_t pk, const Double_t val );
225  virtual void SetAbsAmplitude ( const Int_t pk, const Double_t val );
226  virtual void SetSigma ( const Int_t pk, const Double_t val );
227  virtual void SetAbsSigma ( const Int_t pk, const Double_t val );
228  virtual void SetTail ( const Int_t pk, const Double_t val );
229  virtual void SetAbsTail ( const Int_t pk, const Double_t val );
230  virtual void SetRatio ( const Int_t pk, const Double_t val );
231  virtual void SetAbsRatio ( const Int_t pk, const Double_t val );
232 
233  virtual Double_t GetBgPar ( const Int_t p ) const;
234  virtual Double_t GetCenter ( const Int_t pk = 0 ) const;
235  virtual Double_t GetAbsCenter ( const Int_t pk = 0 ) const;
236  virtual Double_t GetFactor ( const Int_t pk = 0 ) const;
237  virtual Double_t GetAbsFactor ( const Int_t pk = 0 ) const;
238  virtual Double_t GetAmplitude ( const Int_t pk = 0 ) const;
239  virtual Double_t GetCounts ( const Int_t pk = 0 ) const;
240  virtual Double_t GetSigma ( const Int_t pk = 0 ) const;
241  virtual Double_t GetAbsSigma ( const Int_t pk = 0 ) const;
242  virtual Double_t GetTail ( const Int_t pk = 0 ) const;
243  virtual Double_t GetAbsTail ( const Int_t pk = 0 ) const;
244  virtual Double_t GetRatio ( const Int_t pk = 0 ) const;
245  virtual Double_t GetAbsRatio ( const Int_t pk = 0 ) const;
246 
247  virtual Double_t GetBgParError ( const Int_t p ) const;
248  virtual Double_t GetCenterError ( const Int_t pk = 0 ) const;
249  virtual Double_t GetAbsCenterError ( const Int_t pk = 0 ) const;
250  virtual Double_t GetFactorError ( const Int_t pk = 0 ) const;
251  virtual Double_t GetAbsFactorError ( const Int_t pk = 0 ) const;
252  virtual Double_t GetAmplitudeError ( const Int_t pk = 0 ) const;
253  virtual Double_t GetCountsError ( const Int_t pk = 0 ) const;
254  virtual Double_t GetSigmaError ( const Int_t pk = 0 ) const;
255  virtual Double_t GetAbsSigmaError ( const Int_t pk = 0 ) const;
256  virtual Double_t GetTailError ( const Int_t pk = 0 ) const;
257  virtual Double_t GetAbsTailError ( const Int_t pk = 0 ) const;
258  virtual Double_t GetRatioError ( const Int_t pk = 0 ) const;
259  virtual Double_t GetAbsRatioError ( const Int_t pk = 0 ) const;
260 
261  virtual void PresetBg ( const Double_t x1, const Double_t x2 = 0. );
262  virtual void PresetPeak ( const Int_t pk, const Double_t ctr, const Double_t sig = -1. );
263 
264  // paramètres fixes
265  virtual void FixBgParameter ( const Int_t p, const bool b = true );
266  virtual void FixCenterParameter ( const Int_t pk, const bool b = true );
267  virtual void FixFactorParameter ( const Int_t pk, const bool b = true );
268  virtual void FixSigmaParameter ( const Int_t pk, const bool b = true );
269  virtual void FixTailParameter ( const Int_t pk, const bool b = true );
270  virtual void FixRatioParameter ( const Int_t pk, const bool b = true );
271 
272  virtual bool IsFixBgParameter ( const Int_t p ) const;
273  virtual bool IsFixCenterParameter ( const Int_t pk ) const;
274  virtual bool IsFixFactorParameter ( const Int_t pk ) const;
275  virtual bool IsFixSigmaParameter ( const Int_t pk ) const;
276  virtual bool IsFixTailParameter ( const Int_t pk ) const;
277  virtual bool IsFixRatioParameter ( const Int_t pk ) const;
278 
279  //------------------------------------------------------------
280  // styles de tracé static void SetPeakLineAtt ( const TAttLine att ); static void SetGausLineAtt ( const TAttLine att ); static void SetTailLineAtt ( const TAttLine att ); static void SetBgLineAtt ( const TAttLine att ); static void SetPeakLineAtt ( const Color_t c, const Style_t s, const Width_t w ); static void SetGausLineAtt ( const Color_t c, const Style_t s, const Width_t w ); static void SetTailLineAtt ( const Color_t c, const Style_t s, const Width_t w ); static void SetBgLineAtt ( const Color_t c, const Style_t s, const Width_t w ); //------------------------------------------------------------ // tracés de la fonction virtual void SetCalcAll ( ); virtual void SetCalcNone ( ); virtual void SetFunction ( ); virtual void ScaleFunction ( const Double_t s ); virtual void DrawPeak ( const Int_t pk, const bool bg = true, const char *opts = "" ); virtual void DrawPeakGaus ( const Int_t pk, const bool bg = true, const char *opts = "" ); virtual void DrawPeakTail ( const Int_t pk, const bool bg = true, const char *opts = "" ); virtual void DrawPeakAll ( const Int_t pk, const bool bg = true, const char *opts = "" ); virtual void DrawBg ( const char *opts = "" ); virtual int CalcIntegral ( double & val, double & err, const double x1, const double x2, const string opts, const int npts = 1000, const double frac = 0.1 ); /*! Redefinition of RFitBase1D function, to avoid compilation * warning due to -Woverloaded-virtual option.*/ virtual int CalcIntegral ( double & val, double & err, const double x1, const double x2, const int npts = 1000, const double frac = 0.1 ) { return (CalcIntegral ( val, err, x1, x2, "", npts, frac )); } virtual void DrawFctResult ( TVirtualPad * pad, const ROptionString &opts = "" ); // création d'histogrammes à partir de la fonction virtual TH1 * GetPeakHisto ( const char *name, const Int_t pk, const bool bg = false ); virtual TH1 * GetPeakGausHisto ( const char *name, const Int_t pk, const bool bg = false ); virtual TH1 * GetPeakTailHisto ( const char *name, const Int_t pk, const bool bg = false ); virtual TH1 * GetBgHisto ( const char *name ); // résultat (texte) virtual string GetFitText ( ) const; virtual RFitData1D * CreateFitData ( ); virtual RFitData1D * GetFitData ( ); virtual void SetFitData ( const RFitData1D * fit_data ); virtual Int_t LoadFitData ( const string &fname ); //------------------------------------------------------------ /*! For ROOT dictionary.*/ public: ClassDef(RFitPeak,0); }; //---------------------------------------------------------------------- // Inline functions #include "icc/RFitPeak.icc" //====================================================================== #endif
281  static void SetPeakLineAtt ( const TAttLine att );
282  static void SetGausLineAtt ( const TAttLine att );
283  static void SetTailLineAtt ( const TAttLine att );
284  static void SetBgLineAtt ( const TAttLine att );
285  static void SetPeakLineAtt ( const Color_t c, const Style_t s, const Width_t w );
286  static void SetGausLineAtt ( const Color_t c, const Style_t s, const Width_t w );
287  static void SetTailLineAtt ( const Color_t c, const Style_t s, const Width_t w );
288  static void SetBgLineAtt ( const Color_t c, const Style_t s, const Width_t w );
289 
290  //------------------------------------------------------------
291  // tracés de la fonction
292  virtual void SetCalcAll ( );
293  virtual void SetCalcNone ( );
294  virtual void SetFunction ( );
295  virtual void ScaleFunction ( const Double_t s );
296 
297  virtual void DrawPeak ( const Int_t pk, const bool bg = true, const char *opts = "" );
298  virtual void DrawPeakGaus ( const Int_t pk, const bool bg = true, const char *opts = "" );
299  virtual void DrawPeakTail ( const Int_t pk, const bool bg = true, const char *opts = "" );
300  virtual void DrawPeakAll ( const Int_t pk, const bool bg = true, const char *opts = "" );
301  virtual void DrawBg ( const char *opts = "" );
302 
303  virtual int CalcIntegral ( double & val, double & err,
304  const double x1, const double x2,
305  const string opts,
306  const int npts = 1000,
307  const double frac = 0.1 );
308 
309  /*! Redefinition of RFitBase1D function, to avoid compilation
310  * warning due to -Woverloaded-virtual option.*/
311  virtual int CalcIntegral ( double & val, double & err,
312  const double x1, const double x2,
313  const int npts = 1000,
314  const double frac = 0.1 )
315  { return (CalcIntegral ( val, err, x1, x2, "", npts, frac )); }
316 
317  virtual void DrawFctResult ( TVirtualPad * pad, const ROptionString &opts = "" );
318 
319  // création d'histogrammes à partir de la fonction
320  virtual TH1 * GetPeakHisto ( const char *name, const Int_t pk, const bool bg = false );
321  virtual TH1 * GetPeakGausHisto ( const char *name, const Int_t pk, const bool bg = false );
322  virtual TH1 * GetPeakTailHisto ( const char *name, const Int_t pk, const bool bg = false );
323  virtual TH1 * GetBgHisto ( const char *name );
324 
325  // résultat (texte)
326  virtual string GetFitText ( ) const;
327 
328  virtual RFitData1D * CreateFitData ( );
329  virtual RFitData1D * GetFitData ( );
330  virtual void SetFitData ( const RFitData1D * fit_data );
331  virtual Int_t LoadFitData ( const string &fname );
332 
333  //------------------------------------------------------------
334  /*! For ROOT dictionary.*/
335  public:
336  ClassDef(RFitPeak,0);
337 };
338 
339 //----------------------------------------------------------------------
340 // Inline functions
341 #include "icc/RFitPeak.icc"
342 
343 //======================================================================
344 #endif
virtual Double_t GetAbsTail(const Int_t pk=0) const
Definition: RFitPeak.cpp:1496
virtual void SetFactor(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:724
static Int_t index_bg[4]
Index des paramètres de fond dans la table des paramètres.
Definition: RFitPeak.hh:145
virtual void ScaleFunction(const Double_t s)
Definition: RFitPeak.cpp:1954
virtual Int_t GetBgParIndex(const Int_t p)
Definition: RFitPeak.icc:56
static Int_t GetStaticBgParNumber()
Definition: RFitPeak.icc:41
static TAttLine latt_peak
Attributs de lignes pour tracé des pics individuels.
Definition: RFitPeak.hh:168
static void SetTailLineAtt(const TAttLine att)
Definition: RFitPeak.icc:111
virtual ~RFitPeak()
Definition: RFitPeak.cpp:134
virtual int CalcIntegral(double &val, double &err, const double x1, const double x2, const int npts=1000, const double frac=0.1)
Definition: RFitPeak.hh:311
virtual void SetCalcNone()
Definition: RFitPeak.cpp:1923
virtual void SetTail(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:941
virtual Double_t GetRatio(const Int_t pk=0) const
Definition: RFitPeak.cpp:1543
virtual TH1 * GetPeakGausHisto(const char *name, const Int_t pk, const bool bg=false)
Definition: RFitPeak.cpp:2330
static void SetBgLineAtt(const TAttLine att)
Definition: RFitPeak.icc:117
virtual Double_t GetRatioError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1558
virtual void SetAbsSigma(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:911
virtual bool SetRelativeRatio(const Int_t pk, const Int_t pkref=-1)
Definition: RFitPeak.cpp:649
virtual Double_t GetAbsRatioError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1596
static const u_int commonSigma
Definition: RFitPeak.hh:32
ClassDef(RFitPeak, 0)
virtual void FixCenterParameter(const Int_t pk, const bool b=true)
Definition: RFitPeak.cpp:1749
virtual Double_t GetSigma(const Int_t pk=0) const
Definition: RFitPeak.cpp:1162
friend Double_t RFitPeakFunction(Double_t *, Double_t *)
Definition: RFitPeakFunction.cpp:16
virtual Double_t GetAbsCenter(const Int_t pk=0) const
Definition: RFitPeak.cpp:1115
virtual void SetBgType(const Int_t bg)
Definition: RFitPeak.icc:31
virtual void DrawPeakTail(const Int_t pk, const bool bg=true, const char *opts="")
Definition: RFitPeak.cpp:2054
virtual bool SetRelativeTail(const Int_t pk, const Int_t pkref=-1)
Definition: RFitPeak.cpp:590
virtual Double_t GetSigmaError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1177
static const u_int modeTail
Definition: RFitPeak.hh:29
virtual Double_t GetTailError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1480
virtual void SetAmplitude(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:775
virtual void InitMode()
Definition: RFitPeak.cpp:147
static TAttLine latt_tail
Attributs de lignes pour tracé des termes gaussiens.
Definition: RFitPeak.hh:170
virtual Int_t GetRatioParIndex(const Int_t pk)
Definition: RFitPeak.icc:91
virtual Double_t GetAmplitude(const Int_t pk=0) const
Definition: RFitPeak.cpp:1323
static bool calc_peak[10]
Indique les pics à calculer.
Definition: RFitPeak.hh:158
virtual bool IsFixTailParameter(const Int_t pk) const
Definition: RFitPeak.cpp:1875
virtual void SetRatio(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:995
virtual void SetAbsCenter(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:868
RFitPeak(TH1 *hptr, TH1 *herr=NULL)
Definition: RFitPeak.cpp:56
#define RPEAK_BG_MAX
Valeur maxi du type de fond.
Definition: RFitDataPeak.hh:21
static bool calc_tail
Indique s&#39;il faut calculer les traines.
Definition: RFitPeak.hh:160
GOptionString ROptionString
! Defined for compatibility
Definition: ROptionString.hh:17
static void SetPeakLineAtt(const TAttLine att)
Definition: RFitPeak.icc:99
virtual void SetPeaksNumber(const Int_t num)
Definition: RFitPeak.icc:19
virtual void SetCalcAll()
Definition: RFitPeak.cpp:1910
static Int_t index_fact[10]
Index des facteurs de normalisation (amplitude ou surface) dans la table des paramètres.
Definition: RFitPeak.hh:146
static Int_t index_tail[10]
Index des traines dans la table des paramètres.
Definition: RFitPeak.hh:149
virtual bool IsFixBgParameter(const Int_t p) const
Definition: RFitPeak.cpp:1815
GObject(RFitPeak)
virtual bool IsFixCenterParameter(const Int_t pk) const
Definition: RFitPeak.cpp:1830
virtual TH1 * GetBgHisto(const char *name)
Definition: RFitPeak.cpp:2389
virtual Int_t GetTailParIndex(const Int_t pk)
Definition: RFitPeak.icc:84
static Int_t index_sig[10]
Index des sigma dans la table des paramètres.
Definition: RFitPeak.hh:148
virtual bool SetRelativeCenter(const Int_t pk, const Int_t pkref=-1)
Definition: RFitPeak.cpp:434
static UInt_t bg_type
Type de fond (statique pour être vue dans la fonction de fit)
Definition: RFitPeak.hh:140
Definition: RFitPeak.hh:112
virtual Int_t GetSigmaParIndex(const Int_t pk)
Definition: RFitPeak.icc:77
virtual TH1 * GetPeakHisto(const char *name, const Int_t pk, const bool bg=false)
Definition: RFitPeak.cpp:2301
virtual void SetSigma(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:892
BgType
! Background types identifiers
Definition: RFitPeak.hh:122
virtual void SetAbsRatio(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:1019
virtual void SetAbsAmplitude(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:807
static Int_t index_ctr[10]
Index des centres dans la table des paramètres.
Definition: RFitPeak.hh:147
#define RPEAK_MAX_BG_PAR
Nombre maxi de paramètres du fond.
Definition: RFitDataPeak.hh:18
virtual bool SetRelativeSigma(const Int_t pk, const Int_t pkref=-1)
Definition: RFitPeak.cpp:531
virtual Double_t GetAbsSigmaError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1215
virtual Double_t GetBgParError(const Int_t p) const
Definition: RFitPeak.cpp:1065
virtual void SetAbsFactor(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:744
Definition: RFitDataPeak.hh:28
virtual Double_t GetFactor(const Int_t pk=0) const
Definition: RFitPeak.cpp:1240
virtual void DrawFctResult(TVirtualPad *pad, const ROptionString &opts="")
Definition: RFitPeak.cpp:2232
static const u_int commonRatio
Definition: RFitPeak.hh:40
virtual void DrawPeak(const Int_t pk, const bool bg=true, const char *opts="")
Definition: RFitPeak.cpp:2026
static Int_t GetStaticPeaksNumber()
Definition: RFitPeak.icc:23
virtual string GetFitText() const
Definition: RFitPeak.cpp:2412
virtual bool IsFixFactorParameter(const Int_t pk) const
Definition: RFitPeak.cpp:1845
virtual Double_t GetBgPar(const Int_t p) const
Definition: RFitPeak.cpp:1050
Double_t RFitPeakFunction(Double_t *x, Double_t *p)
Definition: RFitPeakFunction.cpp:16
virtual void SetAbsTail(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:965
virtual int CalcIntegral(double &val, double &err, const double x1, const double x2, const string opts, const int npts=1000, const double frac=0.1)
Definition: RFitPeak.cpp:2093
virtual void SetFitLimits(const Double_t x1, const Double_t x2)
Definition: RFitPeak.icc:13
Definition: RFitData1D.hh:21
Double_t xbg1
Point de prédéfinition du fond.
Definition: RFitPeak.hh:164
virtual void PresetPeak(const Int_t pk, const Double_t ctr, const Double_t sig=-1.)
Definition: RFitPeak.cpp:1706
virtual void DrawPeakAll(const Int_t pk, const bool bg=true, const char *opts="")
Definition: RFitPeak.cpp:2001
virtual void DrawPeakGaus(const Int_t pk, const bool bg=true, const char *opts="")
Definition: RFitPeak.cpp:2040
static void SetGausLineAtt(const TAttLine att)
Definition: RFitPeak.icc:105
static Int_t peaks_number
Nombre de pics à fitter.
Definition: RFitPeak.hh:143
static Int_t index_ratio[10]
Index des rapports de traine dans la table des paramètres.
Definition: RFitPeak.hh:150
static UInt_t bg_par_number[9]
Table du nombre de paramètres selon le type de fond.
Definition: RFitPeak.hh:141
virtual void PresetBg(const Double_t x1, const Double_t x2=0.)
Definition: RFitPeak.cpp:1628
virtual Double_t GetAbsFactor(const Int_t pk=0) const
Definition: RFitPeak.cpp:1256
virtual bool SetRelativeFactor(const Int_t pk, const Int_t pkref=-1)
Definition: RFitPeak.cpp:482
virtual void DrawBg(const char *opts="")
Definition: RFitPeak.cpp:2066
virtual bool IsFixRatioParameter(const Int_t pk) const
Definition: RFitPeak.cpp:1890
virtual Double_t GetCenter(const Int_t pk=0) const
Definition: RFitPeak.cpp:1082
static TAttLine latt_gaus
Attributs de lignes pour tracé des termes gaussiens.
Definition: RFitPeak.hh:169
virtual RFitData1D * GetFitData()
Definition: RFitPeak.cpp:2647
virtual void SetFitData(const RFitData1D *fit_data)
Definition: RFitPeak.cpp:2672
static Int_t rel_sig[10]
Tableau des valeurs relatives des sigma.
Definition: RFitPeak.hh:154
virtual Int_t GetCenterParIndex(const Int_t pk)
Definition: RFitPeak.icc:63
virtual Double_t GetFactorError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1278
virtual Double_t GetAbsTailError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1518
virtual TH1 * GetPeakTailHisto(const char *name, const Int_t pk, const bool bg=false)
Definition: RFitPeak.cpp:2359
virtual void SetFunction()
Definition: RFitPeak.cpp:1934
virtual void SetBgPar(const Int_t p, const Double_t val)
Definition: RFitPeak.cpp:704
static bool calc_bg
Indique s&#39;il faut calculer le fond.
Definition: RFitPeak.hh:161
virtual Double_t GetAbsRatio(const Int_t pk=0) const
Definition: RFitPeak.cpp:1574
virtual Int_t GetBgParNumber() const
Definition: RFitPeak.hh:201
Definition: RFitBase1D.hh:37
virtual RFitData1D * CreateFitData()
Definition: RFitPeak.cpp:2635
virtual Double_t GetAbsSigma(const Int_t pk=0) const
Definition: RFitPeak.cpp:1193
virtual Double_t GetTail(const Int_t pk=0) const
Definition: RFitPeak.cpp:1465
virtual void FixFactorParameter(const Int_t pk, const bool b=true)
Definition: RFitPeak.cpp:1762
static Int_t rel_tail[10]
Tableau des valeurs relatives des longueurs de traînes.
Definition: RFitPeak.hh:155
virtual bool IsFixSigmaParameter(const Int_t pk) const
Definition: RFitPeak.cpp:1860
virtual Double_t GetAbsFactorError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1295
static const u_int commonTail
Definition: RFitPeak.hh:35
virtual Double_t GetAmplitudeError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1350
virtual void FixSigmaParameter(const Int_t pk, const bool b=true)
Definition: RFitPeak.cpp:1775
virtual Int_t GetFactorParIndex(const Int_t pk)
Definition: RFitPeak.icc:70
virtual Double_t GetCounts(const Int_t pk=0) const
Definition: RFitPeak.cpp:1396
static TAttLine latt_bg
Attributs de lignes pour tracé du fond.
Definition: RFitPeak.hh:171
virtual Double_t GetAbsCenterError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1137
Double_t xbg2
Point de prédéfinition du fond.
Definition: RFitPeak.hh:165
virtual void FixRatioParameter(const Int_t pk, const bool b=true)
Definition: RFitPeak.cpp:1801
static Int_t rel_ratio[10]
Tableau des valeurs relatives des rapports de traînes.
Definition: RFitPeak.hh:156
virtual Int_t LoadFitData(const string &fname)
Definition: RFitPeak.cpp:2701
static const u_int modeCounts
Definition: RFitPeak.hh:26
virtual void SetCenter(const Int_t pk, const Double_t val)
Definition: RFitPeak.cpp:849
static Int_t rel_fact[10]
Tableau des valeurs relatives des constantes (amplitude/surface)
Definition: RFitPeak.hh:153
virtual void FixBgParameter(const Int_t p, const bool b=true)
Definition: RFitPeak.cpp:1736
virtual void FixTailParameter(const Int_t pk, const bool b=true)
Definition: RFitPeak.cpp:1788
#define RPEAK_MAX
Nombre maxi de pics.
Definition: RFitDataPeak.hh:15
static bool calc_gaus
Indique s&#39;il faut calculer les termes gaussiens.
Definition: RFitPeak.hh:159
static Int_t rel_ctr[10]
Tableau des positions relatives des centres.
Definition: RFitPeak.hh:152
const char * rPeakBgName[]
Noms des différents types de fond.
Definition: RFitPeak.cpp:38
static Int_t GetStaticBgType()
Definition: RFitPeak.icc:35
virtual Double_t GetCenterError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1099
virtual Double_t GetCountsError(const Int_t pk=0) const
Definition: RFitPeak.cpp:1423