function getMinus_fullStart(nSwitches, bVal, fullStart) result(minusWeight)
real(dp), intent(in) :: nSwitches, bVal
type(WeightData_t), intent(in) :: fullStart
real(dp) :: minusWeight
character(*), parameter :: this_routine = "getMinus_fullStart"
ASSERT(nSwitches >= 0.0_dp)
! here this assert is valid, since the bvalue really never should be
! 0.. or else the parent CSF is invalid.
! no of course it can still be 0 at a 0/3 start... but also
! set it to the technical value only
! try an adhoc second order fix..
minusWeight = fullStart%F * fullStart%minus + nSwitches / max(1.0_dp, bval) &
* (fullStart%G * fullStart%minus + fullStart%F * fullStart%plus) &
+ (max(nSwitches - 1, 0.0_dp) * fullStart%G * fullStart%plus / (max(1.0_dp, bval)**2))
ASSERT(minusWeight >= 0.0_dp)
end function getMinus_fullStart