From 50c058ec8542e98b8befe7bea630c48cecaf5a91 Mon Sep 17 00:00:00 2001 From: Abhimanyu Susobhanan Date: Fri, 7 Feb 2025 09:42:10 +0100 Subject: [PATCH 1/3] photon.jl --- src/toa/photon.jl | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/toa/photon.jl diff --git a/src/toa/photon.jl b/src/toa/photon.jl new file mode 100644 index 00000000..7092e2f8 --- /dev/null +++ b/src/toa/photon.jl @@ -0,0 +1,27 @@ +export Photon + +struct Photon <: TOABase + arrival_time::TOA + weight::GQ{0,Float64} + + function Photon(arrival_time, frequency, weight, ephem, index) + toa = TOA(arrival_time, time(0.0), frequency, dimensionless(0.0), ephem, index) + return new(toa, weight) + end +end + +struct PhotonCorrection <: TOACorrectionBase + arrival_time_correction::TOACorrection +end + +function PhotonCorrection(delay, phase, ssb_psr_pos) + @assert all(iszero.(ssb_psr_pos)) || + dot(ssb_psr_pos, ssb_psr_pos) ≈ dimensionless(1.0) "ssb_psr_pos must be a zero vector (representing pending computation) or a unit vector." + + return PhotonCorrection(TOACorrection(delay, phase, dimensionless(1.0), GQ{2}(0.0), frequency(0.0), dimensionless(1.1), ssb_psr_pos)) +end + +PhotonCorrection() = PhotonCorrection(time(0.0), dimensionless(0.0), dimensionless.((0.0, 0.0, 0.0)),) + +fractional_phase(photcorr::PhotonCorrection) = photcorr.arrival_time_correction.phase - round(photcorr.arrival_time_correction.phase) + From c30f554b2e679929763464aec755bfcb15cd6135 Mon Sep 17 00:00:00 2001 From: Abhimanyu Susobhanan Date: Fri, 7 Feb 2025 09:42:19 +0100 Subject: [PATCH 2/3] photon_model.jl --- src/Vela.jl | 2 ++ src/model/photon_model.jl | 14 ++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 src/model/photon_model.jl diff --git a/src/Vela.jl b/src/Vela.jl index 1dc7f596..da9e6b7f 100644 --- a/src/Vela.jl +++ b/src/Vela.jl @@ -16,6 +16,7 @@ export GQ include("toa/ephemeris.jl") include("toa/toa.jl") include("toa/wideband_toa.jl") +include("toa/photon.jl") include("parameter/parameter.jl") include("model/component.jl") include("model/kernel.jl") @@ -47,6 +48,7 @@ include("model/gp_noise.jl") include("model/dispersion_measurement_noise.jl") include("model/timing_model.jl") include("model/wideband_model.jl") +include("model/photon_model.jl") include("prior/prior.jl") include("prior/prior_scaling.jl") include("prior/simple_prior.jl") diff --git a/src/model/photon_model.jl b/src/model/photon_model.jl new file mode 100644 index 00000000..9bbac7d2 --- /dev/null +++ b/src/model/photon_model.jl @@ -0,0 +1,14 @@ +"""Update a `CorrectedWidebandTOA` object. +Most components only affect the TOA part and not the DM part.""" +correct_toa( + component::Component, + photon::Photon, + photcorr::PhotonCorrection, + params::NamedTuple, +) = PhotonCorrection( + correct_toa(component, photon.toa, photcorr.arrival_time_correction, params), +) + +"""Update a `WidebandTOA` object using a timing model.""" +correct_toa(model::TimingModel, wtoa::Photon, params::NamedTuple) = + correct_toa(model, wtoa, PhotonCorrection(), params) From 9eb36b4f3e275b4040287a88972cd6fe18531c9c Mon Sep 17 00:00:00 2001 From: Abhimanyu Susobhanan Date: Fri, 7 Feb 2025 09:42:55 +0100 Subject: [PATCH 3/3] photon.jl --- src/toa/photon.jl | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/toa/photon.jl b/src/toa/photon.jl index 7092e2f8..74ea207f 100644 --- a/src/toa/photon.jl +++ b/src/toa/photon.jl @@ -15,13 +15,23 @@ struct PhotonCorrection <: TOACorrectionBase end function PhotonCorrection(delay, phase, ssb_psr_pos) - @assert all(iszero.(ssb_psr_pos)) || - dot(ssb_psr_pos, ssb_psr_pos) ≈ dimensionless(1.0) "ssb_psr_pos must be a zero vector (representing pending computation) or a unit vector." - - return PhotonCorrection(TOACorrection(delay, phase, dimensionless(1.0), GQ{2}(0.0), frequency(0.0), dimensionless(1.1), ssb_psr_pos)) + @assert all(iszero.(ssb_psr_pos)) || dot(ssb_psr_pos, ssb_psr_pos) ≈ dimensionless(1.0) "ssb_psr_pos must be a zero vector (representing pending computation) or a unit vector." + + return PhotonCorrection( + TOACorrection( + delay, + phase, + dimensionless(1.0), + GQ{2}(0.0), + frequency(0.0), + dimensionless(1.1), + ssb_psr_pos, + ), + ) end -PhotonCorrection() = PhotonCorrection(time(0.0), dimensionless(0.0), dimensionless.((0.0, 0.0, 0.0)),) - -fractional_phase(photcorr::PhotonCorrection) = photcorr.arrival_time_correction.phase - round(photcorr.arrival_time_correction.phase) +PhotonCorrection() = + PhotonCorrection(time(0.0), dimensionless(0.0), dimensionless.((0.0, 0.0, 0.0))) +fractional_phase(photcorr::PhotonCorrection) = + photcorr.arrival_time_correction.phase - round(photcorr.arrival_time_correction.phase)