]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/STEERBase/AliHeader.cxx
- introduction of gain scenarios (e.g. OROC only - for homogeneous gain in 11h)
[u/mrichter/AliRoot.git] / STEER / STEERBase / 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():
3d45e923 39 fRun(-1),
e2afb3b6 40 fNvertex(0),
41 fNprimary(0),
42 fNtrack(0),
43 fEvent(0),
44 fEventNrInRun(0),
475baf89 45 fTimeStamp(0),
e2afb3b6 46 fStack(0),
b961264c 47 fGenHeader(0),
48 fDetHeaders(0)
fe4da5cc 49{
8918e700 50 //
51 // Default constructor
52 //
70e47aff 53 }
fe4da5cc 54
e2afb3b6 55//_______________________________________________________________________
56AliHeader::AliHeader(const AliHeader& head):
57 TObject(head),
3d45e923 58 fRun(-1),
e2afb3b6 59 fNvertex(0),
60 fNprimary(0),
61 fNtrack(0),
62 fEvent(0),
63 fEventNrInRun(0),
475baf89 64 fTimeStamp(0),
e2afb3b6 65 fStack(0),
b961264c 66 fGenHeader(0),
67 fDetHeaders(0)
fe4da5cc 68{
8918e700 69 //
e2afb3b6 70 // Copy constructor
8918e700 71 //
e2afb3b6 72 head.Copy(*this);
fe4da5cc 73}
74
e2afb3b6 75//_______________________________________________________________________
76AliHeader::AliHeader(Int_t run, Int_t event):
77 fRun(run),
78 fNvertex(0),
79 fNprimary(0),
80 fNtrack(0),
81 fEvent(event),
82 fEventNrInRun(0),
475baf89 83 fTimeStamp(0),
e2afb3b6 84 fStack(0),
b961264c 85 fGenHeader(0),
86 fDetHeaders(0)
eef4b160 87{
88 //
89 // Standard constructor
90 //
eef4b160 91}
92
e2afb3b6 93//_______________________________________________________________________
94AliHeader::AliHeader(Int_t run, Int_t event, Int_t evNumber):
95 fRun(run),
96 fNvertex(0),
97 fNprimary(0),
98 fNtrack(0),
99 fEvent(event),
100 fEventNrInRun(evNumber),
475baf89 101 fTimeStamp(0),
e2afb3b6 102 fStack(0),
b961264c 103 fGenHeader(0),
104 fDetHeaders(0)
e2afb3b6 105{
106 //
107 // Standard constructor
108 //
109}
eef4b160 110
b961264c 111AliHeader::~AliHeader()
112{
113 //
114 // Destructor
115 //
116 if (fDetHeaders) {
117 fDetHeaders->Delete();
118 delete fDetHeaders;
119 }
120 delete fGenHeader;
121}
122
123
124
e2afb3b6 125//_______________________________________________________________________
fe4da5cc 126void AliHeader::Reset(Int_t run, Int_t event)
127{
8918e700 128 //
129 // Resets the header with new run and event number
130 //
fe4da5cc 131 fRun=run;
132 fNvertex=0;
133 fNprimary=0;
134 fNtrack=0;
135 fEvent=event;
475baf89 136 fTimeStamp=0;
816276f1 137 if (fDetHeaders) fDetHeaders->Delete();
fe4da5cc 138}
139
e2afb3b6 140//_______________________________________________________________________
eef4b160 141void AliHeader::Reset(Int_t run, Int_t event, Int_t evNumber)
142{
143 //
144 // Resets the header with new run and event number
145 //
146 fRun=run;
147 fNvertex=0;
148 fNprimary=0;
149 fNtrack=0;
150 fEvent=event;
151 fEventNrInRun=evNumber;
475baf89 152 fTimeStamp=0;
b961264c 153 if (fDetHeaders) fDetHeaders->Clear();
eef4b160 154}
155
e2afb3b6 156//_______________________________________________________________________
157void AliHeader::Print(const char*) const
fe4da5cc 158{
8918e700 159 //
160 // Dumps header content
161 //
fe4da5cc 162 printf(
163"\n=========== Header for run %d Event %d = beginning ======================================\n",
164 fRun,fEvent);
165 printf(" Number of Vertex %d\n",fNvertex);
166 printf(" Number of Primary %d\n",fNprimary);
167 printf(" Number of Tracks %d\n",fNtrack);
475baf89 168 printf(" Time-stamp %ld\n",fTimeStamp);
fe4da5cc 169 printf(
170 "=========== Header for run %d Event %d = end ============================================\n\n",
171 fRun,fEvent);
9e1a0ddb 172
173}
174
e2afb3b6 175//_______________________________________________________________________
bdbd0f7a 176AliStack* AliHeader::Stack() const
9e1a0ddb 177{
178// Return pointer to stack
179 return fStack;
180}
181
e2afb3b6 182//_______________________________________________________________________
bdbd0f7a 183void AliHeader::SetStack(AliStack* stack)
9e1a0ddb 184{
185// Set pointer to stack
186 fStack = stack;
187}
188
e2afb3b6 189//_______________________________________________________________________
bdbd0f7a 190void AliHeader::SetGenEventHeader(AliGenEventHeader* header)
9e1a0ddb 191{
192// Set pointer to header for generated event
193 fGenHeader = header;
194}
195
b961264c 196void AliHeader::AddDetectorEventHeader(AliDetectorEventHeader* header)
197{
198// Add a detector specific header
199//
200// Create the array of headers
201 if (!fDetHeaders) fDetHeaders = new TObjArray(77);
202
203// Some basic checks
204
205 if (!header) {
ee4be139 206 Warning("AddDetectorEventHeader","Detector tries to add empty header \n");
b961264c 207 return;
208 }
209
210 if (strlen(header->GetName()) == 0) {
ee4be139 211 Warning("AddDetectorEventHeader","Detector tries to add header without name \n");
b961264c 212 return;
213 }
214
215 TObject *mod=fDetHeaders->FindObject(header->GetName());
216 if(mod) {
217 Warning("AddDetectorEventHeader","Detector %s tries to add more than one header \n", header->GetName());
218 return;
219 }
220
221
222// Add the header to the list
223 fDetHeaders->Add(header);
224}
225
226AliDetectorEventHeader* AliHeader::GetDetectorEventHeader(const char *name) const
227{
228//
229// Returns detector specific event header
230//
231 if (!fDetHeaders) {
232 Warning("GetDetectorEventHeader","There are no detector specific headers for this event");
233 return 0x0;
234 }
235 return dynamic_cast<AliDetectorEventHeader*>(fDetHeaders->FindObject(name)) ;
236}
237
238
e2afb3b6 239//_______________________________________________________________________
5d34b719 240AliGenEventHeader* AliHeader::GenEventHeader() const
9e1a0ddb 241{
242// Get pointer to header for generated event
243 return fGenHeader;
fe4da5cc 244}
bdbd0f7a 245
e2afb3b6 246//_______________________________________________________________________
6c4904c2 247void AliHeader::Copy(TObject&) const
e2afb3b6 248{
594d8990 249 AliFatal("Not implemented");
e2afb3b6 250}
bdbd0f7a 251
252
253