IntensityFunction build(long seed) { if (area.isPresent()) { final SineIntensity ins = SineIntensity.create(this, seed); // first compute current area final double a = ins.area(); // compute factor to adapt amplitude and height final double factor = area.get() / a; // store values final StochasticSupplier<Double> ampl = amplitudeSup; final StochasticSupplier<Double> hei = heightSup; // temporarily overwrite values amplitudeSup = constant(ins.getAmplitude() * factor); heightSup = constant(ins.getHeight() * factor); final SineIntensity si = SineIntensity.create(this, seed); // restore values amplitudeSup = ampl; heightSup = hei; return si; } return SineIntensity.create(this, seed); }
final double totalEvents = si.area() * periods; averageIntensity = totalEvents / length; } else {
.height(.1) .build(); assertEquals(.369903, sine.area(), 0.000001); assertEquals( .369903, assertEquals(.31831, sine.area(), 0.00001); assertEquals( .31831, assertEquals(.269903, sine.area(), 0.000001); assertEquals( .269903, .height(10) .build(); assertEquals(36000, sine.area(), 0.00001); assertEquals( 36000, .height(2) .build(); assertEquals(27.2065, sine.area(), 0.0001); assertEquals( 27.2065,