GWOLLUM 4.2.0
Tools for gravitational-wave analyses
Loading...
Searching...
No Matches
Sample.h
Go to the documentation of this file.
1
6#ifndef __Sample__
7#define __Sample__
8
9#include "Monitor.h"
10#include <TMath.h>
11#include <TObject.h>
12
13#define NORDER 20
14#define NORDERHP 12
15
16using namespace std;
17
24class ZPGFilter {
25
26 friend class IIRFilter;
27
28 public:
29
40 ZPGFilter(const unsigned int aNumZeros, const unsigned int aNumPoles);
41
45 virtual ~ZPGFilter(void);
53 void WToZ(void);
54
61 inline void SetPole(const unsigned int aPoleIndex,
62 const double aPoleRe, const double aPoleIm){
63 poles[0][aPoleIndex] = aPoleRe;
64 poles[1][aPoleIndex] = aPoleIm;
65 }
66
73 inline void SetZero(const unsigned int aZeroIndex,
74 const double aZeroRe, const double aZeroIm){
75 zeros[0][aZeroIndex] = aZeroRe;
76 zeros[1][aZeroIndex] = aZeroIm;
77 }
78
84 inline void SetGain(const double aGainRe, const double aGainIm){
85 gain[0] = aGainRe;
86 gain[1] = aGainIm;
87 }
88
89
90private:
91
92 unsigned int nzeros;
93 unsigned int npoles;
94 double *zeros[2];
95 double *poles[2];
96 double gain[2];
97};
98
99
105
106
107public:
108
117 IIRFilter(ZPGFilter *aZpgFilter);
118
122 virtual ~IIRFilter(void);
132 void Apply(const unsigned int aSize, double *aData);
133
134
135private:
136
137 unsigned int nzeros;
138 unsigned int npoles;
139 double *zeros[2];
140 double *poles[2];
141 double gain[2];
142 unsigned int numDirect;
143 unsigned int numRecurs;
144 double *directCoef;
145 double *recursCoef;
146 double *history;
147 double *history_init;
148
149};
150
162class Sample{
163
164 public:
165
174 Sample(const unsigned int aVerbosity=0);
175
179 virtual ~Sample(void);
187 inline bool GetStatus(void){ return mon->GetStatus(); };
188
208 bool Transform(const unsigned int aInSize, double *aInData, const unsigned int aOutSize, double *aOutData);
209
216 inline void SetDCRemoval(const bool aDCremove=true){ fRemoveDC=aDCremove; };
217
223 inline void SetWindow(const unsigned int aWindowSize, double *aWindow){
224 fWindowSize = aWindowSize;
225 fWindow = aWindow;
226 };
227
231 inline unsigned int GetWindowSize(void){ return fWindowSize; };
232
245 bool SetFrequencies(const unsigned int aNativeFrequency,
246 const unsigned int aWorkingFrequency,
247 const double aHighPassFrequency=0.0);
248
254 inline bool SetNativeFrequency(const int aNativeFrequency){
255 return SetFrequencies(aNativeFrequency,fWorkingFrequency,fHighPassFrequency);
256 };
257
266 inline bool SetWorkingFrequency(const unsigned int aWorkingFrequency){
267 return SetFrequencies(fNativeFrequency,aWorkingFrequency,fHighPassFrequency);
268 };
269
278 inline bool SetHighPassFrequency(const double aHighPassFrequency){
279 return SetFrequencies(fNativeFrequency,fWorkingFrequency,aHighPassFrequency);
280 };
281
285 inline unsigned int GetNativeFrequency(void){ return fNativeFrequency; };
286
290 inline unsigned int GetWorkingFrequency(void){ return fWorkingFrequency; };
291
295 inline double GetHighPassFrequency(void){ return fHighPassFrequency; };
296
297 protected:
298
301 unsigned int fWorkingFrequency;
302 unsigned int fNativeFrequency;
304 double *fWindow;
305 unsigned int fWindowSize;
306
307 private:
308
310 unsigned int fResampleFactor;
314
319 void MakeSamplingFilters(void);
320
325 void MakeHighPassFilters(void);
326
332 void RemoveDC(const unsigned int aSize, double *aData);
333
340 void HighPass(const unsigned int aSize, double *aData);
341
349 void PreSample(unsigned int &aSize, double *aData);
350
360 void Resample(unsigned int aSize, double *aInData, double *aOutData);
361
362 ClassDef(Sample,0)
363};
364
365#endif
366
367
Process monitoring.
#define NORDER
Definition Sample.h:13
#define NORDERHP
Definition Sample.h:14
Produce an infinite impulse response filter.
Definition Sample.h:104
void Apply(const unsigned int aSize, double *aData)
Applies filter.
Definition Sample.cc:714
double * directCoef
The direct filter coefficients.
Definition Sample.h:144
double * recursCoef
The recursive filter coefficients.
Definition Sample.h:145
virtual ~IIRFilter(void)
Destructor of the IIRFilter class.
Definition Sample.cc:701
unsigned int npoles
Number of poles.
Definition Sample.h:138
unsigned int numRecurs
The number of recursive filter coefficients.
Definition Sample.h:143
double * history
The previous values of w.
Definition Sample.h:146
double * history_init
The initial values of w.
Definition Sample.h:147
unsigned int numDirect
The number of direct filter coefficients.
Definition Sample.h:142
double * poles[2]
Poles (complex).
Definition Sample.h:140
unsigned int nzeros
Number of zeros.
Definition Sample.h:137
double gain[2]
Gain (complex).
Definition Sample.h:141
double * zeros[2]
Zeros (complex).
Definition Sample.h:139
Monitor a GWOLLUM processing.
Definition Monitor.h:39
bool GetStatus(void)
Returns the object status.
Definition Monitor.h:109
Transform discrete time series.
Definition Sample.h:162
unsigned int GetWindowSize(void)
Returns the window size (=0 if no windowing).
Definition Sample.h:231
void MakeHighPassFilters(void)
Constructs the highpass filters.
Definition Sample.cc:268
void SetDCRemoval(const bool aDCremove=true)
Activates/Deactivates the DC removal.
Definition Sample.h:216
bool presample
Pre-sample flag.
Definition Sample.h:309
IIRFilter * iirFilter[NORDER]
Downsampling filters.
Definition Sample.h:312
bool SetHighPassFrequency(const double aHighPassFrequency)
Defines a highpass frequency.
Definition Sample.h:278
unsigned int fResampleFactor
Resampling factor (>=1).
Definition Sample.h:310
unsigned int GetNativeFrequency(void)
Returns the current native sampling frequency [Hz].
Definition Sample.h:285
IIRFilter * iirFilterHP[NORDERHP]
Highpass filters.
Definition Sample.h:313
virtual ~Sample(void)
Destructor of the Sample class.
Definition Sample.cc:40
void PreSample(unsigned int &aSize, double *aData)
Pre-samples the data.
Definition Sample.cc:332
bool SetFrequencies(const unsigned int aNativeFrequency, const unsigned int aWorkingFrequency, const double aHighPassFrequency=0.0)
Defines frequencies for the transformation.
Definition Sample.cc:129
unsigned int GetWorkingFrequency(void)
Returns the current working sampling frequency [Hz].
Definition Sample.h:290
void HighPass(const unsigned int aSize, double *aData)
Highpasses the data.
Definition Sample.cc:321
void RemoveDC(const unsigned int aSize, double *aData)
Removes the DC component.
Definition Sample.cc:308
unsigned int fWorkingFrequency
Working sampling frequency.
Definition Sample.h:301
bool SetWorkingFrequency(const unsigned int aWorkingFrequency)
Sets a new working sampling frequency.
Definition Sample.h:266
double GetHighPassFrequency(void)
Returns the current highpass frequency.
Definition Sample.h:295
double fHighPassFrequency
Cutoff frequency.
Definition Sample.h:303
bool fRemoveDC
DC removal flag.
Definition Sample.h:300
unsigned int fIntermediateFrequency
Intermediate sampling frequency.
Definition Sample.h:311
Sample(const unsigned int aVerbosity=0)
Constructor of the Sample class.
bool Transform(const unsigned int aInSize, double *aInData, const unsigned int aOutSize, double *aOutData)
Transforms data.
Definition Sample.cc:50
bool SetNativeFrequency(const int aNativeFrequency)
Sets a new native sampling frequency.
Definition Sample.h:254
void MakeSamplingFilters(void)
Constructs the re-sampling filters.
Definition Sample.cc:211
unsigned int fNativeFrequency
Native sampling frequency.
Definition Sample.h:302
double * fWindow
Window.
Definition Sample.h:304
void SetWindow(const unsigned int aWindowSize, double *aWindow)
Defines the window.
Definition Sample.h:223
void Resample(unsigned int aSize, double *aInData, double *aOutData)
Re-samples the data.
Definition Sample.cc:371
unsigned int fWindowSize
Window size.
Definition Sample.h:305
Monitor * mon
Class monitor.
Definition Sample.h:299
bool GetStatus(void)
Returns the class status.
Definition Sample.h:187
Produce a filter defined by a set of zeros, poles and a gain factor.
Definition Sample.h:24
double * poles[2]
Complex poles.
Definition Sample.h:95
void SetPole(const unsigned int aPoleIndex, const double aPoleRe, const double aPoleIm)
Set a filter pole.
Definition Sample.h:61
unsigned int npoles
Number of poles.
Definition Sample.h:93
void SetZero(const unsigned int aZeroIndex, const double aZeroRe, const double aZeroIm)
Set a filter zero.
Definition Sample.h:73
void SetGain(const double aGainRe, const double aGainIm)
Set a filter gain.
Definition Sample.h:84
virtual ~ZPGFilter(void)
Destructor of the ZPGFilter class.
Definition Sample.cc:419
unsigned int nzeros
Number of zeros.
Definition Sample.h:92
double gain[2]
Complex gain.
Definition Sample.h:96
void WToZ(void)
Move from the W- to Z-plane.
Definition Sample.cc:428
double * zeros[2]
Complex zeros.
Definition Sample.h:94