musrfit 1.10.0
PFourier Class Reference

#include <PFourier.h>

Public Member Functions

 PFourier (TH1F *data, Int_t unitTag, Double_t startTime=0.0, Double_t endTime=0.0, Bool_t dcCorrected=false, UInt_t zeroPaddingPower=0)
 
virtual ~PFourier ()
 
virtual void Transform (UInt_t apodizationTag=0)
 
virtual const char * GetDataTitle ()
 
virtual const Int_t GetUnitTag ()
 
virtual Double_t GetResolution ()
 
virtual Double_t GetMaxFreq ()
 
virtual TH1F * GetRealFourier (const Double_t scale=1.0)
 
virtual TH1F * GetImaginaryFourier (const Double_t scale=1.0)
 
virtual TH1F * GetPowerFourier (const Double_t scale=1.0)
 
virtual TH1F * GetPhaseFourier (const Double_t scale=1.0)
 
virtual Bool_t IsValid ()
 

Static Public Member Functions

static TH1F * GetPhaseOptRealFourier (const TH1F *re, const TH1F *im, std::vector< Double_t > &phase, const Double_t scale=1.0, const Double_t min=-1.0, const Double_t max=-1.0)
 

Private Member Functions

virtual void PrepareFFTwInputData (UInt_t apodizationTag)
 
virtual void ApodizeData (Int_t apodizationTag)
 

Private Attributes

TH1F * fData
 data histogram to be Fourier transformed.
 
Bool_t fValid
 true = all boundary conditions fullfilled and hence a Fourier transform can be performed.
 
Int_t fUnitTag
 1=Field Units (G), 2=Field Units (T), 3=Frequency Units (MHz), 4=Angular Frequency Units (Mc/s)
 
Int_t fApodization
 0=none, 1=weak, 2=medium, 3=strong
 
Double_t fTimeResolution
 time resolution of the data histogram in (us)
 
Double_t fStartTime
 start time of the data histogram
 
Double_t fEndTime
 end time of the data histogram
 
Bool_t fDCCorrected
 if true, removed DC offset from signal before Fourier transformation, otherwise not
 
UInt_t fZeroPaddingPower
 power for zero padding, if set < 0 no zero padding will be done
 
Double_t fResolution
 Fourier resolution (field, frequency, or angular frequency)
 
UInt_t fNoOfData
 number of bins in the time interval between fStartTime and fStopTime
 
UInt_t fNoOfBins
 number of bins to be Fourier transformed. Might be different to fNoOfData due to zero padding
 
fftw_plan fFFTwPlan
 fftw plan (see FFTW3 User Manual)
 
fftw_complex * fIn
 real part of the Fourier transform
 
fftw_complex * fOut
 imaginary part of the Fourier transform
 

Detailed Description

Fourier transform engine for μSR time-domain data.

PFourier converts time-domain μSR signals to frequency domain, revealing:

  • Muon precession frequencies (field measurements)
  • Internal field distributions (superconductors, magnets)
  • Multiple muon stopping sites
  • Dynamic frequency fluctuations

Key features:

  • Uses FFTW3 library for efficient FFT computation
  • DC offset removal (for baseline correction)
  • Zero-padding (improves frequency interpolation)
  • Apodization/windowing (reduces spectral leakage)
  • Multiple output formats (real, imaginary, power, phase)
  • Unit conversion (field ↔ frequency)

Workflow:

  1. Create PFourier with time histogram and settings
  2. Call Transform() with desired apodization
  3. Retrieve results: GetRealFourier(), GetPowerFourier(), etc.

Unit conversions:

  • Gauss: ω(MHz) = γ_μ/(2π) × B(G) = 0.01355 × B(G)
  • Tesla: ω(MHz) = γ_μ/(2π) × B(T) = 135.54 × B(T)

Example: TF-μSR measurement at 100 G produces a peak at ~1.36 MHz in the Fourier spectrum.

Definition at line 201 of file PFourier.h.

Constructor & Destructor Documentation

◆ PFourier()

