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;
79 for (Int_t j=0; j<64; ++j) fVZEROEqFactors[j]=-1;
82 //______________________________________________________________________________
83 AliAODHeader::AliAODHeader(Int_t nRun,
87 const Char_t *title) :
89 fMagneticField(-999.),
90 fMuonMagFieldScale(-999.),
108 fOrbitNumber(nOrbit),
109 fPeriodNumber(nPeriod),
110 fBunchCrossNumber(nBunchX),
116 fEventNumberESDFile(-1),
128 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
129 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
130 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
132 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
133 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
134 for (Int_t j=0; j<64; ++j) fVZEROEqFactors[j]=-1;
137 //______________________________________________________________________________
138 AliAODHeader::AliAODHeader(Int_t nRun,
146 Double_t muonMagFieldScale,
157 const Float_t *vzeroEqFactors,
162 fMagneticField(magField),
163 fMuonMagFieldScale(muonMagFieldScale),
165 fEventplane(eventplane),
166 fZDCN1Energy(n1Energy),
167 fZDCP1Energy(p1Energy),
168 fZDCN2Energy(n2Energy),
169 fZDCP2Energy(p2Energy),
172 fTriggerMask(trigMask),
176 fRefMultPos(refMultPos),
177 fRefMultNeg(refMultNeg),
181 fOrbitNumber(nOrbit),
182 fPeriodNumber(nPeriod),
183 fBunchCrossNumber(nBunchX),
184 fTriggerCluster(trigClus),
189 fEventNumberESDFile(-1),
201 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
202 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
203 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
205 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
206 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
207 for (Int_t i = 0; i < 6; i++) fITSClusters[i] = 0;
208 if (vzeroEqFactors) for (Int_t j=0; j<64; ++j) fVZEROEqFactors[j] = vzeroEqFactors[j];
211 //______________________________________________________________________________
212 AliAODHeader::~AliAODHeader()
220 //______________________________________________________________________________
221 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
223 fMagneticField(hdr.fMagneticField),
224 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
225 fCentrality(hdr.fCentrality),
226 fEventplane(hdr.fEventplane),
227 fZDCN1Energy(hdr.fZDCN1Energy),
228 fZDCP1Energy(hdr.fZDCP1Energy),
229 fZDCN2Energy(hdr.fZDCN2Energy),
230 fZDCP2Energy(hdr.fZDCP2Energy),
233 fTriggerMask(hdr.fTriggerMask),
234 fFiredTriggers(hdr.fFiredTriggers),
235 fRunNumber(hdr.fRunNumber),
236 fRefMult(hdr.fRefMult),
237 fRefMultPos(hdr.fRefMultPos),
238 fRefMultNeg(hdr.fRefMultNeg),
239 fNMuons(hdr.fNMuons),
240 fNDimuons(hdr.fNDimuons),
241 fEventType(hdr.fEventType),
242 fOrbitNumber(hdr.fOrbitNumber),
243 fPeriodNumber(hdr.fPeriodNumber),
244 fBunchCrossNumber(hdr.fBunchCrossNumber),
245 fTriggerCluster(hdr.fTriggerCluster),
246 fDiamondZ(hdr.fDiamondZ),
247 fDiamondSig2Z(hdr.fDiamondSig2Z),
248 fOfflineTrigger(hdr.fOfflineTrigger),
249 fESDFileName(hdr.fESDFileName),
250 fEventNumberESDFile(hdr.fEventNumberESDFile),
251 fL0TriggerInputs(hdr.fL0TriggerInputs),
252 fL1TriggerInputs(hdr.fL1TriggerInputs),
253 fL2TriggerInputs(hdr.fL2TriggerInputs),
254 fTPConlyRefMult(hdr.fTPConlyRefMult),
255 fCentralityP(new AliCentrality(*hdr.fCentralityP)),
256 fEventplaneP(new AliEventplane(*hdr.fEventplaneP))
261 SetTitle(hdr.fTitle);
262 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
263 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
264 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
265 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
268 for(Int_t m=0; m<kNPHOSMatrix; m++){
269 if(hdr.fPHOSMatrix[m])
270 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
275 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
276 if(hdr.fEMCALMatrix[sm])
277 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
281 for (Int_t i = 0; i < 6; i++) fITSClusters[i] = hdr.fITSClusters[i];
282 for (Int_t j=0; j<64; ++j) fVZEROEqFactors[j]=hdr.fVZEROEqFactors[j];
285 //______________________________________________________________________________
286 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
288 // Assignment operator
291 AliVHeader::operator=(hdr);
293 fMagneticField = hdr.fMagneticField;
294 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
295 fCentrality = hdr.fCentrality;
296 fEventplane = hdr.fEventplane;
297 fZDCN1Energy = hdr.fZDCN1Energy;
298 fZDCP1Energy = hdr.fZDCP1Energy;
299 fZDCN2Energy = hdr.fZDCN2Energy;
300 fZDCP2Energy = hdr.fZDCP2Energy;
301 fTriggerMask = hdr.fTriggerMask;
302 fFiredTriggers = hdr.fFiredTriggers;
303 fRunNumber = hdr.fRunNumber;
304 fRefMult = hdr.fRefMult;
305 fRefMultPos = hdr.fRefMultPos;
306 fRefMultNeg = hdr.fRefMultNeg;
307 fEventType = hdr.fEventType;
308 fOrbitNumber = hdr.fOrbitNumber;
309 fPeriodNumber = hdr.fPeriodNumber;
310 fBunchCrossNumber = hdr.fBunchCrossNumber;
311 fTriggerCluster = hdr.fTriggerCluster;
312 fNMuons = hdr.fNMuons;
313 fNDimuons = hdr.fNDimuons;
314 fDiamondZ = hdr.fDiamondZ;
315 fDiamondSig2Z = hdr.fDiamondSig2Z;
316 fOfflineTrigger = hdr.fOfflineTrigger;
317 fESDFileName = hdr.fESDFileName;
318 fEventNumberESDFile = hdr.fEventNumberESDFile;
319 fL0TriggerInputs = hdr.fL0TriggerInputs;
320 fL1TriggerInputs = hdr.fL1TriggerInputs;
321 fL2TriggerInputs = hdr.fL2TriggerInputs;
322 fTPConlyRefMult = hdr.fTPConlyRefMult;
324 if(hdr.fEventplaneP){
325 if(fEventplaneP)*fEventplaneP = *hdr.fEventplaneP;
326 else fEventplaneP = new AliEventplane(*hdr.fEventplaneP);
329 if(hdr.fCentralityP){
330 if(fCentralityP)*fCentralityP = *hdr.fCentralityP;
331 else fCentralityP = new AliCentrality(*hdr.fCentralityP);
335 SetTitle(hdr.fTitle);
336 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
337 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
338 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
339 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
341 for(Int_t m=0; m<kNPHOSMatrix; m++){
342 if(hdr.fPHOSMatrix[m]){
343 if(fPHOSMatrix[m])delete fPHOSMatrix[m];
344 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
350 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
351 if(hdr.fEMCALMatrix[sm]){
352 if(fEMCALMatrix[sm])delete fEMCALMatrix[sm];
353 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
361 for (Int_t i = 0; i < 6; i++) fITSClusters[i] = hdr.fITSClusters[i];
362 for (Int_t j=0; j<64; ++j) fVZEROEqFactors[j] = hdr.fVZEROEqFactors[j];
366 //______________________________________________________________________________
367 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
369 if (QTheta && size>0) {
370 if (size != (UInt_t)fNQTheta) {
373 fQTheta = new Double_t[fNQTheta];
376 for (Int_t i = 0; i < fNQTheta; i++) {
377 fQTheta[i] = QTheta[i];
386 //______________________________________________________________________________
387 Double_t AliAODHeader::GetQTheta(UInt_t i) const
389 if (fQTheta && i < (UInt_t)fNQTheta) {
396 //______________________________________________________________________________
397 void AliAODHeader::RemoveQTheta()
406 void AliAODHeader::Clear(Option_t* /*opt*/)
423 //______________________________________________________________________________
424 void AliAODHeader::Print(Option_t* /*option*/) const
426 // prints event information
428 printf("Run # : %d\n", fRunNumber);
429 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
430 printf("Orbit Number # : %d\n", fOrbitNumber);
431 printf("Period Number # : %d\n", fPeriodNumber);
432 printf("Trigger mask : %lld\n", fTriggerMask);
433 printf("Trigger cluster : %d\n", fTriggerCluster);
434 printf("Event Type : %d\n", fEventType);
435 printf("Magnetic field : %f\n", fMagneticField);
436 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
438 printf("Centrality : %f\n", fCentrality);
439 printf("Event plane : %f\n", fEventplane);
440 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
441 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
442 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
443 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
444 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
445 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
446 printf("ref. Multiplicity : %d\n", fRefMult);
447 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
448 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
449 printf("number of muons : %d\n", fNMuons);
450 printf("number of dimuons : %d\n", fNDimuons);
451 printf("offline trigger : %u\n", fOfflineTrigger);
454 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
455 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));
458 printf("V0 Eq factors: ");
459 for (Int_t j=0; j<64; ++j) printf(" %.3f",fVZEROEqFactors[j]);