]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliAODHeader.cxx
Updates (A. Toia)
[u/mrichter/AliRoot.git] / STEER / AliAODHeader.cxx
CommitLineData
df9db588 1/**************************************************************************
2 * Copyright(c) 1998-2007, 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// AOD event base class
20// Author: Markus Oldenburg, CERN
21//-------------------------------------------------------------------------
22
23#include "AliAODHeader.h"
1aa76f71 24#include <TGeoMatrix.h>
27346f69 25#include <TObjString.h>
df9db588 26
27ClassImp(AliAODHeader)
28
29//______________________________________________________________________________
30AliAODHeader::AliAODHeader() :
9ae2e5e6 31 AliVHeader(),
df9db588 32 fMagneticField(-999.),
6b6f8d32 33 fMuonMagFieldScale(-999.),
df9db588 34 fCentrality(-999.),
6b6f8d32 35 fZDCN1Energy(-999.),
36 fZDCP1Energy(-999.),
37 fZDCN2Energy(-999.),
38 fZDCP2Energy(-999.),
ff254193 39 fNQTheta(0),
40 fQTheta(0x0),
df9db588 41 fTriggerMask(0),
27346f69 42 fFiredTriggers(),
df9db588 43 fRunNumber(-999),
44 fRefMult(-999),
45 fRefMultPos(-999),
46 fRefMultNeg(-999),
dba4ebde 47 fNMuons(0),
48 fNDimuons(0),
9333290e 49 fEventType(0),
50 fOrbitNumber(0),
51 fPeriodNumber(0),
52 fBunchCrossNumber(0),
65b25288 53 fTriggerCluster(0),
54 fDiamondZ(0.),
0c6c629b 55 fDiamondSig2Z(0.),
a5f7aba4 56 fOfflineTrigger(0),
57 fESDFileName(""),
58 fEventNumberESDFile(-1),
59 fL0TriggerInputs(0),
60 fL1TriggerInputs(0),
61 fL2TriggerInputs(0)
df9db588 62{
63 // default constructor
9ae2e5e6 64
65 SetName("header");
a85132e7 66 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
613fc341 67 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
68 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
69 fDiamondCovXY[1]=0.;
1aa76f71 70 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
71 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
df9db588 72}
73
74//______________________________________________________________________________
31fd97b2 75AliAODHeader::AliAODHeader(Int_t nRun,
76 UShort_t nBunchX,
77 UInt_t nOrbit,
89cf15db 78 UInt_t nPeriod,
abfce367 79 const Char_t *title) :
9ae2e5e6 80 AliVHeader(),
df9db588 81 fMagneticField(-999.),
6b6f8d32 82 fMuonMagFieldScale(-999.),
df9db588 83 fCentrality(-999.),
6b6f8d32 84 fZDCN1Energy(-999.),
85 fZDCP1Energy(-999.),
86 fZDCN2Energy(-999.),
87 fZDCP2Energy(-999.),
ff254193 88 fNQTheta(0),
89 fQTheta(0x0),
df9db588 90 fTriggerMask(0),
27346f69 91 fFiredTriggers(),
ff254193 92 fRunNumber(nRun),
df9db588 93 fRefMult(-999),
94 fRefMultPos(-999),
95 fRefMultNeg(-999),
dba4ebde 96 fNMuons(0),
97 fNDimuons(0),
9333290e 98 fEventType(0),
99 fOrbitNumber(nOrbit),
100 fPeriodNumber(nPeriod),
101 fBunchCrossNumber(nBunchX),
65b25288 102 fTriggerCluster(0),
103 fDiamondZ(0.),
0c6c629b 104 fDiamondSig2Z(0.),
a5f7aba4 105 fOfflineTrigger(0),
106 fESDFileName(""),
107 fEventNumberESDFile(-1),
108 fL0TriggerInputs(0),
109 fL1TriggerInputs(0),
110 fL2TriggerInputs(0)
df9db588 111{
112 // constructor
9ae2e5e6 113
114 SetName("header");
115 SetTitle(title);
a85132e7 116 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
613fc341 117 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
118 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
119 fDiamondCovXY[1]=0.;
1aa76f71 120 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
121 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
df9db588 122}
123
124//______________________________________________________________________________
31fd97b2 125AliAODHeader::AliAODHeader(Int_t nRun,
126 UShort_t nBunchX,
127 UInt_t nOrbit,
89cf15db 128 UInt_t nPeriod,
df9db588 129 Int_t refMult,
130 Int_t refMultPos,
131 Int_t refMultNeg,
132 Double_t magField,
6b6f8d32 133 Double_t muonMagFieldScale,
df9db588 134 Double_t cent,
6b6f8d32 135 Double_t n1Energy,
136 Double_t p1Energy,
137 Double_t n2Energy,
138 Double_t p2Energy,
a85132e7 139 Double_t *emEnergy,
6b6f8d32 140 ULong64_t trigMask,
df9db588 141 UChar_t trigClus,
142 UInt_t evttype,
fa8b0e56 143 const Char_t *title,
144 Int_t nMuons,
145 Int_t nDimuons) :
9ae2e5e6 146 AliVHeader(),
df9db588 147 fMagneticField(magField),
6b6f8d32 148 fMuonMagFieldScale(muonMagFieldScale),
df9db588 149 fCentrality(cent),
6b6f8d32 150 fZDCN1Energy(n1Energy),
151 fZDCP1Energy(p1Energy),
152 fZDCN2Energy(n2Energy),
153 fZDCP2Energy(p2Energy),
ff254193 154 fNQTheta(0),
155 fQTheta(0x0),
df9db588 156 fTriggerMask(trigMask),
27346f69 157 fFiredTriggers(),
df9db588 158 fRunNumber(nRun),
159 fRefMult(refMult),
160 fRefMultPos(refMultPos),
161 fRefMultNeg(refMultNeg),
dba4ebde 162 fNMuons(nMuons),
163 fNDimuons(nDimuons),
9333290e 164 fEventType(evttype),
165 fOrbitNumber(nOrbit),
166 fPeriodNumber(nPeriod),
167 fBunchCrossNumber(nBunchX),
0c6c629b 168 fTriggerCluster(trigClus),
65b25288 169 fDiamondZ(0.),
0c6c629b 170 fDiamondSig2Z(0.),
a5f7aba4 171 fOfflineTrigger(0),
172 fESDFileName(""),
173 fEventNumberESDFile(-1),
174 fL0TriggerInputs(0),
175 fL1TriggerInputs(0),
176 fL2TriggerInputs(0)
df9db588 177{
178 // constructor
9ae2e5e6 179
180 SetName("header");
181 SetTitle(title);
a85132e7 182 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
613fc341 183 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
184 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
185 fDiamondCovXY[1]=0.;
1aa76f71 186 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
187 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
df9db588 188}
189
190//______________________________________________________________________________
191AliAODHeader::~AliAODHeader()
192{
193 // destructor
ff254193 194
195 RemoveQTheta();
df9db588 196}
197
198//______________________________________________________________________________
199AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
9ae2e5e6 200 AliVHeader(hdr),
df9db588 201 fMagneticField(hdr.fMagneticField),
6b6f8d32 202 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
df9db588 203 fCentrality(hdr.fCentrality),
6b6f8d32 204 fZDCN1Energy(hdr.fZDCN1Energy),
205 fZDCP1Energy(hdr.fZDCP1Energy),
206 fZDCN2Energy(hdr.fZDCN2Energy),
207 fZDCP2Energy(hdr.fZDCP2Energy),
ff254193 208 fNQTheta(0),
209 fQTheta(0x0),
df9db588 210 fTriggerMask(hdr.fTriggerMask),
27346f69 211 fFiredTriggers(hdr.fFiredTriggers),
df9db588 212 fRunNumber(hdr.fRunNumber),
213 fRefMult(hdr.fRefMult),
214 fRefMultPos(hdr.fRefMultPos),
215 fRefMultNeg(hdr.fRefMultNeg),
dba4ebde 216 fNMuons(hdr.fNMuons),
217 fNDimuons(hdr.fNDimuons),
9333290e 218 fEventType(hdr.fEventType),
219 fOrbitNumber(hdr.fOrbitNumber),
220 fPeriodNumber(hdr.fPeriodNumber),
221 fBunchCrossNumber(hdr.fBunchCrossNumber),
80a3f83f 222 fTriggerCluster(hdr.fTriggerCluster),
223 fDiamondZ(hdr.fDiamondZ),
0c6c629b 224 fDiamondSig2Z(hdr.fDiamondSig2Z),
a5f7aba4 225 fOfflineTrigger(hdr.fOfflineTrigger),
226 fESDFileName(hdr.fESDFileName),
227 fEventNumberESDFile(hdr.fEventNumberESDFile),
228 fL0TriggerInputs(hdr.fL0TriggerInputs),
229 fL1TriggerInputs(hdr.fL1TriggerInputs),
230 fL2TriggerInputs(hdr.fL2TriggerInputs)
df9db588 231{
232 // Copy constructor.
9ae2e5e6 233
234 SetName(hdr.fName);
235 SetTitle(hdr.fTitle);
ff254193 236 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
a85132e7 237 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
613fc341 238 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
239 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
1aa76f71 240
241
242 for(Int_t m=0; m<kNPHOSMatrix; m++){
243 if(hdr.fPHOSMatrix[m])
244 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
245 else
246 fPHOSMatrix[m]=0;
247 }
248
249 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
250 if(hdr.fEMCALMatrix[sm])
251 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
252 else
253 fEMCALMatrix[sm]=0;
254 }
255
df9db588 256}
257
258//______________________________________________________________________________
259AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
260{
261 // Assignment operator
262 if(this!=&hdr) {
6b6f8d32 263
9ae2e5e6 264 AliVHeader::operator=(hdr);
df9db588 265
31fd97b2 266 fMagneticField = hdr.fMagneticField;
6b6f8d32 267 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
31fd97b2 268 fCentrality = hdr.fCentrality;
6b6f8d32 269 fZDCN1Energy = hdr.fZDCN1Energy;
270 fZDCP1Energy = hdr.fZDCP1Energy;
271 fZDCN2Energy = hdr.fZDCN2Energy;
272 fZDCP2Energy = hdr.fZDCP2Energy;
31fd97b2 273 fTriggerMask = hdr.fTriggerMask;
27346f69 274 fFiredTriggers = hdr.fFiredTriggers;
31fd97b2 275 fRunNumber = hdr.fRunNumber;
276 fRefMult = hdr.fRefMult;
277 fRefMultPos = hdr.fRefMultPos;
278 fRefMultNeg = hdr.fRefMultNeg;
9333290e 279 fEventType = hdr.fEventType;
280 fOrbitNumber = hdr.fOrbitNumber;
281 fPeriodNumber = hdr.fPeriodNumber;
282 fBunchCrossNumber = hdr.fBunchCrossNumber;
31fd97b2 283 fTriggerCluster = hdr.fTriggerCluster;
fa8b0e56 284 fNMuons = hdr.fNMuons;
285 fNDimuons = hdr.fNDimuons;
0c6c629b 286 fDiamondZ = hdr.fDiamondZ;
287 fDiamondSig2Z = hdr.fDiamondSig2Z;
288 fOfflineTrigger = hdr.fOfflineTrigger;
a5f7aba4 289 fESDFileName = hdr.fESDFileName;
290 fEventNumberESDFile = hdr.fEventNumberESDFile;
291 fL0TriggerInputs = hdr.fL0TriggerInputs;
292 fL1TriggerInputs = hdr.fL1TriggerInputs;
293 fL2TriggerInputs = hdr.fL2TriggerInputs;
ff254193 294
295 SetName(hdr.fName);
296 SetTitle(hdr.fTitle);
297 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
a85132e7 298 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
613fc341 299 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
300 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
1aa76f71 301
302 for(Int_t m=0; m<kNPHOSMatrix; m++){
303 if(hdr.fPHOSMatrix[m])
304 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
305 else
306 fPHOSMatrix[m]=0;
307 }
308
309 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
310 if(hdr.fEMCALMatrix[sm])
311 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
312 else
313 fEMCALMatrix[sm]=0;
314 }
315
df9db588 316 }
317
9ae2e5e6 318
df9db588 319 return *this;
320}
321
ff254193 322//______________________________________________________________________________
323void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
324{
325 if (QTheta && size>0) {
326 if (size != (UInt_t)fNQTheta) {
327 RemoveQTheta();
328 fNQTheta = size;
329 fQTheta = new Double_t[fNQTheta];
330 }
331
332 for (Int_t i = 0; i < fNQTheta; i++) {
333 fQTheta[i] = QTheta[i];
334 }
335 } else {
336 RemoveQTheta();
337 }
338
339 return;
340}
341
342//______________________________________________________________________________
343Double_t AliAODHeader::GetQTheta(UInt_t i) const
344{
345 if (fQTheta && i < (UInt_t)fNQTheta) {
346 return fQTheta[i];
347 } else {
348 return -999.;
349 }
350}
351
352//______________________________________________________________________________
353void AliAODHeader::RemoveQTheta()
354{
355 delete[] fQTheta;
356 fQTheta = 0x0;
357 fNQTheta = 0;
358
359 return;
360}
361
df9db588 362//______________________________________________________________________________
363void AliAODHeader::Print(Option_t* /*option*/) const
364{
365 // prints event information
366
df9db588 367 printf("Run # : %d\n", fRunNumber);
31fd97b2 368 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
369 printf("Orbit Number # : %d\n", fOrbitNumber);
89cf15db 370 printf("Period Number # : %d\n", fPeriodNumber);
df9db588 371 printf("Trigger mask : %lld\n", fTriggerMask);
372 printf("Trigger cluster : %d\n", fTriggerCluster);
373 printf("Event Type : %d\n", fEventType);
374 printf("Magnetic field : %f\n", fMagneticField);
6b6f8d32 375 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
df9db588 376
377 printf("Centrality : %f\n", fCentrality);
6b6f8d32 378 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
379 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
380 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
381 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
a85132e7 382 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
383 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
df9db588 384 printf("ref. Multiplicity : %d\n", fRefMult);
385 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
386 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
fa8b0e56 387 printf("number of muons : %d\n", fNMuons);
388 printf("number of dimuons : %d\n", fNDimuons);
0c6c629b 389 printf("offline trigger : %u\n", fOfflineTrigger);
df9db588 390
ff254193 391 if (fQTheta) {
392 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
d067f357 393 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));
ff254193 394 }
395 }
396
397 return;
df9db588 398}