| 1 | #ifndef MARS_MCalibrationChargePINDiode | 
|---|
| 2 | #define MARS_MCalibrationChargePINDiode | 
|---|
| 3 |  | 
|---|
| 4 | #ifndef MARS_MCalibrationCam | 
|---|
| 5 | #include "MCalibrationCam.h" | 
|---|
| 6 | #endif | 
|---|
| 7 |  | 
|---|
| 8 | #ifndef MARS_MCalibrationPix | 
|---|
| 9 | #include "MCalibrationPix.h" | 
|---|
| 10 | #endif | 
|---|
| 11 |  | 
|---|
| 12 | class MCalibrationChargePINDiode : public MCalibrationPix | 
|---|
| 13 | { | 
|---|
| 14 | private: | 
|---|
| 15 |  | 
|---|
| 16 | static const Float_t fgChargeToPhotons;     //! Default for fChargeToPhotons | 
|---|
| 17 | static const Float_t fgChargeToPhotonsErr;  //! Default for fChargeToPhotonsVar | 
|---|
| 18 | static const Float_t gkPINDiodeQEGreen;     //! Quantum Efficiency at 520 nm | 
|---|
| 19 | static const Float_t gkPINDiodeQEBlue;      //! Quantum Efficiency at 460 nm | 
|---|
| 20 | static const Float_t gkPINDiodeQEUV;        //! Quantum Efficiency at 370 nm | 
|---|
| 21 | static const Float_t gkPINDiodeQECT1;       //! Quantum Efficiency at 370 nm | 
|---|
| 22 | static const Float_t gkPINDiodeQEGreenErr;  //! Uncertainty QE at 520 nm | 
|---|
| 23 | static const Float_t gkPINDiodeQEBlueErr;   //! Uncertainty QE at 460 nm | 
|---|
| 24 | static const Float_t gkPINDiodeQEUVErr;     //! Uncertainty QE at 370 nm | 
|---|
| 25 | static const Float_t gkPINDiodeQECT1Err;    //! Uncertainty QE at 370 nmu | 
|---|
| 26 | static const Float_t gkAbsorptionWindow;    //! Absorption of the protection window (incl. EMS-wires) | 
|---|
| 27 | static const Float_t gkSolidAngleRatio;     //! Solid angles ratio PIN Diode - inner pixel | 
|---|
| 28 | static const Float_t gkSolidAngleRatioErr;  //! Error solid angle ratio PIN Diode - inn. pix. | 
|---|
| 29 |  | 
|---|
| 30 | Float_t fAbsTimeMean;               // Mean Absolute Arrival Time | 
|---|
| 31 | Float_t fAbsTimeRms;                // RMS Mean Absolute Arrival Time | 
|---|
| 32 | Byte_t  fCalibFlags;                // Bit-field for the class-own bits | 
|---|
| 33 | Float_t fChargeLimit;               // Limit (in units of PedRMS) for acceptance fitted mean charge | 
|---|
| 34 | Float_t fChargeErrLimit;            // Limit (in units of PedRMS) for acceptance fitted charge sigma | 
|---|
| 35 | Float_t fChargeRelErrLimit;         // Limit (in units of Error of fitted charge) for acceptance fitted mean | 
|---|
| 36 | Float_t fChargeToPhotons;           // Mean conv. PIN Diode charge to number of incident photons | 
|---|
| 37 | Float_t fChargeToPhotonsVar;        // Variance of mean conv. PIN Diode charge to nr. incident photons | 
|---|
| 38 | Float_t fNumPhotons;                // Number photons incidident on PIN Diode | 
|---|
| 39 | Float_t fNumPhotonsVar;             // Variance nr. photons incid. on PIN Diode | 
|---|
| 40 | Float_t fFluxOutsidePlexiglass;     // Mean number photons in INNER PIXEL outside plexiglass | 
|---|
| 41 | Float_t fFluxOutsidePlexiglassVar;  // Error on nr. photons in INNER PIXEL outside plexiglass | 
|---|
| 42 | Float_t fPed;                       // Mean pedestal (from MPedestalPix) | 
|---|
| 43 | Float_t fPedRms;                    // Pedestal  RMS (from MPedestalPix) | 
|---|
| 44 | Float_t fRmsChargeMean;             // Mean of RMS of summed FADC slices distribution | 
|---|
| 45 | Float_t fRmsChargeMeanErr;          // Error on Mean RMS summed FADC slices distribution | 
|---|
| 46 | Float_t fRmsChargeSigma;            // Sigma of RMS of summed FADC slices distribution | 
|---|
| 47 | Float_t fRmsChargeSigmaErr;         // Error on Sigma RMS summed FADC slices distribution | 
|---|
| 48 | MCalibrationCam::PulserColor_t fColor; // Colour of the pulsed LEDs | 
|---|
| 49 |  | 
|---|
| 50 | enum  { kOscillating, | 
|---|
| 51 | kChargeFitValid, kTimeFitValid, | 
|---|
| 52 | kFluxOutsidePlexiglassAvailable  }; // Possible bits to be set | 
|---|
| 53 |  | 
|---|
| 54 | const Float_t GetPINDiodeQEGreenRelVar() const; | 
|---|
| 55 | const Float_t GetPINDiodeQEBlueRelVar () const; | 
|---|
| 56 | const Float_t GetPINDiodeQEUVRelVar   () const; | 
|---|
| 57 | const Float_t GetPINDiodeQECT1RelVar  () const; | 
|---|
| 58 | const Float_t GetSolidAngleRatioRelVar() const; | 
|---|
| 59 |  | 
|---|
| 60 | public: | 
|---|
| 61 |  | 
|---|
| 62 | MCalibrationChargePINDiode(const char *name=NULL, const char *title=NULL); | 
|---|
| 63 | ~MCalibrationChargePINDiode() {} | 
|---|
| 64 |  | 
|---|
| 65 | void   Clear(Option_t *o=""); | 
|---|
| 66 | Bool_t CalcFluxOutsidePlexiglass(); | 
|---|
| 67 |  | 
|---|
| 68 | // Getters | 
|---|
| 69 | Float_t GetAbsTimeMean                  () const { return fAbsTimeMean;           } | 
|---|
| 70 | Float_t GetAbsTimeRms                   () const { return fAbsTimeRms;            } | 
|---|
| 71 | MCalibrationCam::PulserColor_t GetColor () const { return fColor;                 } | 
|---|
| 72 | Float_t GetFluxOutsidePlexiglass        () const { return fFluxOutsidePlexiglass; } | 
|---|
| 73 | Float_t GetFluxOutsidePlexiglassErr     () const; | 
|---|
| 74 | Float_t GetFluxOutsidePlexiglassRelVar  () const; | 
|---|
| 75 | Float_t GetNumPhotons                   () const { return fNumPhotons;            } | 
|---|
| 76 | Float_t GetNumPhotonsErr                () const; | 
|---|
| 77 | Float_t GetNumPhotonsRelVar             () const; | 
|---|
| 78 | Float_t GetPed                          () const { return fPed;                   } | 
|---|
| 79 | Float_t GetPedRms                       () const { return fPedRms;                } | 
|---|
| 80 |  | 
|---|
| 81 | Bool_t  IsChargeFitValid                () const; | 
|---|
| 82 | Bool_t  IsTimeFitValid                  () const; | 
|---|
| 83 | Bool_t  IsOscillating                   () const; | 
|---|
| 84 | Bool_t  IsFluxOutsidePlexiglassAvailable() const; | 
|---|
| 85 |  | 
|---|
| 86 | // Setters | 
|---|
| 87 | void SetAbsTimeMean        ( const Float_t f      )                 { fAbsTimeMean        = f;   } | 
|---|
| 88 | void SetAbsTimeRms         ( const Float_t f      )                 { fAbsTimeRms         = f;   } | 
|---|
| 89 | void SetChargeToPhotons    ( const Float_t f=fgChargeToPhotons    ) { fChargeToPhotons    = f;   } | 
|---|
| 90 | void SetChargeToPhotonsErr ( const Float_t f=fgChargeToPhotonsErr ) { fChargeToPhotonsVar = f*f; } | 
|---|
| 91 | void SetColor              ( const MCalibrationCam::PulserColor_t color) { fColor = color;   } | 
|---|
| 92 | void SetPedestal           (       Float_t ped, Float_t pedrms    ); | 
|---|
| 93 | void SetRmsChargeMean      ( const Float_t f      )                 { fRmsChargeMean      = f;   } | 
|---|
| 94 | void SetRmsChargeMeanErr   ( const Float_t f      )                 { fRmsChargeMeanErr   = f;   } | 
|---|
| 95 | void SetRmsChargeSigma     ( const Float_t f      )                 { fRmsChargeSigma     = f;   } | 
|---|
| 96 | void SetRmsChargeSigmaErr  ( const Float_t f      )                 { fRmsChargeSigmaErr  = f;   } | 
|---|
| 97 | void SetOscillating        ( const Bool_t b=kTRUE ); | 
|---|
| 98 | void SetChargeFitValid     ( const Bool_t b=kTRUE ); | 
|---|
| 99 | void SetTimeFitValid       ( const Bool_t b=kTRUE ); | 
|---|
| 100 | void SetFluxOutsidePlexiglassAvailable ( const Bool_t b = kTRUE ); | 
|---|
| 101 |  | 
|---|
| 102 | ClassDef(MCalibrationChargePINDiode, 1)       // Container Charge Calibration Results PIN Diode | 
|---|
| 103 | }; | 
|---|
| 104 |  | 
|---|
| 105 | #endif   /* MARS_MCalibrationChargePINDiode */ | 
|---|
| 106 |  | 
|---|
| 107 |  | 
|---|
| 108 |  | 
|---|
| 109 |  | 
|---|
| 110 |  | 
|---|
| 111 |  | 
|---|
| 112 |  | 
|---|
| 113 |  | 
|---|
| 114 |  | 
|---|