source: trunk/MagicSoft/Mars/mjobs/MJCalibration.h@ 4623

Last change on this file since 4623 was 4623, checked in by gaug, 20 years ago
*** empty log message ***
File size: 5.9 KB
Line 
1#ifndef MARS_MJCalibration
2#define MARS_MJCalibration
3
4#ifndef MARS_MCalibrationChargeCam
5#include "MCalibrationChargeCam.h"
6#endif
7#ifndef MARS_MCalibrationChargeBlindCam
8#include "MCalibrationChargeBlindCam.h"
9#endif
10#ifndef MARS_MCalibrationChargePINDiode
11#include "MCalibrationChargePINDiode.h"
12#endif
13#ifndef MARS_MCalibrationRelTimeCam
14#include "MCalibrationRelTimeCam.h"
15#endif
16#ifndef MARS_MCalibrationQECam
17#include "MCalibrationQECam.h"
18#endif
19#ifndef MARS_MBadPixelsCam
20#include "MBadPixelsCam.h"
21#endif
22
23class TEnv;
24class MRunIter;
25class MSequence;
26class MParList;
27class MPedestalCam;
28class MExtractor;
29class MExtractTime;
30
31class MExtractBlindPixel;
32class MHCalibrationChargeBlindCam;
33class MHCamera;
34class TH1D;
35class MJCalibration : public MParContainer
36{
37private:
38
39 static const Int_t gkIFAEBoxInaugurationRun; //! Run number of first IFAE box calibration
40 static const Int_t gkSecondBlindPixelInstallation; //! Run number upon which second blind pixel was installed
41 static const Int_t gkThirdBlindPixelInstallation; //! Run number upon which third blind pixel was installed
42
43 static const Float_t fgRefConvFADC2PheInner; //! Reference value for the conversion factor to phes - inner
44 static const Float_t fgRefConvFADC2PheOuter; //! Reference value for the conversion factor to phes - outer
45 static const Float_t fgRefConvFADC2PhotInner; //! Reference value for the conversion factor to phs - inner
46 static const Float_t fgRefConvFADC2PhotOuter; //! Reference value for the conversion factor to phs - outer
47 static const Float_t fgRefQEInner; //! Reference value for the quantum eff. cascades - inner
48 static const Float_t fgRefQEOuter; //! Reference value for the quantum eff. cascades - outer
49
50 TString fOutputPath; // Path to the output files
51
52 TEnv *fEnv; // Input setup-file
53 MRunIter *fRuns; // Calibration files
54 MSequence *fSequence; // Sequence
55
56 MExtractor *fExtractor; // Signal extractor
57 MExtractTime *fTimeExtractor; // Arrival Time extractor
58
59 MBadPixelsCam fBadPixels; // Bad Pixels cam, can be set from previous runs
60 MCalibrationChargeCam fCalibrationCam; // Calibration conversion factors FADC2Phe
61 MCalibrationChargeBlindCam fCalibrationBlindCam; // Calibration from Blind Pixel(s)
62 MCalibrationChargePINDiode fCalibrationPINDiode; // Calibration from PIN Diode
63 MCalibrationQECam fQECam; // Quantum efficiency, can be set from previous runs
64 MCalibrationRelTimeCam fRelTimeCam; // Calibration constants rel. times
65
66 MCalibrationCam::PulserColor_t fColor; // Colour of the pulsed LEDs
67
68 enum Display_t // Possible Display types
69 {
70 kFullDisplay,
71 kDataCheckDisplay,
72 kNormalDisplay
73 };
74
75 Display_t fDisplayType; // Chosen Display type
76
77 enum Device_t // Possible devices for calibration
78 {
79 kUseBlindPixel,
80 kUsePINDiode
81 };
82
83 Byte_t fDevices; // Bit-field for used devices for calibration
84
85 Bool_t fRelTimes; // Flag if relative times have to be calibrated
86 Bool_t fDataCheck; // Flag if the data check is run on raw data
87 Bool_t fDebug;
88
89 void DisplayResult(MParList &plist);
90 void DisplayReferenceLines(MHCamera *cam, const Int_t what) const;
91 void DisplayOutliers(TH1D *hist, const char* whatsmall, const char* whatbig) const;
92 void DisplayDoubleProject(MHCamera *cam, const char* whatsmall, const char* whatbig) const;
93 void FixDataCheckHist(TH1D *hist) const;
94
95 Bool_t WriteResult();
96 void CheckEnv();
97
98 // WORKAROUNDS!!!
99 Bool_t FindColor();
100 void InitBlindPixel(MExtractBlindPixel &blindext,
101 MHCalibrationChargeBlindCam &blindcam);
102
103public:
104
105 MJCalibration(const char *name=NULL, const char *title=NULL);
106 ~MJCalibration();
107
108 const char* GetOutputFile() const;
109 void SetEnv(const char *env);
110
111 MCalibrationChargeCam &GetCalibrationCam() { return fCalibrationCam; }
112 MCalibrationRelTimeCam &GetRelTimeCam() { return fRelTimeCam; }
113 MCalibrationQECam &GetQECam() { return fQECam; }
114 MBadPixelsCam &GetBadPixels() { return fBadPixels; }
115
116 Bool_t IsUseBlindPixel() const;
117 Bool_t IsUsePINDiode() const;
118
119 void SetBadPixels(const MBadPixelsCam &bad) { bad.Copy(fBadPixels); }
120 void SetExtractor(MExtractor* ext) { fExtractor = ext; }
121 void SetTimeExtractor(MExtractTime* ext) { fTimeExtractor = ext; }
122 void SetQECam(const MCalibrationQECam &qe) { qe.Copy(fQECam); }
123 void SetColor(const MCalibrationCam::PulserColor_t color) { fColor = color; }
124
125 void SetInput(MRunIter *iter) { fRuns=iter; }
126 void SetSequence(MSequence *seq) { fSequence=seq; }
127 void SetOutputPath(const char *path=".");
128
129 // Displays
130 void SetFullDisplay() { fDisplayType = kFullDisplay; }
131 void SetDataCheckDisplay() { fDisplayType = kDataCheckDisplay; }
132 void SetNormalDisplay() { fDisplayType = kNormalDisplay; }
133
134 // Rel. Time
135 void SetRelTimeCalibration(const Bool_t b=kTRUE) { fRelTimes = b; }
136
137 // Data Check
138 void SetDataCheck(const Bool_t b=kTRUE) { fDataCheck = b; SetDataCheckDisplay(); }
139
140 // Debug
141 void SetDebug(const Bool_t b=kTRUE) { fDebug = b; }
142
143 // Devices
144 void SetUseBlindPixel(const Bool_t b=kTRUE);
145 void SetUsePINDiode(const Bool_t b=kTRUE);
146
147 Bool_t ReadCalibrationCam();
148 Bool_t ProcessFile(MPedestalCam &pedcam);
149 Bool_t Process(MPedestalCam &pedcam);
150
151 ClassDef(MJCalibration, 0) // Tool to run a calibration per pulser colour and intensity
152};
153
154#endif
Note: See TracBrowser for help on using the repository browser.