00001
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef TDSPBLOCKOPERATION_H
00019 #define TDSPBLOCKOPERATION_H
00020
00021 #include <Rtypes.h>
00022 #include <TDSPVector.h>
00023
00028 class TDSPBlockOperation {
00029 public:
00030 TDSPBlockOperation();
00031
00032 virtual ~TDSPBlockOperation();
00033 virtual Int_t GetBlockLen() = 0;
00034 virtual UInt_t TrimBlock(UInt_t l) { return (l/GetBlockLen())*GetBlockLen();};
00035 static TDSPVector *Sum(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00036 TDSPVector* Sum(TDSPVector *in, TDSPVector*result=NULL);
00037
00038 static TDSPVector *SumDiff(Int_t, TDSPVector *in1,
00039 TDSPVector *in2,TDSPVector*result=NULL,
00040 TComplex scaler=1);
00041 TDSPVector* SumDiff(TDSPVector *in1, TDSPVector *in2,
00042 TDSPVector*result=NULL, TComplex scaler=1);
00043
00044 static TDSPVector *MeanDiff(Int_t, TDSPVector *in1,
00045 TDSPVector *in2,TDSPVector*result=NULL,
00046 TComplex scaler=1);
00047 TDSPVector* MeanDiff(TDSPVector *in1, TDSPVector *in2,
00048 TDSPVector*result=NULL, TComplex scaler=1);
00049
00050 static TDSPVector *Sum2Diff(Int_t, TDSPVector *in1, TDSPVector *in2,TDSPVector*result=NULL, TComplex scaler=1);
00051 TDSPVector* Sum2Diff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00052
00053 static TDSPVector *Mean2Diff(Int_t, TDSPVector *in1,
00054 TDSPVector *in2,TDSPVector*result=NULL,
00055 TComplex scaler=1);
00056 TDSPVector* Mean2Diff(TDSPVector *in1, TDSPVector *in2,
00057 TDSPVector*result=NULL, TComplex scaler=1);
00058
00059 static TDSPVector *Mean(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00060 TDSPVector* Mean(TDSPVector *in, TDSPVector*result=NULL);
00061
00062 static TDSPVector *MeanAbs2(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00063 TDSPVector* MeanAbs2(TDSPVector *in, TDSPVector*result=NULL);
00064
00065 static TDSPVector *I_MeanAbs2(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00066 TDSPVector* I_MeanAbs2(TDSPVector *in, TDSPVector*result=NULL);
00067
00068 static TDSPVector *MeanAbs(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00069 TDSPVector* MeanAbs(TDSPVector *in, TDSPVector*result=NULL);
00070
00071 static TDSPVector *I_MeanAbs(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00072 TDSPVector* I_MeanAbs(TDSPVector *in, TDSPVector*result=NULL);
00073
00074 static TDSPVector *MaxAbs2(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00075 TDSPVector* MaxAbs2(TDSPVector *in, TDSPVector*result=NULL);
00076
00077 static TDSPVector *I_MaxAbs2(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00078 TDSPVector* I_MaxAbs2(TDSPVector *in, TDSPVector*result=NULL);
00079
00080 static TDSPVector *MinAbs2(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00081 TDSPVector* MinAbs2(TDSPVector *in, TDSPVector*result=NULL);
00082
00083 static TDSPVector *I_MinAbs2(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00084 TDSPVector* I_MinAbs2(TDSPVector *in, TDSPVector*result=NULL);
00085
00086 static TDSPVector *MaxAbs(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00087 TDSPVector* MaxAbs(TDSPVector *in, TDSPVector*result=NULL);
00088
00089 static TDSPVector *I_MaxAbs(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00090 TDSPVector* I_MaxAbs(TDSPVector *in, TDSPVector*result=NULL);
00091
00092 static TDSPVector *MinAbs(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00093 TDSPVector* MinAbs(TDSPVector *in, TDSPVector*result=NULL);
00094
00095 static TDSPVector *I_MinAbs(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00096 TDSPVector* I_MinAbs(TDSPVector *in, TDSPVector*result=NULL);
00097
00098 static TDSPVector *MeanPower(Int_t, TDSPVector *in, TDSPVector*result=NULL);
00099 TDSPVector* MeanPower(TDSPVector *in, TDSPVector*result=NULL);
00100
00101 static TDSPVector *MSE(Int_t, TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00102 TDSPVector* MSE(TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00103
00104 static TDSPVector *SumPhaseDiff(Int_t, TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00105 TDSPVector* SumPhaseDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00106
00107 static TDSPVector *Sum2PhaseDiff(Int_t, TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00108 TDSPVector* Sum2PhaseDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00109
00110 static TDSPVector *MeanPhaseDiff(Int_t, TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00111 TDSPVector* MeanPhaseDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00112
00113 static TDSPVector *Mean2PhaseDiff(Int_t, TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00114 TDSPVector* Mean2PhaseDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result=NULL, TComplex scaler=1);
00115
00116 ClassDef(TDSPBlockOperation,1)
00117
00118 };
00119
00120 inline TDSPVector* TDSPBlockOperation::Sum(TDSPVector *in, TDSPVector *result) {
00121 return Sum(GetBlockLen(), in, result);
00122 }
00123
00124 inline TDSPVector* TDSPBlockOperation::Mean(TDSPVector *in, TDSPVector *result) {
00125 return Mean(GetBlockLen(), in, result);
00126 }
00127
00128 inline TDSPVector* TDSPBlockOperation::MeanAbs2(TDSPVector *in, TDSPVector *result) {
00129 return MeanAbs2(GetBlockLen(), in, result);
00130 }
00131
00132 inline TDSPVector* TDSPBlockOperation::I_MeanAbs2(TDSPVector *in, TDSPVector *result) {
00133 return I_MeanAbs2(GetBlockLen(), in, result);
00134 }
00135
00136 inline TDSPVector* TDSPBlockOperation::MeanAbs(TDSPVector *in, TDSPVector *result) {
00137 return MeanAbs(GetBlockLen(), in, result);
00138 }
00139
00140 inline TDSPVector* TDSPBlockOperation::I_MeanAbs(TDSPVector *in, TDSPVector *result) {
00141 return I_MeanAbs(GetBlockLen(), in, result);
00142 }
00143
00144 inline TDSPVector* TDSPBlockOperation::MaxAbs2(TDSPVector *in, TDSPVector *result) {
00145 return MaxAbs2(GetBlockLen(), in, result);
00146 }
00147
00148 inline TDSPVector* TDSPBlockOperation::I_MaxAbs2(TDSPVector *in, TDSPVector *result) {
00149 return I_MaxAbs2(GetBlockLen(), in, result);
00150 }
00151
00152 inline TDSPVector* TDSPBlockOperation::MinAbs2(TDSPVector *in, TDSPVector *result) {
00153 return MinAbs2(GetBlockLen(), in, result);
00154 }
00155
00156 inline TDSPVector* TDSPBlockOperation::I_MinAbs2(TDSPVector *in, TDSPVector *result) {
00157 return I_MinAbs2(GetBlockLen(), in, result);
00158 }
00159
00160 inline TDSPVector* TDSPBlockOperation::MaxAbs(TDSPVector *in, TDSPVector *result) {
00161 return MaxAbs(GetBlockLen(), in, result);
00162 }
00163
00164 inline TDSPVector* TDSPBlockOperation::I_MaxAbs(TDSPVector *in, TDSPVector *result) {
00165 return I_MaxAbs(GetBlockLen(), in, result);
00166 }
00167
00168 inline TDSPVector* TDSPBlockOperation::MinAbs(TDSPVector *in, TDSPVector *result) {
00169 return MinAbs(GetBlockLen(), in, result);
00170 }
00171
00172 inline TDSPVector* TDSPBlockOperation::I_MinAbs(TDSPVector *in, TDSPVector *result) {
00173 return MinAbs(GetBlockLen(), in, result);
00174 }
00175
00176 inline TDSPVector* TDSPBlockOperation::MeanPower(TDSPVector *in, TDSPVector *result) {
00177 return MeanPower(GetBlockLen(), in, result);
00178 }
00179
00180 inline TDSPVector* TDSPBlockOperation::SumDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00181 return SumDiff(GetBlockLen(),in1,in2,result,scaler);
00182 }
00183 inline TDSPVector* TDSPBlockOperation::MeanDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00184 return MeanDiff(GetBlockLen(),in1,in2,result,scaler);
00185 }
00186 inline TDSPVector* TDSPBlockOperation::Sum2Diff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00187 return Sum2Diff(GetBlockLen(),in1,in2,result,scaler);
00188 }
00189 inline TDSPVector* TDSPBlockOperation::Mean2Diff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00190 return Sum2Diff(GetBlockLen(),in1,in2,result,scaler);
00191 }
00192 inline TDSPVector* TDSPBlockOperation::MSE(TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00193 return Mean2Diff(GetBlockLen(),in1,in2,result,scaler);
00194 }
00195
00196 inline TDSPVector* TDSPBlockOperation::MSE(Int_t bl,TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00197 return Mean2Diff(bl,in1,in2,result,scaler);
00198 }
00199
00200 inline TDSPVector* TDSPBlockOperation::SumPhaseDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00201 return SumPhaseDiff(GetBlockLen(),in1,in2,result,scaler);
00202 }
00203
00204 inline TDSPVector* TDSPBlockOperation::Sum2PhaseDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00205 return Sum2PhaseDiff(GetBlockLen(),in1,in2,result,scaler);
00206 }
00207
00208 inline TDSPVector* TDSPBlockOperation::MeanPhaseDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00209 return MeanPhaseDiff(GetBlockLen(),in1,in2,result,scaler);
00210 }
00211 inline TDSPVector* TDSPBlockOperation::Mean2PhaseDiff(TDSPVector *in1, TDSPVector *in2, TDSPVector*result, TComplex scaler) {
00212 return Mean2PhaseDiff(GetBlockLen(),in1,in2,result,scaler);
00213 }
00214 #endif