1 | #ifndef MARS_MGeomMirror
|
---|
2 | #define MARS_MGeomMirror
|
---|
3 |
|
---|
4 | #ifndef MARS_MParContainer
|
---|
5 | #include "MParContainer.h"
|
---|
6 | #endif
|
---|
7 |
|
---|
8 | #ifndef ROOT_TArrayF
|
---|
9 | #include <TArrayF.h>
|
---|
10 | #endif
|
---|
11 |
|
---|
12 | class MGeomMirror : public MParContainer
|
---|
13 | {
|
---|
14 | private:
|
---|
15 | Int_t fMirrorId; // the Mirror Id
|
---|
16 |
|
---|
17 | Float_t fFocalDist; // focal distance of that mirror [cm]
|
---|
18 | Float_t fSX; // curvilinear coordinate of mirror's center in X[cm]
|
---|
19 | Float_t fSY; // curvilinear coordinate of mirror's center in X[cm]
|
---|
20 | Float_t fX; // x coordinate of the center of the mirror [cm]
|
---|
21 | Float_t fY; // y coordinate of the center of the mirror [cm]
|
---|
22 | Float_t fZ; // z coordinate of the center of the mirror [cm]
|
---|
23 | Float_t fThetaN; // polar theta angle of the direction
|
---|
24 | // where the mirror points to
|
---|
25 | Float_t fPhiN; // polar phi angle of the direction
|
---|
26 | // where the mirror points to
|
---|
27 | Float_t fXN; // xn coordinate of the normal vector
|
---|
28 | // in the center
|
---|
29 | Float_t fYN; // yn coordinate of the normal vector
|
---|
30 | // in the center
|
---|
31 | Float_t fZN; // zn coordinate of the normal vector
|
---|
32 | // in the center
|
---|
33 | // Note: fXN^2*fYN^2*fZN^2 = 1
|
---|
34 | Float_t fDeviationX; // deviation in x [cm]
|
---|
35 | Float_t fDeviationY; // deviation in y [cm]
|
---|
36 | // of the spot of a single mirror on the camera plane
|
---|
37 | TArrayF fWavelength; // List of wavelength
|
---|
38 | TArrayF fReflectivity;// Mirror reflectivity
|
---|
39 |
|
---|
40 | public:
|
---|
41 | MGeomMirror(Int_t mir=-1, const char *name=NULL, const char *title=NULL);
|
---|
42 |
|
---|
43 | Int_t GetMirrorId() const { return fMirrorId; }
|
---|
44 |
|
---|
45 | void SetMirrorContent(Int_t mir, Float_t focal, Float_t curv_x,
|
---|
46 | Float_t curv_y, Float_t lin_x, Float_t lin_y,
|
---|
47 | Float_t lin_z, Float_t theta, Float_t phi,
|
---|
48 | Float_t x_n, Float_t y_n, Float_t z_n);
|
---|
49 | void SetMirrorDeviations(Float_t dev_x, Float_t dev_y);
|
---|
50 |
|
---|
51 | void SetReflectivity(const TArrayF &wav, const TArrayF &ref);
|
---|
52 |
|
---|
53 | void SetArraySize(Int_t dim) { fWavelength.Set(dim); fReflectivity.Set(dim); }
|
---|
54 |
|
---|
55 | ClassDef(MGeomMirror, 2) // geometry class describing one mirror
|
---|
56 | };
|
---|
57 |
|
---|
58 | #endif
|
---|
59 |
|
---|
60 |
|
---|