/// <summary>
 /// constructor
 /// </summary>
 /// <param name="gapCostFunction">the gap cost function</param>
 /// <param name="affineGapWindowSize">the size of the affine gap window to use</param>
 public SmithWatermanGotohWindowedAffine(AbstractAffineGapCost gapCostFunction, int affineGapWindowSize)
     : this(gapCostFunction, new SubCostRange5ToMinus3(), affineGapWindowSize) {}
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="gapCostFunction">the gap cost function</param>
 /// <param name="costFunction">the cost function to use</param>
 /// <param name="affineGapWindowSize">the size of the affine gap window to use</param>
 public SmithWatermanGotohWindowedAffine(AbstractAffineGapCost gapCostFunction, AbstractSubstitutionCost costFunction,
                                         int affineGapWindowSize) {
     gGapFunction = gapCostFunction;
     dCostFunction = costFunction;
     windowSize = affineGapWindowSize;
 }
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="gapCostFunction">the gap cost function</param>
 /// <param name="costFunction">the cost function to use</param>
 public SmithWatermanGotoh(AbstractAffineGapCost gapCostFunction, AbstractSubstitutionCost costFunction)
     : base(gapCostFunction, costFunction, affineGapWindowSize) {}
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="gapCostFunction">the gap cost function</param>
 /// <param name="costFunction">the cost function to use</param>
 public SmithWatermanGotohWindowedAffine(AbstractAffineGapCost gapCostFunction, AbstractSubstitutionCost costFunction)
     : this(gapCostFunction, costFunction, defaultWindowSize) {}
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="gapCostFunction">the gap cost function</param>
 public SmithWatermanGotoh(AbstractAffineGapCost gapCostFunction)
     : base(gapCostFunction, new SubCostRange5ToMinus3(), affineGapWindowSize) {}