]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliHeader.cxx
More inline functions available to the user (B.Hippolyte)
[u/mrichter/AliRoot.git] / STEER / AliHeader.cxx
CommitLineData
4c039060 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
acd84897 16/* $Id$ */
e2afb3b6 17
116cbefd 18//-----------------------------------------------------------------------
116cbefd 19// Simulation event header class
5d8718b8 20// Collaborates with AliRun, AliStack, and AliGenReaderTreeK classes
21// Many other classes depend on it
22// Author:
116cbefd 23//-----------------------------------------------------------------------
24
b961264c 25
fb17acd4 26#include <stdio.h>
b961264c 27#include <TObjArray.h>
4c039060 28
594d8990 29#include "AliLog.h"
fe4da5cc 30#include "AliHeader.h"
b961264c 31#include "AliDetectorEventHeader.h"
32#include "AliGenEventHeader.h"
33
fe4da5cc 34
35ClassImp(AliHeader)
36
e2afb3b6 37//_______________________________________________________________________
38AliHeader::AliHeader():
39 fRun(0),
40 fNvertex(0),
41 fNprimary(0),
42 fNtrack(0),
43 fEvent(0),
44 fEventNrInRun(0),
45 fStack(0),
b961264c 46 fGenHeader(0),
47 fDetHeaders(0)
fe4da5cc 48{
8918e700 49 //
50 // Default constructor
51 //
fe4da5cc 52}
53
e2afb3b6 54//_______________________________________________________________________
55AliHeader::AliHeader(const AliHeader& head):
56 TObject(head),
57 fRun(0),
58 fNvertex(0),
59 fNprimary(0),
60 fNtrack(0),
61 fEvent(0),
62 fEventNrInRun(0),
63 fStack(0),
b961264c 64 fGenHeader(0),
65 fDetHeaders(0)
fe4da5cc 66{
8918e700 67 //
e2afb3b6 68 // Copy constructor
8918e700 69 //
e2afb3b6 70 head.Copy(*this);
fe4da5cc 71}
72
e2afb3b6 73//_______________________________________________________________________
74AliHeader::AliHeader(Int_t run, Int_t event):
75 fRun(run),
76 fNvertex(0),
77 fNprimary(0),
78 fNtrack(0),
79 fEvent(event),
80 fEventNrInRun(0),
81 fStack(0),
b961264c 82 fGenHeader(0),
83 fDetHeaders(0)
eef4b160 84{
85 //
86 // Standard constructor
87 //
eef4b160 88}
89
e2afb3b6 90//_______________________________________________________________________
91AliHeader::AliHeader(Int_t run, Int_t event, Int_t evNumber):
92 fRun(run),
93 fNvertex(0),
94 fNprimary(0),
95 fNtrack(0),
96 fEvent(event),
97 fEventNrInRun(evNumber),
98 fStack(0),
b961264c 99 fGenHeader(0),
100 fDetHeaders(0)
e2afb3b6 101{
102 //
103 // Standard constructor
104 //
105}
eef4b160 106
b961264c 107AliHeader::~AliHeader()
108{
109 //
110 // Destructor
111 //
112 if (fDetHeaders) {
113 fDetHeaders->Delete();
114 delete fDetHeaders;
115 }
116 delete fGenHeader;
117}
118
119
120
e2afb3b6 121//_______________________________________________________________________
fe4da5cc 122void AliHeader::Reset(Int_t run, Int_t event)
123{
8918e700 124 //
125 // Resets the header with new run and event number
126 //
fe4da5cc 127 fRun=run;
128 fNvertex=0;
129 fNprimary=0;
130 fNtrack=0;
131 fEvent=event;
b961264c 132 if (fDetHeaders) fDetHeaders->Clear();
fe4da5cc 133}
134
e2afb3b6 135//_______________________________________________________________________
eef4b160 136void AliHeader::Reset(Int_t run, Int_t event, Int_t evNumber)
137{
138 //
139 // Resets the header with new run and event number
140 //
141 fRun=run;
142 fNvertex=0;
143 fNprimary=0;
144 fNtrack=0;
145 fEvent=event;
146 fEventNrInRun=evNumber;
b961264c 147 if (fDetHeaders) fDetHeaders->Clear();
eef4b160 148}
149
e2afb3b6 150//_______________________________________________________________________
151void AliHeader::Print(const char*) const
fe4da5cc 152{
8918e700 153 //
154 // Dumps header content
155 //
fe4da5cc 156 printf(
157"\n=========== Header for run %d Event %d = beginning ======================================\n",
158 fRun,fEvent);
159 printf(" Number of Vertex %d\n",fNvertex);
160 printf(" Number of Primary %d\n",fNprimary);
161 printf(" Number of Tracks %d\n",fNtrack);
162 printf(
163 "=========== Header for run %d Event %d = end ============================================\n\n",
164 fRun,fEvent);
9e1a0ddb 165
166}
167
e2afb3b6 168//_______________________________________________________________________
bdbd0f7a 169AliStack* AliHeader::Stack() const
9e1a0ddb 170{
171// Return pointer to stack
172 return fStack;
173}
174
e2afb3b6 175//_______________________________________________________________________
bdbd0f7a 176void AliHeader::SetStack(AliStack* stack)
9e1a0ddb 177{
178// Set pointer to stack
179 fStack = stack;
180}
181
e2afb3b6 182//_______________________________________________________________________
bdbd0f7a 183void AliHeader::SetGenEventHeader(AliGenEventHeader* header)
9e1a0ddb 184{
185// Set pointer to header for generated event
186 fGenHeader = header;
187}
188
b961264c 189void AliHeader::AddDetectorEventHeader(AliDetectorEventHeader* header)
190{
191// Add a detector specific header
192//
193// Create the array of headers
194 if (!fDetHeaders) fDetHeaders = new TObjArray(77);
195
196// Some basic checks
197
198 if (!header) {
199 Warning("AddDetectorEventHeader","Detector %s tries to add empty header \n", header->GetName());
200 return;
201 }
202
203 if (strlen(header->GetName()) == 0) {
204 Warning("AddDetectorEventHeader","Detector %s tries to add header without name \n", header->GetName());
205 return;
206 }
207
208 TObject *mod=fDetHeaders->FindObject(header->GetName());
209 if(mod) {
210 Warning("AddDetectorEventHeader","Detector %s tries to add more than one header \n", header->GetName());
211 return;
212 }
213
214
215// Add the header to the list
216 fDetHeaders->Add(header);
217}
218
219AliDetectorEventHeader* AliHeader::GetDetectorEventHeader(const char *name) const
220{
221//
222// Returns detector specific event header
223//
224 if (!fDetHeaders) {
225 Warning("GetDetectorEventHeader","There are no detector specific headers for this event");
226 return 0x0;
227 }
228 return dynamic_cast<AliDetectorEventHeader*>(fDetHeaders->FindObject(name)) ;
229}
230
231
e2afb3b6 232//_______________________________________________________________________
5d34b719 233AliGenEventHeader* AliHeader::GenEventHeader() const
9e1a0ddb 234{
235// Get pointer to header for generated event
236 return fGenHeader;
fe4da5cc 237}
bdbd0f7a 238
e2afb3b6 239//_______________________________________________________________________
6c4904c2 240void AliHeader::Copy(TObject&) const
e2afb3b6 241{
594d8990 242 AliFatal("Not implemented");
e2afb3b6 243}
bdbd0f7a 244
245
246