32 use sufr_kinds
, only: double,long
34 private :: double, long
36 character :: process_id*(99), waveform*(99), source*(99), numrel_data*(99), taper*(99), simulation_id*(99)
37 integer(long) :: geocent_end_time,geocent_end_time_ns, h_end_time,h_end_time_ns, l_end_time,l_end_time_ns, g_end_time
38 integer(long) :: g_end_time_ns, t_end_time,t_end_time_ns, v_end_time,v_end_time_ns
39 integer(long) :: numrel_mode_min,numrel_mode_max, amp_order, bandpass
40 real(double) :: mass1,mass2, mchirp,eta, distance, longitude,latitude, inclination, coa_phase, polarization
41 real(double) :: end_time_gmst, psi0,psi3, alpha, alpha1,alpha2,alpha3,alpha4,alpha5,alpha6, beta
42 real(double) :: spin1x,spin1y,spin1z, spin2x,spin2y,spin2z, spin1,theta1,phi1, spin2,theta2,phi2
43 real(double) :: theta0,phi0, f_lower,f_final, eff_dist_h,eff_dist_l,eff_dist_g,eff_dist_t,eff_dist_v
63 use sufr_kinds
, only: double
66 integer,
intent(in) :: op
67 real(double),
intent(in) :: array(:)
71 if(array(i).lt.0.d0)
then
72 write(op,
'(ES13.6,A)', advance=
'no') array(i),
','
74 write(op,
'(ES12.6,A)', advance=
'no') array(i),
','
89 use sufr_kinds
, only: long
91 integer,
intent(in) :: op
92 integer(long),
intent(in) :: array(:)
96 write(op,
'(I0,A)', advance=
'no') array(i),
','
112 integer,
intent(in) :: op
113 character,
intent(in) :: string*(*)
114 logical,
optional,
intent(in) :: comma
118 if(present(comma)) lcomma = comma
120 write(op,
'(A)', advance=
'no')
'"'//trim(string)//
'"'
121 if(lcomma)
write(op,
'(A)', advance=
'no')
','
135 use sufr_system
, only: find_free_io_unit, syntax_quit, file_open_error_quit
136 use sufr_constants
, only: set_sufr_constants
139 integer :: op, status, narg
140 character :: ipfile*(99),opfile*(99)
142 call set_sufr_constants()
144 narg = command_argument_count()
145 if(narg.eq.1.or.narg.eq.2)
then
146 call get_command_argument(1, ipfile)
147 opfile =
'injection.xml'
148 if(narg.eq.2) call get_command_argument(2, opfile)
150 call syntax_quit(
'<inputfile.dat> [<outputfile.xml>]', 0)
154 call find_free_io_unit(op)
155 open(unit=op,form=
'formatted',status=
'replace',action=
'write',file=trim(opfile),iostat=status)
156 if(status.ne.0) call file_open_error_quit(trim(opfile), 0, 0)
179 use data, only: process_id, waveform, source, numrel_data, taper, simulation_id
180 use data, only: geocent_end_time,geocent_end_time_ns, h_end_time,h_end_time_ns, l_end_time,l_end_time_ns, g_end_time
181 use data, only: g_end_time_ns, t_end_time,t_end_time_ns, v_end_time,v_end_time_ns
182 use data, only: numrel_mode_min,numrel_mode_max, amp_order, bandpass
183 use data, only: mass1,mass2, mchirp,eta, distance, longitude,latitude, inclination, coa_phase, polarization
184 use data, only: end_time_gmst, psi0,psi3, alpha, alpha1,alpha2,alpha3,alpha4,alpha5,alpha6, beta
185 use data, only: spin1x,spin1y,spin1z, spin2x,spin2y,spin2z, spin1,theta1,phi1, spin2,theta2,phi2
186 use data, only: theta0,phi0, f_lower,f_final, eff_dist_h,eff_dist_l,eff_dist_g,eff_dist_t,eff_dist_v
190 integer,
intent(in) :: op
192 write(op,
'(9x)', advance=
'no')
196 call
write_ints(op, (/geocent_end_time, geocent_end_time_ns, h_end_time, h_end_time_ns, l_end_time, l_end_time_ns, &
197 g_end_time, g_end_time_ns, t_end_time, t_end_time_ns, v_end_time, v_end_time_ns/) )
199 write(op,
'(ES22.16,A )', advance=
'no') end_time_gmst,
','
207 call
write_floats(op, (/mass1,mass2, mchirp,eta, distance, longitude,latitude, inclination, coa_phase, polarization/) )
208 call
write_floats(op, (/psi0,psi3, alpha, alpha1,alpha2,alpha3,alpha4,alpha5,alpha6, beta/) )
211 spin1x = spin1 * sin(theta1) * cos(phi1)
212 spin1y = spin1 * sin(theta1) * sin(phi1)
213 spin1z = spin1 * cos(theta1)
215 spin2x = spin2 * sin(theta2) * cos(phi2)
216 spin2y = spin2 * sin(theta2) * sin(phi2)
217 spin2z = spin2 * cos(theta2)
220 call
write_floats(op, (/spin1x, spin1y, spin1z, spin2x, spin2y, spin2z/) )
221 call
write_floats(op, (/theta0,phi0, f_lower,f_final, eff_dist_h, eff_dist_l, eff_dist_g, eff_dist_t, eff_dist_v/) )
223 call
write_ints(op, (/numrel_mode_min, numrel_mode_max/) )
228 call
write_string(op, trim(simulation_id), comma=.false.)
238 use data, only: process_id, waveform, source, numrel_data, taper, simulation_id
239 use data, only: geocent_end_time,geocent_end_time_ns, h_end_time,h_end_time_ns, l_end_time,l_end_time_ns, g_end_time
240 use data, only: g_end_time_ns, t_end_time,t_end_time_ns, v_end_time,v_end_time_ns
241 use data, only: numrel_mode_min,numrel_mode_max, amp_order, bandpass
242 use data, only: mass1,mass2, distance, longitude,latitude, inclination, coa_phase, polarization
243 use data, only: end_time_gmst, psi0,psi3, alpha, alpha1,alpha2,alpha3,alpha4,alpha5,alpha6, beta
244 use data, only: spin1,theta1,phi1, spin2,theta2,phi2
245 use data, only: theta0,phi0, f_lower,f_final, eff_dist_h,eff_dist_l,eff_dist_g,eff_dist_t,eff_dist_v
249 waveform =
'SpinTaylorT4threePointFivePN'
251 geocent_end_time = 1000000010
252 geocent_end_time_ns = 0
260 inclination = 0.1745329
262 polarization = 0.3490658
278 process_id =
'process:process_id:0'
323 simulation_id =
'sim_inspiral:simulation_id:0'
335 use sufr_system
, only: find_free_io_unit, file_open_error_quit, file_read_error_quit
336 use data, only: process_id, waveform, source, numrel_data, taper, simulation_id
337 use data, only: geocent_end_time,geocent_end_time_ns, h_end_time,h_end_time_ns, l_end_time,l_end_time_ns, g_end_time
338 use data, only: g_end_time_ns, t_end_time,t_end_time_ns, v_end_time,v_end_time_ns
339 use data, only: numrel_mode_min,numrel_mode_max, amp_order, bandpass
340 use data, only: mass1,mass2, distance, longitude,latitude, inclination, coa_phase, polarization
341 use data, only: end_time_gmst, psi0,psi3, alpha, alpha1,alpha2,alpha3,alpha4,alpha5,alpha6, beta
342 use data, only: spin1,theta1,phi1, spin2,theta2,phi2
343 use data, only: theta0,phi0, f_lower,f_final, eff_dist_h,eff_dist_l,eff_dist_g,eff_dist_t,eff_dist_v
346 character,
intent(in) :: ipfile*(*)
347 integer :: ip, status
349 namelist /injection_data/ process_id, waveform, source, numrel_data, taper, simulation_id, &
350 geocent_end_time,geocent_end_time_ns, h_end_time,h_end_time_ns, l_end_time,l_end_time_ns, g_end_time, &
351 g_end_time_ns, t_end_time,t_end_time_ns, v_end_time,v_end_time_ns, &
352 numrel_mode_min,numrel_mode_max, amp_order, bandpass, &
353 mass1,mass2, distance, longitude,latitude, inclination, coa_phase, polarization, &
354 end_time_gmst, psi0,psi3, alpha, alpha1,alpha2,alpha3,alpha4,alpha5,alpha6, beta, &
355 spin1,theta1,phi1, spin2,theta2,phi2, &
356 theta0,phi0, f_lower,f_final, eff_dist_h,eff_dist_l,eff_dist_g,eff_dist_t,eff_dist_v
359 call find_free_io_unit(ip)
360 open(unit=ip,form=
'formatted',status=
'old',action=
'read',file=trim(ipfile),iostat=status)
361 if(status.ne.0) call file_open_error_quit(trim(ipfile), 1, 0)
363 read(ip, nml=injection_data, iostat=status)
364 if(status.ne.0) call file_read_error_quit(trim(ipfile), 0, 0)
382 use sufr_kinds
, only: double
385 real(double),
intent(in) :: m1, m2
386 real(double),
intent(out) :: mc, eta
404 integer,
intent(in) :: op
406 write(op,
'(A)')
"<?xml version='1.0' encoding='utf-8' ?>"
407 write(op,
'(A)')
'<!DOCTYPE LIGO_LW SYSTEM "http://ldas-sw.ligo.caltech.edu/doc/ligolwAPI/html/ligolw_dtd.txt"><LIGO_LW>'
408 write(op,
'(A)')
' <Table Name="sim_inspiralgroup:sim_inspiral:table">'
409 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:process_id" Type="ilwd:char"/>'
410 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:waveform" Type="lstring"/>'
411 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:geocent_end_time" Type="int_4s"/>'
412 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:geocent_end_time_ns" Type="int_4s"/>'
413 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:h_end_time" Type="int_4s"/>'
414 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:h_end_time_ns" Type="int_4s"/>'
415 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:l_end_time" Type="int_4s"/>'
416 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:l_end_time_ns" Type="int_4s"/>'
417 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:g_end_time" Type="int_4s"/>'
418 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:g_end_time_ns" Type="int_4s"/>'
419 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:t_end_time" Type="int_4s"/>'
420 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:t_end_time_ns" Type="int_4s"/>'
421 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:v_end_time" Type="int_4s"/>'
422 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:v_end_time_ns" Type="int_4s"/>'
423 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:end_time_gmst" Type="real_8"/>'
424 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:source" Type="lstring"/>'
425 write(op,
'(6x,A)')
''
426 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:mass1" Type="real_4"/>'
427 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:mass2" Type="real_4"/>'
428 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:mchirp" Type="real_4"/>'
429 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:eta" Type="real_4"/>'
430 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:distance" Type="real_4"/>'
431 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:longitude" Type="real_4"/>'
432 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:latitude" Type="real_4"/>'
433 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:inclination" Type="real_4"/>'
434 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:coa_phase" Type="real_4"/>'
435 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:polarization" Type="real_4"/>'
436 write(op,
'(6x,A)')
''
437 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:psi0" Type="real_4"/>'
438 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:psi3" Type="real_4"/>'
439 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:alpha" Type="real_4"/>'
440 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:alpha1" Type="real_4"/>'
441 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:alpha2" Type="real_4"/>'
442 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:alpha3" Type="real_4"/>'
443 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:alpha4" Type="real_4"/>'
444 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:alpha5" Type="real_4"/>'
445 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:alpha6" Type="real_4"/>'
446 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:beta" Type="real_4"/>'
447 write(op,
'(6x,A)')
''
448 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:spin1x" Type="real_4"/>'
449 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:spin1y" Type="real_4"/>'
450 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:spin1z" Type="real_4"/>'
451 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:spin2x" Type="real_4"/>'
452 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:spin2y" Type="real_4"/>'
453 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:spin2z" Type="real_4"/>'
454 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:theta0" Type="real_4"/>'
455 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:phi0" Type="real_4"/>'
456 write(op,
'(6x,A)')
''
457 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:f_lower" Type="real_4"/>'
458 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:f_final" Type="real_4"/>'
459 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:eff_dist_h" Type="real_4"/>'
460 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:eff_dist_l" Type="real_4"/>'
461 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:eff_dist_g" Type="real_4"/>'
462 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:eff_dist_t" Type="real_4"/>'
463 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:eff_dist_v" Type="real_4"/>'
464 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:numrel_mode_min" Type="int_4s"/>'
465 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:numrel_mode_max" Type="int_4s"/>'
466 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:numrel_data" Type="lstring"/>'
467 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:amp_order" Type="int_4s"/>'
468 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:taper" Type="lstring"/>'
469 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:bandpass" Type="int_4s"/>'
470 write(op,
'(6x,A)')
'<Column Name="sim_inspiralgroup:sim_inspiral:simulation_id" Type="ilwd:char"/>'
471 write(op,
'(6x,A)')
''
472 write(op,
'(6x,A)')
'<Stream Name="sim_inspiralgroup:sim_inspiral:table" Type="Local" Delimiter=",">'
485 integer,
intent(in) :: op
488 write(op,
'(6x,A)')
'</Stream>'
489 write(op,
'(6x,A)')
''
490 write(op,
'(A)')
' </Table>'
491 write(op,
'(A)')
'</LIGO_LW>'
Share stream data content.
subroutine write_xml_header(op)
Write the XML header to the injection file.
subroutine write_xml_footer(op)
Write the XML footer to the injection file.
subroutine write_ints(op, array)
Write a (number of) injection xml integer data values to file.
program gw_ligo_mcmc_injection
Create an inspiral injection xml to use for lalinference_mcmc.
subroutine write_xml_content_stream(op)
Write the injection content stream to the xml file.
subroutine write_floats(op, array)
Write a (number of) injection xml floating-point data values to file.
subroutine m1m2_mceta(m1, m2, mc, eta)
Compute chirp mass and symmetric mass ration from individual masses.
subroutine write_string(op, string, comma)
Write an injection xml character data value to file.
subroutine read_injection_values(ipfile)
Set the default values for the inspiral injection xml stream data.
subroutine set_default_injection_values()
Set the default values for the inspiral injection xml stream data.