// Copyright (C) Stichting Deltares 2016. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using Core.Common.Base.Data; using Ringtoets.Common.Data.Properties; namespace Ringtoets.Common.Data.Probabilistics { /// /// Class represents a specialized case of that has /// been shifted along the X-axis. /// public class ShiftedLogNormalDistribution : LogNormalDistribution { private RoundedDouble shift; /// /// Initializes a new instance of the class, /// initialized as the standard log-normal distribution (mu=0, sigma=1). /// /// The number of decimal places. /// /// Thrown when is not in range [0, ]. /// public ShiftedLogNormalDistribution(int numberOfDecimalPlaces) : base(numberOfDecimalPlaces) { shift = new RoundedDouble(numberOfDecimalPlaces); } /// /// Gets or sets the shift applied to the log-normal distribution. /// /// /// Thrown when the shift is larger then the shifted mean, which makes the mean negative. /// public RoundedDouble Shift { get { return shift; } set { var newShift = value.ToPrecision(shift.NumberOfDecimalPlaces); if (newShift > Mean) { throw new ArgumentOutOfRangeException(Resources.ShiftedLogNormalDistribution_Shift_may_not_exceed_Mean); } shift = newShift; } } } }