source: tags/Mars-V1.2/mcalib/MCalibrationChargePix.h

Last change on this file was 7189, checked in by tbretz, 19 years ago
*** empty log message ***
File size: 11.4 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 Float_t GetConversionHiLo () const { return fConversionHiLo; }
99 Float_t GetConversionHiLoErr () const { return fConversionHiLoVar<0 ? -1 : TMath::Sqrt(fConversionHiLoVar); }
100 Float_t GetConversionHiLoSigma() const { return fConversionHiLoSigma; }
101 Float_t GetConvertedMean () const { return IsHiGainSaturation() ? fLoGainMean * fConversionHiLo : fHiGainMean; }
102 Float_t GetConvertedMeanErr () const
103 {
104 if (!IsHiGainSaturation())
105 return GetMeanErr();
106 const Float_t logainrelvar = GetLoGainMeanRelVar();
107 return logainrelvar<0 ? -1 : TMath::Sqrt(logainrelvar + GetConversionHiLoRelVar()) * GetConvertedMean();
108 }
109 Float_t GetConvertedSigma() const { return IsHiGainSaturation() ? fLoGainSigma * fConversionHiLo : fHiGainSigma; }
110 Float_t GetConvertedSigmaErr() const
111 {
112 if (!IsHiGainSaturation())
113 return GetSigmaErr();
114
115 if (fLoGainSigmaVar<0 || fLoGainSigma<0)
116 return -1.;
117
118 const Float_t sigmaRelVar = fLoGainSigmaVar/(fLoGainSigma*fLoGainSigma);
119 return TMath::Sqrt(sigmaRelVar+GetConversionHiLoRelVar()) * GetConvertedSigma();
120 }
121 Float_t GetConvertedRSigma() const
122 {
123 if (fRSigmaSquare < 0)
124 return -1;
125 const Float_t rsigma = TMath::Sqrt(fRSigmaSquare);
126 return IsHiGainSaturation() ? rsigma*fConversionHiLo : rsigma ;
127 }
128 Float_t GetConvertedRSigmaErr() const;
129 Float_t GetConvertedRSigmaSquare() const
130 {
131 if (fRSigmaSquare < 0)
132 return -1;
133 return IsHiGainSaturation() ? fRSigmaSquare*fConversionHiLo*fConversionHiLo : fRSigmaSquare ;
134 }
135 Float_t GetMeanConvFADC2Phe() const { return fMeanConvFADC2Phe; }
136 Float_t GetMeanConvFADC2PheErr () const { return fMeanConvFADC2PheStatVar<0 ? -1 : TMath::Sqrt(fMeanConvFADC2PheStatVar); }
137 Float_t GetMeanConvFADC2PheSystErr() const { return fMeanConvFADC2PheSystVar<0 ? -1 : TMath::Sqrt(fMeanConvFADC2PheSystVar); }
138 Float_t GetMeanConvFADC2PheTotErr() const
139 {
140 if (fMeanConvFADC2PheSystVar<0 || fMeanConvFADC2PheStatVar<0)
141 return -1.;
142 return TMath::Sqrt(fMeanConvFADC2PheSystVar+fMeanConvFADC2PheStatVar);
143 }
144 Float_t GetFFactorFADC2Phe () const { return gkFFactor; }
145 Float_t GetMeanConvFADC2PheVar () const { return fMeanConvFADC2PheStatVar; }
146 Float_t GetMeanConvFADC2PheSystVar() const { return fMeanConvFADC2PheSystVar; }
147
148 Float_t GetMeanFFactorFADC2Phot () const { return fMeanFFactorFADC2Phot; }
149 Float_t GetMeanFFactorFADC2PhotErr() const { return fMeanFFactorFADC2PhotVar<0 ? -1. : TMath::Sqrt(fMeanFFactorFADC2PhotVar); }
150 Float_t GetMeanFFactorFADC2PhotVar() const { return fMeanFFactorFADC2PhotVar; }
151 Int_t GetNumSaturated () const { return fNumSaturated; }
152 Float_t GetPed () const { return fPed; }
153 Float_t GetPedErr () const { return TMath::Sqrt(fPedVar); }
154 Float_t GetPedRms () const
155 {
156 if (!IsHiGainSaturation())
157 return fPedRms;
158 return fLoGainPedRmsSquare<0 ? -1 : TMath::Sqrt(fLoGainPedRmsSquare);
159 }
160 Float_t GetPedRmsErr () const;
161 Float_t GetPheFFactorMethod () const { return fPheFFactorMethod; }
162 Float_t GetPheFFactorMethodErr () const { return fPheFFactorMethodStatVar<0 ? -1 : TMath::Sqrt(fPheFFactorMethodStatVar); }
163 Float_t GetPheFFactorMethodSystErr() const { return fPheFFactorMethodSystVar<0 ? -1 : TMath::Sqrt(fPheFFactorMethodSystVar); }
164 Float_t GetPheFFactorMethodTotErr () const
165 {
166 if (fPheFFactorMethodStatVar<0 || fPheFFactorMethodSystVar<0)
167 return -1.;
168 return TMath::Sqrt(fPheFFactorMethodStatVar+fPheFFactorMethodSystVar);
169 }
170 Float_t GetPheFFactorMethodVar () const { return fPheFFactorMethodStatVar; }
171 Float_t GetPheFFactorMethodSystVar() const { return fPheFFactorMethodSystVar; }
172 Float_t GetPheFFactorMethodRelVar () const { return fPheFFactorMethodStatVar<=0 ? -1 : fPheFFactorMethodStatVar / (fPheFFactorMethod * fPheFFactorMethod); }
173 Float_t GetPheFFactorMethodRelSystVar() const { return fPheFFactorMethodSystVar<=0 ? -1. : fPheFFactorMethodSystVar / (fPheFFactorMethod * fPheFFactorMethod); }
174 Float_t GetRSigma () const { return fRSigmaSquare<0 ? -1 : TMath::Sqrt(fRSigmaSquare); }
175
176 Float_t GetRSigmaErr () const;
177 Float_t GetRSigmaRelVar () const;
178 Float_t GetRSigmaPerCharge () const;
179 Float_t GetRSigmaPerChargeErr() const;
180
181 Bool_t IsFFactorMethodValid() const;
182
183 // Calculations
184 void CalcLoGainPedestal(const Float_t logainsamples);
185 Bool_t CalcReducedSigma(const Float_t extractorres=0);
186 Bool_t CalcFFactor();
187 Bool_t CalcConvFFactor();
188 Bool_t CalcMeanFFactor(const Float_t nphotons, const Float_t nphotonsrelvar);
189
190 ClassDef(MCalibrationChargePix, 4) // Container Charge Calibration Results Pixel
191};
192
193#endif
194
Note: See TracBrowser for help on using the repository browser.