source: trunk/MagicSoft/include-Classes/MRawEvt.cxx@ 405

Last change on this file since 405 was 374, checked in by harald, 25 years ago
some small changes to get out the timestamp of the event.
File size: 6.4 KB
Line 
1#include <iostream.h>
2#include "TClonesArray.h"
3#include "TString.h"
4#include "TRandom.h"
5
6#include "MRawEvt.h"
7#include "MRawPixel.h"
8
9#include "Mdefine.h"
10//==========
11// MRawEvt
12//
13// One Event is a sample of FADC measurements of different Pixels
14// (Photomultipliers) from the Camera of MAGIC. So all data (FADC) of the
15// interesting pixels are the modules of an event. To describe pixels the
16// class MRawPixel is used. To define a single events
17// some other data members are needed (Time of the events, kind of event..).
18//
19// To describe one event on the level of FADC values the Class MRawEvt is
20// created. It has the following data members:
21//
22// ----------
23//
24// UInt_t EvtNo
25//
26// This it the number of the Event in one
27// data run. The first event in this run get
28// the number zero. The next one is one bigger.
29//
30// Assuming that one run takes 1 hour and a
31// triggerrate of 1kHz the number must be able
32// to reach 3.6e6 Events. To reach this number
33// you need at least 22 bits. This is the reason
34// why we use an integer (of root type UInt_t)
35// with a range to 4.2e9.
36//
37// ----------
38//
39// ULong_t fTimeStamp
40//
41// Time of the event.
42// The start point of the time determination can be
43// the millenium. From that start point the time is
44// measured in 200ns-count. One day for example
45// contains 432.e9 counts. An unsigned Long is able to
46// contain 1.8e19 200ns-counts. This corresponds to 41.e6
47// days. This should be more than the livetime of MAGIC.
48//
49// ----------
50//
51// UChar_t EvtStatus
52//
53// Status of Event.
54// This is a Byte (8 bit) to indicated the status of
55// the event (Pedestal, Calibration, etc).
56//
57// ----------
58//
59// UShort_t Trig1st
60//
61// Number of first level trigger
62// This member counts the number of First Level Trigger
63// between the last and this event. May be that due to
64// dead time of the DAQ this number is different from 1.
65// If the DAQ is fast enough, this value should be 1.
66// This may be usefull in GammaRayBursts and if we
67// apply a data reduction in the DAQ-chain, which selects
68// only good events.
69//
70// ----------
71//
72// UShort_t MultPixel
73//
74// Multiplicity of Pixels
75// Each event consists of a specific number of
76// pixels. This is the number of pixels in one event.
77// The array of ClonesPixels (taClonesArray) is of this
78// size.
79//
80// ----------
81//
82// TClonesArray *Pixels
83//
84// Array of Pixels
85// The Clones array is a list of the Pixels used in one
86// event with the information about the Pixels.
87//
88//
89
90//
91void GetFadcNoise ( UChar_t asF[] )
92{
93 static TRandom Gen ;
94 static Float_t z1, z2 ;
95 for (Int_t i=0; i<FADC_SLICES; i++ ) {
96 Gen.Rannor(z1, z2) ;
97 asF[i] = 10 + (UChar_t)(z1*4) ;
98 // if (asF[i] < 0 ) asF[i] = 0 ;
99 }
100}
101
102ClassImp(MRawEvt)
103
104MRawEvt::MRawEvt() {
105 //
106 // Implementation of the default constructor
107 //
108 // set all member to zero, init the pointer to ClonesArray,
109
110 EvtNo = 0 ;
111 fTimeStamp = 0 ;
112 EvtStatus = 0 ;
113 Trig1st = 0 ;
114 MultPixel = 0 ;
115
116 //
117 // Then we have to initialize the ClonesArray list for the Pixels.
118 // This is neccessary once!
119 //
120 // initialize the list to this global pointer
121
122 Pixels = new TClonesArray ("MRawPixel", 2*CAMERA_PIXELS ) ;
123
124 cout << " default constructor " << endl ;
125}
126
127
128MRawEvt::~MRawEvt() {
129 //
130 // Implementation of the default destructor
131 //
132 delete Pixels ;
133 cout << " default destructor " << endl ;
134}
135
136void MRawEvt::Clear() {
137 //
138 // Implementation of the Clear function
139 //
140 // Resets all members to zero, clear the list of Pixels
141 //
142 EvtNo = 0 ;
143 fTimeStamp = 0 ;
144 EvtStatus = 0 ;
145 Trig1st = 0 ;
146 MultPixel = 0 ;
147
148 Pixels->Clear() ;
149}
150
151
152
153void MRawEvt::Print() {
154 //
155 // This member function prints all Data of one Event on screen.
156 //
157
158 // Prints out the data of one Pixel
159 cout << endl << "EventNumber " << EvtNo ;
160 cout << endl << "Event Time Stamp " << fTimeStamp ;
161 cout << endl << "Event Status " << (int) EvtStatus ;
162 cout << endl << "Trigger 1. Level " << Trig1st ;
163 cout << endl << "Number of Pixels " << MultPixel ;
164
165 for (Int_t i=0 ; i<MultPixel; i++ ) {
166 ((MRawPixel *)Pixels->At(i))->Print() ;
167 }
168}
169
170
171void MRawEvt::FillRandom ( UInt_t uiN, ULong_t ulT, UShort_t usMuPi ) {
172 //
173 // This is neccessary to fill the MRawEvt Class with randomized FADC
174 // values. The EventNumber, EventTime and the Number of Pixels are given
175 // as parameters.
176 //
177
178 EvtNo = uiN ;
179 fTimeStamp = ulT ;
180
181 UChar_t ucA[FADC_SLICES] ;
182
183 for (UShort_t i = 0 ; i< usMuPi; i++ ) {
184 GetFadcNoise ( ucA ) ;
185
186 TClonesArray &caP = *Pixels ;
187 new ( caP[MultPixel++] ) MRawPixel((MultPixel), 0, ucA) ;
188 }
189}
190
191void MRawEvt::FillHeader ( UInt_t uiN, ULong_t ulT, UChar_t ucSta ) {
192
193 EvtNo = uiN ;
194 fTimeStamp = ulT ;
195
196 EvtStatus = ucSta ;
197 Trig1st = 0 ;
198 MultPixel = 0 ;
199
200 Pixels->Clear() ;
201}
202
203void MRawEvt::FillPixel ( UShort_t uiPix, Float_t *array ) {
204 //
205 // This is to fill the data of one pixel to the MRawEvt Class.
206 // The parameters are the pixelnumber and the FADC_SLICES values of ADCs
207 //
208
209 UChar_t ucA[FADC_SLICES] ;
210
211 for (UShort_t i = 0 ; i< FADC_SLICES ; i++ ) {
212 ucA[i] = (UShort_t) array[i] ;
213 }
214
215 TClonesArray &caP = *Pixels ;
216 new ( caP[MultPixel++] ) MRawPixel((uiPix), 0, ucA) ;
217}
218
219void MRawEvt::FillMontCarl ( UInt_t uiN, ULong_t ulT, Float_t *array ) {
220 //
221 // This is neccessary to fill the MRawEvt Class with randomized FADC
222 // values. The EventNumber, EventTime and the Number of Pixels are given
223 // as parameters.
224 //
225
226 EvtNo = uiN ;
227 fTimeStamp = ulT ;
228
229 MultPixel = 0 ;
230
231 UChar_t ucA[FADC_SLICES] ;
232
233 for (UShort_t i = 0 ; i< CAMERA_PIXELS; i++ ) {
234
235 if ( array[i] > 0. ) {
236 for ( Int_t ii = 0 ; ii < FADC_SLICES ; ii++ ) {
237 ucA[ii] = 0 ;
238 }
239 ucA[5] = (UShort_t) (array[i]) ;
240
241 TClonesArray &caP = *Pixels ;
242 new ( caP[MultPixel++] ) MRawPixel(i, 0, ucA) ;
243 }
244 }
245}
246
247UShort_t MRawEvt::GetMultPixel() {
248 //
249 // returns the pixel multiplicity of the Event
250 //
251 return MultPixel;
252}
253
254
255// void MRawEvt::AddPixel ( UShort_t usP ) {
256// //
257// // Implementation of the AddPixel function
258// //
259
260// cout << " need implementation " << endl ;
261// }
262
263// void MRawEvt::AddPixel ( UShort_t usP, UChar_t ucStat, UChar_t ausAR[] ) {
264// cout << " need implementation 2 " << endl ;
265// }
266
267
268
Note: See TracBrowser for help on using the repository browser.