Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

TDSPLTVChannel.h

Go to the documentation of this file.
00001 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #ifndef TDSPLTVCHANNEL_H
00019 #define TDSPLTVCHANNEL_H
00020 
00021 #include <TDSPOutput1.h>
00022 #include <TDSPBlockOperation.h>
00023 
00028 class TDSPLTVChannel : public TDSPOutput1, public TDSPBlockOperation  {
00029 
00030  private:
00031   // This class already implements some very basic channels 
00032   // these variables are need for this channels 
00033 
00034   TDSPVector* fPowerDelayProfileSqrt; 
00035   UInt_t      fBasicChannelType; 
00036   UInt_t      fDebugBits; 
00037 
00038  protected:
00039 
00040   Int_t       fBlockLen; 
00041   TDSPMatrix* fImpulseResponse; 
00042   TDSPMatrix* fChannelMatrix; 
00043   Int_t       fChannelMatrixSlot; 
00044   Int_t       fChanMatSize; 
00045 
00046 
00047   Bool_t   fHaveRepresentation; 
00048   Bool_t   fHaveImpulseResponse; 
00049   Bool_t   fHaveChannelMatrix; 
00050 
00051   Bool_t   fCalculateChannelMatrix; 
00052   Bool_t   fCalculateChannelMatrixCyclic; 
00053 
00054 
00055  public: 
00056   TDSPLTVChannel(char *name=NULL);
00057   ~TDSPLTVChannel();
00058 
00059   virtual void        Print();
00060   virtual Int_t       GetBlockLen() { return fBlockLen;};
00061   virtual void        SetBlockLen(Int_t bl) { fBlockLen=bl;};
00062 
00063   // Set Some Basic Channel Models
00064   // mod = "none" 
00065   // mod = "fixed"  - fixed time-invariant impulse response with (sqrt-)power given by "profile"
00066   // mod = "randnc" - impulse response with complex gaussian entries with (sqrt-)power given by "profile"
00067 
00068   void SetModel(Option_t *mod, TDSPVector *profileSqrt=NULL);
00069 
00070   // Setting Options 
00071   //
00072   // channelmatrix   - calculate and emit channel matrices 
00073   // nochannelmatrix - dont calculate channel matrices
00074   // debugchannelmatrix - print out each channel matrix before emission
00075   
00076   void                SetOption(Option_t *opt); 
00077 
00078   void                SetChannelMatrixSize(Int_t L) { fChanMatSize=L;}; 
00079   Int_t               GetChannelMatrixSize() const { return fChanMatSize;}; 
00080   
00081   TDSPMatrix*         GetImpulseResponse(); 
00082   TDSPMatrix*         GetChannelMatrix(Int_t TimeSlot); 
00083 
00084   virtual TDSPMatrix* CreateImpulseResponse(TDSPMatrix *out=NULL); 
00085   TDSPMatrix*         CreateChannelMatrix(TDSPMatrix *out=NULL,
00086                      Int_t TimeStart=0,
00087                      Int_t TimeEnd=0); 
00088 
00089   virtual void        ChangeRepresentation(); 
00090 
00091   /* Signals */
00092 
00093   virtual void        ImpulseResponse(TDSPMatrix*i); 
00094   virtual void        ChannelMatrix(TDSPMatrix*i);  
00095 
00096   virtual TDSPSignal* Update(TDSPSignal* input);
00097     
00098   virtual void        ChannelMatrices(Int_t ilen=0); 
00099   virtual TDSPVector *Apply(TDSPVector*in,TDSPVector*out = NULL);
00100 
00101   ClassDef(TDSPLTVChannel,1)
00102 };
00103 
00104 #endif

Generated on Fri Apr 23 16:23:43 2004 by doxygen 1.3.2