Skip to main content

PSRCHIVE / DSPSR

 

Software: PSRCHIVE / DSPSR (intertwined)

Key Type(s): Int, String

Depends on: Sigproc, TEMPO, TEMPO2

Change at: Compilation

Repo: https://sourceforge.net/projects/psrchive/ https://sourceforge.net/projects/dspsr/

Quick links: 

PSRCHIVE and DSPSR are heavily intertwined, and need multiple changes at compilation time to provide initial support for a telescope, with further changes possible by modifying your TEMPO(2) configurations at runtime.

This focuses on the base software and Sigproc reader/writers, other output types may require further changes(e.g., FITS can be modified in the DSPSR Kernel/Formars/FITS/... path).

You will need to chose a site or telescope name, as well as be able to characterise your type of telescope.

  • PSRCHIVE
    • Util/tempo/itoa.C: static int default_aliases () needs you to tie your TEMPO1 code to your chosen site / telescope name.
	/*** Previous aliases ***/
	add_alias (TEMPO_CODE, "MYSITENAME");
	/*** Further aliases ***/
    • The itoa switch statement or the tempo2 logic needs to be able to identify your telescope. An example is not provided for this step.
    • Base/Extensions/Pulsar/Telescopes.h: A new function prototype following the signature void Pulsar::Telescopes::MYSITENAME(Telescope *t) inside the namespace "Telescopes"
	/*** Previous Prototypes ***/
	void Pulsar::Telescopes::MYSITENAME(Telescope *t)
	/*** More prototypes ***/
    • Base/Extensions/Telescopes.C: A new function with signature following the prototype you just defined 
/*** Other telescope definitions ***/

void Pulsar::Telescopes::MYSITENAME(Telescope *t)
{
    t->set_name ("MYSITENAME");
  	// You will need to describe the properties of your telescope as well, check other entries in this file for further details.
}
/*** Further telescope definitions ***/
  • DSPSR
    • Kernel/Formats/sigproc/SigProcObservation.C: static std::string get_sigproc_telescope_name (int _id) needs your Sigproc site identifier and name.
	/*** Previous Sigproc ID cases ***/
    case MY_SIGPROC_SITE_ID:
    	return "MYSITENAME";
    /*** Further Sigproc ID cases ***/
    • Kernel/Formats/sigproc/SigProcObservation.C: static int get_sigproc_telescope_id (string name) needs your Sigproc site name and TEMPO1/ITOA identifier.
	/*** Other site code ifs ***/
	else if (itoa == "MY_TEMPO_CODE") return MY_SIGPROC_SITE_ID;
	/*** Further site code ifs ***/
    • Kernel/Formats/sigproc/SigProcObservation.C: static std::string get_sigproc_machine_name (int _id, int _telescope) needs your Sigproc processing node identifier and name.
 	/*** Previous Sigproc ID cases ***/
    case MY_SIGPROC_PROCESSING_NODE_ID:
    	return "MYNODENAME";
    /*** Further Sigproc ID cases ***/
    • Kernel/Formats/sigproc/SigProcObservation.C: void dsp::SigProcObservation::unload_global () needs your Sigproc processing node identifier and name.
	/*** Other processing node ID ifs ***/
	else if(get_machine().compare("MYNODENAME")==0)machine_id=MY_NODE_ID;
	/*** Further processing node ID ifs ***/