PFourier::PFourier ( TH1F * data,
Int_t unitTag,
Double_t startTime = 0.0,
Double_t endTime = 0.0,
Bool_t dcCorrected = false,
UInt_t zeroPaddingPower = 0 )

Constructor for Fourier transformation.

Parameters
dataTime histogram to transform
unitTagOutput units (1=Gauss, 2=Tesla, 3=MHz, 4=Mc/s)
startTimeStart time for transform in microseconds (0=from t0)
endTimeEnd time for transform in microseconds (0=to end)
dcCorrectedIf true, remove DC offset before FFT
zeroPaddingPowerZero-pad to 2^N points (0=no padding)

Constructor for Fourier transform engine.

Creates a PFourier object configured to transform μSR time-domain data to frequency/field domain. The constructor validates inputs, allocates FFTW resources, and prepares for FFT computation.

Parameters
dataTH1F histogram containing time-domain μSR signal. X-axis: time in microseconds, Y-axis: asymmetry or counts.
unitTagOutput units for frequency axis:
  • FOURIER_UNIT_GAUSS (1): Magnetic field in Gauss
  • FOURIER_UNIT_TESLA (2): Magnetic field in Tesla
  • FOURIER_UNIT_FREQ (3): Frequency in MHz
  • FOURIER_UNIT_CYCLES (4): Angular frequency in Mc/s (Mrad/s)
startTimeStart of transform window in μs (0.0 = from t₀). Default: 0.0
endTimeEnd of transform window in μs (0.0 = to end). Default: 0.0
dcCorrectedIf true, remove DC offset before FFT to eliminate zero-frequency artifact. Default: false
zeroPaddingPowerZero-pad to 2^N points where N=zeroPaddingPower. Value 0 disables padding. Padding improves frequency interpolation but doesn't add information. Default: 0

Unit conversions (using γ_μ/2π = 0.01355 MHz/G):

  • Gauss: B(G) = ω(MHz) / 0.01355
  • Tesla: B(T) = ω(MHz) / 135.54

Example usage:

TH1F *timeHisto = ...; // μSR time spectrum
PFourier ft(timeHisto, FOURIER_UNIT_GAUSS, 0.1, 10.0, true, 12);
ft.Transform(F_APODIZATION_WEAK);
TH1F *powerSpec = ft.GetPowerFourier();
#define F_APODIZATION_WEAK
Weak apodization (gentle roll-off at edges)
Definition PFourier.h:55
#define FOURIER_UNIT_GAUSS
Magnetic field in Gauss (G)
Definition PMusr.h:286
PFourier(TH1F *data, Int_t unitTag, Double_t startTime=0.0, Double_t endTime=0.0, Bool_t dcCorrected=false, UInt_t zeroPaddingPower=0)
Definition PFourier.cpp:482

After construction, check IsValid() before calling Transform().

See also
Transform()
IsValid()

Definition at line 482 of file PFourier.cpp.

References F_APODIZATION_NONE, fApodization, fData, fDCCorrected, fEndTime, fFFTwPlan, fIn, fNoOfBins, fNoOfData, FOURIER_UNIT_CYCLES, FOURIER_UNIT_FREQ, FOURIER_UNIT_GAUSS, FOURIER_UNIT_TESLA, fOut, fResolution, fStartTime, fTimeResolution, fUnitTag, fValid, fZeroPaddingPower, GAMMA_BAR_MUON, and PI.

◆ ~PFourier()

PFourier::~PFourier ( )
virtual

Destructor - cleans up FFTW resources.

Releases all FFTW-allocated memory and destroys the FFT plan. Proper cleanup is essential to avoid memory leaks, as FFTW uses special aligned memory allocation.

Resources freed:

  • fFFTwPlan: FFTW execution plan
  • fIn: Input array (time-domain data)
  • fOut: Output array (frequency-domain data)

Definition at line 584 of file PFourier.cpp.

References fFFTwPlan, fIn, and fOut.

Member Function Documentation

◆ ApodizeData()

void PFourier::ApodizeData ( Int_t apodizationTag)
privatevirtual

Applies apodization (windowing) to time-domain data before FFT.

