| 1 | #ifndef MARS_MCalibrationBlindPix | 
|---|
| 2 | #define MARS_MCalibrationBlindPix | 
|---|
| 3 |  | 
|---|
| 4 | #ifndef ROOT_MArrayF | 
|---|
| 5 | #include <MArrayF.h> | 
|---|
| 6 | #endif | 
|---|
| 7 |  | 
|---|
| 8 | #ifndef MARS_MCalibrationCam | 
|---|
| 9 | #include "MCalibrationCam.h" | 
|---|
| 10 | #endif | 
|---|
| 11 |  | 
|---|
| 12 | #ifndef MARS_MCalibrationPix | 
|---|
| 13 | #include "MCalibrationPix.h" | 
|---|
| 14 | #endif | 
|---|
| 15 |  | 
|---|
| 16 | class MCalibrationBlindPix : public MCalibrationPix | 
|---|
| 17 | { | 
|---|
| 18 | private: | 
|---|
| 19 |  | 
|---|
| 20 | static const Float_t fgArea;         //! The Blind Pixel area in mm^2 | 
|---|
| 21 | static const Float_t fgAttGreen;     //! Attenuation Filter at 520 nm | 
|---|
| 22 | static const Float_t fgAttBlue ;     //! Attenuation Filter at 460 nm | 
|---|
| 23 | static const Float_t fgAttUV   ;     //! Attenuation Filter at 370 nm | 
|---|
| 24 | static const Float_t fgAttCT1  ;     //! Attenuation Filter at 370 nm | 
|---|
| 25 | static const Float_t fgAttErr;       //! Error Att. Filter at all w.l. | 
|---|
| 26 | static const Float_t fgQEGreen;      //! Quantum Efficiency at 520 nm | 
|---|
| 27 | static const Float_t fgQEBlue ;      //! Quantum Efficiency at 460 nm | 
|---|
| 28 | static const Float_t fgQEUV   ;      //! Quantum Efficiency at 370 nm | 
|---|
| 29 | static const Float_t fgQECT1  ;      //! Quantum Efficiency at 370 nm | 
|---|
| 30 | static const Float_t fgQEErrGreen;   //! Uncertainty QEUnCoated at 520 nm | 
|---|
| 31 | static const Float_t fgQEErrBlue;    //! Uncertainty QEUnCoated at 460 nm | 
|---|
| 32 | static const Float_t fgQEErrUV   ;   //! Uncertainty QEUnCoated at 370 nm | 
|---|
| 33 | static const Float_t fgQEErrCT1  ;   //! Uncertainty QEUnCoated at 370 nmu | 
|---|
| 34 | static const Float_t fgCollEffGreen; //! Collecttion Efficiency | 
|---|
| 35 | static const Float_t fgCollEffBlue;  //! Collecttion Efficiency | 
|---|
| 36 | static const Float_t fgCollEffUV;    //! Collecttion Efficiency | 
|---|
| 37 | static const Float_t fgCollEffCT1;   //! Collecttion Efficiency | 
|---|
| 38 | static const Float_t fgCollEffErr;   //! Uncertainty Collection Efficiency | 
|---|
| 39 |  | 
|---|
| 40 | Float_t fArea;                       // Blind Pixel Area | 
|---|
| 41 | Float_t fAreaErr;                    // Blind Pixel Area Error | 
|---|
| 42 | MArrayF fAtt;                        // Attenuation filter (per color) | 
|---|
| 43 | MArrayF fAttErr;                     // Error attnuation filter (per color) | 
|---|
| 44 | MArrayF fQE;                         // Quantum eff. (per color) | 
|---|
| 45 | MArrayF fQEErr;                      // Error Quantum eff. (per color) | 
|---|
| 46 | MArrayF fCollEff;                    // Coll eff. (per color) | 
|---|
| 47 | MArrayF fCollEffErr;                 // Error coll. eff. (per color) | 
|---|
| 48 |  | 
|---|
| 49 | Float_t fLambda;                     // Mean Poisson fit | 
|---|
| 50 | Float_t fLambdaCheck;                // Mean Pedestal Check (Gauss) fit | 
|---|
| 51 | Float_t fLambdaCheckErr;             // Error mean pedestal Check fit | 
|---|
| 52 | Float_t fLambdaVar;                  // Variance lambda Poisson fit | 
|---|
| 53 | Float_t fFluxInsidePlexiglass;       // Number photons in INNER PIXEL inside the plexiglass | 
|---|
| 54 | Float_t fFluxInsidePlexiglassVar;    // Variance number of photons in INNER PIXEL | 
|---|
| 55 | Float_t fMu0;                        // Position pedestal peak | 
|---|
| 56 | Float_t fMu0Err;                     // Error pos. pedestal-peak | 
|---|
| 57 | Float_t fMu1;                        // Position first photo-electron peak | 
|---|
| 58 | Float_t fMu1Err;                     // Error pos. first photo-electon peak | 
|---|
| 59 | Float_t fSigma0;                     // Width pedestal peak | 
|---|
| 60 | Float_t fSigma0Err;                  // Error width pedestal peak | 
|---|
| 61 | Float_t fSigma1;                     // Width first photo-electron peak | 
|---|
| 62 | Float_t fSigma1Err;                  // Error width first photo-electron peak | 
|---|
| 63 |  | 
|---|
| 64 | enum { kOscillating, kPedestalFitOK, kSinglePheFitOK, kChargeFitValid, | 
|---|
| 65 | kFluxInsidePlexiglassAvailable };   // Possible validity flags | 
|---|
| 66 |  | 
|---|
| 67 | MCalibrationCam::PulserColor_t fColor;     // Colour of the used pulser light | 
|---|
| 68 |  | 
|---|
| 69 | public: | 
|---|
| 70 |  | 
|---|
| 71 | MCalibrationBlindPix(const char *name=NULL, const char *title=NULL); | 
|---|
| 72 |  | 
|---|
| 73 | Bool_t CalcFluxInsidePlexiglass(); | 
|---|
| 74 | void   Clear(Option_t *o=""); | 
|---|
| 75 | void   Copy(TObject& object) const; | 
|---|
| 76 |  | 
|---|
| 77 | // Getters | 
|---|
| 78 | const Float_t GetAreaRelVar   () const; | 
|---|
| 79 | const Float_t GetAtt          () const; | 
|---|
| 80 | const Float_t GetAttRelVar    () const; | 
|---|
| 81 | const Float_t GetQE           () const; | 
|---|
| 82 | const Float_t GetQERelVar     () const; | 
|---|
| 83 | const Float_t GetCollEff      () const; | 
|---|
| 84 | const Float_t GetCollEffRelVar() const; | 
|---|
| 85 |  | 
|---|
| 86 | const MCalibrationCam::PulserColor_t GetColor () const { return fColor;                } | 
|---|
| 87 | const Float_t GetLambda                       () const { return fLambda;               } | 
|---|
| 88 | const Float_t GetLambdaErr                    () const; | 
|---|
| 89 | const Float_t GetLambdaRelVar                 () const; | 
|---|
| 90 | const Float_t GetLambdaCheck                  () const { return fLambdaCheck;          } | 
|---|
| 91 | const Float_t GetLambdaCheckErr               () const { return fLambdaCheckErr;       } | 
|---|
| 92 | const Float_t GetFluxInsidePlexiglass         () const { return fFluxInsidePlexiglass; } | 
|---|
| 93 | const Float_t GetFluxInsidePlexiglassErr      () const; | 
|---|
| 94 | const Float_t GetFluxInsidePlexiglassRelVar   () const; | 
|---|
| 95 | const Float_t GetMu0                          () const { return fMu0;                  } | 
|---|
| 96 | const Float_t GetMu0Err                       () const { return fMu0Err;               } | 
|---|
| 97 | const Float_t GetMu1                          () const { return fMu1;                  } | 
|---|
| 98 | const Float_t GetMu1Err                       () const { return fMu1Err;               } | 
|---|
| 99 | const Float_t GetSigma0                       () const { return fSigma0;               } | 
|---|
| 100 | const Float_t GetSigma0Err                    () const { return fSigma0Err;            } | 
|---|
| 101 | const Float_t GetSigma1                       () const { return fSigma1;               } | 
|---|
| 102 | const Float_t GetSigma1Err                    () const { return fSigma1Err;            } | 
|---|
| 103 |  | 
|---|
| 104 | const Bool_t  IsOscillating                   () const; | 
|---|
| 105 | const Bool_t  IsChargeFitValid                () const; | 
|---|
| 106 | const Bool_t  IsPedestalFitOK                 () const; | 
|---|
| 107 | const Bool_t  IsSinglePheFitOK                () const; | 
|---|
| 108 | const Bool_t  IsFluxInsidePlexiglassAvailable () const; | 
|---|
| 109 |  | 
|---|
| 110 | void Print(Option_t *opt=NULL) const; | 
|---|
| 111 |  | 
|---|
| 112 | // Setters | 
|---|
| 113 | void SetArea      ( Float_t f )               { fArea    = f; } | 
|---|
| 114 | void SetAreaErr   ( Float_t f )               { fAreaErr = f; } | 
|---|
| 115 |  | 
|---|
| 116 | void SetAtt       ( Int_t n, Float_t *array ) { fAtt       .Set(n,array); } | 
|---|
| 117 | void SetAttErr    ( Int_t n, Float_t *array ) { fAttErr    .Set(n,array); } | 
|---|
| 118 | void SetQE        ( Int_t n, Float_t *array ) { fQE        .Set(n,array); } | 
|---|
| 119 | void SetQEErr     ( Int_t n, Float_t *array ) { fQEErr     .Set(n,array); } | 
|---|
| 120 | void SetCollEff   ( Int_t n, Float_t *array ) { fCollEff   .Set(n,array); } | 
|---|
| 121 | void SetCollEffErr( Int_t n, Float_t *array ) { fCollEffErr.Set(n,array); } | 
|---|
| 122 |  | 
|---|
| 123 | void SetColor          ( const MCalibrationCam::PulserColor_t color ) { fColor      = color; } | 
|---|
| 124 | void SetLambda         ( const Float_t f )                            { fLambda         = f; } | 
|---|
| 125 | void SetLambdaVar      ( const Float_t f )                            { fLambdaVar      = f; } | 
|---|
| 126 | void SetLambdaCheck    ( const Float_t f )                            { fLambdaCheck    = f; } | 
|---|
| 127 | void SetLambdaCheckErr ( const Float_t f )                            { fLambdaCheckErr = f; } | 
|---|
| 128 | void SetMu0            ( const Float_t f )                            { fMu0            = f; } | 
|---|
| 129 | void SetMu0Err         ( const Float_t f )                            { fMu0Err         = f; } | 
|---|
| 130 | void SetMu1            ( const Float_t f )                            { fMu1            = f; } | 
|---|
| 131 | void SetMu1Err         ( const Float_t f )                            { fMu1Err         = f; } | 
|---|
| 132 | void SetSigma0         ( const Float_t f )                            { fSigma0         = f; } | 
|---|
| 133 | void SetSigma0Err      ( const Float_t f )                            { fSigma0Err      = f; } | 
|---|
| 134 | void SetSigma1         ( const Float_t f )                            { fSigma1         = f; } | 
|---|
| 135 | void SetSigma1Err      ( const Float_t f )                            { fSigma1Err      = f; } | 
|---|
| 136 |  | 
|---|
| 137 | void SetOscillating    ( const Bool_t  b=kTRUE ); | 
|---|
| 138 | void SetChargeFitValid ( const Bool_t  b=kTRUE ); | 
|---|
| 139 | void SetPedestalFitOK  ( const Bool_t  b=kTRUE ); | 
|---|
| 140 | void SetSinglePheFitOK ( const Bool_t  b=kTRUE ); | 
|---|
| 141 | void SetFluxInsidePlexiglassAvailable( const Bool_t b=kTRUE); | 
|---|
| 142 |  | 
|---|
| 143 | ClassDef(MCalibrationBlindPix, 2)     // Container Calibration Results Blind Pixel | 
|---|
| 144 | }; | 
|---|
| 145 |  | 
|---|
| 146 | #endif | 
|---|