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

Last change on this file since 4308 was 4242, checked in by gaug, 20 years ago
*** empty log message ***
File size: 6.3 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: 2.5)
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: 4.)
51 static const Float_t fgFFactorErrLimit; //! Default for fFFactorErrLimit (now set to: 3.)
52
53 // Variables
54 Float_t fChargeLimit; // Limit acceptance mean charge (in units of PedRMS)
55 Float_t fChargeErrLimit; // Limit acceptance charge error (in abs. numbers)
56 Float_t fChargeRelErrLimit; // Limit acceptance rel. error mean (in abs. numbers)
57 Byte_t fFlags; // Bit-field for the flags
58 Float_t fLambdaCheckLimit; // Limit rel. diff. lambda and lambdacheck in Blind Pixel
59 Float_t fLambdaErrLimit; // Limit acceptance lambda error in Blind Pixel
60 Float_t fNumHiGainSamples; // Number High-Gain FADC slices used by extractor
61 Float_t fNumLoGainSamples; // Number Low -Gain FADC slices used by extractor
62 Float_t fPheErrLimit; // Limit acceptance nr. phe's w.r.t. area idx mean (in sigmas)
63 Float_t fFFactorErrLimit; // Limit acceptance F-Factor w.r.t. area idx mean
64 Float_t fSqrtHiGainSamples; // Square root nr. High-Gain FADC slices used by extractor
65 Float_t fSqrtLoGainSamples; // Square root nr. Low -Gain FADC slices used by extractor
66 MCalibrationCam::PulserColor_t fPulserColor; // Calibration LEDs colour
67 Int_t fNumInnerFFactorMethodUsed; // Number of inner pixels used for F-Factor Method calibration
68
69 TString fOutputPath; // Path to the output file
70 TString fOutputFile; // Name of the output file
71
72 // Pointers
73 MBadPixelsCam *fBadPixels; // Bad Pixels
74 MCalibrationChargeCam *fCam; // Calibrated Charges of all pixels
75 MCalibrationChargeBlindPix *fBlindPixel; // Calibrated Charges of the Blind Pixel
76 MCalibrationChargePINDiode *fPINDiode; // Calibrated Charges of the PIN Diode
77 MCalibrationQECam *fQECam; // Calibrated Quantum Efficiencies of all pixels
78 MGeomCam *fGeom; //! Camera geometry
79 MPedestalCam *fPedestals; //! Pedestals all pixels (calculated previously from ped.file)
80 MTime *fEvtTime; //! Time of the event
81
82 // enums
83 enum { kHiLoGainCalibration };
84
85 // functions
86 const char* GetOutputFile();
87 void FinalizePedestals ( const MPedestalPix &ped, MCalibrationChargePix &cal, const Int_t aidx );
88 Bool_t FinalizeCharges ( MCalibrationChargePix &cal, MBadPixelsPix &bad );
89 Bool_t FinalizePINDiode ();
90 Bool_t FinalizeBlindPixel ();
91 Bool_t FinalizeFFactorMethod ();
92 void FinalizeBadPixels ();
93 void FinalizeFFactorQECam ();
94 void FinalizeBlindPixelQECam();
95 void FinalizePINDiodeQECam ();
96 void FinalizeUnsuitablePixels();
97
98 void PrintUncalibrated( MBadPixelsPix::UncalibratedType_t typ, const char *text) const;
99
100 Int_t PreProcess (MParList *pList);
101 Bool_t ReInit (MParList *pList);
102 Int_t Process ();
103 Int_t PostProcess();
104
105public:
106
107 MCalibrationChargeCalc(const char *name=NULL, const char *title=NULL);
108
109 void Clear(const Option_t *o="");
110
111 void SetChargeLimit ( const Float_t f=fgChargeLimit ) { fChargeLimit = f; }
112 void SetChargeErrLimit ( const Float_t f=fgChargeErrLimit ) { fChargeErrLimit = f; }
113 void SetChargeRelErrLimit ( const Float_t f=fgChargeRelErrLimit ) { fChargeRelErrLimit = f; }
114 void SetFFactorErrLimit ( const Float_t f=fgFFactorErrLimit ) { fFFactorErrLimit = f; }
115 void SetLambdaErrLimit ( const Float_t f=fgLambdaErrLimit ) { fLambdaErrLimit = f; }
116 void SetLambdaCheckLimit ( const Float_t f=fgLambdaCheckLimit ) { fLambdaCheckLimit = f; }
117 void SetOutputPath ( TString path="." );
118 void SetOutputFile ( TString file="ChargeCalibStat.txt" );
119 void SetPheErrLimit ( const Float_t f=fgPheErrLimit ) { fPheErrLimit = f; }
120 void SetPulserColor ( const MCalibrationCam::PulserColor_t col ) { fPulserColor = col; }
121
122 void SkipHiLoGainCalibration ( const Bool_t b=kTRUE )
123 { b ? CLRBIT(fFlags, kHiLoGainCalibration) : SETBIT(fFlags, kHiLoGainCalibration); }
124
125 ClassDef(MCalibrationChargeCalc, 1) // Task calculating Calibration Containers and Quantum Efficiencies
126};
127
128#endif
Note: See TracBrowser for help on using the repository browser.