Purpose: Apodization multiplies the time signal by a smooth window function that tapers to zero at the edges, reducing the Gibbs phenomenon (spectral leakage) caused by finite observation windows.

Trade-off:

  • Advantage: Sharper, cleaner frequency peaks with less sidelobes
  • Disadvantage: Slightly broader main peaks, reduced amplitude accuracy

Window functions: Polynomial windows of the form: w(t) = Σ c_j·(t/T)^(2j) where t ∈ [0,T]

Three predefined window strengths with optimized coefficients:

  • Weak: Minimal smoothing, preserves amplitude
  • Medium: Balanced smoothing for general use
  • Strong: Maximum leakage suppression for crowded spectra
Parameters
apodizationTagWindow function type:
  • F_APODIZATION_NONE: No windowing (rectangular)
  • F_APODIZATION_WEAK: Gentle taper
  • F_APODIZATION_MEDIUM: Moderate taper
  • F_APODIZATION_STRONG: Heavy taper

Window is applied in-place to fIn[] array.

See also
PrepareFFTwInputData()

Definition at line 1226 of file PFourier.cpp.

References F_APODIZATION_MEDIUM, F_APODIZATION_NONE, F_APODIZATION_STRONG, F_APODIZATION_WEAK, fIn, and fNoOfData.

Referenced by PrepareFFTwInputData().

◆ GetDataTitle()

virtual const char * PFourier::GetDataTitle ( )
inlinevirtual

Returns the original data histogram title

Returns
Title string

Definition at line 232 of file PFourier.h.

References fData.

◆ GetImaginaryFourier()

TH1F * PFourier::GetImaginaryFourier ( const Double_t scale = 1.0)
virtual

Gets imaginary part of Fourier transform as histogram.

Parameters
scaleScaling factor for amplitudes (default=1.0)
Returns
Pointer to TH1F histogram (caller must delete)

Returns imaginary part of Fourier transform as ROOT histogram.

The imaginary component represents the out-of-phase (sine) projection of the signal. Ideally zero for perfect phase correction, but contains signal information when phase is uncorrected.

Uses:

  • Phase correction optimization (minimize imaginary component)
  • Dispersion-mode spectroscopy
  • Computing power spectrum: |F|² = Re² + Im²
  • Phase spectrum calculation: φ = atan(Im/Re)

Histogram covers [0, f_Nyquist] with N/2 bins where N is the FFT size (including zero padding if applied).

Parameters
scaleMultiplication factor applied to all amplitudes. Use for normalization or unit conversion. Default: 1.0
Returns
Pointer to newly allocated TH1F histogram. Caller owns the histogram and must delete it. Returns nullptr on error.
See also
GetRealFourier()
GetPhaseOptRealFourier()

Definition at line 931 of file PFourier.cpp.

References fData, fNoOfBins, fOut, fResolution, and fValid.

Referenced by PMusrCanvas::HandleDifferenceFourier(), and PMusrCanvas::HandleFourier().

◆ GetMaxFreq()

Double_t PFourier::GetMaxFreq ( )
virtual

Returns the maximum frequency (Nyquist frequency).

Returns
Maximum frequency in output units

Returns the maximum frequency (Nyquist frequency) of the spectrum.

The Nyquist frequency is the highest frequency that can be unambiguously represented given the time resolution: f_Nyquist = 1 / (2·Δt)

Higher frequencies are aliased back into the [0, f_Nyquist] range, so the useful spectrum extends from 0 to f_Nyquist.

Returns
Maximum frequency in units specified by fUnitTag:
  • Gauss (if FOURIER_UNIT_GAUSS)
  • Tesla (if FOURIER_UNIT_TESLA)
  • MHz (if FOURIER_UNIT_FREQ)
  • Mc/s (if FOURIER_UNIT_CYCLES)

Example: For time resolution Δt = 0.01 μs: f_Nyquist = 1/(2×0.01) = 50 MHz ≈ 3690 Gauss

See also
GetResolution()

Definition at line 685 of file PFourier.cpp.

References fNoOfBins, and fResolution.

◆ GetPhaseFourier()

TH1F * PFourier::GetPhaseFourier ( const Double_t scale = 1.0)
virtual

