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 TDSPCONVOLUTION_H 00019 #define TDSPCONVOLUTION_H 00020 00021 #include <TDSPSignal.h> 00022 #include <TDSPStochasticSignal.h> 00023 #include <TDSPBlockOperation.h> 00024 #include <TDSPOutput1.h> 00025 00030 class TDSPConvolution : public TDSPOutput1, public TDSPBlockOperation { 00031 00032 protected: 00033 00034 Int_t fBlockLen; 00035 Int_t fConvOptions; 00036 00037 // my Slots 00038 00039 TString Slot_Response; 00040 TString Slot_StochasticResponse; 00041 00042 00043 public: 00044 00045 // the inputs 00046 00047 TDSPVector *ResponseFunction; 00048 TDSPStochasticSignal *StochasticResponseFunction; 00049 00050 00051 TDSPConvolution(char *name = NULL); 00052 ~TDSPConvolution(); 00053 00054 00055 // Slots 00056 00057 void Response(TDSPVector *r) { 00058 StochasticResponseFunction = NULL; 00059 ResponseFunction = r; 00060 Emit("Response(TDSPVector*)",r); 00061 }; 00062 00063 void Response(TDSPStochasticSignal *r) { 00064 ResponseFunction = NULL; 00065 StochasticResponseFunction=r; 00066 }; 00067 00068 void SetOption(Option_t *opt); 00069 void SetBlockLen(Int_t b) { fBlockLen = b;}; 00070 Int_t GetBlockLen() { return fBlockLen;}; 00071 00072 TDSPVector* Conv(TDSPVector *input); 00073 TDSPSignal* Update(TDSPSignal *input); 00074 00075 00076 ClassDef(TDSPConvolution,1) 00077 00078 }; 00079 00080 inline TDSPSignal* TDSPConvolution::Update(TDSPSignal *input) { 00081 this->Conv(input); 00082 Emit(Signal_NewData,fSignal); 00083 return fSignal; 00084 } 00085 #endif
1.3.2