package dr.geo;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.List;
/**
* @author Marc A. Suchard
*/
public class MultiRegionGeoSpatialDistribution extends GeoSpatialDistribution {
public MultiRegionGeoSpatialDistribution(String label) {
super(label);
regions = new ArrayList<GeoSpatialDistribution>();
union = false;
}
public MultiRegionGeoSpatialDistribution(String label, List<GeoSpatialDistribution> regions, boolean union) {
super(label);
this.regions = regions;
this.union = union;
}
public double logPdf(double[] x) {
if (union) {
for (GeoSpatialDistribution region : regions) {
if (region.logPdf(x) == 0.0) { // matches
return 0.0;
}
}
return Double.NEGATIVE_INFINITY;
} // else is intersection
for (GeoSpatialDistribution region : regions) {
if (region.logPdf(x) == Double.NEGATIVE_INFINITY) {
return Double.NEGATIVE_INFINITY;
}
}
return 0.0;
}
public double[][] getScaleMatrix() {
return null;
}
public double[] getMean() {
return null;
}
public String getType() {
return TYPE;
}
public String getLabel() {
return label;
}
public boolean getUnion() {
return union;
}
private final List<GeoSpatialDistribution> regions;
private final boolean union;
}