Gets phase spectrum arg(F(ω)) as histogram.

Parameters
scaleScaling factor (default=1.0)
Returns
Pointer to TH1F histogram (caller must delete)

Returns phase spectrum φ(ω) = arg(F) as ROOT histogram.

The phase spectrum shows the phase angle of the complex Fourier transform at each frequency: φ(ω) = atan2(Im, Re)

Range: Phase values are in [-π, +π] radians, with proper quadrant handling using the two-argument arctangent.

Interpretation:

  • Constant phase: All frequencies in phase (simple exponential decay)
  • Linear phase: Time-zero offset (shift theorem)
  • Quadratic phase: Dispersion or chirp
  • Random phase: Noise

Applications:

  • Diagnosing time-zero problems
  • Verifying phase correction quality
  • Identifying signal vs. noise regions

Histogram covers [0, f_Nyquist] with N/2 bins where N is the FFT size (including zero padding if applied).

Parameters
scaleMultiplication factor applied to phase values. Typically 1.0 (radians) or 180/π (degrees). Default: 1.0
Returns
Pointer to newly allocated TH1F histogram. Caller owns the histogram and must delete it. Returns nullptr on error.

Note: Phase is undefined where amplitude is zero. In practice, phase values in noise regions are meaningless.

See also
GetRealFourier()
GetImaginaryFourier()

Definition at line 1073 of file PFourier.cpp.

References fData, fNoOfBins, fOut, fResolution, fValid, PI, and PI_HALF.

Referenced by PMusrCanvas::HandleDifferenceFourier(), and PMusrCanvas::HandleFourier().

◆ GetPhaseOptRealFourier()

TH1F * PFourier::GetPhaseOptRealFourier ( const TH1F * re,
const TH1F * im,
std::vector< Double_t > & phase,
const Double_t scale = 1.0,
const Double_t min = -1.0,
const Double_t max = -1.0 )
static

Static method for phase-optimized real Fourier spectrum.

Applies phase correction to maximize real component using provided phase parameters.

Parameters
reReal part of Fourier transform
imImaginary part of Fourier transform
phasePhase correction parameters [c₀, c₁]
scaleScaling factor (default=1.0)
minMinimum frequency for correction (-1=all)
maxMaximum frequency for correction (-1=all)
Returns
Pointer to phase-corrected TH1F histogram

Returns phase-optimized real Fourier spectrum (static method).

This static method performs automatic phase correction on a complex Fourier spectrum to maximize the real component (absorption mode) while minimizing the imaginary component. The algorithm finds optimal phase parameters φ(ω) = c₀ + c₁·ω that produce the cleanest real spectrum.

Why phase correction? Raw FFT produces mixed-phase spectra with arbitrary phase offsets due to:

  • Uncertain time-zero (t₀) determination
  • Detector timing offsets
  • Signal propagation delays

Algorithm:

  1. Extract Re/Im data in specified frequency range [min, max]
  2. Use PFTPhaseCorrection to minimize entropy+penalty functional
  3. Apply optimal phase rotation to entire spectrum
  4. Return phase-corrected real part

Optimization range [min, max]: Restrict to signal-containing regions for best results. Including noisy baseline degrades optimization.

Parameters
reReal part of Fourier transform (TH1F histogram)
imImaginary part of Fourier transform (TH1F histogram)
phaseOutput parameter: phase[0]=c₀, phase[1]=c₁ (vector resized to 2)
scaleAmplitude scaling factor. Default: 1.0
minMinimum frequency/field for optimization window. Use -1.0 to include all frequencies. Default: -1.0
maxMaximum frequency/field for optimization window. Use -1.0 to include all frequencies. Default: -1.0
Returns
Pointer to newly allocated phase-corrected TH1F histogram. Caller owns and must delete. Returns nullptr on error.

Example:

