ROOT logo
// @(#) $Id$
// Author: Fons Rademakers  26/11/99

/**************************************************************************
 * Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// AliRawEvent                                                          //
//                                                                      //
// Set of classes defining the ALICE RAW event format. The AliRawEvent  //
// class defines a RAW event. It consists of an AliEventHeader object   //
// an AliEquipmentHeader object, an AliRawData object and an array of   //
// sub-events, themselves also being AliRawEvents. The number of        //
// sub-events depends on the number of DATE LDC's.                      //
// The AliRawEvent objects are written to a ROOT file using different   //
// technologies, i.e. to local disk via AliRawDB or via rfiod using     //
// AliRawRFIODB or via rootd using AliRawRootdDB or to CASTOR via       //
// rootd using AliRawCastorDB (and for performance testing there is     //
// also AliRawNullDB).                                                  //
// The AliStats class provides statics information that is added as     //
// a single keyed object to each raw file.                              //
// The AliTagDB provides an interface to a TAG database.                //
// The AliMDC class is usid by the "alimdc" stand-alone program         //
// that reads data directly from DATE.                                  //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include <TObjArray.h>

#include "AliLog.h"

#include "AliRawEventHeaderBase.h"
#include "AliRawEquipment.h"

#include "AliRawEvent.h"


ClassImp(AliRawEvent)


//______________________________________________________________________________
AliRawEvent::AliRawEvent():
fNEquipments(0),
fNSubEvents(0),
fEvtHdr(NULL),
fEquipments(NULL),
fSubEvents(NULL)
{
   // Create ALICE event object. If ownData is kFALSE we will use a static
   // raw data object, otherwise a private copy will be made.

}

//______________________________________________________________________________
AliRawEventHeaderBase *AliRawEvent::GetHeader()
{
  if (!fEvtHdr) {
    AliFatal("Event header does not exist!");
    return 0x0;
  }

  return fEvtHdr;
}

//______________________________________________________________________________
AliRawVEquipment *AliRawEvent::GetEquipment(Int_t index) const
{
   // Get specified equipment. Returns 0 if equipment does not exist.

   if (!fEquipments)
      return 0;

   return (AliRawEquipment *) fEquipments->At(index);
}

//______________________________________________________________________________
AliRawVEvent *AliRawEvent::GetSubEvent(Int_t index)
{
   // Get specified sub event. Returns 0 if sub event does not exist.

   if (!fSubEvents)
      return 0;

   return (AliRawEvent *) fSubEvents->At(index);
}

//______________________________________________________________________________
AliRawEvent::~AliRawEvent()
{
   // Clean up event object. Delete also, possible, private raw data.

   delete fEvtHdr;
   if (fEquipments)
      fEquipments->Delete();
   delete fEquipments;
   if (fSubEvents)
      fSubEvents->Delete();
   delete fSubEvents;
}

//______________________________________________________________________________
void AliRawEvent::Streamer(TBuffer &R__b)
{
   // Stream an object of class AliRawEvent.

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
      TObject::Streamer(R__b);
      R__b >> fNEquipments;
      R__b >> fNSubEvents;
      R__b >> fEvtHdr;
      R__b >> fEquipments;
      R__b >> fSubEvents;
      R__b.CheckByteCount(R__s, R__c, AliRawEvent::IsA());
   } else {
      R__c = R__b.WriteVersion(AliRawEvent::IsA(), kTRUE);
      TObject::Streamer(R__b);
      R__b << fNEquipments;
      R__b << fNSubEvents;
      R__b << fEvtHdr;
      R__b << fEquipments;
      R__b << fSubEvents;
      R__b.SetByteCount(R__c, kTRUE);
   }
}
 AliRawEvent.cxx:1
 AliRawEvent.cxx:2
 AliRawEvent.cxx:3
 AliRawEvent.cxx:4
 AliRawEvent.cxx:5
 AliRawEvent.cxx:6
 AliRawEvent.cxx:7
 AliRawEvent.cxx:8
 AliRawEvent.cxx:9
 AliRawEvent.cxx:10
 AliRawEvent.cxx:11
 AliRawEvent.cxx:12
 AliRawEvent.cxx:13
 AliRawEvent.cxx:14
 AliRawEvent.cxx:15
 AliRawEvent.cxx:16
 AliRawEvent.cxx:17
 AliRawEvent.cxx:18
 AliRawEvent.cxx:19
 AliRawEvent.cxx:20
 AliRawEvent.cxx:21
 AliRawEvent.cxx:22
 AliRawEvent.cxx:23
 AliRawEvent.cxx:24
 AliRawEvent.cxx:25
 AliRawEvent.cxx:26
 AliRawEvent.cxx:27
 AliRawEvent.cxx:28
 AliRawEvent.cxx:29
 AliRawEvent.cxx:30
 AliRawEvent.cxx:31
 AliRawEvent.cxx:32
 AliRawEvent.cxx:33
 AliRawEvent.cxx:34
 AliRawEvent.cxx:35
 AliRawEvent.cxx:36
 AliRawEvent.cxx:37
 AliRawEvent.cxx:38
 AliRawEvent.cxx:39
 AliRawEvent.cxx:40
 AliRawEvent.cxx:41
 AliRawEvent.cxx:42
 AliRawEvent.cxx:43
 AliRawEvent.cxx:44
 AliRawEvent.cxx:45
 AliRawEvent.cxx:46
 AliRawEvent.cxx:47
 AliRawEvent.cxx:48
 AliRawEvent.cxx:49
 AliRawEvent.cxx:50
 AliRawEvent.cxx:51
 AliRawEvent.cxx:52
 AliRawEvent.cxx:53
 AliRawEvent.cxx:54
 AliRawEvent.cxx:55
 AliRawEvent.cxx:56
 AliRawEvent.cxx:57
 AliRawEvent.cxx:58
 AliRawEvent.cxx:59
 AliRawEvent.cxx:60
 AliRawEvent.cxx:61
 AliRawEvent.cxx:62
 AliRawEvent.cxx:63
 AliRawEvent.cxx:64
 AliRawEvent.cxx:65
 AliRawEvent.cxx:66
 AliRawEvent.cxx:67
 AliRawEvent.cxx:68
 AliRawEvent.cxx:69
 AliRawEvent.cxx:70
 AliRawEvent.cxx:71
 AliRawEvent.cxx:72
 AliRawEvent.cxx:73
 AliRawEvent.cxx:74
 AliRawEvent.cxx:75
 AliRawEvent.cxx:76
 AliRawEvent.cxx:77
 AliRawEvent.cxx:78
 AliRawEvent.cxx:79
 AliRawEvent.cxx:80
 AliRawEvent.cxx:81
 AliRawEvent.cxx:82
 AliRawEvent.cxx:83
 AliRawEvent.cxx:84
 AliRawEvent.cxx:85
 AliRawEvent.cxx:86
 AliRawEvent.cxx:87
 AliRawEvent.cxx:88
 AliRawEvent.cxx:89
 AliRawEvent.cxx:90
 AliRawEvent.cxx:91
 AliRawEvent.cxx:92
 AliRawEvent.cxx:93
 AliRawEvent.cxx:94
 AliRawEvent.cxx:95
 AliRawEvent.cxx:96
 AliRawEvent.cxx:97
 AliRawEvent.cxx:98
 AliRawEvent.cxx:99
 AliRawEvent.cxx:100
 AliRawEvent.cxx:101
 AliRawEvent.cxx:102
 AliRawEvent.cxx:103
 AliRawEvent.cxx:104
 AliRawEvent.cxx:105
 AliRawEvent.cxx:106
 AliRawEvent.cxx:107
 AliRawEvent.cxx:108
 AliRawEvent.cxx:109
 AliRawEvent.cxx:110
 AliRawEvent.cxx:111
 AliRawEvent.cxx:112
 AliRawEvent.cxx:113
 AliRawEvent.cxx:114
 AliRawEvent.cxx:115
 AliRawEvent.cxx:116
 AliRawEvent.cxx:117
 AliRawEvent.cxx:118
 AliRawEvent.cxx:119
 AliRawEvent.cxx:120
 AliRawEvent.cxx:121
 AliRawEvent.cxx:122
 AliRawEvent.cxx:123
 AliRawEvent.cxx:124
 AliRawEvent.cxx:125
 AliRawEvent.cxx:126
 AliRawEvent.cxx:127
 AliRawEvent.cxx:128
 AliRawEvent.cxx:129
 AliRawEvent.cxx:130
 AliRawEvent.cxx:131
 AliRawEvent.cxx:132
 AliRawEvent.cxx:133
 AliRawEvent.cxx:134
 AliRawEvent.cxx:135
 AliRawEvent.cxx:136
 AliRawEvent.cxx:137
 AliRawEvent.cxx:138
 AliRawEvent.cxx:139