/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.model.volatility;
import java.util.Arrays;
import com.opengamma.util.ArgumentChecker;
/**
* Class containing a volatility calculated at a particular x and y and the bucketed sensitivities of this value to the volatility data points that were used to
* construct the surface.
*/
public class VolatilityAndBucketedSensitivities {
private final double _volatility;
private final double[][] _sensitivities;
/**
* @param volatility The volatility
* @param sensitivities The bucketed sensitivities, not null
*/
public VolatilityAndBucketedSensitivities(final double volatility, final double[][] sensitivities) {
ArgumentChecker.notNull(sensitivities, "sensitivities");
_volatility = volatility;
_sensitivities = sensitivities;
}
/**
* Gets the volatility
* @return The volatility
*/
public double getVolatility() {
return _volatility;
}
/**
* Gets the bucketed sensitivities
* @return The bucketed sensitivities
*/
public double[][] getBucketedSensitivities() {
return _sensitivities;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + Arrays.deepHashCode(_sensitivities);
long temp;
temp = Double.doubleToLongBits(_volatility);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final VolatilityAndBucketedSensitivities other = (VolatilityAndBucketedSensitivities) obj;
if (!Arrays.deepEquals(_sensitivities, other._sensitivities)) {
return false;
}
if (Double.doubleToLongBits(_volatility) != Double.doubleToLongBits(other._volatility)) {
return false;
}
return true;
}
}