TH1F *real = ft.GetRealFourier();
TH1F *imag = ft.GetImaginaryFourier();
std::vector<Double_t> phaseParams;
TH1F *phCorrected = PFourier::GetPhaseOptRealFourier(real, imag, phaseParams, 1.0, 5.0, 50.0);
std::cout << "Phase: " << phaseParams[0] << " + " << phaseParams[1] << "*w" << std::endl;
phCorrected->Draw();
delete real; delete imag; delete phCorrected;
static TH1F * GetPhaseOptRealFourier(const TH1F *re, const TH1F *im, std::vector< Double_t > &phase, const Double_t scale=1.0, const Double_t min=-1.0, const Double_t max=-1.0)
Definition PFourier.cpp:817
See also
PFTPhaseCorrection
GetRealFourier()
GetImaginaryFourier()

Definition at line 817 of file PFourier.cpp.

References PFTPhaseCorrection::GetPhaseCorrectionParam(), PFTPhaseCorrection::IsValid(), and PFTPhaseCorrection::Minimize().

Referenced by PMusrCanvas::CalcPhaseOptReFT().

◆ GetPowerFourier()

TH1F * PFourier::GetPowerFourier ( const Double_t scale = 1.0)
virtual

Gets power spectrum |F(ω)|² as histogram.

Power spectrum is always positive and shows signal strength at each frequency, useful for identifying dominant frequencies.

Parameters
scaleScaling factor for power (default=1.0)
Returns
Pointer to TH1F histogram (caller must delete)

Returns power spectrum |F(ω)| as ROOT histogram.

The power spectrum shows signal magnitude at each frequency, computed as: |F(ω)| = √(Re² + Im²)

Advantages:

  • Always positive (easier interpretation)
  • Phase-independent (no phase correction needed)
  • Directly shows signal strength vs. frequency
  • Ideal for identifying all frequency components

Applications:

  • Quick survey of frequency content
  • Field distribution analysis in superconductors
  • Multiple muon site identification
  • TF-μSR field measurements

Histogram covers [0, f_Nyquist] with N/2 bins where N is the FFT size (including zero padding if applied).

Parameters
scaleMultiplication factor applied to all amplitudes. Use for normalization or unit conversion. Default: 1.0
Returns
Pointer to newly allocated TH1F histogram. Caller owns the histogram and must delete it. Returns nullptr on error.

Note: This returns the amplitude |F|, not the power |F|². For power values, square the histogram contents.

See also
GetRealFourier()
GetPhaseFourier()

Definition at line 1001 of file PFourier.cpp.

References fData, fNoOfBins, fOut, fResolution, and fValid.

Referenced by PMusrCanvas::HandleDifferenceFourier(), and PMusrCanvas::HandleFourier().

◆ GetRealFourier()

TH1F * PFourier::GetRealFourier ( const Double_t scale = 1.0)
virtual

Gets real part of Fourier transform as histogram.

Parameters
scaleScaling factor for amplitudes (default=1.0)
Returns
Pointer to TH1F histogram (caller must delete)

Returns real part of Fourier transform as ROOT histogram.

The real component represents the in-phase (cosine) projection of the signal. Without phase correction, both positive and negative values typically appear due to arbitrary phase offsets.

Interpretation:

  • Phase-corrected: Absorption-mode spectrum (predominantly positive)
  • Uncorrected: Mixed-phase spectrum (positive + negative regions)

Histogram covers [0, f_Nyquist] with N/2 bins where N is the FFT size (including zero padding if applied).

Parameters
scaleMultiplication factor applied to all amplitudes. Use for normalization or unit conversion. Default: 1.0
Returns
Pointer to newly allocated TH1F histogram. Caller owns the histogram and must delete it. Returns nullptr on error.

Example:

ft.Transform(F_APODIZATION_WEAK);
TH1F *realSpec = ft.GetRealFourier(1.0);
realSpec->Draw();
// ... use histogram ...
delete realSpec;
See also
GetImaginaryFourier()
GetPhaseOptRealFourier()

Definition at line 731 of file PFourier.cpp.

References fData, fNoOfBins, fOut, fResolution, and fValid.

Referenced by PMusrCanvas::HandleDifferenceFourier(), and PMusrCanvas::HandleFourier().

◆ GetResolution()

virtual Double_t PFourier::GetResolution ( )
inlinevirtual

Returns the frequency resolution (bin width in output units)

Returns
Frequency resolution

