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),
68 // default constructor
71 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
72 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
73 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
75 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
76 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
79 //______________________________________________________________________________
80 AliAODHeader::AliAODHeader(Int_t nRun,
84 const Char_t *title) :
86 fMagneticField(-999.),
87 fMuonMagFieldScale(-999.),
105 fOrbitNumber(nOrbit),
106 fPeriodNumber(nPeriod),
107 fBunchCrossNumber(nBunchX),
113 fEventNumberESDFile(-1),
124 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
125 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
126 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
128 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
129 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
132 //______________________________________________________________________________
133 AliAODHeader::AliAODHeader(Int_t nRun,
141 Double_t muonMagFieldScale,
156 fMagneticField(magField),
157 fMuonMagFieldScale(muonMagFieldScale),
159 fEventplane(eventplane),
160 fZDCN1Energy(n1Energy),
161 fZDCP1Energy(p1Energy),
162 fZDCN2Energy(n2Energy),
163 fZDCP2Energy(p2Energy),
166 fTriggerMask(trigMask),
170 fRefMultPos(refMultPos),
171 fRefMultNeg(refMultNeg),
175 fOrbitNumber(nOrbit),
176 fPeriodNumber(nPeriod),
177 fBunchCrossNumber(nBunchX),
178 fTriggerCluster(trigClus),
183 fEventNumberESDFile(-1),
194 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
195 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
196 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
198 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
199 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
202 //______________________________________________________________________________
203 AliAODHeader::~AliAODHeader()
211 //______________________________________________________________________________
212 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
214 fMagneticField(hdr.fMagneticField),
215 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
216 fCentrality(hdr.fCentrality),
217 fEventplane(hdr.fEventplane),
218 fZDCN1Energy(hdr.fZDCN1Energy),
219 fZDCP1Energy(hdr.fZDCP1Energy),
220 fZDCN2Energy(hdr.fZDCN2Energy),
221 fZDCP2Energy(hdr.fZDCP2Energy),
224 fTriggerMask(hdr.fTriggerMask),
225 fFiredTriggers(hdr.fFiredTriggers),
226 fRunNumber(hdr.fRunNumber),
227 fRefMult(hdr.fRefMult),
228 fRefMultPos(hdr.fRefMultPos),
229 fRefMultNeg(hdr.fRefMultNeg),
230 fNMuons(hdr.fNMuons),
231 fNDimuons(hdr.fNDimuons),
232 fEventType(hdr.fEventType),
233 fOrbitNumber(hdr.fOrbitNumber),
234 fPeriodNumber(hdr.fPeriodNumber),
235 fBunchCrossNumber(hdr.fBunchCrossNumber),
236 fTriggerCluster(hdr.fTriggerCluster),
237 fDiamondZ(hdr.fDiamondZ),
238 fDiamondSig2Z(hdr.fDiamondSig2Z),
239 fOfflineTrigger(hdr.fOfflineTrigger),
240 fESDFileName(hdr.fESDFileName),
241 fEventNumberESDFile(hdr.fEventNumberESDFile),
242 fL0TriggerInputs(hdr.fL0TriggerInputs),
243 fL1TriggerInputs(hdr.fL1TriggerInputs),
244 fL2TriggerInputs(hdr.fL2TriggerInputs),
245 fCentralityP(new AliCentrality(*hdr.fCentralityP)),
246 fEventplaneP(new AliEventplane(*hdr.fEventplaneP))
251 SetTitle(hdr.fTitle);
252 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
253 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
254 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
255 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
258 for(Int_t m=0; m<kNPHOSMatrix; m++){
259 if(hdr.fPHOSMatrix[m])
260 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
265 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
266 if(hdr.fEMCALMatrix[sm])
267 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
274 //______________________________________________________________________________
275 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
277 // Assignment operator
280 AliVHeader::operator=(hdr);
282 fMagneticField = hdr.fMagneticField;
283 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
284 fCentrality = hdr.fCentrality;
285 fEventplane = hdr.fEventplane;
286 fZDCN1Energy = hdr.fZDCN1Energy;
287 fZDCP1Energy = hdr.fZDCP1Energy;
288 fZDCN2Energy = hdr.fZDCN2Energy;
289 fZDCP2Energy = hdr.fZDCP2Energy;
290 fTriggerMask = hdr.fTriggerMask;
291 fFiredTriggers = hdr.fFiredTriggers;
292 fRunNumber = hdr.fRunNumber;
293 fRefMult = hdr.fRefMult;
294 fRefMultPos = hdr.fRefMultPos;
295 fRefMultNeg = hdr.fRefMultNeg;
296 fEventType = hdr.fEventType;
297 fOrbitNumber = hdr.fOrbitNumber;
298 fPeriodNumber = hdr.fPeriodNumber;
299 fBunchCrossNumber = hdr.fBunchCrossNumber;
300 fTriggerCluster = hdr.fTriggerCluster;
301 fNMuons = hdr.fNMuons;
302 fNDimuons = hdr.fNDimuons;
303 fDiamondZ = hdr.fDiamondZ;
304 fDiamondSig2Z = hdr.fDiamondSig2Z;
305 fOfflineTrigger = hdr.fOfflineTrigger;
306 fESDFileName = hdr.fESDFileName;
307 fEventNumberESDFile = hdr.fEventNumberESDFile;
308 fL0TriggerInputs = hdr.fL0TriggerInputs;
309 fL1TriggerInputs = hdr.fL1TriggerInputs;
310 fL2TriggerInputs = hdr.fL2TriggerInputs;
311 fEventplaneP = new AliEventplane(*hdr.fEventplaneP);
313 if(hdr.fCentralityP){
314 if(fCentralityP)*fCentralityP = *hdr.fCentralityP;
315 else fCentralityP = new AliCentrality(*hdr.fCentralityP);
319 SetTitle(hdr.fTitle);
320 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
321 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
322 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
323 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
325 for(Int_t m=0; m<kNPHOSMatrix; m++){
326 if(hdr.fPHOSMatrix[m]){
327 if(fPHOSMatrix[m])delete fPHOSMatrix[m];
328 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
334 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
335 if(hdr.fEMCALMatrix[sm]){
336 if(fEMCALMatrix[sm])delete fEMCALMatrix[sm];
337 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
349 //______________________________________________________________________________
350 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
352 if (QTheta && size>0) {
353 if (size != (UInt_t)fNQTheta) {
356 fQTheta = new Double_t[fNQTheta];
359 for (Int_t i = 0; i < fNQTheta; i++) {
360 fQTheta[i] = QTheta[i];
369 //______________________________________________________________________________
370 Double_t AliAODHeader::GetQTheta(UInt_t i) const
372 if (fQTheta && i < (UInt_t)fNQTheta) {
379 //______________________________________________________________________________
380 void AliAODHeader::RemoveQTheta()
389 void AliAODHeader::Clear(Option_t* /*opt*/)
406 //______________________________________________________________________________
407 void AliAODHeader::Print(Option_t* /*option*/) const
409 // prints event information
411 printf("Run # : %d\n", fRunNumber);
412 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
413 printf("Orbit Number # : %d\n", fOrbitNumber);
414 printf("Period Number # : %d\n", fPeriodNumber);
415 printf("Trigger mask : %lld\n", fTriggerMask);
416 printf("Trigger cluster : %d\n", fTriggerCluster);
417 printf("Event Type : %d\n", fEventType);
418 printf("Magnetic field : %f\n", fMagneticField);
419 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
421 printf("Centrality : %f\n", fCentrality);
422 printf("Event plane : %f\n", fEventplane);
423 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
424 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
425 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
426 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
427 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
428 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
429 printf("ref. Multiplicity : %d\n", fRefMult);
430 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
431 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
432 printf("number of muons : %d\n", fNMuons);
433 printf("number of dimuons : %d\n", fNDimuons);
434 printf("offline trigger : %u\n", fOfflineTrigger);
437 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
438 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));