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