source: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h@ 3644

Last change on this file since 3644 was 3638, checked in by gaug, 21 years ago
*** empty log message ***
File size: 4.9 KB
Line 
1#ifndef MARS_MCalibrationChargeCam
2#define MARS_MCalibrationChargeCam
3
4#ifndef MARS_MCalibrationCam
5#include "MCalibrationCam.h"
6#endif
7
8class TH1D;
9class TH2D;
10
11class MCalibrationChargeBlindPix;
12class MCalibrationChargePINDiode;
13class MCalibrationChargePix;
14class MGeomCam;
15class MBadPixelsCam;
16class MCalibrationChargeCam : public MCalibrationCam
17{
18private:
19
20 static const Float_t fgAverageQE; // The default for fAverageQE (now set to: 0.18)
21 static const Float_t fgAverageQEErr; // The default for fAverageQEErr (now set to: 0.02)
22 static const Float_t fgConvFFactorRelErrLimit; // The default for fConvFFactorRelErrLimit (now set to: 0.35)
23 static const Float_t fgPheFFactorRelErrLimit; // The default for fPheFFactorRelErrLimit (now set to: 5.)
24
25 Float_t fAverageQE; // The average quantum efficieny (see Class description)
26 Float_t fAverageQEVar; // The error of the average quantum efficieny (see Class description)
27 Float_t fConvFFactorRelVarLimit; // Acceptance limit for rel. error of conversion factor (FFactor method)
28 Float_t fPheFFactorRelVarLimit; // Acceptance limit for number of phe's w.r.t mean number (in variances)
29
30 TH1D* fOffsets; //!
31 TH1D* fSlopes; //!
32
33 TH2D* fOffvsSlope; //!
34
35 enum { kFFactorMethodValid, kBlindPixelMethodValid, kPINDiodeMethodValid, kCombinedMethodValid };
36
37 Float_t fMeanFluxPhesInnerPixel; // The mean number of photo-electrons in an INNER PIXEL
38 Float_t fMeanFluxPhesInnerPixelVar; // The variance of the number of photo-electrons INNER PIXEL
39 Float_t fMeanFluxPhesOuterPixel; // The mean number of photo-electrons in an INNER PIXEL
40 Float_t fMeanFluxPhesOuterPixelVar; // The variance of the number of photo-electrons INNER PIXEL
41
42 Float_t fMeanFluxPhotonsInnerPixel; // The mean number of photo-electrons in an INNER PIXEL
43 Float_t fMeanFluxPhotonsInnerPixelVar; // The variance of the number of photo-electrons INNER PIXEL
44 Float_t fMeanFluxPhotonsOuterPixel; // The mean number of photo-electrons in an INNER PIXEL
45 Float_t fMeanFluxPhotonsOuterPixelVar; // The variance of the number of photo-electrons INNER PIXEL
46
47public:
48
49 MCalibrationChargeCam(const char *name=NULL, const char *title=NULL);
50 ~MCalibrationChargeCam();
51
52 void Clear( Option_t *o="" );
53
54 // Setters
55 void SetAverageQE( const Float_t qe= fgAverageQE,
56 const Float_t err=fgAverageQEErr) { fAverageQE = qe;
57 fAverageQEVar = err*err; }
58 void SetConvFFactorRelErrLimit( const Float_t f=fgConvFFactorRelErrLimit ) { fConvFFactorRelVarLimit = f*f; }
59 void SetPheFFactorRelErrLimit ( const Float_t f=fgPheFFactorRelErrLimit ) { fPheFFactorRelVarLimit = f*f; }
60
61 void SetFFactorMethodValid( const Bool_t b = kTRUE );
62 void SetBlindPixelMethodValid( const Bool_t b = kTRUE );
63 void SetPINDiodeMethodValid( const Bool_t b = kTRUE );
64
65 // Getters
66 Bool_t GetConversionFactorFFactor( Int_t ipx, Float_t &mean, Float_t &err, Float_t &sigma );
67 Bool_t GetConversionFactorBlindPixel( Int_t ipx, Float_t &mean, Float_t &err, Float_t &sigma );
68 Bool_t GetConversionFactorPINDiode( Int_t ipx, Float_t &mean, Float_t &err, Float_t &sigma );
69 Bool_t GetConversionFactorCombined( Int_t ipx, Float_t &mean, Float_t &err, Float_t &sigma );
70
71 Float_t GetMeanFluxPhesInnerPixel() const { return fMeanFluxPhesInnerPixel; }
72 Float_t GetMeanFluxPhesInnerPixelErr() const;
73 Float_t GetMeanFluxPhesOuterPixel() const { return fMeanFluxPhesOuterPixel; }
74 Float_t GetMeanFluxPhesOuterPixelErr() const;
75
76 Float_t GetMeanFluxPhotonsInnerPixel() const { return fMeanFluxPhotonsInnerPixel; }
77 Float_t GetMeanFluxPhotonsInnerPixelErr() const;
78 Float_t GetMeanFluxPhotonsOuterPixel() const { return fMeanFluxPhotonsOuterPixel; }
79 Float_t GetMeanFluxPhotonsOuterPixelErr() const;
80
81 Bool_t IsBlindPixelMethodValid() const;
82 Bool_t IsPINDiodeMethodValid() const;
83
84 // Prints
85 void Print(Option_t *o="") const;
86
87 // Draws
88 void DrawPixelContent(Int_t num) const;
89// void DrawHiLoFits();
90
91 // Others
92 Bool_t GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type=0) const;
93
94 Bool_t CalcMeanFluxPhotonsFFactorMethod(const MGeomCam &geom, MBadPixelsCam &bad);
95
96 void ApplyPINDiodeCalibration(const MGeomCam &geom,
97 const MBadPixelsCam &bad,
98 const MCalibrationChargePINDiode &pindiode);
99 void ApplyBlindPixelCalibration(const MGeomCam &geom,
100 const MBadPixelsCam &bad,
101 const MCalibrationChargeBlindPix &blindpix);
102 void ApplyFFactorCalibration(const MGeomCam &geom, const MBadPixelsCam &bad);
103
104 ClassDef(MCalibrationChargeCam, 1) // Container for calibration of the camera
105};
106
107#endif
Note: See TracBrowser for help on using the repository browser.