public void calibrate(final DATA_TYPE data) {
_calibrationObjective.setInflation(data.getInflationProvider());
final int nbInstruments = getBasket().size();
final SuccessiveRootFinderInflationYearOnYearCapFloorCalibrationObjective objective = (SuccessiveRootFinderInflationYearOnYearCapFloorCalibrationObjective) _calibrationObjective;
final RidderSingleRootFinder rootFinder = new RidderSingleRootFinder(_calibrationObjective.getFunctionValueAccuracy(), _calibrationObjective.getVariableAbsoluteAccuracy());
final BracketRoot bracketer = new BracketRoot();
for (int loopins = 0; loopins < nbInstruments; loopins++) {
final InstrumentDerivative instrument = getBasket().get(loopins);
_calibrationObjective.setInstrument(instrument);
_calibrationObjective.setPrice(getCalibrationPrices().get(loopins));
objective.setExpiryIndex(_instrumentExpiryIndex.get(loopins + 1));
objective.setStrikeIndex(_instrumentStrikeIndex.get(loopins + 1));
final double[] range = bracketer.getBracketedPoints(_calibrationObjective, _calibrationObjective.getMinimumParameter(), _calibrationObjective.getMaximumParameter());
rootFinder.getRoot(_calibrationObjective, range[0], range[1]);
}
}