private boolean recombinationInitialization(HaploStruct hs, double recombPos)
            throws Exception {
        if (hs==null || !this.getChrom().equals(hs.chrom)) {
            throw new Exception("recombine: parameter hs invalid");
        }
        if (recombPos<chrom.getHeadPos() || recombPos>chrom.getTailPos()) {
            throw new Exception("recombine: parameter recombPos invalid");
        }
        return recombPos>chrom.getHeadPos() && recombPos<chrom.getTailPos();
            //recombination exactly at head or tail will be ignored)
    }