]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/ESD/AliESDHeader.cxx
Coding conventions fixed
[u/mrichter/AliRoot.git] / STEER / ESD / AliESDHeader.cxx
CommitLineData
d5ebf00e 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//-------------------------------------------------------------------------
17// Implementation of Class AliESDHeader
18// Header data
19// for the ESD
20// Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch
21//-------------------------------------------------------------------------
22
23#include "AliESDHeader.h"
bf1f98c4 24#include "AliTriggerScalersESD.h"
25#include "AliTriggerScalersRecordESD.h"
8258ca76 26#include "AliTriggerIR.h"
5aef203e 27#include "AliTriggerConfiguration.h"
b7b66e38 28#include "AliLog.h"
d5ebf00e 29
30ClassImp(AliESDHeader)
31
32//______________________________________________________________________________
33AliESDHeader::AliESDHeader() :
9ae2e5e6 34 AliVHeader(),
d5ebf00e 35 fTriggerMask(0),
36 fOrbitNumber(0),
37 fTimeStamp(0),
38 fEventType(0),
fd2e2210 39 fEventSpecie(0),
4f036e6e 40 fPeriodNumber(0),
d5ebf00e 41 fEventNumberInFile(0),
42 fBunchCrossNumber(0),
53eef471 43 fTriggerCluster(0),
44 fL0TriggerInputs(0),
45 fL1TriggerInputs(0),
bf1f98c4 46 fL2TriggerInputs(0),
6ef9caeb 47 fTriggerScalers(),
d789992f 48 fTriggerScalersDeltaEvent(),
49 fTriggerScalersDeltaRun(),
50 fTriggerInputsNames(kNTriggerInputs),
96bf4ffc 51 fCTPConfig(NULL),
52 fIRBufferArray()
d5ebf00e 53{
9ae2e5e6 54 // default constructor
55
56 SetName("AliESDHeader");
c47cda51 57 for(Int_t i = 0; i<kNMaxIR ; i++) fIRArray[i] = 0;
6ef9caeb 58 fTriggerInputsNames.SetOwner(kTRUE);
9ae2e5e6 59}
d789992f 60
9ae2e5e6 61AliESDHeader::~AliESDHeader()
62{
63 // destructor
c47cda51 64 for(Int_t i=0;i<kNMaxIR;i++)if(fIRArray[i])delete fIRArray[i];
d789992f 65 delete fCTPConfig;
96bf4ffc 66
67 fIRBufferArray.Delete();
d5ebf00e 68}
69
70
71AliESDHeader::AliESDHeader(const AliESDHeader &header) :
9ae2e5e6 72 AliVHeader(header),
d5ebf00e 73 fTriggerMask(header.fTriggerMask),
74 fOrbitNumber(header.fOrbitNumber),
75 fTimeStamp(header.fTimeStamp),
76 fEventType(header.fEventType),
fd2e2210 77 fEventSpecie(header.fEventSpecie),
4f036e6e 78 fPeriodNumber(header.fPeriodNumber),
d5ebf00e 79 fEventNumberInFile(header.fEventNumberInFile),
80 fBunchCrossNumber(header.fBunchCrossNumber),
53eef471 81 fTriggerCluster(header.fTriggerCluster),
82 fL0TriggerInputs(header.fL0TriggerInputs),
83 fL1TriggerInputs(header.fL1TriggerInputs),
bf1f98c4 84 fL2TriggerInputs(header.fL2TriggerInputs),
6ef9caeb 85 fTriggerScalers(header.fTriggerScalers),
d789992f 86 fTriggerScalersDeltaEvent(header.fTriggerScalersDeltaEvent),
87 fTriggerScalersDeltaRun(header.fTriggerScalersDeltaRun),
88 fTriggerInputsNames(TObjArray(kNTriggerInputs)),
96bf4ffc 89 fCTPConfig(header.fCTPConfig),
90 fIRBufferArray()
d5ebf00e 91{
92 // copy constructor
9ae2e5e6 93 SetName(header.fName);
94 SetTitle(header.fTitle);
c47cda51 95 for(Int_t i = 0; i<kNMaxIR ; i++) {
96 if(header.fIRArray[i])fIRArray[i] = new AliTriggerIR(*header.fIRArray[i]);
97 else fIRArray[i]=0;
98 }
6ef9caeb 99 for(Int_t i = 0; i < kNTriggerInputs; i++) {
100 TNamed *str = (TNamed *)((header.fTriggerInputsNames).At(i));
101 if (str) fTriggerInputsNames.AddAt(new TNamed(*str),i);
102 }
96bf4ffc 103
104 for(Int_t i = 0; i < (header.fIRBufferArray).GetEntries(); ++i) {
105 AliTriggerIR *ir = (AliTriggerIR*)((header.fIRBufferArray).At(i));
106 if (ir) fIRBufferArray.Add(new AliTriggerIR(*ir));
107 }
d5ebf00e 108}
109
110AliESDHeader& AliESDHeader::operator=(const AliESDHeader &header)
111{
112 // assigment operator
113 if(this!=&header) {
9ae2e5e6 114 AliVHeader::operator=(header);
d5ebf00e 115 fTriggerMask = header.fTriggerMask;
116 fOrbitNumber = header.fOrbitNumber;
117 fTimeStamp = header.fTimeStamp;
118 fEventType = header.fEventType;
fd2e2210 119 fEventSpecie = header.fEventSpecie;
4f036e6e 120 fPeriodNumber = header.fPeriodNumber;
d5ebf00e 121 fEventNumberInFile = header.fEventNumberInFile;
122 fBunchCrossNumber = header.fBunchCrossNumber;
123 fTriggerCluster = header.fTriggerCluster;
53eef471 124 fL0TriggerInputs = header.fL0TriggerInputs;
125 fL1TriggerInputs = header.fL1TriggerInputs;
126 fL2TriggerInputs = header.fL2TriggerInputs;
bf1f98c4 127 fTriggerScalers = header.fTriggerScalers;
d789992f 128 fTriggerScalersDeltaEvent = header.fTriggerScalersDeltaEvent;
129 fTriggerScalersDeltaRun = header.fTriggerScalersDeltaRun;
130 fCTPConfig = header.fCTPConfig;
131
6ef9caeb 132 fTriggerInputsNames.Clear();
133 for(Int_t i = 0; i < kNTriggerInputs; i++) {
134 TNamed *str = (TNamed *)((header.fTriggerInputsNames).At(i));
135 if (str) fTriggerInputsNames.AddAt(new TNamed(*str),i);
136 }
c47cda51 137 for(Int_t i = 0; i<kNMaxIR ; i++) {
138 if(header.fIRArray[i])fIRArray[i] = new AliTriggerIR(*header.fIRArray[i]);
139 else fIRArray[i]=0;
140 }
4f036e6e 141 SetName(header.fName);
142 SetTitle(header.fTitle);
96bf4ffc 143
144 fIRBufferArray.Delete();
145 for(Int_t i = 0; i < (header.fIRBufferArray).GetEntries(); ++i) {
146 AliTriggerIR *ir = (AliTriggerIR*)((header.fIRBufferArray).At(i));
147 if (ir) fIRBufferArray.Add(new AliTriggerIR(*ir));
148 }
d789992f 149 }
d5ebf00e 150 return *this;
151}
152
bf1f98c4 153void AliESDHeader::Copy(TObject &obj) const
154{
732a24fe 155 // this overwrites the virtual TOBject::Copy()
156 // to allow run time copying without casting
157 // in AliESDEvent
158
159 if(this==&obj)return;
160 AliESDHeader *robj = dynamic_cast<AliESDHeader*>(&obj);
161 if(!robj)return; // not an AliESDHeader
162 *robj = *this;
163
164}
d5ebf00e 165//______________________________________________________________________________
166void AliESDHeader::Reset()
167{
168 // reset all data members
169 fTriggerMask = 0;
170 fOrbitNumber = 0;
171 fTimeStamp = 0;
172 fEventType = 0;
fd2e2210 173 fEventSpecie = 0;
4f036e6e 174 fPeriodNumber = 0;
d5ebf00e 175 fEventNumberInFile = 0;
176 fBunchCrossNumber = 0;
177 fTriggerCluster = 0;
53eef471 178 fL0TriggerInputs = 0;
179 fL1TriggerInputs = 0;
180 fL2TriggerInputs = 0;
bf1f98c4 181 fTriggerScalers.Reset();
d789992f 182 fTriggerScalersDeltaEvent.Reset();
183 fTriggerScalersDeltaRun.Reset();
6ef9caeb 184 fTriggerInputsNames.Clear();
d789992f 185 delete fCTPConfig;
186 fCTPConfig = 0;
c47cda51 187 for(Int_t i=0;i<kNMaxIR;i++)if(fIRArray[i]){
188 delete fIRArray[i];
189 fIRArray[i]=0;
190 }
96bf4ffc 191
192 fIRBufferArray.Delete();
d5ebf00e 193}
76a7c65b 194//______________________________________________________________________________
c47cda51 195Bool_t AliESDHeader::AddTriggerIR(const AliTriggerIR* ir)
76a7c65b 196{
96bf4ffc 197 // Add an IR object into the array
198 // of IRs in the ESD header
199
200 fIRBufferArray.Add(new AliTriggerIR(*ir));
201
202 return kTRUE;
76a7c65b 203}
d5ebf00e 204//______________________________________________________________________________
205void AliESDHeader::Print(const Option_t *) const
206{
207 // Print some data members
208 printf("Event # %d in file Bunch crossing # %d Orbit # %d Trigger %lld \n",
209 GetEventNumberInFile(),
210 GetBunchCrossNumber(),
211 GetOrbitNumber(),
212 GetTriggerMask());
6ef9caeb 213 printf("List of the active trigger inputs: ");
214 for(Int_t i = 0; i < kNTriggerInputs; i++) {
215 TNamed *str = (TNamed *)((fTriggerInputsNames).At(i));
216 if (str) printf("%s ",str->GetName());
217 }
218 printf("\n");
219}
220
6ef9caeb 221//______________________________________________________________________________
222void AliESDHeader::SetActiveTriggerInputs(const char*name, Int_t index)
223{
224 // Fill the active trigger inputs names
225 // into the corresponding fTriggerInputsNames (TObjArray of TNamed)
226 if (index >= kNTriggerInputs || index < 0) {
227 AliError(Form("Index (%d) is outside the allowed range (0,59)!",index));
228 return;
229 }
230
231 fTriggerInputsNames.AddAt(new TNamed(name,NULL),index);
232}
233//______________________________________________________________________________
234const char* AliESDHeader::GetTriggerInputName(Int_t index, Int_t trglevel) const
235{
236 // Get the trigger input name
237 // at the specified position in the trigger mask and trigger level (0,1,2)
238 TNamed *trginput = 0;
239 if (trglevel == 0) trginput = (TNamed *)fTriggerInputsNames.At(index);
240 if (trglevel == 1) trginput = (TNamed *)fTriggerInputsNames.At(index+24);
241 if (trglevel == 2) trginput = (TNamed *)fTriggerInputsNames.At(index+48);
242 if (trginput) return trginput->GetName();
243 else return "";
d5ebf00e 244}
6ef9caeb 245//______________________________________________________________________________
246TString AliESDHeader::GetActiveTriggerInputs() const
247{
248 // Returns the list with the names of the active trigger inputs
249 TString trginputs;
250 for(Int_t i = 0; i < kNTriggerInputs; i++) {
251 TNamed *str = (TNamed *)((fTriggerInputsNames).At(i));
252 if (str) {
253 trginputs += " ";
254 trginputs += str->GetName();
255 trginputs += " ";
256 }
257 }
258
259 return trginputs;
260}
261//______________________________________________________________________________
262TString AliESDHeader::GetFiredTriggerInputs() const
263{
264 // Returns the list with the names of the fired trigger inputs
265 TString trginputs;
266 for(Int_t i = 0; i < kNTriggerInputs; i++) {
267 TNamed *str = (TNamed *)((fTriggerInputsNames.At(i)));
268 if (i < 24 && (fL0TriggerInputs & (1 << i))) {
269 if (str) {
270 trginputs += " ";
271 trginputs += str->GetName();
272 trginputs += " ";
273 }
274 }
d999f2e6 275 if (i >= 24 && i < 48 && (fL1TriggerInputs & (1 << (i-24)))) {
6ef9caeb 276 if (str) {
277 trginputs += " ";
278 trginputs += str->GetName();
279 trginputs += " ";
280 }
281 }
d999f2e6 282 if (i >= 48 && (fL2TriggerInputs & (1 << (i-48)))) {
6ef9caeb 283 if (str) {
284 trginputs += " ";
285 trginputs += str->GetName();
286 trginputs += " ";
287 }
288 }
d5ebf00e 289
6ef9caeb 290 }
291 return trginputs;
292}
293//______________________________________________________________________________
294Bool_t AliESDHeader::IsTriggerInputFired(const char *name) const
295{
296 // Checks if the trigger input is fired
297
298 TNamed *trginput = (TNamed *)fTriggerInputsNames.FindObject(name);
299 if (!trginput) return kFALSE;
300
301 Int_t inputIndex = fTriggerInputsNames.IndexOf(trginput);
302 if (inputIndex < 0) return kFALSE;
303
304 if (fL0TriggerInputs & (1 << inputIndex)) return kTRUE;
305 else if (fL1TriggerInputs & (1 << (inputIndex-24))) return kTRUE;
306 else if (fL2TriggerInputs & (1 << (inputIndex-48))) return kTRUE;
307 else return kFALSE;
308}