| 1 | #ifndef MARS_MStereoPar
|
|---|
| 2 | #define MARS_MStereoPar
|
|---|
| 3 |
|
|---|
| 4 | #ifndef MARS_MParContainer
|
|---|
| 5 | #include "MParContainer.h"
|
|---|
| 6 | #endif
|
|---|
| 7 |
|
|---|
| 8 | #ifndef ROOT_TVector3
|
|---|
| 9 | #include <TVector3.h>
|
|---|
| 10 | #endif
|
|---|
| 11 |
|
|---|
| 12 | class MHillas;
|
|---|
| 13 | class MGeomCam;
|
|---|
| 14 | class MPointingPos;
|
|---|
| 15 |
|
|---|
| 16 | class MStereoPar : public MParContainer
|
|---|
| 17 | {
|
|---|
| 18 | private:
|
|---|
| 19 |
|
|---|
| 20 | Float_t fCoreX; // Estimated core position on ground x
|
|---|
| 21 | Float_t fCoreY; // Estimated core position on ground y
|
|---|
| 22 |
|
|---|
| 23 | Float_t fCoreX2; // Estimated core position on ground assuming that
|
|---|
| 24 | Float_t fCoreY2; // the source direction is paralel to the tel. axis.
|
|---|
| 25 |
|
|---|
| 26 | Float_t fSourceX; // Estimated source position on the camera
|
|---|
| 27 | Float_t fSourceY; // Units are degrees!
|
|---|
| 28 |
|
|---|
| 29 | Float_t fTheta2; // deg^2; Squared angular distance of estimated source position to cameracenter.
|
|---|
| 30 |
|
|---|
| 31 | Float_t fCT1Impact; // Estimated shower impact parameter from CT1
|
|---|
| 32 | Float_t fCT2Impact; // Estimated shower impact parameter from CT2
|
|---|
| 33 |
|
|---|
| 34 | Float_t fCT1Impact2; // Estimated shower impact parameter from CT1
|
|---|
| 35 | // assuming that the source direction is paralel
|
|---|
| 36 | // to the telescope axis.
|
|---|
| 37 |
|
|---|
| 38 | Float_t fCT2Impact2; // Estimated shower impact parameter from CT2
|
|---|
| 39 | // assuming that the source direction is paralel
|
|---|
| 40 | // to the telescope axis.
|
|---|
| 41 |
|
|---|
| 42 | TVector3 CamToDir(const MGeomCam &geom, const MPointingPos &pos, Float_t x, Float_t y) const;
|
|---|
| 43 | TVector3 CamToDir(const MGeomCam &geom, const MPointingPos &pos, const TVector2 &p) const;
|
|---|
| 44 |
|
|---|
| 45 | void CalcCT(const MHillas &h, const MPointingPos &p, const MGeomCam &g, TVector2 &cv1, TVector2 &cv2) const;
|
|---|
| 46 |
|
|---|
| 47 | TVector2 VersorToCore(const TVector2 &v1, const TVector2 &v2, const TVector2 &p1, const TVector2 &p2) const;
|
|---|
| 48 |
|
|---|
| 49 | Double_t CalcImpact(const TVector2 &w, const TVector2 &v, const TVector2 &p) const;
|
|---|
| 50 | Double_t CalcImpact(const TVector3 &v, const TVector2 &p) const;
|
|---|
| 51 | Double_t CalcImpact(const TVector2 &core, const TVector2 &p, const MPointingPos &point) const;
|
|---|
| 52 |
|
|---|
| 53 | public:
|
|---|
| 54 | MStereoPar(const char *name=NULL, const char *title=NULL);
|
|---|
| 55 |
|
|---|
| 56 | void Reset();
|
|---|
| 57 |
|
|---|
| 58 | Float_t GetCoreX() const { return fCoreX; }
|
|---|
| 59 | Float_t GetCoreY() const { return fCoreY; }
|
|---|
| 60 | Float_t GetSourceX() const { return fSourceX; }
|
|---|
| 61 | Float_t GetSourceY() const { return fSourceY; }
|
|---|
| 62 | Float_t GetTheta2() const { return fTheta2; }
|
|---|
| 63 | Float_t GetCT1Impact() const { return fCT1Impact; }
|
|---|
| 64 | Float_t GetCT2Impact() const { return fCT2Impact; }
|
|---|
| 65 | Float_t GetCT1Impact2() const { return fCT1Impact2; }
|
|---|
| 66 | Float_t GetCT2Impact2() const { return fCT2Impact2; }
|
|---|
| 67 |
|
|---|
| 68 | void Calc(const MHillas &h1, const MPointingPos &p1, const MGeomCam &g1, const Float_t ct1_x, const Float_t ct1_y,
|
|---|
| 69 | const MHillas &h2, const MPointingPos &p2, const MGeomCam &g2, const Float_t ct2_x, const Float_t ct2_y);
|
|---|
| 70 |
|
|---|
| 71 | ClassDef(MStereoPar, 1) // Container to hold new image parameters
|
|---|
| 72 | };
|
|---|
| 73 |
|
|---|
| 74 | #endif
|
|---|