source: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h@ 3700

Last change on this file since 3700 was 3697, checked in by gaug, 21 years ago
*** empty log message ***
File size: 5.8 KB
Line 
1#ifndef MARS_MCalibrationChargeCalc
2#define MARS_MCalibrationChargeCalc
3
4/////////////////////////////////////////////////////////////////////////////
5// //
6// MCalibrationChargeCalc //
7// //
8// Integrates the time slices of the all pixels of a calibration event //
9// and substract the pedestal value //
10// //
11/////////////////////////////////////////////////////////////////////////////
12
13#ifndef MARS_MTask
14#include "MTask.h"
15#endif
16
17#ifndef MARS_MBadPixelsPix
18#include "MBadPixelsPix.h"
19#endif
20
21#ifndef MARS_MCalibrationCam
22#include "MCalibrationCam.h"
23#endif
24
25class MRawEvtData;
26class MRawRunHeader;
27class MPedestalCam;
28class MPedestalPix;
29class MCalibrationChargePINDiode;
30class MCalibrationChargeBlindPix;
31class MCalibrationChargePix;
32class MCalibrationChargeCam;
33class MCalibrationQECam;
34class MGeomCam;
35class MExtractedSignalCam;
36class MExtractedSignalBlindPixel;
37class MExtractedSignalPINDiode;
38class MBadPixelsCam;
39class MBadPixelsPix;
40class MTime;
41class MCalibrationChargeCalc : public MTask
42{
43private:
44
45 static const Float_t fgChargeLimit; //! Default for fChargeLimit (now set to: 3.)
46 static const Float_t fgChargeErrLimit; //! Default for fChargeErrLimit (now set to: 0.)
47 static const Float_t fgChargeRelErrLimit; //! Default for fChargeRelErrLimit (now set to: 1.)
48 static const Float_t fgLambdaCheckLimit; //! Default for fLambdaCheckLimit (now set to: 0.2)
49 static const Float_t fgLambdaErrLimit; //! Default for fLabmdaErrLimit (now set to: 0.2)
50 static const Float_t fgPheErrLimit; //! Default for fPheErrLimit (now set to: 5.)
51
52 // Variables
53 Float_t fChargeLimit; // Limit acceptance mean charge (in units of PedRMS)
54 Float_t fChargeErrLimit; // Limit acceptance charge error (in abs. numbers)
55 Float_t fChargeRelErrLimit; // Limit acceptance rel. error mean (in abs. numbers)
56 Byte_t fFlags; // Bit-field for the flags
57 Float_t fLambdaCheckLimit; // Limit rel. diff. lambda and lambdacheck in Blind Pixel
58 Float_t fLambdaErrLimit; // Limit acceptance lambda error in Blind Pixel
59 Float_t fNumHiGainSamples; // Number High-Gain FADC slices used by extractor
60 Float_t fNumLoGainSamples; // Number Low -Gain FADC slices used by extractor
61 Float_t fPheErrLimit; // Limit acceptance nr. phe's w.r.t. area idx mean (in sigmas)
62 Float_t fSqrtHiGainSamples; // Square root nr. High-Gain FADC slices used by extractor
63 Float_t fSqrtLoGainSamples; // Square root nr. Low -Gain FADC slices used by extractor
64 MCalibrationCam::PulserColor_t fPulserColor; // Calibration LEDs colour
65
66 // Pointers
67 MBadPixelsCam *fBadPixels; // Bad Pixels
68 MCalibrationChargeCam *fCam; // Calibrated Charges of all pixels
69 MCalibrationChargeBlindPix *fBlindPixel; // Calibrated Charges of the Blind Pixel
70 MCalibrationChargePINDiode *fPINDiode; // Calibrated Charges of the PIN Diode
71 MCalibrationQECam *fQECam; // Calibrated Quantum Efficiencies of all pixels
72 MGeomCam *fGeom; //! Camera geometry
73 MPedestalCam *fPedestals; //! Pedestals all pixels (calculated previously from ped.file)
74 MTime *fEvtTime; //! Time of the event
75
76 // enums
77 enum { kHiLoGainCalibration };
78
79 // functions
80 void FinalizePedestals ( const MPedestalPix &ped, MCalibrationChargePix &cal,
81 Float_t &avped, Float_t &avrms );
82 void FinalizeAvPedestals ( MCalibrationChargePix &cal,
83 Float_t avped, Float_t avrms, Int_t avnum);
84 Bool_t FinalizeCharges ( MCalibrationChargePix &cal, MBadPixelsPix &bad );
85 Bool_t FinalizePINDiode ();
86 Bool_t FinalizeBlindPixel ();
87 Bool_t FinalizeFFactorMethod ();
88 void FinalizeBadPixels ();
89 void FinalizeFFactorQECam ();
90 void FinalizeBlindPixelQECam();
91 void FinalizePINDiodeQECam ();
92
93 void PrintUnsuitable ( MBadPixelsPix::UnsuitableType_t typ , const char *text) const;
94 void PrintUncalibrated( MBadPixelsPix::UncalibratedType_t typ, const char *text) const;
95
96 Int_t PreProcess (MParList *pList);
97 Bool_t ReInit (MParList *pList);
98 Int_t Process ();
99 Int_t PostProcess();
100
101public:
102
103 MCalibrationChargeCalc(const char *name=NULL, const char *title=NULL);
104
105 void Clear(const Option_t *o="");
106
107 void SetChargeLimit ( const Float_t f=fgChargeLimit ) { fChargeLimit = f; }
108 void SetChargeErrLimit ( const Float_t f=fgChargeErrLimit ) { fChargeErrLimit = f; }
109 void SetChargeRelErrLimit ( const Float_t f=fgChargeRelErrLimit ) { fChargeRelErrLimit = f; }
110 void SetLambdaErrLimit ( const Float_t f=fgLambdaErrLimit ) { fLambdaErrLimit = f; }
111 void SetLambdaCheckLimit ( const Float_t f=fgLambdaCheckLimit ) { fLambdaCheckLimit = f; }
112 void SetPheErrLimit ( const Float_t f=fgPheErrLimit ) { fPheErrLimit = f; }
113 void SetPulserColor ( const MCalibrationCam::PulserColor_t col ) { fPulserColor = col; }
114
115 void SkipHiLoGainCalibration ( const Bool_t b=kTRUE )
116 { b ? CLRBIT(fFlags, kHiLoGainCalibration) : SETBIT(fFlags, kHiLoGainCalibration); }
117
118 ClassDef(MCalibrationChargeCalc, 1) // Task calculating Calibration Containers and Quantum Efficiencies
119};
120
121#endif
Note: See TracBrowser for help on using the repository browser.