source: trunk/Mars/mraw/MRawRunHeader.h@ 13923

Last change on this file since 13923 was 11869, checked in by tbretz, 13 years ago
Implemented the possibility to set the pixel map in the run-header when initializing for fact data.
File size: 8.7 KB
Line 
1#ifndef MARS_MRawRunHeader
2#define MARS_MRawRunHeader
3///////////////////////////////////////////////////////////////////////
4// //
5// MRunHeader //
6// //
7///////////////////////////////////////////////////////////////////////
8
9#ifndef MARS_MTime
10#include "MTime.h"
11#endif
12
13class TBuffer;
14class MArrayS;
15
16class MRawRunHeader : public MParContainer
17{
18public:
19 //
20 // enum for the Run Type. Monte Carlo Runs have
21 // to have a value greater than 255 (>0xff)
22 //
23 enum {
24 kRTData = 0x0000,
25 kRTPedestal = 0x0001,
26 kRTCalibration = 0x0002,
27 kRTDominoCal = 0x0003,
28 kRTLinearity = 0x0004,
29 kRTPointRun = 0x0007,
30 kRTMonteCarlo = 0x0100,
31 kRTFact = 0xfac7,
32 kRTNone = 0xffff
33 };
34
35 //
36 // Magic number to detect the magic file type
37 //
38 static const UShort_t kMagicNumber;
39 static const Byte_t kMaxFormatVersion;
40
41private:
42 /* ---- Run Header Informations ---- */
43 UShort_t fMagicNumber; // File type identifier
44
45 UInt_t fHeaderSizeRun; // Size of run header
46 UInt_t fHeaderSizeEvt; // Size of evt header
47 UInt_t fHeaderSizeCrate; // Size of crate header
48
49 UShort_t fFormatVersion; // File format version
50 UShort_t fSoftVersion; // DAQ software version
51 UShort_t fFadcType; // FADC type (1=Siegen, 2=MUX)
52 UShort_t fCameraVersion; // Camera Version (1=MAGIC I)
53 UShort_t fTelescopeNumber; // Telescope number (1=Magic I)
54 UShort_t fRunType; // Run Type
55 UInt_t fRunNumber; // Run number
56 UInt_t fFileNumber; // File number
57 Char_t fProjectName[101]; // Project name
58 Char_t fSourceName[81]; // Source name
59 Char_t fObservationMode[61]; // observation mode
60 Char_t fSourceEpochChar[4]; // epoch char of the source
61 UShort_t fSourceEpochDate; // epoch date of the source
62 UShort_t fNumCrates; // number of electronic boards
63 UShort_t fNumPixInCrate; // number of pixels in crate
64 UShort_t fNumSamplesLoGain; // number of logain samples stored
65 UShort_t fNumSamplesHiGain; // number of higain samples stored
66 UShort_t fNumBytesPerSample; // number of bytes per sample
67 Bool_t fIsSigned;
68 UInt_t fNumEvents; // number of events stored
69 UInt_t fNumEventsRead; // number of events read by the electronics
70 UShort_t fSamplingFrequency; // Sampling Frequency [MHz]
71 Byte_t fFadcResolution; // number of significant bits
72 MTime fRunStart; // time of run start
73 MTime fRunStop; // time of run stop
74 MArrayS *fPixAssignment; //-> pixel assignment table
75
76 Bool_t SwapAssignment(Short_t id0, Short_t id1);
77 void FixRunNumbers();
78 Bool_t FixAssignment();
79 Bool_t Fixes();
80 Bool_t IsConsistent() const;
81
82 Bool_t ReadEvtOld(istream& fin);
83
84 // MParContainer
85 Int_t ReadEnv(const TEnv &env, TString prefix, Bool_t print);
86
87public:
88 MRawRunHeader(const char *name=NULL, const char *title=NULL);
89 MRawRunHeader(const MRawRunHeader &h);
90 ~MRawRunHeader();
91
92 // This is to be used in the MC chain only!
93/*
94 void SetMagicNumber(UShort_t a) { fMagicNumber=a; }
95 void SetFormatVersion(UShort_t a) { fFormatVersion=a; }
96 void SetSoftVersion(UShort_t a) { fSoftVersion=a; }
97 void SetRunType(UShort_t a) { fRunType=a; }
98 void SetRunNumber(UInt_t a) { fRunNumber=a; }
99 void SetNumEvents(UInt_t a) { fNumEvents=a; }
100 void SetNumSamples(UShort_t low, UShort_t high)
101 {
102 fNumSamplesLoGain=low;
103 fNumSamplesHiGain=high;
104 }
105 void SetNumCrates(UShort_t a) { fNumCrates=a; }
106 void SetNumPixInCrate(UShort_t a) { fNumPixInCrate=a; }
107*/
108 void InitFadcType(UShort_t type);
109 void InitCamera(UShort_t type, UShort_t pix=0);
110 void InitPixels(UShort_t pix) { InitCamera((UShort_t)-1, pix); }
111 void InitFact(UShort_t num, UShort_t pix, UShort_t samples, UShort_t *map=0);
112 void SetRunType(UShort_t type) { fRunType=type; }
113 void SetRunInfo(UShort_t tel, UInt_t run, UInt_t file=0);
114 void SetFileNumber(UInt_t file) { fFileNumber=file; }
115 void SetSourceInfo(const TString src, char epoch='J', UShort_t date=2000);
116 void SetRunTime(const MTime &start, const MTime &end);
117 void SetRunTimeMjd(Float_t start, Float_t stop) { fRunStart.SetMjd(start); fRunStop.SetMjd(stop); }
118 void SetObservation(const TString mode, const TString proj);
119 void SetNumEvents(UInt_t num);
120 void SetValidMagicNumber() { fMagicNumber=kMagicNumber; }
121 void SetFormat(UShort_t file, UShort_t soft) { fFormatVersion=file; fSoftVersion=soft; }
122
123 // This is to get the numbers...
124 UShort_t GetMagicNumber() const { return fMagicNumber; }
125 UInt_t GetHeaderSizeEvt() const { return fHeaderSizeEvt; }
126 UInt_t GetHeaderSizeCrate() const { return fHeaderSizeCrate; }
127 UShort_t GetFormatVersion() const { return fFormatVersion; }
128 UShort_t GetSoftVersion() const { return fSoftVersion; }
129 UShort_t GetCameraVersion() const { return fCameraVersion; }
130 UInt_t GetRunNumber() const { return fRunNumber; }
131 UInt_t GetFileNumber() const { return fFileNumber; }
132 UInt_t GetTypeID() const { return (fRunNumber/1000000)%100; }
133 UInt_t GetFileID() const { return fRunNumber>1000000?(fRunNumber%1000000)*1000+(fFileNumber%1000):fRunNumber; }
134 TString GetStringID() const;
135 UShort_t GetTelescopeNumber() const { return fTelescopeNumber; }
136 UShort_t GetRunType() const { return fRunType; }
137 const Char_t *GetRunTypeStr() const;
138 const Char_t GetRunTypeChar() const;
139 const Char_t *GetProjectName() const { return fProjectName; }
140 const Char_t *GetSourceName() const { return fSourceName; }
141 const Char_t *GetSourceEpocheChar() const { return fSourceEpochChar; }
142 const Char_t *GetObservationMode() const { return fObservationMode; }
143 UShort_t GetSourceEpocheDate() const { return fSourceEpochDate; }
144 UShort_t GetNumCrates() const { return fNumCrates; }
145 UShort_t GetNumPixInCrate() const { return fNumPixInCrate; }
146 UShort_t GetNumSamplesLoGain() const { return fNumSamplesLoGain; }
147 UShort_t GetNumSamplesHiGain() const { return fNumSamplesHiGain; }
148 UInt_t GetNumSamples() const { return fNumSamplesHiGain+fNumSamplesLoGain; }
149 UShort_t GetNumBytesPerSample() const { return fNumBytesPerSample; }
150 Bool_t IsSigned() const { return fIsSigned; }
151 UInt_t GetNumEvents() const { return fNumEvents; }
152 UInt_t GetNumEventsRead() const { return fNumEventsRead; }
153 UShort_t GetFreqSampling() const { return fSamplingFrequency; }
154 const MTime &GetRunStart() const { return fRunStart; }
155 const MTime &GetRunEnd() const { return fRunStop; }
156 Double_t GetRunLength() const { return !fRunStart || !fRunStop ? 0 : fRunStop-fRunStart; }
157 Short_t GetPixAssignment(UShort_t i) const;
158 UShort_t GetMaxPixId() const;
159 UShort_t GetMinPixId() const;
160 UShort_t GetNumConnectedPixels() const;
161 UShort_t GetNumNormalPixels() const;
162 UShort_t GetNumSpecialPixels() const;
163 UInt_t GetScale() const { switch (fNumBytesPerSample) { case 1: return 0x1; case 2: return 0x100; case 4: return 0x1000000; } return 0; }
164 UInt_t GetMax() const { switch (fNumBytesPerSample) { case 1: return 0xff; case 2: return 0xffff; case 4: return 0xffffffff; } return 0; }
165
166 const MArrayS &GetPixAssignment() const { return *fPixAssignment; }
167
168 UInt_t GetNumSamplesPerCrate() const
169 {
170 return fNumPixInCrate*(fNumSamplesLoGain+fNumSamplesHiGain);
171 }
172
173 UShort_t GetNumPixel() const;
174 Int_t GetNumTotalBytes() const;
175
176 Bool_t IsValid() const { return fMagicNumber==0xc0c0 || fMagicNumber==0xc0c1; }
177 Bool_t IsMonteCarloRun() const { return fRunType>0x00ff; }
178 Bool_t IsDataRun() const { return (fRunType&0xff)==kRTData; }
179 Bool_t IsPedestalRun() const { return (fRunType&0xff)==kRTPedestal; }
180 Bool_t IsCalibrationRun() const { return (fRunType&0xff)==kRTCalibration; }
181 Bool_t IsPointRun() const { return (fRunType&0xff)==kRTPointRun; }
182
183 Bool_t IsValidRun() const { return fRunType!=kRTNone; }
184
185 Bool_t IsConsistent(const MRawRunHeader &h) const;
186
187 void Print(Option_t *t=NULL) const;
188
189 Bool_t ReadEvt(istream& fin);
190 //Bool_t WriteEvt(ostream& fout) const;
191
192 ClassDef(MRawRunHeader, 12) // storage container for general info
193};
194#endif
Note: See TracBrowser for help on using the repository browser.