1 /**************************************************************************
2 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 //-------------------------------------------------------------------------
19 // AOD event base class
20 // Author: Markus Oldenburg, CERN
21 //-------------------------------------------------------------------------
23 #include "AliAODHeader.h"
24 #include "AliCentrality.h"
25 #include "AliEventplane.h"
26 #include <TGeoMatrix.h>
27 #include <TObjString.h>
29 ClassImp(AliAODHeader)
31 //______________________________________________________________________________
32 AliAODHeader::AliAODHeader() :
34 fMagneticField(-999.),
35 fMuonMagFieldScale(-999.),
61 fEventNumberESDFile(-1),
69 // default constructor
72 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
73 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
74 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
76 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
77 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
78 for (Int_t i = 0; i < 6; i++) fITSClusters[i] = 0;
81 //______________________________________________________________________________
82 AliAODHeader::AliAODHeader(Int_t nRun,
86 const Char_t *title) :
88 fMagneticField(-999.),
89 fMuonMagFieldScale(-999.),
107 fOrbitNumber(nOrbit),
108 fPeriodNumber(nPeriod),
109 fBunchCrossNumber(nBunchX),
115 fEventNumberESDFile(-1),
127 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
128 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
129 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
131 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
132 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
135 //______________________________________________________________________________
136 AliAODHeader::AliAODHeader(Int_t nRun,
144 Double_t muonMagFieldScale,
159 fMagneticField(magField),
160 fMuonMagFieldScale(muonMagFieldScale),
162 fEventplane(eventplane),
163 fZDCN1Energy(n1Energy),
164 fZDCP1Energy(p1Energy),
165 fZDCN2Energy(n2Energy),
166 fZDCP2Energy(p2Energy),
169 fTriggerMask(trigMask),
173 fRefMultPos(refMultPos),
174 fRefMultNeg(refMultNeg),
178 fOrbitNumber(nOrbit),
179 fPeriodNumber(nPeriod),
180 fBunchCrossNumber(nBunchX),
181 fTriggerCluster(trigClus),
186 fEventNumberESDFile(-1),
198 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
199 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
200 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
202 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
203 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
204 for (Int_t i = 0; i < 6; i++) fITSClusters[i] = 0;
207 //______________________________________________________________________________
208 AliAODHeader::~AliAODHeader()
216 //______________________________________________________________________________
217 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
219 fMagneticField(hdr.fMagneticField),
220 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
221 fCentrality(hdr.fCentrality),
222 fEventplane(hdr.fEventplane),
223 fZDCN1Energy(hdr.fZDCN1Energy),
224 fZDCP1Energy(hdr.fZDCP1Energy),
225 fZDCN2Energy(hdr.fZDCN2Energy),
226 fZDCP2Energy(hdr.fZDCP2Energy),
229 fTriggerMask(hdr.fTriggerMask),
230 fFiredTriggers(hdr.fFiredTriggers),
231 fRunNumber(hdr.fRunNumber),
232 fRefMult(hdr.fRefMult),
233 fRefMultPos(hdr.fRefMultPos),
234 fRefMultNeg(hdr.fRefMultNeg),
235 fNMuons(hdr.fNMuons),
236 fNDimuons(hdr.fNDimuons),
237 fEventType(hdr.fEventType),
238 fOrbitNumber(hdr.fOrbitNumber),
239 fPeriodNumber(hdr.fPeriodNumber),
240 fBunchCrossNumber(hdr.fBunchCrossNumber),
241 fTriggerCluster(hdr.fTriggerCluster),
242 fDiamondZ(hdr.fDiamondZ),
243 fDiamondSig2Z(hdr.fDiamondSig2Z),
244 fOfflineTrigger(hdr.fOfflineTrigger),
245 fESDFileName(hdr.fESDFileName),
246 fEventNumberESDFile(hdr.fEventNumberESDFile),
247 fL0TriggerInputs(hdr.fL0TriggerInputs),
248 fL1TriggerInputs(hdr.fL1TriggerInputs),
249 fL2TriggerInputs(hdr.fL2TriggerInputs),
250 fTPConlyRefMult(hdr.fTPConlyRefMult),
251 fCentralityP(new AliCentrality(*hdr.fCentralityP)),
252 fEventplaneP(new AliEventplane(*hdr.fEventplaneP))
257 SetTitle(hdr.fTitle);
258 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
259 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
260 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
261 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
264 for(Int_t m=0; m<kNPHOSMatrix; m++){
265 if(hdr.fPHOSMatrix[m])
266 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
271 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
272 if(hdr.fEMCALMatrix[sm])
273 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
277 for (Int_t i = 0; i < 6; i++) fITSClusters[i] = hdr.fITSClusters[i];
280 //______________________________________________________________________________
281 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
283 // Assignment operator
286 AliVHeader::operator=(hdr);
288 fMagneticField = hdr.fMagneticField;
289 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
290 fCentrality = hdr.fCentrality;
291 fEventplane = hdr.fEventplane;
292 fZDCN1Energy = hdr.fZDCN1Energy;
293 fZDCP1Energy = hdr.fZDCP1Energy;
294 fZDCN2Energy = hdr.fZDCN2Energy;
295 fZDCP2Energy = hdr.fZDCP2Energy;
296 fTriggerMask = hdr.fTriggerMask;
297 fFiredTriggers = hdr.fFiredTriggers;
298 fRunNumber = hdr.fRunNumber;
299 fRefMult = hdr.fRefMult;
300 fRefMultPos = hdr.fRefMultPos;
301 fRefMultNeg = hdr.fRefMultNeg;
302 fEventType = hdr.fEventType;
303 fOrbitNumber = hdr.fOrbitNumber;
304 fPeriodNumber = hdr.fPeriodNumber;
305 fBunchCrossNumber = hdr.fBunchCrossNumber;
306 fTriggerCluster = hdr.fTriggerCluster;
307 fNMuons = hdr.fNMuons;
308 fNDimuons = hdr.fNDimuons;
309 fDiamondZ = hdr.fDiamondZ;
310 fDiamondSig2Z = hdr.fDiamondSig2Z;
311 fOfflineTrigger = hdr.fOfflineTrigger;
312 fESDFileName = hdr.fESDFileName;
313 fEventNumberESDFile = hdr.fEventNumberESDFile;
314 fL0TriggerInputs = hdr.fL0TriggerInputs;
315 fL1TriggerInputs = hdr.fL1TriggerInputs;
316 fL2TriggerInputs = hdr.fL2TriggerInputs;
317 fTPConlyRefMult = hdr.fTPConlyRefMult;
319 if(hdr.fEventplaneP){
320 if(fEventplaneP)*fEventplaneP = *hdr.fEventplaneP;
321 else fEventplaneP = new AliEventplane(*hdr.fEventplaneP);
324 if(hdr.fCentralityP){
325 if(fCentralityP)*fCentralityP = *hdr.fCentralityP;
326 else fCentralityP = new AliCentrality(*hdr.fCentralityP);
330 SetTitle(hdr.fTitle);
331 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
332 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
333 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
334 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
336 for(Int_t m=0; m<kNPHOSMatrix; m++){
337 if(hdr.fPHOSMatrix[m]){
338 if(fPHOSMatrix[m])delete fPHOSMatrix[m];
339 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
345 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
346 if(hdr.fEMCALMatrix[sm]){
347 if(fEMCALMatrix[sm])delete fEMCALMatrix[sm];
348 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
356 for (Int_t i = 0; i < 6; i++) fITSClusters[i] = hdr.fITSClusters[i];
360 //______________________________________________________________________________
361 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
363 if (QTheta && size>0) {
364 if (size != (UInt_t)fNQTheta) {
367 fQTheta = new Double_t[fNQTheta];
370 for (Int_t i = 0; i < fNQTheta; i++) {
371 fQTheta[i] = QTheta[i];
380 //______________________________________________________________________________
381 Double_t AliAODHeader::GetQTheta(UInt_t i) const
383 if (fQTheta && i < (UInt_t)fNQTheta) {
390 //______________________________________________________________________________
391 void AliAODHeader::RemoveQTheta()
400 void AliAODHeader::Clear(Option_t* /*opt*/)
417 //______________________________________________________________________________
418 void AliAODHeader::Print(Option_t* /*option*/) const
420 // prints event information
422 printf("Run # : %d\n", fRunNumber);
423 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
424 printf("Orbit Number # : %d\n", fOrbitNumber);
425 printf("Period Number # : %d\n", fPeriodNumber);
426 printf("Trigger mask : %lld\n", fTriggerMask);
427 printf("Trigger cluster : %d\n", fTriggerCluster);
428 printf("Event Type : %d\n", fEventType);
429 printf("Magnetic field : %f\n", fMagneticField);
430 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
432 printf("Centrality : %f\n", fCentrality);
433 printf("Event plane : %f\n", fEventplane);
434 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
435 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
436 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
437 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
438 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
439 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
440 printf("ref. Multiplicity : %d\n", fRefMult);
441 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
442 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
443 printf("number of muons : %d\n", fNMuons);
444 printf("number of dimuons : %d\n", fNDimuons);
445 printf("offline trigger : %u\n", fOfflineTrigger);
448 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
449 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));