Modules/FdSimulation/TelescopeSimulatorKG2/Mirror.h
Go to the documentation of this file.
1 #ifndef _TelescopeSimulatorKG2_Mirror_h_
2 #define _TelescopeSimulatorKG2_Mirror_h_
3 
4 #include "RTResult.h"
5 
6 #include <utl/CoordinateSystemPtr.h>
7 #include <utl/AugerUnits.h>
8 
9 #include <utl/Math.h>
10 #include <utl/MathConstants.h>
11 
12 #include <utl/Point.h>
13 #include <utl/Vector.h>
14 #include <utl/TabulatedFunction.h>
15 
16 #include <string>
17 
18 using namespace utl;
19 using namespace std;
20 
21 
22 namespace utl {
23  class Photon;
24  class Vector;
25  class RandomEngine;
26  class TabulatedFunction;
27 }
28 
29 namespace fdet {
30  class Telescope;
31 }
32 
33 class TObjArray;
34 
35 namespace TelescopeSimulatorKG2 {
36 
46  class Mirror {
47 
48  public:
50  const fdet::Telescope& tel,
51  const double mirrorSize,
52  const double mirrorSegmentSigma,
53  const double mirrorRadiusSigma,
54  const double mirrorAbsorptionTop,
55  const double mirrorAbsorptionBot,
56  const utl::TabulatedFunction* const mirrorDiffusionTop,
57  const utl::TabulatedFunction* const mirrorDiffusionBot);
58 
59  RTNext Trace(const utl::Photon& photonIn, utl::Photon& photonOut);
60 
61  TObjArray* Draw();
62 
63  private:
65 
66  const double fMirrorSize;
67  const double fMirrorSegmentSigma;
68  const double fMirrorRadiusSigma;
69  const double fMirrorAbsorptionTop;
70  const double fMirrorAbsorptionBot;
73 
76 
78  const double fRCurv;
79  const double fSigma; // deviation of the normal of the mirror surface.
80 
81  struct MirrorSegment {
83  MirrorSegment(const int i, const utl::Point& p, const double r, const utl::CoordinateSystemPtr& ptr)
84  : index(i), origin(p), radius(r), cs(ptr) { }
85 
86  int index = 0;
88  double radius = 0;
90  };
91 
92  MirrorSegment& GetMirrorSegment(const utl::Point& p);
93 
94  std::map<int, MirrorSegment> fSegments;
95  };
96 
97 }
98 
99 
100 #endif
Point object.
Definition: Point.h:32
Class to hold collection (x,y) points and provide interpolation between them.
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
Wraps the random number engine used to generate distributions.
Definition: RandomEngine.h:27
MirrorSegment(const int i, const utl::Point &p, const double r, const utl::CoordinateSystemPtr &ptr)
Detector description interface for Telescope-related data.
Template class for a FADC data or calibrated data container. Use the typedefs (TraceD, TraceI, etc.) defined in Trace-fwd.h.
Definition: Trace-fwd.h:19
Vector object.
Definition: Vector.h:30
Simulates the mirror in the raytracing of the TelescopeSimulator module.

, generated on Tue Sep 26 2023.