source: trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h@ 9030

Last change on this file since 9030 was 8917, checked in by tbretz, 16 years ago
*** empty log message ***
File size: 9.5 KB
Line 
1#ifndef MARS_MCalibrationChargePix
2#define MARS_MCalibrationChargePix
3
4#ifndef MARS_MCalibrationPix
5#include "MCalibrationPix.h"
6#endif
7
8class MCalibrationChargePix : public MCalibrationPix
9{
10private:
11
12 static const Float_t gkElectronicPedRms; //! Electronic component of ped. RMS from opt. receiver on (now set to: 1.)
13 static const Float_t gkElectronicPedRmsErr; //! Error Electr. component ped. RMS (now set to: 0.35)
14 static const Float_t gkFFactor; //! Laboratory F-factor PMTs (now set to: 1.15)
15 static const Float_t gkFFactorErr; //! Laboratory F-factor Error PMTs (now set to: 0.02)
16
17 static const Float_t fgConversionHiLo; //! Default fConversionHiLo (now set to: 10.)
18 static const Float_t fgConversionHiLoErr; //! Default fConversionHiLoVar (now set to: 2.5)
19 static const Float_t fgConversionHiLoSigma; //! Default fConversionHiLoSigma (now set to: 2.5)
20 static const Float_t fgPheFFactorMethodLimit; //! Default fPheFFactorMethodLimit (now set to: 5.)
21 static const Float_t fgConvFFactorRelErrLimit; //! Default fConvFFactorRelErrLimit (now set to: 0.35)
22
23 Float_t fAbsTimeMean; // Mean Absolute Arrival Time
24 Float_t fAbsTimeRms; // RMS Mean Absolute Arrival Time
25 Byte_t fCalibFlags; // Bit-field for the class-own bits
26 Float_t fConversionHiLo; // Conversion factor betw. Hi Gain and Lo Gain
27 Float_t fConversionHiLoVar; // Variance Conversion factor betw. Hi and Lo Gain
28 Float_t fConversionHiLoSigma; // Sigma of conversion factor betw. Hi and Lo Gain
29 Float_t fConvFFactorRelVarLimit; // Limit for acceptance rel. variance Conversion FADC2Phe
30 Float_t fLoGainPedRmsSquare; // Pedestal RMS square of Low Gain
31 Float_t fLoGainPedRmsSquareVar; // Pedestal RMS square Variance of Low Gain
32 Float_t fMeanConvFADC2Phe; // Conversion factor (F-factor method)
33 Float_t fMeanConvFADC2PheStatVar; // Variance conversion factor, only stat. error
34 Float_t fMeanConvFADC2PheSystVar; // Variance conversion factor, only syst. error
35 Float_t fMeanFFactorFADC2Phot; // Total mean F-Factor to photons (F-factor method)
36 Float_t fMeanFFactorFADC2PhotVar; // Variance mean F-Factor photons, only stat. error
37 Float_t fPed; // Pedestal (from MPedestalPix) times number FADC slices
38 Float_t fPedVar; // Variance of pedestal
39 Float_t fPedRms; // Pedestal RMS (from MPedestalPix) times sqrt nr. FADC slices
40 Float_t fPedRmsVar; // Pedestal RMS (from MPedestalPix) times sqrt nr. FADC slices
41 Float_t fPheFFactorMethod; // Number Phe's calculated with F-factor method)
42 Float_t fPheFFactorMethodStatVar; // Variance number of Phe's, only stat. error
43 Float_t fPheFFactorMethodSystVar; // Variance number of Phe's, only syst. error
44 Float_t fPheFFactorMethodLimit; // Min. number Photo-electrons for pix to be accepted.
45 Float_t fRSigmaSquare; // Square of Reduced sigma
46 Float_t fRSigmaSquareVar; // Variance Reduced sigma
47
48 Int_t fNumSaturated; // Number of (high-gain) saturated events
49
50 enum { kFFactorMethodValid }; // Possible bits to be set
51
52 const Float_t GetElectronicPedRmsRelVar() const;
53 const Float_t GetConversionHiLoRelVar() const;
54 const Float_t GetFFactorRelVar() const;
55
56public:
57 MCalibrationChargePix(const char *name=NULL, const char *title=NULL);
58
59 // TObject
60 void Clear(Option_t *o="");
61 void Copy(TObject& object) const;
62
63 // Setter
64 /*
65 void SetConvFFactorRelErrLimit ( const Float_t f=fgConvFFactorRelErrLimit) { fConvFFactorRelVarLimit = f*f;}
66 void SetMeanConvFADC2Phe ( const Float_t f) { fMeanConvFADC2Phe = f; }
67 void SetMeanConvFADC2PheVar ( const Float_t f) { fMeanConvFADC2PheVar = f; }
68 void SetMeanFFactorFADC2Phot ( const Float_t f) { fMeanFFactorFADC2Phot = f; }
69 void SetPheFFactorMethod ( const Float_t f) { fPheFFactorMethod = f; }
70 void SetPheFFactorMethodVar ( const Float_t f) { fPheFFactorMethodVar = f; }
71 void SetPheFFactorMethodLimit ( const Float_t f=fgPheFFactorMethodLimit ) { fPheFFactorMethodLimit = f; }
72 void SetNumSaturated ( const Int_t i) { fNumSaturated = i; }
73 */
74 void SetFFactorMethodValid (const Bool_t b = kTRUE );
75 void SetPedestal (const Float_t ped, const Float_t pedrms, const Float_t pederr);
76 void SetPed ( const Float_t ped, const Float_t pederr);
77 void SetPedRMS ( const Float_t pedrms, const Float_t pedrmserr);
78
79 void SetAbsTimeMean (const Float_t f) { fAbsTimeMean = f; }
80 void SetAbsTimeRms (const Float_t f) { fAbsTimeRms = f; }
81 void SetConversionHiLo (const Float_t c=fgConversionHiLo ) { fConversionHiLo = c; }
82 void SetConversionHiLoErr (const Float_t e=fgConversionHiLoErr ) { fConversionHiLoVar = e*e;}
83 void SetConversionHiLoSigma (const Float_t s=fgConversionHiLoSigma ) { fConversionHiLoSigma = s; }
84 void SetConvFFactorRelErrLimit (const Float_t f=fgConvFFactorRelErrLimit) { fConvFFactorRelVarLimit = f*f;}
85 void SetMeanConvFADC2Phe (const Float_t f) { fMeanConvFADC2Phe = f; }
86 void SetMeanConvFADC2PheVar (const Float_t f) { fMeanConvFADC2PheStatVar= f; }
87 void SetMeanConvFADC2PheSystVar(const Float_t f) { fMeanConvFADC2PheSystVar= f; }
88 void SetMeanFFactorFADC2Phot (const Float_t f) { fMeanFFactorFADC2Phot = f; }
89 void SetNumSaturated (const Int_t i) { fNumSaturated = i; }
90 void SetPheFFactorMethod (const Float_t f) { fPheFFactorMethod = f; }
91 void SetPheFFactorMethodVar (const Float_t f) { fPheFFactorMethodStatVar= f; }
92 void SetPheFFactorMethodSystVar(const Float_t f) { fPheFFactorMethodSystVar= f; }
93 void SetPheFFactorMethodLimit (const Float_t f=fgPheFFactorMethodLimit ) { fPheFFactorMethodLimit = f; }
94
95 // Getters
96 Float_t GetAbsTimeMean () const { return fAbsTimeMean; }
97 Float_t GetAbsTimeRms () const { return fAbsTimeRms; }
98
99 Float_t GetConversionHiLo () const { return fConversionHiLo; }
100 Float_t GetConversionHiLoErr () const;
101 Float_t GetConversionHiLoSigma() const { return fConversionHiLoSigma; }
102
103 Float_t GetConvertedMean () const { return IsHiGainSaturation() ? fLoGainMean * fConversionHiLo : fHiGainMean; }
104 Float_t GetConvertedMeanErr () const;
105
106 Float_t GetConvertedSigma() const { return IsHiGainSaturation() ? fLoGainSigma * fConversionHiLo : fHiGainSigma; }
107 Float_t GetConvertedSigmaErr() const;
108
109 Float_t GetConvertedRSigma() const;
110 Float_t GetConvertedRSigmaErr() const;
111 Float_t GetConvertedRSigmaSquare() const
112 {
113 if (fRSigmaSquare < 0)
114 return -1;
115 return IsHiGainSaturation() ? fRSigmaSquare*fConversionHiLo*fConversionHiLo : fRSigmaSquare ;
116 }
117
118 Float_t GetMeanConvFADC2Phe() const { return fMeanConvFADC2Phe; }
119 Float_t GetMeanConvFADC2PheErr() const;
120 Float_t GetMeanConvFADC2PheSystErr() const;
121 Float_t GetMeanConvFADC2PheTotErr() const;
122
123 Float_t GetFFactorFADC2Phe () const { return gkFFactor; }
124 Float_t GetMeanConvFADC2PheVar () const { return fMeanConvFADC2PheStatVar; }
125 Float_t GetMeanConvFADC2PheSystVar() const { return fMeanConvFADC2PheSystVar; }
126
127 Float_t GetMeanFFactorFADC2Phot () const { return fMeanFFactorFADC2Phot; }
128 Float_t GetMeanFFactorFADC2PhotErr() const;
129 Float_t GetMeanFFactorFADC2PhotVar() const { return fMeanFFactorFADC2PhotVar; }
130
131 Int_t GetNumSaturated () const { return fNumSaturated; }
132
133 Float_t GetPed() const { return fPed; }
134 Float_t GetPedErr() const;
135 Float_t GetPedRms() const;
136 Float_t GetPedRmsErr() const;
137
138 Float_t GetPheFFactorMethod() const { return fPheFFactorMethod; }
139 Float_t GetPheFFactorMethodErr() const;
140 Float_t GetPheFFactorMethodSystErr() const;
141 Float_t GetPheFFactorMethodTotErr() const;
142
143 Float_t GetPheFFactorMethodVar () const { return fPheFFactorMethodStatVar; }
144 Float_t GetPheFFactorMethodSystVar() const { return fPheFFactorMethodSystVar; }
145 Float_t GetPheFFactorMethodRelVar () const { return fPheFFactorMethodStatVar<=0 ? -1 : fPheFFactorMethodStatVar / (fPheFFactorMethod * fPheFFactorMethod); }
146 Float_t GetPheFFactorMethodRelSystVar() const { return fPheFFactorMethodSystVar<=0 ? -1. : fPheFFactorMethodSystVar / (fPheFFactorMethod * fPheFFactorMethod); }
147
148 Float_t GetRSigma() const;
149 Float_t GetRSigmaErr() const;
150 Float_t GetRSigmaRelVar() const;
151 Float_t GetRSigmaPerCharge() const;
152 Float_t GetRSigmaPerChargeErr() const;
153
154 Bool_t IsFFactorMethodValid() const;
155
156 // Calculations
157 void CalcLoGainPedestal(const Float_t logainsamples);
158 Bool_t CalcReducedSigma(const Float_t extractorres=0);
159 Bool_t CalcFFactor();
160 Bool_t CalcConvFFactor();
161 Bool_t CalcMeanFFactor(const Float_t nphotons, const Float_t nphotonsrelvar);
162
163 ClassDef(MCalibrationChargePix, 4) // Container Charge Calibration Results Pixel
164};
165
166#endif
167
Note: See TracBrowser for help on using the repository browser.