JG ROOT Tools libraries  version 5.0 - august 2014
RRealSampleFFT.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file RRealSampleFFT.hh
3  *
4  * Include file for class RRealSampleFFT.
5  */
6 //======================================================================
7 
8 #ifndef R_REAL_SAMPLE_FFT_HH
9 #define R_REAL_SAMPLE_FFT_HH
10 
11 //======================================================================
12 #include "GRealSampleFFT.hh"
13 
14 // ROOT include files
15 #include "TGraph.h"
16 #include "TAxis.h"
17 #include "TH1D.h"
18 #include "TF1.h"
19 #include "TRandom3.h"
20 
21 //----------------------------------------------------------------------
22 /*! \class RRealSampleFFT
23  *
24  * This is a class to manage of a real function samples and the
25  * corresponding Fourier transform.
26  *
27  * This class is based on GRealSampleFFT general class, with features
28  * for ROOT.
29  * It defines some information for graphs and histograms to be created
30  * for ROOT.
31  */
32 class RRealSampleFFT : public GRealSampleFFT, public TAttLine, public TAttMarker
33 {
34  //------------------------------------------------------------
35  /*! \object_doc{RRealSampleFFT} */
37  //------------------------------------------------------------
38 
39  using GRealSampleFFT::InitFunctionData;
40  using GRealSampleFFT::SetFunctionData;
41  using GRealSampleFFT::SetFunctionValues;
42 
43  public:
44 
45  string fct_title; ///< Function title
46  string fct_title_x; ///< Function title (X axis)
47  string fct_title_y; ///< Function title (Y axis)
48 
49  string fft_title; ///< Fourier transform title
50  string fft_title_freq; ///< Fourier transform frequency axis title
51  string fft_title_amp; ///< Fourier transform amplitude axis title
52  string fft_title_phase; ///< Fourier transform phase axis title
53  string fft_title_power; ///< Fourier transform power axis title
54  string fft_title_re; ///< Fourier transform real axis title
55  string fft_title_im; ///< Fourier transform imaginary axis title
56 
57  protected:
58 
59  public:
60  // Constructors
61  RRealSampleFFT ( const u_int n = 0, const double dt = 1.L );
62  RRealSampleFFT ( const RRealSampleFFT & original );
63  RRealSampleFFT ( const GRealSampleFFT & original );
64 
65  // Constructors setting function samples
66  RRealSampleFFT ( const u_int n, const double data [] );
67  RRealSampleFFT ( const u_int n, const double t_lo, const double t_hi,
68  const double data [], bool ctr = false );
69  RRealSampleFFT ( const u_int n, const double t_lo, const double t_hi,
70  double (*fct_ptr) ( const double, const double [] ),
71  const double fct_par[], bool ctr = false );
72  RRealSampleFFT ( const u_int n, const double t_lo, const double t_hi,
73  double (*fct_ptr) ( const double [], const double [] ),
74  const double fct_par[], bool ctr = false );
75  RRealSampleFFT ( const u_int n, const double t_lo, const double t_hi,
76  TF1 * fct, bool ctr = false );
77  RRealSampleFFT ( TH1 * hptr );
78 
79  // Constructors setting Fourier transform
80  RRealSampleFFT ( const u_int n, const double data_re[], const double data_im[] );
81 
82  // Affectation
83  RRealSampleFFT & operator = ( const RRealSampleFFT & original );
84 
85  // Destructors
86  virtual ~RRealSampleFFT ( );
87 
88 
89  //----------------------------------------------------------
90  // Functions to set data from function sample
91  virtual void InitFunctionData ( const u_int n,
92  const double t_lo, const double t_hi,
93  TF1 * fct, bool ctr = false );
94  virtual void InitFunctionData ( TH1 * hptr );
95 
96  virtual void SetFunctionData ( TF1 * fct );
97 
98  virtual void FillRandomGaus ( double mean, double fwhm, TRandom * rnd = NULL );
99  virtual void FillRandomGaus ( double fwhm, TRandom * rnd = NULL );
100 
101  virtual int SetFunctionValues ( u_int i1, u_int i2, TF1 * fct );
102 
103  //----------------------------------------------------------
104  void SetDefaultValues ( );
105  void SetColor ( const Color_t col );
106  void SetFunctionTitles ( const char tit [] = "",
107  const char tit_x[] = "",
108  const char tit_y[] = "" );
109 
110  void SetTransformTitles ( const char tit [] = "",
111  const char tit_f [] = "",
112  const char tit_amp[] = "",
113  const char tit_ph [] = "",
114  const char tit_pow[] = "" );
115 
116  void SetTransformComplexTitles ( const char tit_re[] = "",
117  const char tit_im[] = "" );
118 
119  TGraph * CreateFunctionGraph ( double scale = 1.L );
120  TGraph * CreateTransformGraph ( double scale = 1.L );
121  TGraph * CreateTrfAmpliGraph ( double scale = 1.L );
122  TGraph * CreateTrfPhaseGraph ( bool deg = false );
123  TGraph * CreatePowerGraph ( double scale = 1.L );
124 
125  TH1D * CreateFunctionHisto ( const string & name, double scale = 1.L );
126  int FillFunctionHisto ( TH1D * hptr, double scale = 1.L, bool reset = true );
127 
128 
129  //----------------------------------------------------------
130  // Arithmetic operators
131  // (they need to be redefined from GRealSampleFFT, but I do not
132  // understand why...)
133 
138  RRealSampleFFT operator * ( double r );
139  RRealSampleFFT operator / ( double r );
140  RRealSampleFFT operator + ( double r );
141  RRealSampleFFT operator - ( double r );
142 
143  //----------------------------------------------------------
144  protected:
145  // Functions for internal use
146  void CopyData ( const RRealSampleFFT & original );
147 
148 
149  public:
150 
151  //----------------------------------------------------------
152  /*! for use within ROOT.*/
154 };
155 
156 //======================================================================
157 // Inline functions
158 #include "icc/RRealSampleFFT.icc"
159 
160 
161 //======================================================================
162 #endif
string fct_title
Function title.
Definition: RRealSampleFFT.hh:45
void SetTransformComplexTitles(const char tit_re[]="", const char tit_im[]="")
Definition: RRealSampleFFT.icc:52
RRealSampleFFT & operator=(const RRealSampleFFT &original)
Definition: RRealSampleFFT.cpp:200
string fft_title
Fourier transform title.
Definition: RRealSampleFFT.hh:49
RRealSampleFFT(const u_int n=0, const double dt=1.L)
Definition: RRealSampleFFT.cpp:21
string fft_title_im
Fourier transform imaginary axis title.
Definition: RRealSampleFFT.hh:55
TGraph * CreateTrfAmpliGraph(double scale=1.L)
Definition: RRealSampleFFT.cpp:568
Definition: RRealSampleFFT.hh:32
virtual ~RRealSampleFFT()
Definition: RRealSampleFFT.cpp:217
string fft_title_freq
Fourier transform frequency axis title.
Definition: RRealSampleFFT.hh:50
TGraph * CreatePowerGraph(double scale=1.L)
Definition: RRealSampleFFT.cpp:697
virtual int SetFunctionValues(u_int i1, u_int i2, TF1 *fct)
Definition: RRealSampleFFT.cpp:426
void SetTransformTitles(const char tit[]="", const char tit_f[]="", const char tit_amp[]="", const char tit_ph[]="", const char tit_pow[]="")
Definition: RRealSampleFFT.icc:34
TGraph * CreateTransformGraph(double scale=1.L)
Definition: RRealSampleFFT.cpp:507
string fft_title_amp
Fourier transform amplitude axis title.
Definition: RRealSampleFFT.hh:51
virtual void SetFunctionData(TF1 *fct)
Definition: RRealSampleFFT.cpp:347
RRealSampleFFT operator+(RRealSampleFFT &s)
Definition: RRealSampleFFT.icc:103
TH1D * CreateFunctionHisto(const string &name, double scale=1.L)
Definition: RRealSampleFFT.cpp:756
void SetColor(const Color_t col)
Definition: RRealSampleFFT.icc:12
int FillFunctionHisto(TH1D *hptr, double scale=1.L, bool reset=true)
Definition: RRealSampleFFT.cpp:815
string fft_title_power
Fourier transform power axis title.
Definition: RRealSampleFFT.hh:53
TGraph * CreateTrfPhaseGraph(bool deg=false)
Definition: RRealSampleFFT.cpp:632
void SetFunctionTitles(const char tit[]="", const char tit_x[]="", const char tit_y[]="")
Definition: RRealSampleFFT.icc:21
void SetDefaultValues()
Definition: RRealSampleFFT.icc:57
virtual void FillRandomGaus(double mean, double fwhm, TRandom *rnd=NULL)
Definition: RRealSampleFFT.cpp:385
string fct_title_y
Function title (Y axis)
Definition: RRealSampleFFT.hh:47
void CopyData(const RRealSampleFFT &original)
Definition: RRealSampleFFT.cpp:231
string fct_title_x
Function title (X axis)
Definition: RRealSampleFFT.hh:46
virtual void InitFunctionData(const u_int n, const double t_lo, const double t_hi, TF1 *fct, bool ctr=false)
Definition: RRealSampleFFT.cpp:268
string fft_title_re
Fourier transform real axis title.
Definition: RRealSampleFFT.hh:54
RRealSampleFFT operator*(RRealSampleFFT &s)
Definition: RRealSampleFFT.icc:119
GObject(RRealSampleFFT)
string fft_title_phase
Fourier transform phase axis title.
Definition: RRealSampleFFT.hh:52
RRealSampleFFT operator/(RRealSampleFFT &s)
Definition: RRealSampleFFT.icc:127
TGraph * CreateFunctionGraph(double scale=1.L)
Definition: RRealSampleFFT.cpp:452
RRealSampleFFT operator-(RRealSampleFFT &s)
Definition: RRealSampleFFT.icc:111
ClassDef(RRealSampleFFT, 0)