all: O4-test.png H1L1V1-O4_MANIFOLD_BANK_MASS_MODEL-0-2000000000.png H1L1V1-O4_MANIFOLD_BANK-0-2000000000.xml.gz

define bank_yaml := 
{
m1: [3, 20],
m2: [3, 20],
M: [6, 40],
mc: [4, 40],
q: [0.99, 5],
chi: [-0.15, 0.15],
ns-mass: [0, 3.0],
ns-s1z: [-0.05, 0.05],
freq: [10, 512],
max-duration: 128,
psd-xml: O4_projected_psds.xml.gz,
instrument: L1,
mm: 0.03,
reuse-g-mm: 0.10,
max-num-templates: 1,
min-coord-vol: 0.0001,
min-depth: 11,
approximant: IMRPhenomD,
trim: true,
verbose: true,
seedbank:
}
endef
export bank_yaml

define trim_yaml :=
{
m1: [4., 18.],
m2: [4.,18.],
mc: [5., 15.],
q: [1., 4],
M: [8., 36],
chi: [-0.05, 0.05],
ns-mass: [0, 3.0],
ns-s1z: [-0.04, 0.04],
assign-ids: true,
}
endef
export trim_yaml

define test_yaml :=
{
num-injections: 10,
}
endef
export test_yaml

.SECONDARY: O4-test.h5 O4-bank.h5

bank.yaml:
	echo -e $$bank_yaml > $@

trim.yaml:
	echo -e $$trim_yaml > $@

test.yaml:
	echo -e $$test_yaml > $@

O4-test.png: O4-test.h5
	echo -e "{ }" > test_plot.yaml
	manifold_cbc_bank_test_plot --yaml test_plot.yaml --output-png $@ --test $<

H1L1V1-O4_MANIFOLD_BANK_INIT-0-2000000000.h5: bank.yaml
	manifold_cbc_bank --yaml bank.yaml --output-h5 $@
 
H1L1V1-O4_MANIFOLD_BANK-0-2000000000.h5 : H1L1V1-O4_MANIFOLD_BANK_INIT-0-2000000000.h5 trim.yaml
	manifold_cbc_bank_constrain --bank $< --output-h5 $@ --yaml trim.yaml 

H1L1V1-O4_MANIFOLD_BANK_EDWARD-0-2000000000.h5: H1L1V1-O4_MANIFOLD_BANK-0-2000000000.h5
	manifold_cbc_bank_split --output-left $@ $<	

H1L1V1-O4_MANIFOLD_BANK_JACOB-0-2000000000.h5: H1L1V1-O4_MANIFOLD_BANK-0-2000000000.h5
	manifold_cbc_bank_split --output-right $@ $<	

H1L1V1-O4_MANIFOLD_BANK_EDWARD-0-2000000000.xml.gz: H1L1V1-O4_MANIFOLD_BANK_EDWARD-0-2000000000.h5
	manifold_cbc_bank_to_xml --output-xml $@ $<

H1L1V1-O4_MANIFOLD_BANK_JACOB-0-2000000000.xml.gz: H1L1V1-O4_MANIFOLD_BANK_JACOB-0-2000000000.h5
	manifold_cbc_bank_to_xml --output-xml $@ $<

H1L1V1-O4_MANIFOLD_BANK-0-2000000000.xml.gz: H1L1V1-O4_MANIFOLD_BANK-0-2000000000.h5
	manifold_cbc_bank_to_xml --output-xml $@ $<

H1L1V1-O4_MANIFOLD_BANK_MASS_MODEL-0-2000000000.h5 : H1L1V1-O4_MANIFOLD_BANK-0-2000000000.h5
	manifold_cbc_bank_salpeter_mass_model --bank $< --output-h5 $@

H1L1V1-O4_MANIFOLD_BANK_MASS_MODEL-0-2000000000.png : H1L1V1-O4_MANIFOLD_BANK_MASS_MODEL-0-2000000000.h5
	manifold_cbc_bank_plot_mass_model $<

O4-test-%.h5: H1L1V1-O4_MANIFOLD_BANK-0-2000000000.h5 test.yaml
	manifold_cbc_bank_test --bank $< --yaml test.yaml --output-h5 $@

O4-test.h5: O4-test-01.h5 O4-test-02.h5 O4-test-03.h5 O4-test-04.h5 O4-test-05.h5 O4-test-06.h5 O4-test-07.h5 O4-test-08.h5 O4-test-09.h5 O4-test-10.h5
	echo -e "{ }" > test_add.yaml
	manifold_cbc_bank_test_add --yaml test_add.yaml --output-h5 $@ $^

clean:
	rm -rf H1L1V1-O4_MANIFOLD_BANK-0-2000000000.xml.gz
	rm -rf H1L1V1-O4_MANIFOLD_BANK-0-2000000000.h5
	rm -rf H1L1V1-O4_MANIFOLD_BANK_INIT-0-2000000000.h5
	rm -rf H1L1V1-O4_MANIFOLD_BANK_MASS_MODEL-0-2000000000.*
	rm -rf O4-test*
	rm -rf bank.yaml trim.yaml test.yaml test_add.yaml test_plot.yaml
