Program Listing for File PT11Field.h

Return to documentation for file (include/crpropa/magneticField/PT11Field.h)

#ifndef CRPROPA_PSHIRKOVFIELD_H
#define CRPROPA_PSHIRKOVFIELD_H

#include "crpropa/magneticField/MagneticField.h"

namespace crpropa {
class PT11Field: public MagneticField {
private:
        bool useASS;  // switch for axisymmetric spiral field (ASS)
        bool useBSS;  // switch for bisymmetric spiral field (BSS)
        bool useHalo; // switch for halo field

        // disk parameters
        double pitch, cos_pitch, sin_pitch, PHI, cos_PHI;  // pitch angle parameters
        double d;     // distance to first field reversal
        double R_sun; // distance between sun and galactic center
        double R_c;   // radius of central region
        double z0_D;    // vertical thickness in the galactic disk
        double B0_D;    // magnetic field scale

        // halo parameters
        double z0_H;  // halo vertical position
        double R0_H;  // halo radial position
        double B0_Hn; // halo magnetic field scale (north)
        double B0_Hs; // halo magnetic field scale (south)
        double z11_H; // halo vertical thickness towards disc
        double z12_H; // halo vertical thickness off the disk

        void SetParams();

public:
        PT11Field();

        void setUseASS(bool use);
        void setUseBSS(bool use);
        void setUseHalo(bool use);

        bool isUsingASS();
        bool isUsingBSS();
        bool isUsingHalo();

        Vector3d getField(const Vector3d& pos) const;
};
} // namespace crpropa

#endif // CRPROPA_PSHIRKOVFIELD_H