Class SynchrotronRadiation
Defined in File SynchrotronRadiation.h
Inheritance Relationships
Base Type
public Module
(Class Module)
Class Documentation
-
class SynchrotronRadiation : public Module
Synchrotron radiation of charged particles in magnetic fields.
This module simulates the continuous energy loss of charged particles in magnetic fields, c.f. Jackson. The magnetic field is specified either by a MagneticField or by a RMS field strength value. The module limits the next step size to ensure a fractional energy loss dE/E < limit (default = 0.1). Optionally, synchrotron photons above a threshold (default E > 10^6 eV) are created as secondary particles. Note that the large number of secondary photons per propagation can cause memory problems. To mitigate this, use thinning. However, this still does not solve the problem completely. For this reason, a break-condition stops tracking secondary photons and reweights the current ones.
Public Functions
-
SynchrotronRadiation(ref_ptr<MagneticField> field, bool havePhotons = false, double thinning = 0, int nSamples = 0, double limit = 0.1)
Constructor
- Parameters:
field – magnetic field object
havePhotons – if true, add secondary photons as candidates
thinning – weighted sampling of secondaries (0: all particles are tracked; 1: maximum thinning)
nSamples – number of synchrotron photons to be sampled and added as candidates
limit – step size limit as fraction of mean free path
-
SynchrotronRadiation(double Brms = 0, bool havePhotons = false, double thinning = 0, int nSamples = 0, double limit = 0.1)
Constructor
- Parameters:
Brms – RMS of the magnetic field (if magnetic-field object not provided)
havePhotons – if true, add secondary photons as candidates
thinning – weighted sampling of secondaries (0: all particles are tracked; 1: maximum thinning)
nSamples – number of synchrotron photons to be sampled and added as candidates
limit – step size limit as fraction of mean free path
-
void setField(ref_ptr<MagneticField> field)
-
void setBrms(double Brms)
-
void setHavePhotons(bool havePhotons)
-
void setThinning(double thinning)
Apply thinning with a given thinning factor
- Parameters:
thinning – factor of thinning (0: no thinning, 1: maximum thinning)
-
void setLimit(double limit)
Limit the propagation step to a fraction of the mean free path
- Parameters:
limit – fraction of the mean free path
-
void setMaximumSamples(int nmax)
Set the maximum number of synchrotron photons that will be allowed to be added as candidates. This choice depends on the problem at hand. It must be such that all relevant physics is captured with the sample. Weights are added accordingly and the column ‘weight’ must be added to output.
- Parameters:
nmax – maximum number of synchrotron photons to be sampled
-
void setSecondaryThreshold(double threshold)
Synchrotron photons above the secondary energy threshold are added as candidates. This may lead to a quick increase in memory.
- Parameters:
threshold – energy threshold above which photons will be added [in Joules]
-
void setInteractionTag(std::string tag)
-
ref_ptr<MagneticField> getField()
-
double getBrms()
-
bool getHavePhotons()
-
double getThinning()
-
double getLimit()
-
int getMaximumSamples()
-
double getSecondaryThreshold() const
-
std::string getInteractionTag() const
-
void initSpectrum()
-
virtual std::string getDescription() const
-
void setDescription(const std::string &description)
-
inline size_t addReference() const
-
inline size_t removeReference() const
-
inline int removeReferenceNoDelete() const
-
inline size_t getReferenceCount() const
Protected Attributes
-
mutable size_t _referenceCount
-
SynchrotronRadiation(ref_ptr<MagneticField> field, bool havePhotons = false, double thinning = 0, int nSamples = 0, double limit = 0.1)