Corrects dispersive delays. More...

#include <Dispersion.h>

Inheritance diagram for Pulsar::Dispersion:
Pulsar::ColdPlasma< DispersionDelay, Dedisperse > Pulsar::Transformation< Integration > Pulsar::Algorithm Reference::Able Reference::HeapTracked

Public Member Functions

 Dispersion ()
 Default constructor.
double get_relative_measure (const Integration *) const override
 Return the dispersion measure.
double get_absolute_measure (const Integration *) const override
 Return the auxiliary dispersion measure.
bool get_relative_corrected (const Integration *) const override
 Return true if the dispersion measure has been corrected with respect to centre frequency.
bool get_absolute_corrected (const Integration *) const override
 Return true if the auxiliary dispersion measure has been corrected with respect to centre frequency.
double get_identity () const override
 Return zero delay.
void combine (double &result, const double &add) const override
 Combine delays.
void update (const Integration *) override
 Setup all necessary attributes.
void apply (Integration *, unsigned channel, double delay) override
 Phase rotate each profile by the correction.
void execute (Archive *) override
 Apply the current correction to all sub-integrations in an archive.
void revert (Archive *) override
 Undo the correction.
void set_dispersion_measure (double dispersion_measure)
 Set the dispersion measure.
double get_dispersion_measure () const
 Get the dispersion measure.
double get_delay () const
 Get the dispersive delay in seconds.
double get_shift () const
 Get the dispersive phase shift in turns.
Public Member Functions inherited from Pulsar::ColdPlasma< DispersionDelay, Dedisperse >
 ColdPlasma ()
 Default constructor.
void just_do_it (Archive *)
 Just do the correction (off the books)
void transform (Integration *)
 The default correction.
void setup (const Integration *)
 Set up internal variables before execution.
virtual void set (const Integration *data)
 Calls setup then update.
virtual void set_Profile (const Profile *data)
 Set the frequency for which the correction will be computed.
virtual void set_frequency (double frequency)
 Set the frequency for which the correction will be computed.
void execute1 (Integration *)
 Execute the correction for the current get_reference_frequency and get_measure.
void revert_relative (Integration *)
 Undo the relative correction.
void correct (Integration *, unsigned start_chan, unsigned end_chan, double freq)
 Correct the selected range according to effective_measure.
void match (const Integration *reference, Integration *to_be_corrected)
 Correct the second argument as the first argument was corrected.
void set_reference_wavelength (double metres)
 Set the reference wavelength in metres.
double get_reference_wavelength () const
 Get the reference wavelength in metres.
void set_reference_frequency (double MHz)
 Set the reference frequency in MHz.
double get_reference_frequency () const
 Get the reference frequency in MHz.
void set_delta (const Type &d)
 Set the correction due to a change in reference wavelength.
Type get_delta () const
 Get the correction due to a change in reference wavelength.
Public Member Functions inherited from Pulsar::Transformation< Integration >
void operator() (Integration *container)
 Functor interface.
Public Member Functions inherited from Reference::Able
 Able (const Able &)
Ableoperator= (const Able &)
unsigned get_reference_count () const
Public Member Functions inherited from Reference::HeapTracked
 HeapTracked (const HeapTracked &)
HeapTrackedoperator= (const HeapTracked &)
bool __is_on_heap () const

Protected Attributes

double folding_period
IntegrationBarycentre bary
double earth_doppler
Protected Attributes inherited from Pulsar::ColdPlasma< DispersionDelay, Dedisperse >
DispersionDelay relative
 Computes the effect to be corrected with respect to reference frequency.
DispersionDelay absolute
 Computes the effect to be corrected with respect to infinite frequency.
Type delta
 The correction due to a change in reference wavelength.
std::string name
 The name to be used in verbose messages.
std::string val
 The name of the correction measure.

Static Protected Attributes

static Option< bool > barycentric_correction

Additional Inherited Members

