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 <TGeoMatrix.h>
25 #include <TObjString.h>
27 ClassImp(AliAODHeader)
29 //______________________________________________________________________________
30 AliAODHeader::AliAODHeader() :
32 fMagneticField(-999.),
33 fMuonMagFieldScale(-999.),
58 // default constructor
61 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
62 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
63 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
65 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
66 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
69 //______________________________________________________________________________
70 AliAODHeader::AliAODHeader(Int_t nRun,
74 const Char_t *title) :
76 fMagneticField(-999.),
77 fMuonMagFieldScale(-999.),
95 fPeriodNumber(nPeriod),
96 fBunchCrossNumber(nBunchX),
106 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
107 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
108 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
110 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
111 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
114 //______________________________________________________________________________
115 AliAODHeader::AliAODHeader(Int_t nRun,
123 Double_t muonMagFieldScale,
137 fMagneticField(magField),
138 fMuonMagFieldScale(muonMagFieldScale),
140 fZDCN1Energy(n1Energy),
141 fZDCP1Energy(p1Energy),
142 fZDCN2Energy(n2Energy),
143 fZDCP2Energy(p2Energy),
146 fTriggerMask(trigMask),
150 fRefMultPos(refMultPos),
151 fRefMultNeg(refMultNeg),
155 fOrbitNumber(nOrbit),
156 fPeriodNumber(nPeriod),
157 fBunchCrossNumber(nBunchX),
158 fTriggerCluster(trigClus),
167 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
168 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
169 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
171 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
172 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
175 //______________________________________________________________________________
176 AliAODHeader::~AliAODHeader()
183 //______________________________________________________________________________
184 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
186 fMagneticField(hdr.fMagneticField),
187 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
188 fCentrality(hdr.fCentrality),
189 fZDCN1Energy(hdr.fZDCN1Energy),
190 fZDCP1Energy(hdr.fZDCP1Energy),
191 fZDCN2Energy(hdr.fZDCN2Energy),
192 fZDCP2Energy(hdr.fZDCP2Energy),
195 fTriggerMask(hdr.fTriggerMask),
196 fFiredTriggers(hdr.fFiredTriggers),
197 fRunNumber(hdr.fRunNumber),
198 fRefMult(hdr.fRefMult),
199 fRefMultPos(hdr.fRefMultPos),
200 fRefMultNeg(hdr.fRefMultNeg),
201 fNMuons(hdr.fNMuons),
202 fNDimuons(hdr.fNDimuons),
203 fEventType(hdr.fEventType),
204 fOrbitNumber(hdr.fOrbitNumber),
205 fPeriodNumber(hdr.fPeriodNumber),
206 fBunchCrossNumber(hdr.fBunchCrossNumber),
207 fTriggerCluster(hdr.fTriggerCluster),
208 fDiamondZ(hdr.fDiamondZ),
209 fDiamondSig2Z(hdr.fDiamondSig2Z),
210 fOfflineTrigger(hdr.fOfflineTrigger)
215 SetTitle(hdr.fTitle);
216 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
217 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
218 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
219 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
222 for(Int_t m=0; m<kNPHOSMatrix; m++){
223 if(hdr.fPHOSMatrix[m])
224 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
229 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
230 if(hdr.fEMCALMatrix[sm])
231 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
238 //______________________________________________________________________________
239 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
241 // Assignment operator
244 AliVHeader::operator=(hdr);
246 fMagneticField = hdr.fMagneticField;
247 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
248 fCentrality = hdr.fCentrality;
249 fZDCN1Energy = hdr.fZDCN1Energy;
250 fZDCP1Energy = hdr.fZDCP1Energy;
251 fZDCN2Energy = hdr.fZDCN2Energy;
252 fZDCP2Energy = hdr.fZDCP2Energy;
253 fTriggerMask = hdr.fTriggerMask;
254 fFiredTriggers = hdr.fFiredTriggers;
255 fRunNumber = hdr.fRunNumber;
256 fRefMult = hdr.fRefMult;
257 fRefMultPos = hdr.fRefMultPos;
258 fRefMultNeg = hdr.fRefMultNeg;
259 fEventType = hdr.fEventType;
260 fOrbitNumber = hdr.fOrbitNumber;
261 fPeriodNumber = hdr.fPeriodNumber;
262 fBunchCrossNumber = hdr.fBunchCrossNumber;
263 fTriggerCluster = hdr.fTriggerCluster;
264 fNMuons = hdr.fNMuons;
265 fNDimuons = hdr.fNDimuons;
266 fDiamondZ = hdr.fDiamondZ;
267 fDiamondSig2Z = hdr.fDiamondSig2Z;
268 fOfflineTrigger = hdr.fOfflineTrigger;
272 SetTitle(hdr.fTitle);
273 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
274 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
275 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
276 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
278 for(Int_t m=0; m<kNPHOSMatrix; m++){
279 if(hdr.fPHOSMatrix[m])
280 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
285 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
286 if(hdr.fEMCALMatrix[sm])
287 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
298 //______________________________________________________________________________
299 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
301 if (QTheta && size>0) {
302 if (size != (UInt_t)fNQTheta) {
305 fQTheta = new Double_t[fNQTheta];
308 for (Int_t i = 0; i < fNQTheta; i++) {
309 fQTheta[i] = QTheta[i];
318 //______________________________________________________________________________
319 Double_t AliAODHeader::GetQTheta(UInt_t i) const
321 if (fQTheta && i < (UInt_t)fNQTheta) {
328 //______________________________________________________________________________
329 void AliAODHeader::RemoveQTheta()
338 //______________________________________________________________________________
339 void AliAODHeader::Print(Option_t* /*option*/) const
341 // prints event information
343 printf("Run # : %d\n", fRunNumber);
344 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
345 printf("Orbit Number # : %d\n", fOrbitNumber);
346 printf("Period Number # : %d\n", fPeriodNumber);
347 printf("Trigger mask : %lld\n", fTriggerMask);
348 printf("Trigger cluster : %d\n", fTriggerCluster);
349 printf("Event Type : %d\n", fEventType);
350 printf("Magnetic field : %f\n", fMagneticField);
351 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
353 printf("Centrality : %f\n", fCentrality);
354 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
355 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
356 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
357 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
358 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
359 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
360 printf("ref. Multiplicity : %d\n", fRefMult);
361 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
362 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
363 printf("number of muons : %d\n", fNMuons);
364 printf("number of dimuons : %d\n", fNDimuons);
365 printf("offline trigger : %u\n", fOfflineTrigger);
368 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
369 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));