subroutine write_rdm_est_file_header(write_unit, nrdms_standard, nrdms_transition, &
filename)
! Open a new RDMEstimates file (overwriting any existing file), and
! write a header to it, appropriate for when we are sampling nrdms RDMs.
use CalcData, only: tEN2
use LoggingData, only: tCalcPropEst, iNumPropToEst
integer, intent(in) :: write_unit, nrdms_standard, nrdms_transition
character(255), intent(in) :: filename
integer :: irdm, iprop
open(write_unit, file=trim(filename), status='unknown', position='append')
write(write_unit, '("#", 4X, "Iteration")', advance='no')
do irdm = 1, nrdms_standard
write(write_unit, '(4x,"Energy numerator",1x,i2)', advance='no') irdm
if (.not. tGUGA) then
write(write_unit, '(4x,"Spin^2 numerator",1x,i2)', advance='no') irdm
end if
if (tEN2) then
write(write_unit, '(7x,"EN2 numerator",1x,i2)', advance='no') irdm
write(write_unit, '(3x,"Var+EN2 numerator",1x,i2)', advance='no') irdm
end if
if (tCalcPropEst) then
do iprop = 1, iNumPropToEst
write(write_unit, '(4x,"Property(",i2,")",1x,i2)', advance='no') iprop, irdm
end do
end if
write(write_unit, '(7x,"Normalisation",1x,i2)', advance='no') irdm
end do
do irdm = nrdms_standard + 1, nrdms_standard + nrdms_transition
if (tCalcPropEst) then
do iprop = 1, iNumPropToEst
write(write_unit, '(4x,"Property(",i2,")",1x,i2)', advance='no') iprop, irdm
end do
end if
end do
write(write_unit, '()')
end subroutine write_rdm_est_file_header