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