Definition at line 240 of file PFourier.h.

References fResolution.

◆ GetUnitTag()

virtual const Int_t PFourier::GetUnitTag ( )
inlinevirtual

Returns the output unit tag (1=G, 2=T, 3=MHz, 4=Mc/s)

Returns
Unit identifier

Definition at line 236 of file PFourier.h.

References fUnitTag.

◆ IsValid()

virtual Bool_t PFourier::IsValid ( )
inlinevirtual

Returns true if Fourier transform is ready

Returns
Validity status

Definition at line 303 of file PFourier.h.

References fValid.

Referenced by PMusrCanvas::HandleDifferenceFourier(), and PMusrCanvas::HandleFourier().

◆ PrepareFFTwInputData()

void PFourier::PrepareFFTwInputData ( UInt_t apodizationTag)
privatevirtual

Prepares time-domain data for FFT with optional DC correction and apodization.

This method performs essential preprocessing steps:

  1. Locates time-zero bin in the histogram
  2. Extracts data from [fStartTime, fEndTime] window
  3. Removes DC offset (if fDCCorrected=true) for baseline correction
  4. Zero-pads to fNoOfBins (power of 2 for optimal FFT performance)
  5. Applies apodization window to reduce spectral leakage

DC Correction: Subtracts mean value from time signal to remove constant offset, which would otherwise create a large artifact at zero frequency.

Zero Padding: Increases frequency resolution by interpolation without adding information content. Often used for smoother spectra.

Parameters
apodizationTagWindow function strength:
  • F_APODIZATION_NONE (1): Rectangular window (no smoothing)
  • F_APODIZATION_WEAK (2): Gentle roll-off at edges
  • F_APODIZATION_MEDIUM (3): Moderate smoothing
  • F_APODIZATION_STRONG (4): Heavy smoothing for maximum leakage suppression

Result is stored in fIn[] array ready for FFTW execution.

See also
ApodizeData()
Transform()

Definition at line 1155 of file PFourier.cpp.

References ApodizeData(), fData, fDCCorrected, fIn, fNoOfBins, fNoOfData, fStartTime, and fTimeResolution.

Referenced by Transform().

◆ Transform()

void PFourier::Transform ( UInt_t apodizationTag = 0)
virtual

Performs the Fourier transformation.

Applies optional apodization, computes FFT using FFTW3, and prepares output histograms in requested units.

Parameters
apodizationTagApodization strength (0/1=none, 2=weak, 3=medium, 4=strong)

Executes the Fourier transform with optional apodization.

This is the main workhorse method that performs the complete FFT pipeline:

  1. Prepare input data (DC correction, zero padding)
  2. Apply apodization window if requested
  3. Execute FFTW plan (compute FFT)
  4. Correct phase for non-zero start time

Phase correction: If fStartTime ≠ 0, applies phase shift e^(i·ω·t₀) to account for the time-zero offset. This ensures proper phase relationships in the frequency spectrum.

Apodization: Window functions reduce spectral leakage (Gibbs phenomenon) at the cost of slight peak broadening:

  • NONE: Best amplitude accuracy, worst leakage
  • WEAK: Minimal smoothing
  • MEDIUM: Balanced (recommended for most cases)
  • STRONG: Maximum leakage suppression
Parameters
apodizationTagWindow function strength:
  • 0 or F_APODIZATION_NONE: No windowing
  • 1 or F_APODIZATION_WEAK: Gentle taper
  • 2 or F_APODIZATION_MEDIUM: Moderate taper
  • 3 or F_APODIZATION_STRONG: Heavy taper

After calling Transform(), retrieve results using: GetRealFourier(), GetImaginaryFourier(), GetPowerFourier(), GetPhaseFourier()

See also
PrepareFFTwInputData()
GetPowerFourier()

Definition at line 632 of file PFourier.cpp.

References fData, fFFTwPlan, fNoOfBins, fOut, fStartTime, fTimeResolution, fValid, PI, and PrepareFFTwInputData().

Referenced by PMusrCanvas::HandleDifferenceFourier(), and PMusrCanvas::HandleFourier().