Public Types inherited from Pulsar::ColdPlasma< DispersionDelay, Dedisperse >
typedef DispersionDelay::Return Type
Static Public Member Functions inherited from Reference::Able
static size_t get_instance_count ()
Static Public Member Functions inherited from Reference::HeapTracked
static void * operator new (size_t size, void *ptr=0)
static void operator delete (void *location, void *ptr)
static void operator delete (void *location)
static size_t get_heap_queue_size ()
Protected Member Functions inherited from Pulsar::ColdPlasma< DispersionDelay, Dedisperse >
void range (Integration *, unsigned start_chan, unsigned end_chan)
 Execute the correction on the selected range.
virtual void update_relative (const Integration *)
 update the relative transformation based on past correction
virtual void update_absolute (const Integration *)
 update the absolute transformation based on past correction
Protected Member Functions inherited from Reference::Able
Handle__reference (bool active) const
void __dereference (bool auto_delete=true) const

Detailed Description

Corrects dispersive delays.

Rotates the phase of each profile in each frequency channel to remove dispersive delays with respect to the reference frequency.

Postcondition
All profiles will be phase-aligned to the reference frequency

Member Function Documentation

◆ apply()

void Pulsar::Dispersion::apply ( Integration * data,
unsigned channel,
double delay )
overridevirtual

◆ combine()

void Pulsar::Dispersion::combine ( double & result,
const double & add ) const
inlineoverridevirtual

◆ execute()

void Pulsar::Dispersion::execute ( Archive * arch)
overridevirtual

◆ get_absolute_corrected()

bool Pulsar::Dispersion::get_absolute_corrected ( const Integration * data) const
overridevirtual

Return true if the auxiliary dispersion measure has been corrected with respect to centre frequency.

As returned by psredit -c aux:dmc

Implements Pulsar::ColdPlasma< DispersionDelay, Dedisperse >.

References Pulsar::Integration::get_absolute_dispersion_corrected(), and Pulsar::IntegrationManager::verbose.

◆ get_absolute_measure()

double Pulsar::Dispersion::get_absolute_measure ( const Integration * data) const
overridevirtual

Return the auxiliary dispersion measure.

As returned by psredit -c int:aux:dm

Implements Pulsar::ColdPlasma< DispersionDelay, Dedisperse >.

References Pulsar::Integration::get(), and Pulsar::AuxColdPlasmaMeasures::get_dispersion_measure().

◆ get_identity()

double Pulsar::Dispersion::get_identity ( ) const
inlineoverridevirtual

Return zero delay.

Implements Pulsar::ColdPlasma< DispersionDelay, Dedisperse >.

Referenced by Dispersion().

◆ get_relative_corrected()

bool Pulsar::Dispersion::get_relative_corrected ( const Integration * data) const
overridevirtual

Return true if the dispersion measure has been corrected with respect to centre frequency.

As returned by psredit -c dmc

Implements Pulsar::ColdPlasma< DispersionDelay, Dedisperse >.

References Pulsar::Integration::get_dedispersed(), and Pulsar::IntegrationManager::verbose.

◆ get_relative_measure()

double Pulsar::Dispersion::get_relative_measure ( const Integration * data) const
overridevirtual

Return the dispersion measure.

As returned by psredit -c dm

Implements Pulsar::ColdPlasma< DispersionDelay, Dedisperse >.

References Pulsar::Integration::get_dispersion_measure(), and Pulsar::IntegrationManager::verbose.

◆ get_shift()

double Pulsar::Dispersion::get_shift ( ) const

Get the dispersive phase shift in turns.

Get the phase shift in turns.

References get_delay(), and Pulsar::IntegrationManager::verbose.

Referenced by Pulsar::DisperseWeight::DisperseWeight().

◆ revert()

void Pulsar::Dispersion::revert ( Archive * arch)
overridevirtual

◆ update()

void Pulsar::Dispersion::update ( const Integration * data)
overridevirtual

Setup all necessary attributes.

Set attributes in preparation for execute.

Reimplemented from Pulsar::ColdPlasma< DispersionDelay, Dedisperse >.

References Pulsar::Integration::get_folding_period(), Pulsar::ColdPlasma< Calculator, History >::update(), and Pulsar::Integration::verbose.


The documentation for this class was generated from the following files:

Generated using doxygen 1.14.0