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 //-----------------------------------------------------------------------
19 // Simulation event header class
20 // Collaborates with AliRun, AliStack, and AliGenReaderTreeK classes
21 // Many other classes depend on it
23 //-----------------------------------------------------------------------
27 #include <TObjArray.h>
30 #include "AliHeader.h"
31 #include "AliDetectorEventHeader.h"
32 #include "AliGenEventHeader.h"
37 //_______________________________________________________________________
38 AliHeader::AliHeader():
51 // Default constructor
55 //_______________________________________________________________________
56 AliHeader::AliHeader(const AliHeader& head):
75 //_______________________________________________________________________
76 AliHeader::AliHeader(Int_t run, Int_t event):
89 // Standard constructor
93 //_______________________________________________________________________
94 AliHeader::AliHeader(Int_t run, Int_t event, Int_t evNumber):
100 fEventNrInRun(evNumber),
107 // Standard constructor
111 AliHeader::~AliHeader()
117 fDetHeaders->Delete();
125 //_______________________________________________________________________
126 void AliHeader::Reset(Int_t run, Int_t event)
129 // Resets the header with new run and event number
137 if (fDetHeaders) fDetHeaders->Delete();
140 //_______________________________________________________________________
141 void AliHeader::Reset(Int_t run, Int_t event, Int_t evNumber)
144 // Resets the header with new run and event number
151 fEventNrInRun=evNumber;
153 if (fDetHeaders) fDetHeaders->Clear();
156 //_______________________________________________________________________
157 void AliHeader::Print(const char*) const
160 // Dumps header content
163 "\n=========== Header for run %d Event %d = beginning ======================================\n",
165 printf(" Number of Vertex %d\n",fNvertex);
166 printf(" Number of Primary %d\n",fNprimary);
167 printf(" Number of Tracks %d\n",fNtrack);
168 printf(" Time-stamp %ld\n",fTimeStamp);
170 "=========== Header for run %d Event %d = end ============================================\n\n",
175 //_______________________________________________________________________
176 AliStack* AliHeader::Stack() const
178 // Return pointer to stack
182 //_______________________________________________________________________
183 void AliHeader::SetStack(AliStack* stack)
185 // Set pointer to stack
189 //_______________________________________________________________________
190 void AliHeader::SetGenEventHeader(AliGenEventHeader* header)
192 // Set pointer to header for generated event
196 void AliHeader::AddDetectorEventHeader(AliDetectorEventHeader* header)
198 // Add a detector specific header
200 // Create the array of headers
201 if (!fDetHeaders) fDetHeaders = new TObjArray(77);
206 Warning("AddDetectorEventHeader","Detector tries to add empty header \n");
210 if (strlen(header->GetName()) == 0) {
211 Warning("AddDetectorEventHeader","Detector tries to add header without name \n");
215 TObject *mod=fDetHeaders->FindObject(header->GetName());
217 Warning("AddDetectorEventHeader","Detector %s tries to add more than one header \n", header->GetName());
222 // Add the header to the list
223 fDetHeaders->Add(header);
226 AliDetectorEventHeader* AliHeader::GetDetectorEventHeader(const char *name) const
229 // Returns detector specific event header
232 Warning("GetDetectorEventHeader","There are no detector specific headers for this event");
235 return dynamic_cast<AliDetectorEventHeader*>(fDetHeaders->FindObject(name)) ;
239 //_______________________________________________________________________
240 AliGenEventHeader* AliHeader::GenEventHeader() const
242 // Get pointer to header for generated event
246 //_______________________________________________________________________
247 void AliHeader::Copy(TObject&) const
249 AliFatal("Not implemented");