source: trunk/MagicSoft/Mars/mraw/MRawRunHeader.h@ 8946

Last change on this file since 8946 was 8946, checked in by tbretz, 16 years ago
*** empty log message ***
File size: 6.5 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 kRTPointRun = 0x0007,
28 kRTMonteCarlo = 0x0100,
29 kRTNone = 0xffff
30 };
31
32 //
33 // Magic number to detect the magic file type
34 //
35 static const UShort_t kMagicNumber;
36 static const Byte_t kMaxFormatVersion;
37
38private:
39 /* ---- Run Header Informations ---- */
40 UShort_t fMagicNumber; // File type identifier
41
42 UInt_t fHeaderSizeRun; // Size of run header
43 UInt_t fHeaderSizeEvt; // Size of evt header
44 UInt_t fHeaderSizeCrate; // Size of crate header
45
46 UShort_t fFormatVersion; // File format version
47 UShort_t fSoftVersion; // DAQ software version
48 UShort_t fFadcType; // FADC type (1=Siegen, 2=MUX)
49 UShort_t fCameraVersion; // Camera Version (1=MAGIC I)
50 UShort_t fTelescopeNumber; // Telescope number (1=Magic I)
51 UShort_t fRunType; // Run Type
52 UInt_t fRunNumber; // Run number
53 UInt_t fFileNumber; // File number
54 Char_t fProjectName[101]; // Project name
55 Char_t fSourceName[81]; // Source name
56 Char_t fObservationMode[61]; // observation mode
57 Char_t fSourceEpochChar[4]; // epoch char of the source
58 UShort_t fSourceEpochDate; // epoch date of the source
59 UShort_t fNumCrates; // number of electronic boards
60 UShort_t fNumPixInCrate; // number of pixels in crate
61 UShort_t fNumSamplesLoGain; // number of logain samples stored
62 UShort_t fNumSamplesHiGain; // number of higain samples stored
63 UShort_t fNumBytesPerSample; // number of bytes per sample
64 UInt_t fNumEvents; // number of events stored
65 UInt_t fNumEventsRead; // number of events read by the electronics
66 UShort_t fSamplingFrequency; // Sampling Frequency [MHz]
67 Byte_t fFadcResolution; // number of significant bits
68 MTime fRunStart; // time of run start
69 MTime fRunStop; // time of run stop
70 MArrayS *fPixAssignment; //-> pixel assignment table
71
72 Bool_t SwapAssignment(Short_t id0, Short_t id1);
73 Bool_t FixAssignment();
74 Bool_t ReadEvtOld(istream& fin);
75
76public:
77 MRawRunHeader(const char *name=NULL, const char *title=NULL);
78 ~MRawRunHeader();
79
80 // This is to be used in the MC chain only!
81 void SetMagicNumber(UShort_t a) { fMagicNumber=a; }
82 void SetFormatVersion(UShort_t a) { fFormatVersion=a; }
83 void SetSoftVersion(UShort_t a) { fSoftVersion=a; }
84 void SetRunType(UShort_t a) { fRunType=a; }
85 void SetRunNumber(UInt_t a) { fRunNumber=a; }
86 void SetNumEvents(UInt_t a) { fNumEvents=a; }
87 void SetNumSamples(UShort_t low, UShort_t high)
88 {
89 fNumSamplesLoGain=low;
90 fNumSamplesHiGain=high;
91 }
92 void SetNumCrates(UShort_t a) { fNumCrates=a; }
93 void SetNumPixInCrate(UShort_t a) { fNumPixInCrate=a; }
94 void SetRunTime(Float_t start, Float_t stop)
95 { fRunStart.SetMjd(start); fRunStop.SetMjd(stop); }
96
97 // This is to get the numbers...
98 UShort_t GetMagicNumber() const { return fMagicNumber; }
99 UInt_t GetHeaderSizeEvt() const { return fHeaderSizeEvt; }
100 UInt_t GetHeaderSizeCrate() const { return fHeaderSizeCrate; }
101 UShort_t GetFormatVersion() const { return fFormatVersion; }
102 UShort_t GetSoftVersion() const { return fSoftVersion; }
103 UInt_t GetRunNumber() const { return fRunNumber; }
104 UShort_t GetRunType() const { return fRunType; }
105 const Char_t *GetRunTypeStr() const;
106 const Char_t *GetProjectName() const { return fProjectName; }
107 const Char_t *GetSourceName() const { return fSourceName; }
108 const Char_t *GetSourceEpocheChar() const { return fSourceEpochChar; }
109 const Char_t *GetObservationMode() const { return fObservationMode; }
110 UShort_t GetSourceEpocheDate() const { return fSourceEpochDate; }
111 UShort_t GetNumCrates() const { return fNumCrates; }
112 UShort_t GetNumPixInCrate() const { return fNumPixInCrate; }
113 UShort_t GetNumSamplesLoGain() const { return fNumSamplesLoGain; }
114 UShort_t GetNumSamplesHiGain() const { return fNumSamplesHiGain; }
115 UInt_t GetNumSamples() const { return fNumSamplesHiGain+fNumSamplesLoGain; }
116 UShort_t GetNumBytesPerSample() const { return fNumBytesPerSample; }
117 UInt_t GetNumEvents() const { return fNumEvents; }
118 UInt_t GetNumEventsRead() const { return fNumEventsRead; }
119 UShort_t GetFreqSampling() const { return fSamplingFrequency; }
120 const MTime &GetRunStart() const { return fRunStart; }
121 const MTime &GetRunEnd() const { return fRunStop; }
122 Double_t GetRunLength() const { return fRunStop-fRunStart; }
123 Short_t GetPixAssignment(UShort_t i) const;
124 UShort_t GetMaxPixId() const;
125 UShort_t GetMinPixId() const;
126 UShort_t GetNumConnectedPixels() const;
127 UShort_t GetNumNormalPixels() const;
128 UShort_t GetNumSpecialPixels() const;
129 UInt_t GetScale() const { switch (fNumBytesPerSample) { case 1: return 0x1; case 2: return 0x100; case 4: return 0x1000000; } return 0; }
130 UInt_t GetMax() const { switch (fNumBytesPerSample) { case 1: return 0xff; case 2: return 0xffff; case 4: return 0xffffffff; } return 0; }
131
132 UInt_t GetNumSamplesPerCrate() const
133 {
134 return fNumPixInCrate*(fNumSamplesLoGain+fNumSamplesHiGain);
135 }
136
137 UShort_t GetNumPixel() const;
138 Int_t GetNumTotalBytes() const;
139
140 Bool_t IsValid() const { return fMagicNumber==0xc0c0 || fMagicNumber==0xc0c1; }
141 Bool_t IsMonteCarloRun() const { return fRunType>0x00ff; }
142
143 void Print(Option_t *t=NULL) const;
144
145 Bool_t ReadEvt(istream& fin);
146
147 ClassDef(MRawRunHeader, 10) // storage container for general info
148};
149#endif
Note: See TracBrowser for help on using the repository browser.