Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/root/TFFTComplex.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // @(#)root/fft:$Id$
0002 // Author: Anna Kreshuk   07/4/2006
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0010  *************************************************************************/
0011 
0012 #ifndef ROOT_TFFTComplex
0013 #define ROOT_TFFTComplex
0014 
0015 #include "TVirtualFFT.h"
0016 #include "TString.h"
0017 
0018 class TComplex;
0019 
0020 class TFFTComplex : public TVirtualFFT{
0021 protected:
0022    void     *fIn;        //input array
0023    void     *fOut;       //output array
0024    void     *fPlan;      //fftw plan (the plan how to compute the transform)
0025    Int_t     fNdim;      //number of dimensions
0026    Int_t     fTotalSize; //total size of the transform
0027    Int_t    *fN;         //transform sizes in each dimension
0028    Int_t     fSign;      //sign of the exponent of the transform (-1 is FFTW_FORWARD and +1 FFTW_BACKWARD)
0029    TString   fFlags;     //transform flags
0030 
0031    UInt_t MapFlag(Option_t *flag);
0032 
0033 public:
0034    TFFTComplex();
0035    TFFTComplex(Int_t n, Bool_t inPlace);
0036    TFFTComplex(Int_t ndim, Int_t *n, Bool_t inPlace = kFALSE);
0037    ~TFFTComplex() override;
0038 
0039    void       Init(Option_t *flags, Int_t sign, const Int_t* /*kind*/) override;
0040 
0041    Int_t     *GetN()    const override {return fN;}
0042    Int_t      GetNdim() const override {return fNdim;}
0043    virtual Int_t      GetSize() const {return fTotalSize;}
0044    Option_t  *GetType() const override {if (fSign==-1) return "C2CBackward"; else return "C2CForward";}
0045    Int_t      GetSign() const override {return fSign;}
0046    Option_t  *GetTransformFlag() const override {return fFlags;}
0047    Bool_t     IsInplace() const override {if (fOut) return kTRUE; else return kFALSE;};
0048 
0049    void       GetPoints(Double_t *data, Bool_t fromInput = kFALSE) const override;
0050    Double_t   GetPointReal(Int_t /*ipoint*/, Bool_t /*fromInput = kFALSE*/) const override {return 0;};
0051    Double_t   GetPointReal(const Int_t* /*ipoint*/, Bool_t /*fromInput=kFALSE*/) const override{return 0;}
0052    void       GetPointComplex(Int_t ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE) const override;
0053    void       GetPointComplex(const Int_t *ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE) const override;
0054    Double_t*  GetPointsReal(Bool_t /*fromInput=kFALSE*/) const override {return nullptr;};
0055    void       GetPointsComplex(Double_t *re, Double_t *im, Bool_t fromInput = kFALSE) const override ;
0056    void       GetPointsComplex(Double_t *data, Bool_t fromInput = kFALSE) const override ;
0057 
0058    void       SetPoint(Int_t ipoint, Double_t re, Double_t im = 0) override;
0059    void       SetPoint(const Int_t *ipoint, Double_t re, Double_t im = 0) override;
0060    void       SetPoints(const Double_t *data) override;
0061    void       SetPointComplex(Int_t ipoint, TComplex &c) override;
0062    void       SetPointsComplex(const Double_t *re, const Double_t *im) override;
0063    void       Transform() override;
0064 
0065    ClassDefOverride(TFFTComplex,0);
0066 };
0067 
0068 #endif