next step towards Fourier

This commit is contained in:
nemu
2008-12-23 16:24:26 +00:00
parent 4a832f6fe8
commit ce9f98c37d
9 changed files with 708 additions and 204 deletions

View File

@ -34,53 +34,45 @@
#include "fftw3.h"
#define F_ESTIMATE_N0_AND_BKG true
#define F_SINGLE_HISTO_RAW 0
#define F_SINGLE_HISTO 1
#define F_ASYMMETRY 2
#define F_APODIZATION_NONE 0
#define F_APODIZATION_WEAK 1
#define F_APODIZATION_MEDIUM 2
#define F_APODIZATION_STRONG 3
// gamma_muon / (2 pi) = 1.355342e-5 (GHz/G)
#define F_GAMMA_BAR_MUON 1.355342e-5
// gamma_muon / (2 pi) = 1.355342e-2 (MHz/G)
#define F_GAMMA_BAR_MUON 1.355342e-2
class PFourier
{
public:
PFourier(int dataType, TH1F *data,
PFourier(TH1F *data, int unitTag,
double startTime = 0.0, double endTime = 0.0,
unsigned int zeroPaddingPower = 0,
bool estimateN0AndBkg = false);
unsigned int zeroPaddingPower = 0);
virtual ~PFourier();
virtual void Transform(unsigned int apodizationTag = 0);
virtual double GetFieldResolution() { return fFieldResolution; }
virtual void GetRealFourier(TH1F *realFourier);
virtual void GetImaginaryFourier(TH1F *imaginaryFourier);
virtual double GetResolution() { return fResolution; }
virtual TH1F* GetRealFourier(const double scale = 1.0);
virtual TH1F* GetImaginaryFourier(const double scale = 1.0);
virtual TH1F* GetPowerFourier(const double scale = 1.0);
virtual TH1F* GetPhaseFourier(const double scale = 1.0);
virtual bool IsValid() { return fValid; }
private:
TH1F *fData;
bool fValid;
int fUnitTag; ///< 1=Field Units (G), 2=Frequency Units (MHz), 3=Angular Frequency Units (Mc/s)
int fDataType; ///< 0=Single Histo Raw, 1=Single Histo Life Time Corrected, 2=Asymmetry
int fApodization; ///< 0=none, 1=weak, 2=medium, 3=strong
double fN0;
double fBkg;
double fTimeResolution;
double fStartTime;
double fEndTime;
unsigned int fZeroPaddingPower;
double fFieldResolution;
TH1F *fData;
double fResolution;
unsigned int fNoOfData;
unsigned int fNoOfBins;
@ -88,10 +80,8 @@ class PFourier
fftw_complex *fIn;
fftw_complex *fOut;
virtual void PrepareSingleHistoFFTwInputData(unsigned int apodizationTag);
virtual void PrepareFFTwInputData(unsigned int apodizationTag);
virtual void ApodizeData(int apodizationTag);
virtual void EstimateN0AndBkg();
};
#endif // _PFOURIER_H_