BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
PolFilter.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Device/Pol/PolFilter.h
6 //! @brief Defines class DetectionProperties.
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef USER_API
16 #ifndef BORNAGAIN_DEVICE_POL_POLFILTER_H
17 #define BORNAGAIN_DEVICE_POL_POLFILTER_H
18 
19 #include "Param/Node/INode.h"
20 #include <heinz/Vectors3D.h>
21 
22 class SpinMatrix;
23 
24 //! Detector properties (efficiency, transmission).
25 //! @ingroup detector
26 
27 class PolFilter : public INode {
28 public:
29  PolFilter(R3 direction, double efficiency, double total_transmission);
30  PolFilter();
31  ~PolFilter() override = default;
32 
33  std::string className() const final { return "PolFilter"; }
34  std::vector<ParaMeta> parDefs() const final
35  {
36  return {{"Efficiency", "", "efficiency", 0, 1, 1},
37  {"Transmission", "", "total transmission", 0, 1, 1}};
38  }
39 
40  //! Return the polarization density matrix (in spin basis along z-axis)
41  SpinMatrix matrix() const;
42 
43  //! Retrieve the analyzer characteristics
44  R3 analyzerDirection() const;
45  double analyzerEfficiency() const; //!< will always return positive value
46  double totalTransmission() const;
47 
48 private:
49  R3 m_direction; //!< direction of polarization analysis
50  double m_efficiency; //!< efficiency of polarization analysis
51  double m_total_transmission; //!< total transmission of polarization analysis
52 };
53 
54 #endif // BORNAGAIN_DEVICE_POL_POLFILTER_H
55 #endif // USER_API
Defines interface INode.
Base class for tree-like structures containing parameterized objects.
Definition: INode.h:40
Detector properties (efficiency, transmission).
Definition: PolFilter.h:27
double m_efficiency
efficiency of polarization analysis
Definition: PolFilter.h:50
R3 m_direction
direction of polarization analysis
Definition: PolFilter.h:49
double totalTransmission() const
Definition: PolFilter.cpp:58
~PolFilter() override=default
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
Definition: PolFilter.h:33
double m_total_transmission
total transmission of polarization analysis
Definition: PolFilter.h:51
double analyzerEfficiency() const
will always return positive value
Definition: PolFilter.cpp:53
R3 analyzerDirection() const
Retrieve the analyzer characteristics.
Definition: PolFilter.cpp:48
std::vector< ParaMeta > parDefs() const final
Returns the parameter definitions, to be hard-coded in each leaf class.
Definition: PolFilter.h:34
SpinMatrix matrix() const
Return the polarization density matrix (in spin basis along z-axis)
Definition: PolFilter.cpp:40