source: trunk/MagicSoft/Mars/mjobs/MJPedestal.h@ 6181

Last change on this file since 6181 was 6177, checked in by gaug, 22 years ago
*** empty log message ***
File size: 6.2 KB
Line 
1#ifndef MARS_MJPedestal
2#define MARS_MJPedestal
3
4#ifndef MARS_MJob
5#include "MJob.h"
6#endif
7#ifndef MARS_MPedestalCam
8#include "MPedestalCam.h"
9#endif
10#ifndef MARS_MBadPixelsCam
11#include "MBadPixelsCam.h"
12#endif
13
14class TCanvas;
15class MParList;
16class MRunIter;
17class MHCamera;
18class TH1D;
19class MExtractor;
20class MExtractPedestal;
21class MEvtLoop;
22
23class MJPedestal : public MJob
24{
25private:
26
27 static const TString fgReferenceFile; //! default for fReferenceFile ("pedestalref.rc")
28
29 Axis_t fPedestalMin; //! Minimum Axis value for pedestal datacheck display
30 Axis_t fPedestalMax; //! Maximum Axis value for pedestal datacheck display
31 Axis_t fPedRmsMin; //! Minimum Axis value for ped. RMS datacheck display
32 Axis_t fPedRmsMax; //! Maximum Axis value for ped. RMS datacheck display
33
34 Float_t fRefPedClosedLids; //! Reference line pedestal for closed lids run
35 Float_t fRefPedExtraGalactic; //! Reference line pedestal for extragalactic source
36 Float_t fRefPedGalactic; //! Reference line pedestal for galactic source
37
38 Float_t fRefPedRmsClosedLidsInner; //! Ref. line ped. RMS for closed lids run - inner pixels
39 Float_t fRefPedRmsExtraGalacticInner; //! Ref. line ped. RMS for extragalactic source - inner pixels
40 Float_t fRefPedRmsGalacticInner; //! Ref. line ped. RMS for galactic source - inner pixels
41
42 Float_t fRefPedRmsClosedLidsOuter; //! Ref. line ped. RMS for closed lids run - outer pixels
43 Float_t fRefPedRmsExtraGalacticOuter; //! Ref. line ped. RMS for extragalactic source - outer pixels
44 Float_t fRefPedRmsGalacticOuter; //! Ref. line ped. RMS for galactic source - outer pixels
45
46 TString fReferenceFile; // File name containing the reference values
47
48 MRunIter *fRuns; // Used pedestal runs
49 MExtractor *fExtractor; // Signal extractor, used to find the nr. of used FADC slices
50
51 MPedestalCam fPedestalCamIn; // Handed over pedestal results
52 MPedestalCam fPedestalCamOut; // Created pedestal results
53 MBadPixelsCam fBadPixels; // Bad Pixels
54
55 enum Display_t { kDisplayNone, kDisplayNormal, kDisplayDataCheck }; // Possible Display types
56 Display_t fDisplayType; // Chosen Display type
57
58 enum Storage_t { kNoStorage }; // Possible flags for the storage of results
59 Byte_t fStorage; // Bit-field for chosen storage type
60
61 enum Extract_t { kUseData, kUsePedRun, kUseHists }; // Possible flags for the extraction of the pedestal
62 Extract_t fExtractType; // Chosen extractor type
63
64 enum Extraction { kFundamental, kWithExtractorRndm, kWithExtractor };
65 Int_t fExtractionType; // Flag if the extractor is used to calculate the pedestals
66
67 enum DataType_t
68 {
69 kIsUseRawData,
70 kIsUseRootData,
71 kIsUseMC
72 };
73
74 Byte_t fDataFlag; // Bit-field to store the data type
75
76 Bool_t IsUseRawData() const { return TESTBIT(fDataFlag,kIsUseRawData); }
77 Bool_t IsUseRootData() const { return TESTBIT(fDataFlag,kIsUseRootData); }
78 Bool_t IsUseMC() const { return TESTBIT(fDataFlag,kIsUseMC); }
79
80 void SetUseRawData ( const Bool_t b=kTRUE ) { b ? SETBIT(fDataFlag,kIsUseRawData) : CLRBIT(fDataFlag,kIsUseRawData); }
81 void SetUseRootData( const Bool_t b=kTRUE ) { b ? SETBIT(fDataFlag,kIsUseRootData) : CLRBIT(fDataFlag,kIsUseRootData); }
82 void SetUseMC ( const Bool_t b=kTRUE ) { b ? SETBIT(fDataFlag,kIsUseMC) : CLRBIT(fDataFlag,kIsUseMC); }
83
84 MExtractor *ReadCalibration() const;
85 Bool_t ReadPedestalCam();
86 Bool_t WriteResult();
87 //Bool_t WriteEventloop(MEvtLoop &evtloop) const;
88
89 void DisplayResult(MParList &plist);
90 void DisplayReferenceLines(MHCamera *cam, const Int_t what) const;
91 void DisplayOutliers(TH1D *hist) const;
92 void FixDataCheckHist(TH1D *hist) const;
93
94 Bool_t IsNoStorage() const { return TESTBIT(fStorage, kNoStorage); }
95
96 Bool_t CheckEnvLocal();
97
98 const char* GetOutputFileName() const;
99
100public:
101 MJPedestal(const char *name=NULL, const char *title=NULL);
102 ~MJPedestal();
103
104 MPedestalCam &GetPedestalCam() { return fPedestalCamOut; }
105 const MBadPixelsCam &GetBadPixels() const { return fBadPixels; }
106
107 const char* GetOutputFile() const;
108
109 const Bool_t IsUseData() const { return fExtractType == kUseData; }
110
111 Bool_t Process ();
112 Bool_t ProcessFile();
113
114 void SetBadPixels(const MBadPixelsCam &bad) { bad.Copy(fBadPixels); }
115 void SetPedestals(const MPedestalCam &ped) { ped.Copy(fPedestalCamIn); }
116 void SetExtractor(MExtractor* ext);
117 void SetInput(MRunIter *iter) { fRuns = iter; }
118 void SetUseData() { fExtractType = kUseData; }
119 void SetUseHists() { fExtractType = kUseHists; }
120 void SetUsePedRun() { fExtractType = kUsePedRun; }
121 void SetDataCheckDisplay() { fDisplayType = kDisplayDataCheck; }
122 void SetNormalDisplay() { fDisplayType = kDisplayNormal; }
123 void SetNoDisplay() { fDisplayType = kDisplayNone; }
124
125 void SetExtractionFundamental() { fExtractionType=kFundamental; /*fPedestalCamOut.SetName("MPedestalFundamental");*/ }
126 void SetExtractionWithExtractorRndm() { fExtractionType=kWithExtractorRndm; /*fPedestalCamOut.SetName("MPedestalExtractorRndm");*/ }
127 void SetExtractionWithExtractor() { fExtractionType=kWithExtractor; /*fPedestalCamOut.SetName("MPedestalExtractor");*/ }
128
129 void SetReferenceFile( const TString ref=fgReferenceFile ) { fReferenceFile = ref; }
130
131 MExtractor *GetExtractor() const { return fExtractor; }
132
133 // Storage
134 void SetNoStorage(const Bool_t b=kTRUE) { b ? SETBIT(fStorage, kNoStorage) : CLRBIT(fStorage,kNoStorage); }
135 void SetNormalStorage() { CLRBIT(fStorage, kNoStorage); }
136
137 ClassDef(MJPedestal, 0) // Tool to create a pedestal file (MPedestalCam)
138};
139
140#endif
Note: See TracBrowser for help on using the repository browser.