Always delete TObjArrays created by TString::Tokenize (Ruben)
[u/mrichter/AliRoot.git] / RAW / AliRawEquipmentV2.cxx
CommitLineData
33314186 1// @(#) $Id: AliRawEquipment.cxx 23318 2008-01-14 12:43:28Z hristov $
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// AliRawEquipmentV2 //
22// //
23// Set of classes defining the ALICE RAW event format. The AliRawEventV2//
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 AliRawEventV2s. The number of //
27// sub-events depends on the number of DATE LDC's. //
28// The AliRawEventV2 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 "AliRawEquipmentV2.h"
42#include "AliRawDataArrayV2.h"
43#include "AliRawData.h"
44
45ClassImp(AliRawEquipmentV2)
46
47//______________________________________________________________________________
48AliRawEquipmentV2::AliRawEquipmentV2():
49AliRawVEquipment(),
50fEqpHdr(),
51fRawData(NULL),
52fRawDataRef(NULL)
53{
54 // Create ALICE equipment object.
55
56}
57
58//______________________________________________________________________________
59AliRawEquipmentHeader *AliRawEquipmentV2::GetEquipmentHeader()
60{
61 // Get equipment header part of AliRawEquipmentV2.
62
63 return &fEqpHdr;
64}
65
66//______________________________________________________________________________
67AliRawData *AliRawEquipmentV2::GetRawData()
68{
69 // Get raw data part of AliRawEquipmentV2.
70
71 if (!fRawData) {
72 if (fRawDataRef.IsValid()) {
73 fRawData = (AliRawData*)fRawDataRef.GetObject();
74 }
75 }
76 return fRawData;
77}
78
79//______________________________________________________________________________
80void AliRawEquipmentV2::Reset()
81{
82 // Reset the equipment in case it needs to be re-used (avoiding costly
83 // new/delete cycle). We reset the size marker for the AliRawData
84 // object.
85
86 fEqpHdr.Reset();
87 fRawDataRef = NULL;
88}
89
90//______________________________________________________________________________
51c3974f 91void AliRawEquipmentV2::Clear(Option_t*)
92{
93 // Clear the equipment in case it needs to be re-used (avoiding costly
94 // new/delete cycle). Called by AliRawEventV2 Clear method inside the event loop.
95
96 fEqpHdr.Reset();
97 fRawDataRef = NULL;
98 fRawData = NULL;
99}
100
101//______________________________________________________________________________
33314186 102AliRawEquipmentV2::~AliRawEquipmentV2()
103{
104 // Clean up event object. Delete also, possible, private raw data.
105
106 if (!fRawDataRef.IsValid()) delete fRawData;
107}
108
109//______________________________________________________________________________
110AliRawData *AliRawEquipmentV2::NextRawData(AliRawDataArrayV2 *array)
111{
112 // Get a pointer to the raw-data object
113 // stored within an array in a separate
114 // branch of the tree.
115 // Set the reference to the raw-data object
116
117 AliRawData *raw = NULL;
118 if (array) {
119 raw = array->Add();
120 fRawDataRef = raw;
121 }
122 else {
123 Error("NextRawData", "Raw-data array does not exist! Can not set a reference to a raw-data object!");
124 fRawDataRef = NULL;
125 }
126
127 return raw;
128}
aeaaf1d0 129
130//______________________________________________________________________________
243e7b72 131void AliRawEquipmentV2::CloneRawData(const AliRawData *rawData)
aeaaf1d0 132{
243e7b72 133 // Clone the input raw data and
134 // flush the TRef
aeaaf1d0 135
aeaaf1d0 136 fRawDataRef = NULL;
243e7b72 137 if (rawData) fRawData = (AliRawData*)rawData->Clone();
aeaaf1d0 138}