Member Data Documentation

◆ fApodization

Int_t PFourier::fApodization
private

0=none, 1=weak, 2=medium, 3=strong

Definition at line 311 of file PFourier.h.

Referenced by PFourier().

◆ fData

TH1F* PFourier::fData
private

data histogram to be Fourier transformed.

Definition at line 306 of file PFourier.h.

Referenced by GetDataTitle(), GetImaginaryFourier(), GetPhaseFourier(), GetPowerFourier(), GetRealFourier(), PFourier(), PrepareFFTwInputData(), and Transform().

◆ fDCCorrected

Bool_t PFourier::fDCCorrected
private

if true, removed DC offset from signal before Fourier transformation, otherwise not

Definition at line 316 of file PFourier.h.

Referenced by PFourier(), and PrepareFFTwInputData().

◆ fEndTime

Double_t PFourier::fEndTime
private

end time of the data histogram

Definition at line 315 of file PFourier.h.

Referenced by PFourier().

◆ fFFTwPlan

fftw_plan PFourier::fFFTwPlan
private

fftw plan (see FFTW3 User Manual)

Definition at line 322 of file PFourier.h.

Referenced by PFourier(), Transform(), and ~PFourier().

◆ fIn

fftw_complex* PFourier::fIn
private

real part of the Fourier transform

Definition at line 323 of file PFourier.h.

Referenced by ApodizeData(), PFourier(), PrepareFFTwInputData(), and ~PFourier().

◆ fNoOfBins

UInt_t PFourier::fNoOfBins
private

number of bins to be Fourier transformed. Might be different to fNoOfData due to zero padding

Definition at line 321 of file PFourier.h.

Referenced by GetImaginaryFourier(), GetMaxFreq(), GetPhaseFourier(), GetPowerFourier(), GetRealFourier(), PFourier(), PrepareFFTwInputData(), and Transform().

◆ fNoOfData

UInt_t PFourier::fNoOfData
private

number of bins in the time interval between fStartTime and fStopTime

Definition at line 320 of file PFourier.h.

Referenced by ApodizeData(), PFourier(), and PrepareFFTwInputData().

◆ fOut

fftw_complex* PFourier::fOut
private

imaginary part of the Fourier transform

Definition at line 324 of file PFourier.h.

Referenced by GetImaginaryFourier(), GetPhaseFourier(), GetPowerFourier(), GetRealFourier(), PFourier(), Transform(), and ~PFourier().

◆ fResolution

Double_t PFourier::fResolution
private

Fourier resolution (field, frequency, or angular frequency)

Definition at line 318 of file PFourier.h.

Referenced by GetImaginaryFourier(), GetMaxFreq(), GetPhaseFourier(), GetPowerFourier(), GetRealFourier(), GetResolution(), and PFourier().

◆ fStartTime

Double_t PFourier::fStartTime
private

start time of the data histogram

Definition at line 314 of file PFourier.h.

Referenced by PFourier(), PrepareFFTwInputData(), and Transform().

◆ fTimeResolution

Double_t PFourier::fTimeResolution
private

time resolution of the data histogram in (us)

Definition at line 313 of file PFourier.h.

Referenced by PFourier(), PrepareFFTwInputData(), and Transform().

◆ fUnitTag

Int_t PFourier::fUnitTag
private

1=Field Units (G), 2=Field Units (T), 3=Frequency Units (MHz), 4=Angular Frequency Units (Mc/s)

Definition at line 309 of file PFourier.h.

Referenced by GetUnitTag(), and PFourier().

◆ fValid

Bool_t PFourier::fValid
private

true = all boundary conditions fullfilled and hence a Fourier transform can be performed.

Definition at line 308 of file PFourier.h.

Referenced by GetImaginaryFourier(), GetPhaseFourier(), GetPowerFourier(), GetRealFourier(), IsValid(), PFourier(), and Transform().

◆ fZeroPaddingPower

UInt_t PFourier::fZeroPaddingPower
private

power for zero padding, if set < 0 no zero padding will be done

Definition at line 317 of file PFourier.h.

Referenced by PFourier().


The documentation for this class was generated from the following files: