Dispersion.h
1//-*-C++-*-
2/***************************************************************************
3 *
4 * Copyright (C) 2006-2010 by Willem van Straten
5 * Licensed under the Academic Free License version 2.1
6 *
7 ***************************************************************************/
8
9// psrchive/More/General/Pulsar/Dispersion.h
10
11#ifndef __Pulsar_Dispersion_h
12#define __Pulsar_Dispersion_h
13
14#include "Pulsar/ColdPlasma.h"
15#include "Pulsar/Config.h"
16#include "Pulsar/DispersionDelay.h"
17#include "Pulsar/Dedisperse.h"
18#include "Pulsar/IntegrationBarycentre.h"
19
20namespace Pulsar {
21
23
28 class Dispersion : public ColdPlasma<DispersionDelay,Dedisperse> {
29
30 public:
31
33 Dispersion ();
34
36
37 double get_relative_measure (const Integration*) const override;
38
40
41 double get_absolute_measure (const Integration*) const override;
42
44
45 bool get_relative_corrected (const Integration*) const override;
46
48
49 bool get_absolute_corrected (const Integration*) const override;
50
52 double get_identity () const override { return 0; }
53
55 void combine (double& result, const double& add) const override { result += add; }
56
58 void update (const Integration*) override;
59
61 void apply (Integration*, unsigned channel, double delay) override;
62
64 void execute (Archive*) override;
65
67 void revert (Archive*) override;
68
70 void set_dispersion_measure (double dispersion_measure)
71 { relative.set_measure (dispersion_measure); }
72
74 double get_dispersion_measure () const
75 { return relative.get_measure (); }
76
78 double get_delay () const;
79
81 double get_shift () const;
82
83 protected:
84
85 double folding_period;
86
87 static Option<bool> barycentric_correction;
89 double earth_doppler;
90
91 };
92
93}
94
95#endif
The primary interface to pulsar observational data.
Definition Archive.h:46
DispersionDelay relative
Definition ColdPlasma.h:145
void apply(Integration *, unsigned channel, double delay) override
Phase rotate each profile by the correction.
Definition Dispersion.C:94
double get_absolute_measure(const Integration *) const override
Return the auxiliary dispersion measure.
Definition Dispersion.C:51
void update(const Integration *) override
Setup all necessary attributes.
Definition Dispersion.C:119
bool get_relative_corrected(const Integration *) const override
Return true if the dispersion measure has been corrected with respect to centre frequency.
Definition Dispersion.C:60
void set_dispersion_measure(double dispersion_measure)
Set the dispersion measure.
Definition Dispersion.h:70
void combine(double &result, const double &add) const override
Combine delays.
Definition Dispersion.h:55
void execute(Archive *) override
Apply the current correction to all sub-integrations in an archive.
Definition Dispersion.C:79
Dispersion()
Default constructor.
Definition Dispersion.C:34
double get_identity() const override
Return zero delay.
Definition Dispersion.h:52
void revert(Archive *) override
Undo the correction.
Definition Dispersion.C:88
double get_relative_measure(const Integration *) const override
Return the dispersion measure.
Definition Dispersion.C:42
double get_dispersion_measure() const
Get the dispersion measure.
Definition Dispersion.h:74
bool get_absolute_corrected(const Integration *) const override
Return true if the auxiliary dispersion measure has been corrected with respect to centre frequency.
Definition Dispersion.C:69
double get_shift() const
Get the dispersive phase shift in turns.
Definition Dispersion.C:147
double get_delay() const
Get the dispersive delay in seconds.
Definition Dispersion.C:138
Convenience interface to Barycentre class.
Definition IntegrationBarycentre.h:20
Array of Profiles integrated over the same time interval.
Definition Integration.h:37
Configuration option.
Definition Config.h:69
Defines the PSRCHIVE library.
Definition CalSource.h:17

Generated using doxygen 1.14.0