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
1.3.2