/Lens.h
Go to the documentation of this file.
1 #ifndef _TelescopeSimulatorKG2_Lens_h_
2 #define _TelescopeSimulatorKG2_Lens_h_
3 
4 #include "RTResult.h"
5 #include "RayTracer.h"
6 #include "RTFunctions.h"
7 
8 #include <utl/CoordinateSystemPtr.h>
9 #include <utl/Point.h>
10 
11 #include <string>
12 
13 
14 namespace utl {
15  class Photon;
16  class Vector;
17  class TabulatedFunction;
18  class RandomEngine;
19 }
20 
21 namespace fdet {
22  class Telescope;
23 }
24 
25 class TObjArray;
26 
27 namespace TelescopeSimulatorKG2 {
28 
38  class Lens {
39 
40  public:
41  Lens(utl::RandomEngine& rndm,
42  const fdet::Telescope& tel,
43  const bool simulateHaloEffects,
44  const double lensIncreaseRefl,
45  const double lensPosition,
46  const double minLensThickness,
47  const double torusRadius,
48  const double tubeRadius,
49  const double torusZ0);
50  ~Lens();
51 
52  RTNext Trace(const utl::Photon& photonIn, utl::Photon& photonOut);
53  RTNext TraceWithTorus(const utl::Photon& photonIn, utl::Photon& photonOut);
54 
55  TObjArray* Draw();
56 
57  // this is just needed for photon plotting
58  void SetPhotonTrack(RayTracer::Track* const track) { fPhotonTrack = track; }
59 
60  private:
61  double ProfilePrototype(const double r) const;
62  utl::Vector CurvaturePrototype(const double x, const double y) const;
63  void ChoosePhysicalIntersection(unsigned int& index,
64  const RTFunctions::IntersectionList& intersections) const;
65 
66  private:
69 
70  // to artificially increase reflection
71  const double fIncreaseReflection;
72 
73  // geometry of the lens (and torus)
74  const double fPosZ;
75  const double fMinLensThickness;
76  const double fTorusRadius;
77  const double fTubeRadius;
78  const double fTorusZ0;
79  double fLXTorusRadius = 0;
80  double fLXTubeRadius = 0;
81  double fLXz0 = 0;
82 
83  utl::CoordinateSystemPtr fTelCS; // reference system
87  //utl::Point fFilterCenter;
88 
89  const double fR1; // geometry R1=.85m
90  const double fR2; // geometry R2=1.1m
91  const double fIndexAir = 1.000277; // reflection index of air, at STP
94  const double fSigRho; // uncertaint in the definition of normal of the surface of the Lens
95  unsigned int fNbug;
96 
97  // for visual plotting of ray tracing details
99  };
100 
101 }
102 
103 
104 #endif
std::vector< PhotonNormalPair > IntersectionList
Definition: /RTFunctions.h:47
RayTracer::Track * fPhotonTrack
Definition: /Lens.h:98
utl::CoordinateSystemPtr fTelCS
Definition: /Lens.h:83
TObjArray * Draw()
Definition: /Lens.cc:670
Point object.
Definition: Point.h:32
const double fR2
Definition: /Lens.h:90
Simulates the corrector ring in the raytracing of the TelescopeSimulator module.
Definition: /Lens.h:38
const double fTorusZ0
Definition: /Lens.h:78
const double fPosZ
Definition: /Lens.h:74
Class to hold collection (x,y) points and provide interpolation between them.
Lens(utl::RandomEngine &rndm, const fdet::Telescope &tel, const bool simulateHaloEffects, const double lensIncreaseRefl, const double lensPosition, const double minLensThickness, const double torusRadius, const double tubeRadius, const double torusZ0)
Definition: /Lens.cc:46
const double fR1
Definition: /Lens.h:89
unsigned int fNbug
Definition: /Lens.h:95
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
const utl::TabulatedFunction & fTransmittance
Definition: /Lens.h:93
const utl::Point fPosPlane
Definition: /Lens.h:86
utl::Vector CurvaturePrototype(const double x, const double y) const
Definition: /Lens.cc:724
Wraps the random number engine used to generate distributions.
Definition: RandomEngine.h:27
const double fIndexAir
Definition: /Lens.h:91
void ChoosePhysicalIntersection(unsigned int &index, const RTFunctions::IntersectionList &intersections) const
Definition: /Lens.cc:768
const double fTorusRadius
Definition: /Lens.h:76
RTNext TraceWithTorus(const utl::Photon &photonIn, utl::Photon &photonOut)
Simulate the lens.
Definition: /Lens.cc:341
const bool fSimulateHaloEffects
Definition: /Lens.h:68
const double fIncreaseReflection
Definition: /Lens.h:71
Detector description interface for Telescope-related data.
double ProfilePrototype(const double r) const
Vector object.
Definition: Vector.h:30
const double fSigRho
Definition: /Lens.h:94
void SetPhotonTrack(RayTracer::Track *const track)
Definition: /Lens.h:58
RTNext Trace(const utl::Photon &photonIn, utl::Photon &photonOut)
const utl::Point fTorusOrigin
Definition: /Lens.h:85
const utl::TabulatedFunction & fRefractiveIndex
Definition: /Lens.h:92
const utl::Point fOrigin
Definition: /Lens.h:84
utl::RandomEngine & fRandom
Definition: /Lens.h:67
const double fMinLensThickness
Definition: /Lens.h:75
const double fTubeRadius
Definition: /Lens.h:77

, generated on Tue Sep 26 2023.