#include <SineSquarePolarizationProfile.hpp>
Public Member Functions | |
int | dimension () const override |
double | maxPolarizationDegree () const |
double | polarizationAngle () const |
StokesVector | polarizationForDirection (Direction bfk) const override |
double | symmetryX () const |
double | symmetryY () const |
double | symmetryZ () const |
virtual int | dimension () const =0 |
Public Member Functions inherited from SimulationItem | |
template<class T > | |
T * | find (bool setup=true) const |
template<class T > | |
T * | interface (int levels=-999999, bool setup=true) const |
virtual string | itemName () const |
void | setup () |
string | typeAndName () const |
Public Member Functions inherited from Item | |
Item (const Item &)=delete | |
virtual | ~Item () |
void | addChild (Item *child) |
const vector< Item * > & | children () const |
virtual void | clearItemListProperty (const PropertyDef *property) |
void | destroyChild (Item *child) |
virtual bool | getBoolProperty (const PropertyDef *property) const |
virtual vector< double > | getDoubleListProperty (const PropertyDef *property) const |
virtual double | getDoubleProperty (const PropertyDef *property) const |
virtual string | getEnumProperty (const PropertyDef *property) const |
virtual int | getIntProperty (const PropertyDef *property) const |
virtual vector< Item * > | getItemListProperty (const PropertyDef *property) const |
virtual Item * | getItemProperty (const PropertyDef *property) const |
virtual string | getStringProperty (const PropertyDef *property) const |
int | getUtilityProperty (string name) const |
virtual void | insertIntoItemListProperty (const PropertyDef *property, int index, Item *item) |
Item & | operator= (const Item &)=delete |
Item * | parent () const |
virtual void | removeFromItemListProperty (const PropertyDef *property, int index) |
virtual void | setBoolProperty (const PropertyDef *property, bool value) |
virtual void | setDoubleListProperty (const PropertyDef *property, vector< double > value) |
virtual void | setDoubleProperty (const PropertyDef *property, double value) |
virtual void | setEnumProperty (const PropertyDef *property, string value) |
virtual void | setIntProperty (const PropertyDef *property, int value) |
virtual void | setItemProperty (const PropertyDef *property, Item *item) |
virtual void | setStringProperty (const PropertyDef *property, string value) |
void | setUtilityProperty (string name, int value) |
virtual string | type () const |
Public Member Functions inherited from PolarizationProfileInterface | |
virtual | ~PolarizationProfileInterface () |
virtual StokesVector | polarizationForDirection (Direction bfk) const =0 |
Protected Member Functions | |
SineSquarePolarizationProfile () | |
void | setupSelfBefore () override |
Protected Member Functions inherited from PolarizationProfile | |
PolarizationProfile () | |
Protected Member Functions inherited from SimulationItem | |
SimulationItem () | |
virtual bool | offersInterface (const std::type_info &interfaceTypeInfo) const |
virtual void | setupSelfAfter () |
virtual void | setupSelfBefore () |
Protected Member Functions inherited from Item | |
Item () | |
Protected Member Functions inherited from PolarizationProfileInterface | |
PolarizationProfileInterface () | |
Private Types | |
using | BaseType = PolarizationProfile |
using | ItemType = SineSquarePolarizationProfile |
Private Attributes | |
double | _cos2gamma |
double | _maxPolarizationDegree |
double | _polarizationAngle |
double | _sin2gamma |
Direction | _sym |
double | _symmetryX |
double | _symmetryY |
double | _symmetryZ |
Friends | |
class | ItemRegistry |
The SineSquarePolarizationProfile class describes a simple axisymmetric polarization profile that can be used for testing. The user can configure the direction of the symmetry axis \(\bf{s}\), the maximum linear polarization degree \(P_\mathrm{L}^\mathrm{max}\), and the fixed polarization angle \(\gamma\). The angle \(\theta\) between the symmetry axis \(\bf{s}\) and the photon packet's propagation direction \(\bf{k}\) can be easily found from \(\cos\theta=\bf{s}\cdot\bf{k}\), assuming both directions are given as unit vectors. The Stokes vector for the polarization profile implemented by this class is then defined as:
\[\begin{aligned} P_\mathrm{L} &= P_\mathrm{L}^\mathrm{max}\,\sin^2 \theta \\ I &= 1 \\ Q &= P_\mathrm{L}\,\cos 2\gamma \\ U &= P_\mathrm{L}\,\sin 2\gamma \\ V &= 0 \\ \bf{n} &= \frac{\bf{s} \times \bf{k}}{||\bf{s} \times \bf{k}||} \end{aligned}\]
where \(\bf{n}\) is the normal to the reference plane. The reference plane is the plane through the symmetry axis and the photon packet propagation direction. This plane is undefined when the directions are parallel (i.e. the photon packet is emitted along the positive or negative symmetry axis), but in that case the radiation is unpolarized and the reference plane is irrelevant.
When an item of this type is used, the names provided by the conditional value expression "Dimension2" are inserted into the name sets used for evaluating Boolean expressions.
|
inlineprotected |
Default constructor for concrete Item subclass SineSquarePolarizationProfile : "an axysimmetric sine-square polarization emission profile" .
|
overridevirtual |
This function returns the dimension of the polarization profile, which depends on its (lack of) symmetry. The sine-square emission profile is axisymmetric as long as the symmetry axis coincides with the positive or negative z-axis.
Implements PolarizationProfile.
|
inline |
This function returns the value of the discoverable double property maxPolarizationDegree : "the maximum linear polarization degree" .
The minimum value for this property is "[0" .
The maximum value for this property is "1]" .
The default value for this property is given by the conditional value expression "0.1" .
|
inline |
This function returns the value of the discoverable double property polarizationAngle : "the linear polarization angle" .
This property represents a physical quantity of type "posangle" .
The minimum value for this property is "[0 deg" .
The maximum value for this property is "180 deg]" .
The default value for this property is given by the conditional value expression "30 deg" .
|
overridevirtual |
This function returns the Stokes vector defining the polarization state of the radiation emitted into the given direction \((\theta,\phi)\). For the sine-square emission profile, this function returns a StokesVector as describe in the header of this class.
Implements PolarizationProfileInterface.
|
overrideprotectedvirtual |
This function caches a normalized version of the direction of the symmetry axis and some other values for later use.
Reimplemented from SimulationItem.
|
inline |
This function returns the value of the discoverable double property symmetryX : "the direction of the positive symmetry axis, x component" .
This property represents a physical quantity of type "length" .
The default value for this property is given by the conditional value expression "0" .
When a value is entered for this property, the names provided by the conditional value expression "symmetryX:Dimension3" are inserted into the name sets used for evaluating Boolean expressions.
|
inline |
This function returns the value of the discoverable double property symmetryY : "the direction of the positive symmetry axis, y component" .
This property represents a physical quantity of type "length" .
The default value for this property is given by the conditional value expression "0" .
When a value is entered for this property, the names provided by the conditional value expression "symmetryY:Dimension3" are inserted into the name sets used for evaluating Boolean expressions.
|
inline |
This function returns the value of the discoverable double property symmetryZ : "the direction of the positive symmetry axis, z component" .
This property represents a physical quantity of type "length" .
The default value for this property is given by the conditional value expression "1" .