source: trunk/Mars/mgeom/MGeomMirror.h@ 16743

Last change on this file since 16743 was 3713, checked in by gaug, 21 years ago
*** empty log message ***
File size: 2.5 KB
Line 
1#ifndef MARS_MGeomMirror
2#define MARS_MGeomMirror
3
4#ifndef MARS_MParContainer
5#include "MParContainer.h"
6#endif
7
8#ifndef ROOT_TVector3
9#include <TVector3.h>
10#endif
11
12#ifndef ROOT_TArrayF
13#include <TArrayF.h>
14#endif
15
16class TRotation;
17class MGeomMirror : public MParContainer
18{
19private:
20 Int_t fMirrorId; // the Mirror Id
21
22 Float_t fFocalDist; // [cm] focal distance of that mirror
23 Float_t fSX; // [cm] curvilinear coordinate of mirror's center in X
24 Float_t fSY; // [cm] curvilinear coordinate of mirror's center in Y
25 Float_t fX; // [cm] x coordinate of the center of the mirror
26 Float_t fY; // [cm] y coordinate of the center of the mirror
27 Float_t fZ; // [cm] z coordinate of the center of the mirror
28 Float_t fThetaN; // polar theta angle of the direction where the mirror points to
29 Float_t fPhiN; // polar phi angle of the direction where the mirror points to
30 Float_t fXN; // xn coordinate of the normal vector in the center
31 Float_t fYN; // yn coordinate of the normal vector in the center
32 Float_t fZN; // zn coordinate of the normal vector in the center
33 // Note: fXN^2*fYN^2*fZN^2 = 1
34 Float_t fDeviationX; // [cm] deviation in x of the spot of a single mirror on the camera plane
35 Float_t fDeviationY; // [cm] deviation in y of the spot of a single mirror on the camera plane
36
37 TArrayF fWavelength; // List of wavelength
38 TArrayF fReflectivity; // Mirror reflectivity
39
40 TRotation *fReflector; //! Store this for acceleration
41
42public:
43 MGeomMirror(Int_t mir=-1, const char *name=NULL, const char *title=NULL);
44
45 Int_t GetMirrorId() const { return fMirrorId; }
46
47 void SetMirrorContent(Int_t mir, Float_t focal, Float_t curv_x,
48 Float_t curv_y, Float_t lin_x, Float_t lin_y,
49 Float_t lin_z, Float_t theta, Float_t phi,
50 Float_t x_n, Float_t y_n, Float_t z_n);
51 void SetMirrorDeviations(Float_t dev_x, Float_t dev_y);
52
53 void SetReflectivity(const TArrayF &wav, const TArrayF &ref);
54
55 void SetArraySize(Int_t dim) { fWavelength.Set(dim); fReflectivity.Set(dim); }
56
57 TVector3 GetMirrorCenter() const { return TVector3(fX/100, fY/100, fZ/100); }
58 TVector3 GetMirrorNorm() const { return TVector3(fXN, fYN, fZN); }
59
60 TVector3 GetReflection(const TVector3 &star, Double_t dist=-1);
61
62 ClassDef(MGeomMirror, 2) // geometry class describing one mirror
63};
64
65#endif
66
67
Note: See TracBrowser for help on using the repository browser.