1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 Revision 1.1 2007/09/17 10:23:31 cvetan
19 New TPC monitoring package from Stefan Kniege. The monitoring package can be started by running TPCMonitor.C macro located in macros folder.
23 #include "AliTPCMonitorDateFormat.h"
26 ClassImp(AliTPCMonitorDateFormat)
27 //____________________________________________________________________________
28 AliTPCMonitorDateFormat::AliTPCMonitorDateFormat(Char_t* data){
33 event = (struct eventHeaderStruct*) fdataPtr;
36 //____________________________________________________________________________
37 AliTPCMonitorDateFormat::~AliTPCMonitorDateFormat()
42 //____________________________________________________________________________
43 Int_t AliTPCMonitorDateFormat::GetEventSize()
46 return (Int_t)event->eventSize;
49 //____________________________________________________________________________
50 Int_t AliTPCMonitorDateFormat::GetEventHeaderSize()
52 // Return event header size
53 return (Int_t)event->eventHeadSize;
56 //____________________________________________________________________________
57 Int_t AliTPCMonitorDateFormat::GetEventHeaderBaseSize()
59 // Return event header base size
60 return (Int_t)EVENT_HEAD_BASE_SIZE;
63 //____________________________________________________________________________
64 Int_t AliTPCMonitorDateFormat::GetEventID()
67 return (Int_t)EVENT_ID_GET_NB_IN_RUN(event->eventId);
70 //____________________________________________________________________________
71 Int_t AliTPCMonitorDateFormat::GetEventLDC()
74 return (Int_t)event->eventLdcId;
77 //____________________________________________________________________________
78 Int_t AliTPCMonitorDateFormat::GetEventGDC()
81 return (Int_t)event->eventGdcId;
84 //____________________________________________________________________________
85 Int_t AliTPCMonitorDateFormat::GetEventRunID()
88 return (Int_t)event->eventRunNb;
91 //____________________________________________________________________________
92 Int_t AliTPCMonitorDateFormat::GetEventVersion()
94 // Return event version
95 return (Int_t)event->eventVersion;
98 //____________________________________________________________________________
99 Int_t AliTPCMonitorDateFormat::GetEventVersionMajor()
101 // retrun event version (16-32 bit)
102 return (Int_t)(GetEventVersion()>>16);
105 //____________________________________________________________________________
106 Int_t AliTPCMonitorDateFormat::GetEventVersionMinor()
108 // return event version (0-15 bit)
109 return (Int_t)(GetEventVersion()&0x0000ffff);
112 //____________________________________________________________________________
113 Bool_t AliTPCMonitorDateFormat::IsEventSuperEvent()
115 // Check if event ist super event
117 if(TEST_SYSTEM_ATTRIBUTE( event->eventTypeAttribute, ATTR_SUPER_EVENT ) == 1)
124 //____________________________________________________________________________
125 Bool_t AliTPCMonitorDateFormat::IsEventStartOfRun()
127 // Check if event ist Start of Run
129 if(event->eventType == START_OF_RUN)
136 //____________________________________________________________________________
137 Bool_t AliTPCMonitorDateFormat::IsEventEndOfRun()
139 // Check if event is End of Run
141 if(event->eventType == END_OF_RUN)
148 //____________________________________________________________________________
149 Bool_t AliTPCMonitorDateFormat::IsEventPhysicsEvent()
151 // Check if event is Physics event
153 if(event->eventType == PHYSICS_EVENT)
160 //____________________________________________________________________________
161 Bool_t AliTPCMonitorDateFormat::IsEventSwapped()
163 // Check if event is swapped
165 if(TEST_SYSTEM_ATTRIBUTE( event->eventTypeAttribute, ATTR_EVENT_SWAPPED ) == 1)
172 //____________________________________________________________________________
173 Bool_t AliTPCMonitorDateFormat::IsEventWrongEndian()
177 if(EVENT_MAGIC_NUMBER == event->eventMagic)
185 //____________________________________________________________________________
186 void AliTPCMonitorDateFormat::GotoSubEventHeader()
188 // Set subevent Pointer to sub event
189 if(IsEventSuperEvent() ==true){
190 fsubEventPtr = fdataPtr+GetEventHeaderSize();
191 subEvent = (struct eventHeaderStruct*) (fsubEventPtr);
193 fsubEventPtr = fdataPtr;
194 subEvent = (struct eventHeaderStruct*) (fsubEventPtr);
198 //____________________________________________________________________________
199 void AliTPCMonitorDateFormat::GotoNextSubEventHeader()
201 // set subevent pointer to next sub event
202 fsubEventPtr += GetSubEventSize();
203 subEvent = (struct eventHeaderStruct*) (fsubEventPtr);
206 //____________________________________________________________________________
207 Bool_t AliTPCMonitorDateFormat::IsLastSubEventHeader()
209 // Check if sub event is last sub event
212 if(IsEventSuperEvent() ==true){
213 position = fsubEventPtr - fdataPtr;
214 if( (position+GetSubEventSize()) < GetEventSize() )
219 position = fsubEventPtr - fdataPtr;
220 if( (position+GetSubEventSize()) < GetEventSize() )
228 //____________________________________________________________________________
229 Int_t AliTPCMonitorDateFormat::GetSubEventSize()
231 // Return sub event size
232 return (Int_t)subEvent->eventSize;
235 //____________________________________________________________________________
236 Int_t AliTPCMonitorDateFormat::GetSubEventHeaderSize()
238 // Return sub event header size
239 return (Int_t)subEvent->eventHeadSize;
242 //____________________________________________________________________________
243 Int_t AliTPCMonitorDateFormat::GetSubEventLDC()
245 // Return sub event LDC
246 return (Int_t)subEvent->eventLdcId;
249 //____________________________________________________________________________
250 Int_t AliTPCMonitorDateFormat::GetSubEventGDC()
252 // return sub event GDC
253 return (Int_t)subEvent->eventGdcId;
257 //____________________________________________________________________________
258 Bool_t AliTPCMonitorDateFormat::IsSubEventSuperEvent()
260 // Check if sub event is super event
262 if(TEST_SYSTEM_ATTRIBUTE( subEvent->eventTypeAttribute, ATTR_SUPER_EVENT ) == 1)
269 //____________________________________________________________________________
270 Bool_t AliTPCMonitorDateFormat::IsSubEventStartOfRun()
272 // Check if sub event is start of run
274 if(subEvent->eventType == START_OF_RUN)
281 //____________________________________________________________________________
282 Bool_t AliTPCMonitorDateFormat::IsSubEventEndOfRun()
284 // Check if sub event is end of run
286 if(subEvent->eventType == END_OF_RUN)
293 //____________________________________________________________________________
294 Bool_t AliTPCMonitorDateFormat::IsSubEventPhysicsEvent()
296 // Check if sub event is physics event
298 if(subEvent->eventType == PHYSICS_EVENT)
305 //____________________________________________________________________________
306 void AliTPCMonitorDateFormat::GotoFirstEquipment()
308 // Set current pointer to first equipment
309 fcurrentPtr = fsubEventPtr + GetSubEventHeaderSize();
310 equipment = (struct equipmentHeaderStruct*) (fcurrentPtr);
313 //____________________________________________________________________________
314 void AliTPCMonitorDateFormat::GotoNextEquipment()
316 // Set current pointer to next equipment
317 fcurrentPtr += GetEquipmentSize();
318 equipment = (struct equipmentHeaderStruct*) (fcurrentPtr);
321 //____________________________________________________________________________
322 Bool_t AliTPCMonitorDateFormat::IsLastEquipment()
324 // Check if equipment is last equipment
327 position = fcurrentPtr - fsubEventPtr;
328 if( (position+GetEquipmentSize()) < GetSubEventSize() )
335 //____________________________________________________________________________
336 Int_t AliTPCMonitorDateFormat::GetEquipmentSize()
338 // Return equipment size
339 return (Int_t)equipment->equipmentSize;
342 //____________________________________________________________________________
343 Int_t AliTPCMonitorDateFormat::GetPayloadSize()
345 // Return payload slze
347 if(GetEventVersion() < 196610){
348 retval = (Int_t)equipment->equipmentSize;
350 retval = (Int_t)equipment->equipmentSize - GetEquipmentHeaderSize();
355 //____________________________________________________________________________
356 Int_t AliTPCMonitorDateFormat::GetEquipmentType()
358 // Return equipment type
359 return (Int_t)equipment->equipmentType;
362 //____________________________________________________________________________
363 Int_t AliTPCMonitorDateFormat::GetEquipmentID()
365 // Return equipment ID
366 return (Int_t)equipment->equipmentId;
369 //____________________________________________________________________________
370 Int_t* AliTPCMonitorDateFormat::GetEquipmentTypeAttribute()
372 // Return equipment type attribute
373 return (Int_t*)equipment->equipmentTypeAttribute;
376 //____________________________________________________________________________
377 Int_t AliTPCMonitorDateFormat::GetEquipmentBasicSize()
379 // Return equipment basic size
380 return (Int_t)equipment->equipmentBasicElementSize;
383 //____________________________________________________________________________
384 Int_t AliTPCMonitorDateFormat::GetEquipmentHeaderSize()
386 // Return equipment header size
387 return sizeof(struct equipmentHeaderStruct);
391 //____________________________________________________________________________
392 Char_t *AliTPCMonitorDateFormat::GetFirstDataPointer()
394 // Return data pointer (after equipment header)
396 if(GetEventVersion() < 196610){
397 fcurrentPtr += GetEquipmentHeaderSize();
398 datapointer = fcurrentPtr;
400 datapointer = fcurrentPtr + GetEquipmentHeaderSize();
406 //____________________________________________________________________________
407 Int_t AliTPCMonitorDateFormat::GetPosition()
409 // Return current position relative to start of event
410 Int_t retval = (Int_t) (fcurrentPtr - fdataPtr);
414 //____________________________________________________________________________
415 Int_t AliTPCMonitorDateFormat::GetPositionSubEvent()
417 // Return subevent position relative to start of event
418 Int_t retval = (Int_t) (fsubEventPtr - fdataPtr);