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.),
55 // default constructor
58 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
59 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
60 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
62 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
63 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
66 //______________________________________________________________________________
67 AliAODHeader::AliAODHeader(Int_t nRun,
71 const Char_t *title) :
73 fMagneticField(-999.),
74 fMuonMagFieldScale(-999.),
92 fPeriodNumber(nPeriod),
93 fBunchCrossNumber(nBunchX),
100 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
101 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
102 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
104 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
105 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
108 //______________________________________________________________________________
109 AliAODHeader::AliAODHeader(Int_t nRun,
117 Double_t muonMagFieldScale,
131 fMagneticField(magField),
132 fMuonMagFieldScale(muonMagFieldScale),
134 fZDCN1Energy(n1Energy),
135 fZDCP1Energy(p1Energy),
136 fZDCN2Energy(n2Energy),
137 fZDCP2Energy(p2Energy),
140 fTriggerMask(trigMask),
144 fRefMultPos(refMultPos),
145 fRefMultNeg(refMultNeg),
149 fOrbitNumber(nOrbit),
150 fPeriodNumber(nPeriod),
151 fBunchCrossNumber(nBunchX),
152 fTriggerCluster(trigClus)
159 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
160 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
161 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
163 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
164 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
167 //______________________________________________________________________________
168 AliAODHeader::~AliAODHeader()
175 //______________________________________________________________________________
176 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
178 fMagneticField(hdr.fMagneticField),
179 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
180 fCentrality(hdr.fCentrality),
181 fZDCN1Energy(hdr.fZDCN1Energy),
182 fZDCP1Energy(hdr.fZDCP1Energy),
183 fZDCN2Energy(hdr.fZDCN2Energy),
184 fZDCP2Energy(hdr.fZDCP2Energy),
187 fTriggerMask(hdr.fTriggerMask),
188 fFiredTriggers(hdr.fFiredTriggers),
189 fRunNumber(hdr.fRunNumber),
190 fRefMult(hdr.fRefMult),
191 fRefMultPos(hdr.fRefMultPos),
192 fRefMultNeg(hdr.fRefMultNeg),
193 fNMuons(hdr.fNMuons),
194 fNDimuons(hdr.fNDimuons),
195 fEventType(hdr.fEventType),
196 fOrbitNumber(hdr.fOrbitNumber),
197 fPeriodNumber(hdr.fPeriodNumber),
198 fBunchCrossNumber(hdr.fBunchCrossNumber),
199 fTriggerCluster(hdr.fTriggerCluster)
205 SetTitle(hdr.fTitle);
206 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
207 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
208 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
209 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
212 for(Int_t m=0; m<kNPHOSMatrix; m++){
213 if(hdr.fPHOSMatrix[m])
214 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
219 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
220 if(hdr.fEMCALMatrix[sm])
221 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
228 //______________________________________________________________________________
229 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
231 // Assignment operator
234 AliVHeader::operator=(hdr);
236 fMagneticField = hdr.fMagneticField;
237 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
238 fCentrality = hdr.fCentrality;
239 fZDCN1Energy = hdr.fZDCN1Energy;
240 fZDCP1Energy = hdr.fZDCP1Energy;
241 fZDCN2Energy = hdr.fZDCN2Energy;
242 fZDCP2Energy = hdr.fZDCP2Energy;
243 fTriggerMask = hdr.fTriggerMask;
244 fFiredTriggers = hdr.fFiredTriggers;
245 fRunNumber = hdr.fRunNumber;
246 fRefMult = hdr.fRefMult;
247 fRefMultPos = hdr.fRefMultPos;
248 fRefMultNeg = hdr.fRefMultNeg;
249 fEventType = hdr.fEventType;
250 fOrbitNumber = hdr.fOrbitNumber;
251 fPeriodNumber = hdr.fPeriodNumber;
252 fBunchCrossNumber = hdr.fBunchCrossNumber;
253 fTriggerCluster = hdr.fTriggerCluster;
254 fNMuons = hdr.fNMuons;
255 fNDimuons = hdr.fNDimuons;
259 SetTitle(hdr.fTitle);
260 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
261 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
262 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
263 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
265 for(Int_t m=0; m<kNPHOSMatrix; m++){
266 if(hdr.fPHOSMatrix[m])
267 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
272 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
273 if(hdr.fEMCALMatrix[sm])
274 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
285 //______________________________________________________________________________
286 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
288 if (QTheta && size>0) {
289 if (size != (UInt_t)fNQTheta) {
292 fQTheta = new Double_t[fNQTheta];
295 for (Int_t i = 0; i < fNQTheta; i++) {
296 fQTheta[i] = QTheta[i];
305 //______________________________________________________________________________
306 Double_t AliAODHeader::GetQTheta(UInt_t i) const
308 if (fQTheta && i < (UInt_t)fNQTheta) {
315 //______________________________________________________________________________
316 void AliAODHeader::RemoveQTheta()
325 //______________________________________________________________________________
326 void AliAODHeader::Print(Option_t* /*option*/) const
328 // prints event information
330 printf("Run # : %d\n", fRunNumber);
331 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
332 printf("Orbit Number # : %d\n", fOrbitNumber);
333 printf("Period Number # : %d\n", fPeriodNumber);
334 printf("Trigger mask : %lld\n", fTriggerMask);
335 printf("Trigger cluster : %d\n", fTriggerCluster);
336 printf("Event Type : %d\n", fEventType);
337 printf("Magnetic field : %f\n", fMagneticField);
338 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
340 printf("Centrality : %f\n", fCentrality);
341 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
342 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
343 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
344 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
345 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
346 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
347 printf("ref. Multiplicity : %d\n", fRefMult);
348 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
349 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
350 printf("number of muons : %d\n", fNMuons);
351 printf("number of dimuons : %d\n", fNDimuons);
354 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
355 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));