R/CreateMask.R

CreateMask <- function (inTime, inStartTimes, inAmplitudes,
                        inDecayPeriod, inFractionAtDecayPeriod = 0.5)
{
  #FUNCTION 1
  OneMask <-function (inTime, inStartTime, inAmplitude,
                      inDecayPeriod, inFractionAtDecayPeriod)
  {
    Alpha <- -log(inFractionAtDecayPeriod)

    outY <- array(0, length(inTime))
    theMasked <- which(inTime >= inStartTime)
    if (!is.null(theMasked)) {
      outY[theMasked] <- inAmplitude*exp(-(inTime[theMasked]-inStartTime)/inDecayPeriod*Alpha)
    }
    return(outY)
  }
  # end FUNCTION 1

  outMask <- array(0, length(inTime))
  if (inDecayPeriod <= 0) {
    return(outMask)
  } else {

  for (i in 1:length(inStartTimes)) {
    theMask <- OneMask(inTime, inStartTimes[i], inAmplitudes[i],
                       inDecayPeriod, inFractionAtDecayPeriod)
    theIndices <- which(theMask > outMask)
    outMask[theIndices] <- theMask[theIndices]
  }
    return(outMask)
  }
}
m-vidal/pv01 documentation built on Dec. 2, 2020, 1:24 a.m.