]>
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), | |
45 | fStack(0), | |
b961264c | 46 | fGenHeader(0), |
47 | fDetHeaders(0) | |
fe4da5cc | 48 | { |
8918e700 | 49 | // |
50 | // Default constructor | |
51 | // | |
fe4da5cc | 52 | } |
53 | ||
e2afb3b6 | 54 | //_______________________________________________________________________ |
55 | AliHeader::AliHeader(const AliHeader& head): | |
56 | TObject(head), | |
3d45e923 | 57 | fRun(-1), |
e2afb3b6 | 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 | //_______________________________________________________________________ |
74 | AliHeader::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 | //_______________________________________________________________________ |
91 | AliHeader::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 | 107 | AliHeader::~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 | 122 | void 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; | |
816276f1 | 132 | if (fDetHeaders) fDetHeaders->Delete(); |
fe4da5cc | 133 | } |
134 | ||
e2afb3b6 | 135 | //_______________________________________________________________________ |
eef4b160 | 136 | void 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 | //_______________________________________________________________________ |
151 | void 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 | 169 | AliStack* AliHeader::Stack() const |
9e1a0ddb | 170 | { |
171 | // Return pointer to stack | |
172 | return fStack; | |
173 | } | |
174 | ||
e2afb3b6 | 175 | //_______________________________________________________________________ |
bdbd0f7a | 176 | void AliHeader::SetStack(AliStack* stack) |
9e1a0ddb | 177 | { |
178 | // Set pointer to stack | |
179 | fStack = stack; | |
180 | } | |
181 | ||
e2afb3b6 | 182 | //_______________________________________________________________________ |
bdbd0f7a | 183 | void AliHeader::SetGenEventHeader(AliGenEventHeader* header) |
9e1a0ddb | 184 | { |
185 | // Set pointer to header for generated event | |
186 | fGenHeader = header; | |
187 | } | |
188 | ||
b961264c | 189 | void 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 | ||
219 | AliDetectorEventHeader* 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 | 233 | AliGenEventHeader* AliHeader::GenEventHeader() const |
9e1a0ddb | 234 | { |
235 | // Get pointer to header for generated event | |
236 | return fGenHeader; | |
fe4da5cc | 237 | } |
bdbd0f7a | 238 | |
e2afb3b6 | 239 | //_______________________________________________________________________ |
6c4904c2 | 240 | void AliHeader::Copy(TObject&) const |
e2afb3b6 | 241 | { |
594d8990 | 242 | AliFatal("Not implemented"); |
e2afb3b6 | 243 | } |
bdbd0f7a | 244 | |
245 | ||
246 |