| 1 | #ifndef MARS_MCalibrationChargePix
|
|---|
| 2 | #define MARS_MCalibrationChargePix
|
|---|
| 3 |
|
|---|
| 4 | #ifndef MARS_MCalibrationPix
|
|---|
| 5 | #include "MCalibrationPix.h"
|
|---|
| 6 | #endif
|
|---|
| 7 |
|
|---|
| 8 | class MCalibrationChargePix : public MCalibrationPix
|
|---|
| 9 | {
|
|---|
| 10 | private:
|
|---|
| 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 |
|
|---|
| 56 | public:
|
|---|
| 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 |
|
|---|