]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/STEERBase/AliHeader.cxx
Temporary splines for LHC12b-e anchored MC
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliHeader.cxx
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
16 /* $Id$ */
17
18 //-----------------------------------------------------------------------
19 //     Simulation event header class
20 //     Collaborates with AliRun, AliStack, and AliGenReaderTreeK classes
21 //     Many other classes depend on it
22 //     Author:
23 //-----------------------------------------------------------------------
24
25
26 #include <stdio.h>
27 #include <TObjArray.h>
28
29 #include "AliLog.h"
30 #include "AliHeader.h"
31 #include "AliDetectorEventHeader.h"
32 #include "AliGenEventHeader.h"
33     
34  
35 ClassImp(AliHeader)
36
37 //_______________________________________________________________________
38 AliHeader::AliHeader():
39   fRun(-1),
40   fNvertex(0),
41   fNprimary(0),
42   fNtrack(0),
43   fEvent(0),
44   fEventNrInRun(0),
45   fTimeStamp(0),
46   fStack(0),
47   fGenHeader(0),
48   fDetHeaders(0)
49 {
50   //
51   // Default constructor
52   //
53  }
54
55 //_______________________________________________________________________
56 AliHeader::AliHeader(const AliHeader& head):
57   TObject(head),
58   fRun(-1),
59   fNvertex(0),
60   fNprimary(0),
61   fNtrack(0),
62   fEvent(0),
63   fEventNrInRun(0),
64   fTimeStamp(0),
65   fStack(0),
66   fGenHeader(0),
67   fDetHeaders(0)
68 {
69   //
70   // Copy constructor
71   //
72   head.Copy(*this);
73 }
74
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),
83   fTimeStamp(0),
84   fStack(0),
85   fGenHeader(0), 
86   fDetHeaders(0) 
87 {
88   //
89   // Standard constructor
90   //
91 }
92
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),
101   fTimeStamp(0),
102   fStack(0),
103   fGenHeader(0), 
104   fDetHeaders(0) 
105 {
106   //
107   // Standard constructor
108   //
109 }
110
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
125 //_______________________________________________________________________
126 void AliHeader::Reset(Int_t run, Int_t event)
127 {
128   //
129   // Resets the header with new run and event number
130   //
131   fRun=run;     
132   fNvertex=0;
133   fNprimary=0;
134   fNtrack=0;
135   fEvent=event;
136   fTimeStamp=0;
137   if (fDetHeaders) fDetHeaders->Delete();
138 }
139
140 //_______________________________________________________________________
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;
152   fTimeStamp=0;
153   if (fDetHeaders) fDetHeaders->Clear();
154 }
155
156 //_______________________________________________________________________
157 void AliHeader::Print(const char*) const
158 {
159   //
160   // Dumps header content
161   //
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);
168   printf("              Time-stamp %ld\n",fTimeStamp);
169   printf(
170   "=========== Header for run %d Event %d = end ============================================\n\n",
171   fRun,fEvent);
172
173 }
174
175 //_______________________________________________________________________
176 AliStack* AliHeader::Stack() const
177 {
178 // Return pointer to stack
179     return fStack;
180 }
181
182 //_______________________________________________________________________
183 void AliHeader::SetStack(AliStack* stack)
184 {
185 // Set pointer to stack
186     fStack = stack;
187 }
188
189 //_______________________________________________________________________
190 void AliHeader::SetGenEventHeader(AliGenEventHeader* header)
191 {
192 // Set pointer to header for generated event
193     fGenHeader = header;
194 }
195
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) {
206         Warning("AddDetectorEventHeader","Detector tries to add empty header \n");
207         return;
208     }
209     
210     if (strlen(header->GetName()) == 0) {
211         Warning("AddDetectorEventHeader","Detector tries to add header without name \n");
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
239 //_______________________________________________________________________
240 AliGenEventHeader*  AliHeader::GenEventHeader() const
241 {
242 // Get pointer to header for generated event
243     return fGenHeader;
244 }
245
246 //_______________________________________________________________________
247 void AliHeader::Copy(TObject&) const
248 {
249   AliFatal("Not implemented");
250 }
251
252
253