]>
Commit | Line | Data |
---|---|---|
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 | |
35 | ClassImp(AliHeader) | |
36 | ||
e2afb3b6 | 37 | //_______________________________________________________________________ |
38 | AliHeader::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 | //_______________________________________________________________________ |
56 | AliHeader::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 | //_______________________________________________________________________ |
76 | AliHeader::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 | //_______________________________________________________________________ |
94 | AliHeader::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 | 111 | AliHeader::~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 | 126 | void 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 | 141 | void 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 | //_______________________________________________________________________ |
157 | void 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 | 176 | AliStack* AliHeader::Stack() const |
9e1a0ddb | 177 | { |
178 | // Return pointer to stack | |
179 | return fStack; | |
180 | } | |
181 | ||
e2afb3b6 | 182 | //_______________________________________________________________________ |
bdbd0f7a | 183 | void AliHeader::SetStack(AliStack* stack) |
9e1a0ddb | 184 | { |
185 | // Set pointer to stack | |
186 | fStack = stack; | |
187 | } | |
188 | ||
e2afb3b6 | 189 | //_______________________________________________________________________ |
bdbd0f7a | 190 | void AliHeader::SetGenEventHeader(AliGenEventHeader* header) |
9e1a0ddb | 191 | { |
192 | // Set pointer to header for generated event | |
193 | fGenHeader = header; | |
194 | } | |
195 | ||
b961264c | 196 | void 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 | ||
226 | AliDetectorEventHeader* 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 | 240 | AliGenEventHeader* AliHeader::GenEventHeader() const |
9e1a0ddb | 241 | { |
242 | // Get pointer to header for generated event | |
243 | return fGenHeader; | |
fe4da5cc | 244 | } |
bdbd0f7a | 245 | |
e2afb3b6 | 246 | //_______________________________________________________________________ |
6c4904c2 | 247 | void AliHeader::Copy(TObject&) const |
e2afb3b6 | 248 | { |
594d8990 | 249 | AliFatal("Not implemented"); |
e2afb3b6 | 250 | } |
bdbd0f7a | 251 | |
252 | ||
253 |