7 #ifndef Tomato_OXSTARTPOINTCALCULATORShmolli_H     8 #define Tomato_OXSTARTPOINTCALCULATORShmolli_H    20     template< 
typename MeasureType >
    30             return calculateStartPointSKP(
    35                     this->_CalculatedStartPoint);
    38         int setStartPointToDefault(){
    39             this->_CalculatedStartPoint[0] = this->_DefaultStartPoint[0];
    40             this->_CalculatedStartPoint[1] = this->_DefaultStartPoint[1];
    41             this->_CalculatedStartPoint[2] = this->_DefaultStartPoint[2];
    46         int calculateStartPointSKP(
int nSamples, 
const MeasureType *invTimes, 
const MeasureType *ysignalInput, 
const double *signs, MeasureType *initPoint){
    48             const int MAX_MOLLI_TI_SAMPLES = 128;
    50             int lSigns[MAX_MOLLI_TI_SAMPLES] ; 
    51             MeasureType lSignal[MAX_MOLLI_TI_SAMPLES] ; 
    54             MeasureType lSignalAbs[MAX_MOLLI_TI_SAMPLES];
    55             for ( i = 0; i < nSamples; i++) lSignalAbs[i] = fabs(ysignalInput[i]);
    59             initPoint[0] = 1.+ KWUtil::max(lSignalAbs[0],lSignalAbs[nSamples-1]); 
    60             initPoint[1] = 1+initPoint[0]+lSignalAbs[0]; 
    63             MeasureType signalMin = lSignalAbs[0], singalMax = lSignalAbs[0]; 
    64             KWUtil::MOLLI_min(lSignalAbs, nSamples, &indmin);
    65             initPoint[2]=invTimes[indmin]; 
    67             for ( i = 0; i < nSamples; i++) {
    68                 lSigns[i]=(int)signs[i];
    69                 if(lSigns[i] == 0) lSigns[i] = ( i <= indmin ) ? (-1) : (1); 
    70                 lSignal[i] = lSignalAbs[i] * lSigns[i];
    71                 if(lSignal[i] < signalMin) signalMin = lSignal[i];
    72                 if(lSignal[i] > singalMax) singalMax = lSignal[i];
    75             MeasureType zereproxrange=0.1; 
    76             MeasureType y4log[MAX_MOLLI_TI_SAMPLES] ; 
    77             MeasureType x4log[MAX_MOLLI_TI_SAMPLES] ; 
    80             for (i=0;i<nSamples;i++)
    82                 y4log[n4log]=initPoint[0]-lSignal[i];
    83                 if((y4log[n4log]) > ((singalMax-signalMin)*zereproxrange) )
    85                     y4log[n4log]=log(y4log[n4log]);
    86                     x4log[n4log]=invTimes[i];
    91                 MeasureType rslope, roffset;
    92                 MeasureType r = KWUtil::SKPLinReg(x4log,y4log, n4log, rslope, roffset); 
    93                 if( ( r < 0 ) && ( rslope < 0 ))
    95                     initPoint[2]=-1./rslope;
    96                     if ((initPoint[2] < (invTimes[0]/3.)) || (initPoint[2]) > (2*invTimes[nSamples-1])) 
return (1) ; 
    97                     initPoint[2] = KWUtil::min(initPoint[2], invTimes[nSamples-1]); 
    99                     initPoint[0] = KWUtil::min(2*initPoint[0],roffset/2);
   100                     initPoint[1] = KWUtil::min(2*initPoint[1],roffset);
   112             _DefaultStartPoint[0] = 100;
   113             _DefaultStartPoint[1] = 200;
   114             _DefaultStartPoint[2] = 1000;
   123             _DefaultStartPoint[0] = old._DefaultStartPoint[0];
   124             _DefaultStartPoint[1] = old._DefaultStartPoint[1];
   125             _DefaultStartPoint[2] = old._DefaultStartPoint[2];
   126             this->_nSamples = old._nSamples;
   127             this->setNDims(old._nDims);
   143         MeasureType _DefaultStartPoint[3];
   148 #endif //Tomato_OXStartPointCalculatorShmolli_H StartPointCalculatorShmolli()
constructor 
Definition: OxStartPointCalculatorShmolli.h:110
 
virtual StartPointCalculator< MeasureType > * newByCloning()
Definition: OxStartPointCalculatorShmolli.h:134
 
void setAllPointersToNull()
set all the pointers to zero 
Definition: OxStartPointCalculator.h:91
 
Definition: OxStartPointCalculatorShmolli.h:21
 
virtual int calculateStartPoint()
Definition: OxStartPointCalculatorShmolli.h:29
 
Definition: OxStartPointCalculator.h:21
 
Definition: OxCalculator.h:19
 
virtual ~StartPointCalculatorShmolli()
do not forget about the virtual destructor, see https://stackoverflow.com/questions/461203/when-to-us...
Definition: OxStartPointCalculatorShmolli.h:140
 
StartPointCalculatorShmolli(const StartPointCalculatorShmolli &old)
copy constructor 
Definition: OxStartPointCalculatorShmolli.h:120