TOF QA Task (F. Bellini)
[u/mrichter/AliRoot.git] / RAW / AliRawEquipment.cxx
1 // @(#) $Id$
2 // Author: Fons Rademakers  26/11/99
3
4 /**************************************************************************
5  * Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
6  *                                                                        *
7  * Author: The ALICE Off-line Project.                                    *
8  * Contributors are mentioned in the code where appropriate.              *
9  *                                                                        *
10  * Permission to use, copy, modify and distribute this software and its   *
11  * documentation strictly for non-commercial purposes is hereby granted   *
12  * without fee, provided that the above copyright notice appears in all   *
13  * copies and that both the copyright notice and this permission notice   *
14  * appear in the supporting documentation. The authors make no claims     *
15  * about the suitability of this software for any purpose. It is          *
16  * provided "as is" without express or implied warranty.                  *
17  **************************************************************************/
18
19 //////////////////////////////////////////////////////////////////////////
20 //                                                                      //
21 // AliRawEvent                                                          //
22 //                                                                      //
23 // Set of classes defining the ALICE RAW event format. The AliRawEvent  //
24 // class defines a RAW event. It consists of an AliEventHeader object   //
25 // an AliEquipmentHeader object, an AliRawData object and an array of   //
26 // sub-events, themselves also being AliRawEvents. The number of        //
27 // sub-events depends on the number of DATE LDC's.                      //
28 // The AliRawEvent objects are written to a ROOT file using different   //
29 // technologies, i.e. to local disk via AliRawDB or via rfiod using     //
30 // AliRawRFIODB or via rootd using AliRawRootdDB or to CASTOR via       //
31 // rootd using AliRawCastorDB (and for performance testing there is     //
32 // also AliRawNullDB).                                                  //
33 // The AliStats class provides statics information that is added as     //
34 // a single keyed object to each raw file.                              //
35 // The AliTagDB provides an interface to a TAG database.                //
36 // The AliMDC class is usid by the "alimdc" stand-alone program         //
37 // that reads data directly from DATE.                                  //
38 //                                                                      //
39 //////////////////////////////////////////////////////////////////////////
40
41 #include <AliRawDataArray.h>
42
43 #include "AliRawEquipmentHeader.h"
44 #include "AliRawData.h"
45
46 #include "AliRawEquipment.h"
47
48
49 ClassImp(AliRawEquipment)
50
51
52 //______________________________________________________________________________
53 AliRawEquipment::AliRawEquipment():
54 fEqpHdr(NULL),
55 fRawData(NULL),
56 fRawDataRef(NULL)
57 {
58    // Create ALICE equipment object.
59
60 }
61
62 //______________________________________________________________________________
63 AliRawEquipmentHeader *AliRawEquipment::GetEquipmentHeader()
64 {
65    // Get equipment header part of AliRawEquipment.
66
67    if (!fEqpHdr)
68       fEqpHdr = new AliRawEquipmentHeader;
69
70    return fEqpHdr;
71 }
72
73 //______________________________________________________________________________
74 AliRawData *AliRawEquipment::GetRawData()
75 {
76    // Get raw data part of AliRawEquipment.
77
78   if (!fRawData) {
79     if (!fRawDataRef.IsValid())
80       fRawData = new AliRawData;
81     else {
82       fRawData = (AliRawData*)fRawDataRef.GetObject();
83     }
84   }
85   return fRawData;
86 }
87
88 //______________________________________________________________________________
89 AliRawEquipment::~AliRawEquipment()
90 {
91    // Clean up event object. Delete also, possible, private raw data.
92
93    delete fEqpHdr;
94    delete fRawData;
95 }
96
97 //______________________________________________________________________________
98 void AliRawEquipment::CloneRawData(const AliRawData *rawData)
99 {
100   // Clone the input raw data and
101   // flush the TRef
102
103   fRawDataRef = NULL;
104   if (rawData) rawData = (AliRawData*)rawData->Clone();
105 }
106
107 //______________________________________________________________________________
108 void AliRawEquipment::Streamer(TBuffer &R__b)
109 {
110    // Stream an object of class AliRawEquipment.
111
112    UInt_t R__s, R__c;
113    if (R__b.IsReading()) {
114       Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
115       TObject::Streamer(R__b);
116       R__b >> fEqpHdr;
117       R__b >> fRawData;
118       fRawDataRef.Streamer(R__b);
119       R__b.CheckByteCount(R__s, R__c, AliRawEquipment::IsA());
120    } else {
121       R__c = R__b.WriteVersion(AliRawEquipment::IsA(), kTRUE);
122       TObject::Streamer(R__b);
123       R__b << fEqpHdr;
124       R__b << fRawData;
125       fRawDataRef.Streamer(R__b);
126       R__b.SetByteCount(R__c, kTRUE);
127    }
128 }