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.),
57 // default constructor
60 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
61 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
62 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
64 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
65 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
68 //______________________________________________________________________________
69 AliAODHeader::AliAODHeader(Int_t nRun,
73 const Char_t *title) :
75 fMagneticField(-999.),
76 fMuonMagFieldScale(-999.),
94 fPeriodNumber(nPeriod),
95 fBunchCrossNumber(nBunchX),
104 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
105 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
106 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
108 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
109 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
112 //______________________________________________________________________________
113 AliAODHeader::AliAODHeader(Int_t nRun,
121 Double_t muonMagFieldScale,
135 fMagneticField(magField),
136 fMuonMagFieldScale(muonMagFieldScale),
138 fZDCN1Energy(n1Energy),
139 fZDCP1Energy(p1Energy),
140 fZDCN2Energy(n2Energy),
141 fZDCP2Energy(p2Energy),
144 fTriggerMask(trigMask),
148 fRefMultPos(refMultPos),
149 fRefMultNeg(refMultNeg),
153 fOrbitNumber(nOrbit),
154 fPeriodNumber(nPeriod),
155 fBunchCrossNumber(nBunchX),
156 fTriggerCluster(trigClus),
165 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
166 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
167 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
169 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
170 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
173 //______________________________________________________________________________
174 AliAODHeader::~AliAODHeader()
181 //______________________________________________________________________________
182 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
184 fMagneticField(hdr.fMagneticField),
185 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
186 fCentrality(hdr.fCentrality),
187 fZDCN1Energy(hdr.fZDCN1Energy),
188 fZDCP1Energy(hdr.fZDCP1Energy),
189 fZDCN2Energy(hdr.fZDCN2Energy),
190 fZDCP2Energy(hdr.fZDCP2Energy),
193 fTriggerMask(hdr.fTriggerMask),
194 fFiredTriggers(hdr.fFiredTriggers),
195 fRunNumber(hdr.fRunNumber),
196 fRefMult(hdr.fRefMult),
197 fRefMultPos(hdr.fRefMultPos),
198 fRefMultNeg(hdr.fRefMultNeg),
199 fNMuons(hdr.fNMuons),
200 fNDimuons(hdr.fNDimuons),
201 fEventType(hdr.fEventType),
202 fOrbitNumber(hdr.fOrbitNumber),
203 fPeriodNumber(hdr.fPeriodNumber),
204 fBunchCrossNumber(hdr.fBunchCrossNumber),
205 fTriggerCluster(hdr.fTriggerCluster)
211 SetTitle(hdr.fTitle);
212 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
213 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
214 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
215 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
218 for(Int_t m=0; m<kNPHOSMatrix; m++){
219 if(hdr.fPHOSMatrix[m])
220 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
225 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
226 if(hdr.fEMCALMatrix[sm])
227 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
234 //______________________________________________________________________________
235 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
237 // Assignment operator
240 AliVHeader::operator=(hdr);
242 fMagneticField = hdr.fMagneticField;
243 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
244 fCentrality = hdr.fCentrality;
245 fZDCN1Energy = hdr.fZDCN1Energy;
246 fZDCP1Energy = hdr.fZDCP1Energy;
247 fZDCN2Energy = hdr.fZDCN2Energy;
248 fZDCP2Energy = hdr.fZDCP2Energy;
249 fTriggerMask = hdr.fTriggerMask;
250 fFiredTriggers = hdr.fFiredTriggers;
251 fRunNumber = hdr.fRunNumber;
252 fRefMult = hdr.fRefMult;
253 fRefMultPos = hdr.fRefMultPos;
254 fRefMultNeg = hdr.fRefMultNeg;
255 fEventType = hdr.fEventType;
256 fOrbitNumber = hdr.fOrbitNumber;
257 fPeriodNumber = hdr.fPeriodNumber;
258 fBunchCrossNumber = hdr.fBunchCrossNumber;
259 fTriggerCluster = hdr.fTriggerCluster;
260 fNMuons = hdr.fNMuons;
261 fNDimuons = hdr.fNDimuons;
265 SetTitle(hdr.fTitle);
266 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
267 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
268 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
269 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
271 for(Int_t m=0; m<kNPHOSMatrix; m++){
272 if(hdr.fPHOSMatrix[m])
273 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
278 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
279 if(hdr.fEMCALMatrix[sm])
280 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
291 //______________________________________________________________________________
292 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
294 if (QTheta && size>0) {
295 if (size != (UInt_t)fNQTheta) {
298 fQTheta = new Double_t[fNQTheta];
301 for (Int_t i = 0; i < fNQTheta; i++) {
302 fQTheta[i] = QTheta[i];
311 //______________________________________________________________________________
312 Double_t AliAODHeader::GetQTheta(UInt_t i) const
314 if (fQTheta && i < (UInt_t)fNQTheta) {
321 //______________________________________________________________________________
322 void AliAODHeader::RemoveQTheta()
331 //______________________________________________________________________________
332 void AliAODHeader::Print(Option_t* /*option*/) const
334 // prints event information
336 printf("Run # : %d\n", fRunNumber);
337 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
338 printf("Orbit Number # : %d\n", fOrbitNumber);
339 printf("Period Number # : %d\n", fPeriodNumber);
340 printf("Trigger mask : %lld\n", fTriggerMask);
341 printf("Trigger cluster : %d\n", fTriggerCluster);
342 printf("Event Type : %d\n", fEventType);
343 printf("Magnetic field : %f\n", fMagneticField);
344 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
346 printf("Centrality : %f\n", fCentrality);
347 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
348 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
349 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
350 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
351 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
352 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
353 printf("ref. Multiplicity : %d\n", fRefMult);
354 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
355 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
356 printf("number of muons : %d\n", fNMuons);
357 printf("number of dimuons : %d\n", fNDimuons);
360 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
361 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));