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 <TGeoMatrix.h>
26 #include <TObjString.h>
28 ClassImp(AliAODHeader)
30 //______________________________________________________________________________
31 AliAODHeader::AliAODHeader() :
33 fMagneticField(-999.),
34 fMuonMagFieldScale(-999.),
59 fEventNumberESDFile(-1),
65 // default constructor
68 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
69 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
70 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
72 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
73 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
76 //______________________________________________________________________________
77 AliAODHeader::AliAODHeader(Int_t nRun,
81 const Char_t *title) :
83 fMagneticField(-999.),
84 fMuonMagFieldScale(-999.),
101 fOrbitNumber(nOrbit),
102 fPeriodNumber(nPeriod),
103 fBunchCrossNumber(nBunchX),
109 fEventNumberESDFile(-1),
119 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
120 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
121 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
123 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
124 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
127 //______________________________________________________________________________
128 AliAODHeader::AliAODHeader(Int_t nRun,
136 Double_t muonMagFieldScale,
150 fMagneticField(magField),
151 fMuonMagFieldScale(muonMagFieldScale),
153 fZDCN1Energy(n1Energy),
154 fZDCP1Energy(p1Energy),
155 fZDCN2Energy(n2Energy),
156 fZDCP2Energy(p2Energy),
159 fTriggerMask(trigMask),
163 fRefMultPos(refMultPos),
164 fRefMultNeg(refMultNeg),
168 fOrbitNumber(nOrbit),
169 fPeriodNumber(nPeriod),
170 fBunchCrossNumber(nBunchX),
171 fTriggerCluster(trigClus),
176 fEventNumberESDFile(-1),
186 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
187 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
188 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
190 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
191 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
194 //______________________________________________________________________________
195 AliAODHeader::~AliAODHeader()
202 //______________________________________________________________________________
203 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
205 fMagneticField(hdr.fMagneticField),
206 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
207 fCentrality(hdr.fCentrality),
208 fZDCN1Energy(hdr.fZDCN1Energy),
209 fZDCP1Energy(hdr.fZDCP1Energy),
210 fZDCN2Energy(hdr.fZDCN2Energy),
211 fZDCP2Energy(hdr.fZDCP2Energy),
214 fTriggerMask(hdr.fTriggerMask),
215 fFiredTriggers(hdr.fFiredTriggers),
216 fRunNumber(hdr.fRunNumber),
217 fRefMult(hdr.fRefMult),
218 fRefMultPos(hdr.fRefMultPos),
219 fRefMultNeg(hdr.fRefMultNeg),
220 fNMuons(hdr.fNMuons),
221 fNDimuons(hdr.fNDimuons),
222 fEventType(hdr.fEventType),
223 fOrbitNumber(hdr.fOrbitNumber),
224 fPeriodNumber(hdr.fPeriodNumber),
225 fBunchCrossNumber(hdr.fBunchCrossNumber),
226 fTriggerCluster(hdr.fTriggerCluster),
227 fDiamondZ(hdr.fDiamondZ),
228 fDiamondSig2Z(hdr.fDiamondSig2Z),
229 fOfflineTrigger(hdr.fOfflineTrigger),
230 fESDFileName(hdr.fESDFileName),
231 fEventNumberESDFile(hdr.fEventNumberESDFile),
232 fL0TriggerInputs(hdr.fL0TriggerInputs),
233 fL1TriggerInputs(hdr.fL1TriggerInputs),
234 fL2TriggerInputs(hdr.fL2TriggerInputs),
235 fCentralityP(hdr.fCentralityP)
240 SetTitle(hdr.fTitle);
241 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
242 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
243 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
244 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
247 for(Int_t m=0; m<kNPHOSMatrix; m++){
248 if(hdr.fPHOSMatrix[m])
249 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
254 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
255 if(hdr.fEMCALMatrix[sm])
256 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
263 //______________________________________________________________________________
264 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
266 // Assignment operator
269 AliVHeader::operator=(hdr);
271 fMagneticField = hdr.fMagneticField;
272 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
273 fCentrality = hdr.fCentrality;
274 fZDCN1Energy = hdr.fZDCN1Energy;
275 fZDCP1Energy = hdr.fZDCP1Energy;
276 fZDCN2Energy = hdr.fZDCN2Energy;
277 fZDCP2Energy = hdr.fZDCP2Energy;
278 fTriggerMask = hdr.fTriggerMask;
279 fFiredTriggers = hdr.fFiredTriggers;
280 fRunNumber = hdr.fRunNumber;
281 fRefMult = hdr.fRefMult;
282 fRefMultPos = hdr.fRefMultPos;
283 fRefMultNeg = hdr.fRefMultNeg;
284 fEventType = hdr.fEventType;
285 fOrbitNumber = hdr.fOrbitNumber;
286 fPeriodNumber = hdr.fPeriodNumber;
287 fBunchCrossNumber = hdr.fBunchCrossNumber;
288 fTriggerCluster = hdr.fTriggerCluster;
289 fNMuons = hdr.fNMuons;
290 fNDimuons = hdr.fNDimuons;
291 fDiamondZ = hdr.fDiamondZ;
292 fDiamondSig2Z = hdr.fDiamondSig2Z;
293 fOfflineTrigger = hdr.fOfflineTrigger;
294 fESDFileName = hdr.fESDFileName;
295 fEventNumberESDFile = hdr.fEventNumberESDFile;
296 fL0TriggerInputs = hdr.fL0TriggerInputs;
297 fL1TriggerInputs = hdr.fL1TriggerInputs;
298 fL2TriggerInputs = hdr.fL2TriggerInputs;
299 fCentralityP = hdr.fCentralityP;
302 SetTitle(hdr.fTitle);
303 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
304 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
305 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
306 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
308 for(Int_t m=0; m<kNPHOSMatrix; m++){
309 if(hdr.fPHOSMatrix[m])
310 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
315 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
316 if(hdr.fEMCALMatrix[sm])
317 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
328 //______________________________________________________________________________
329 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
331 if (QTheta && size>0) {
332 if (size != (UInt_t)fNQTheta) {
335 fQTheta = new Double_t[fNQTheta];
338 for (Int_t i = 0; i < fNQTheta; i++) {
339 fQTheta[i] = QTheta[i];
348 //______________________________________________________________________________
349 Double_t AliAODHeader::GetQTheta(UInt_t i) const
351 if (fQTheta && i < (UInt_t)fNQTheta) {
358 //______________________________________________________________________________
359 void AliAODHeader::RemoveQTheta()
368 //______________________________________________________________________________
369 void AliAODHeader::Print(Option_t* /*option*/) const
371 // prints event information
373 printf("Run # : %d\n", fRunNumber);
374 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
375 printf("Orbit Number # : %d\n", fOrbitNumber);
376 printf("Period Number # : %d\n", fPeriodNumber);
377 printf("Trigger mask : %lld\n", fTriggerMask);
378 printf("Trigger cluster : %d\n", fTriggerCluster);
379 printf("Event Type : %d\n", fEventType);
380 printf("Magnetic field : %f\n", fMagneticField);
381 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
383 printf("Centrality : %f\n", fCentrality);
384 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
385 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
386 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
387 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
388 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
389 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
390 printf("ref. Multiplicity : %d\n", fRefMult);
391 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
392 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
393 printf("number of muons : %d\n", fNMuons);
394 printf("number of dimuons : %d\n", fNDimuons);
395 printf("offline trigger : %u\n", fOfflineTrigger);
398 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
399 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));