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

Last change on this file since 4200 was 4192, checked in by gaug, 21 years ago
*** empty log message ***
File size: 6.2 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
68 TString fOutputPath; // Path to the output file
69 TString fOutputFile; // Name of the output file
70
71 // Pointers
72 MBadPixelsCam *fBadPixels; // Bad Pixels
73 MCalibrationChargeCam *fCam; // Calibrated Charges of all pixels
74 MCalibrationChargeBlindPix *fBlindPixel; // Calibrated Charges of the Blind Pixel
75 MCalibrationChargePINDiode *fPINDiode; // Calibrated Charges of the PIN Diode
76 MCalibrationQECam *fQECam; // Calibrated Quantum Efficiencies of all pixels
77 MGeomCam *fGeom; //! Camera geometry
78 MPedestalCam *fPedestals; //! Pedestals all pixels (calculated previously from ped.file)
79 MTime *fEvtTime; //! Time of the event
80
81 // enums
82 enum { kHiLoGainCalibration };
83
84 // functions
85 const char* GetOutputFile();
86 void FinalizePedestals ( const MPedestalPix &ped, MCalibrationChargePix &cal, const Int_t aidx );
87 Bool_t FinalizeCharges ( MCalibrationChargePix &cal, MBadPixelsPix &bad );
88 Bool_t FinalizePINDiode ();
89 Bool_t FinalizeBlindPixel ();
90 Bool_t FinalizeFFactorMethod ();
91 void FinalizeBadPixels ();
92 void FinalizeFFactorQECam ();
93 void FinalizeBlindPixelQECam();
94 void FinalizePINDiodeQECam ();
95 void FinalizeUnsuitablePixels();
96
97 void PrintUncalibrated( MBadPixelsPix::UncalibratedType_t typ, const char *text) const;
98
99 Int_t PreProcess (MParList *pList);
100 Bool_t ReInit (MParList *pList);
101 Int_t Process ();
102 Int_t PostProcess();
103
104public:
105
106 MCalibrationChargeCalc(const char *name=NULL, const char *title=NULL);
107
108 void Clear(const Option_t *o="");
109
110 void SetChargeLimit ( const Float_t f=fgChargeLimit ) { fChargeLimit = f; }
111 void SetChargeErrLimit ( const Float_t f=fgChargeErrLimit ) { fChargeErrLimit = f; }
112 void SetChargeRelErrLimit ( const Float_t f=fgChargeRelErrLimit ) { fChargeRelErrLimit = f; }
113 void SetFFactorErrLimit ( const Float_t f=fgFFactorErrLimit ) { fFFactorErrLimit = f; }
114 void SetLambdaErrLimit ( const Float_t f=fgLambdaErrLimit ) { fLambdaErrLimit = f; }
115 void SetLambdaCheckLimit ( const Float_t f=fgLambdaCheckLimit ) { fLambdaCheckLimit = f; }
116 void SetOutputPath ( TString path="." );
117 void SetOutputFile ( TString file="ChargeCalibStat.txt" );
118 void SetPheErrLimit ( const Float_t f=fgPheErrLimit ) { fPheErrLimit = f; }
119 void SetPulserColor ( const MCalibrationCam::PulserColor_t col ) { fPulserColor = col; }
120
121 void SkipHiLoGainCalibration ( const Bool_t b=kTRUE )
122 { b ? CLRBIT(fFlags, kHiLoGainCalibration) : SETBIT(fFlags, kHiLoGainCalibration); }
123
124 ClassDef(MCalibrationChargeCalc, 1) // Task calculating Calibration Containers and Quantum Efficiencies
125};
126
127#endif
Note: See TracBrowser for help on using the repository browser.