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>
26 ClassImp(AliAODHeader)
28 //______________________________________________________________________________
29 AliAODHeader::AliAODHeader() :
31 fMagneticField(-999.),
32 fMuonMagFieldScale(-999.),
51 // default constructor
54 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
55 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
56 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
58 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
59 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
62 //______________________________________________________________________________
63 AliAODHeader::AliAODHeader(Int_t nRun,
67 const Char_t *title) :
69 fMagneticField(-999.),
70 fMuonMagFieldScale(-999.),
85 fPeriodNumber(nPeriod),
86 fBunchCrossNumber(nBunchX),
93 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
94 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
95 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
97 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
98 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
101 //______________________________________________________________________________
102 AliAODHeader::AliAODHeader(Int_t nRun,
110 Double_t muonMagFieldScale,
120 const Char_t *title) :
122 fMagneticField(magField),
123 fMuonMagFieldScale(muonMagFieldScale),
125 fZDCN1Energy(n1Energy),
126 fZDCP1Energy(p1Energy),
127 fZDCN2Energy(n2Energy),
128 fZDCP2Energy(p2Energy),
131 fTriggerMask(trigMask),
134 fRefMultPos(refMultPos),
135 fRefMultNeg(refMultNeg),
137 fOrbitNumber(nOrbit),
138 fPeriodNumber(nPeriod),
139 fBunchCrossNumber(nBunchX),
140 fTriggerCluster(trigClus)
146 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
147 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
148 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
150 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
151 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
154 //______________________________________________________________________________
155 AliAODHeader::~AliAODHeader()
162 //______________________________________________________________________________
163 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
165 fMagneticField(hdr.fMagneticField),
166 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
167 fCentrality(hdr.fCentrality),
168 fZDCN1Energy(hdr.fZDCN1Energy),
169 fZDCP1Energy(hdr.fZDCP1Energy),
170 fZDCN2Energy(hdr.fZDCN2Energy),
171 fZDCP2Energy(hdr.fZDCP2Energy),
174 fTriggerMask(hdr.fTriggerMask),
175 fRunNumber(hdr.fRunNumber),
176 fRefMult(hdr.fRefMult),
177 fRefMultPos(hdr.fRefMultPos),
178 fRefMultNeg(hdr.fRefMultNeg),
179 fEventType(hdr.fEventType),
180 fOrbitNumber(hdr.fOrbitNumber),
181 fPeriodNumber(hdr.fPeriodNumber),
182 fBunchCrossNumber(hdr.fBunchCrossNumber),
183 fTriggerCluster(hdr.fTriggerCluster)
188 SetTitle(hdr.fTitle);
189 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
190 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
191 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
192 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
195 for(Int_t m=0; m<kNPHOSMatrix; m++){
196 if(hdr.fPHOSMatrix[m])
197 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
202 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
203 if(hdr.fEMCALMatrix[sm])
204 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
211 //______________________________________________________________________________
212 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
214 // Assignment operator
217 AliVHeader::operator=(hdr);
219 fMagneticField = hdr.fMagneticField;
220 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
221 fCentrality = hdr.fCentrality;
222 fZDCN1Energy = hdr.fZDCN1Energy;
223 fZDCP1Energy = hdr.fZDCP1Energy;
224 fZDCN2Energy = hdr.fZDCN2Energy;
225 fZDCP2Energy = hdr.fZDCP2Energy;
226 fTriggerMask = hdr.fTriggerMask;
227 fRunNumber = hdr.fRunNumber;
228 fRefMult = hdr.fRefMult;
229 fRefMultPos = hdr.fRefMultPos;
230 fRefMultNeg = hdr.fRefMultNeg;
231 fEventType = hdr.fEventType;
232 fOrbitNumber = hdr.fOrbitNumber;
233 fPeriodNumber = hdr.fPeriodNumber;
234 fBunchCrossNumber = hdr.fBunchCrossNumber;
235 fTriggerCluster = hdr.fTriggerCluster;
238 SetTitle(hdr.fTitle);
239 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
240 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
241 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
242 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
244 for(Int_t m=0; m<kNPHOSMatrix; m++){
245 if(hdr.fPHOSMatrix[m])
246 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
251 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
252 if(hdr.fEMCALMatrix[sm])
253 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
264 //______________________________________________________________________________
265 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
267 if (QTheta && size>0) {
268 if (size != (UInt_t)fNQTheta) {
271 fQTheta = new Double_t[fNQTheta];
274 for (Int_t i = 0; i < fNQTheta; i++) {
275 fQTheta[i] = QTheta[i];
284 //______________________________________________________________________________
285 Double_t AliAODHeader::GetQTheta(UInt_t i) const
287 if (fQTheta && i < (UInt_t)fNQTheta) {
294 //______________________________________________________________________________
295 void AliAODHeader::RemoveQTheta()
304 //______________________________________________________________________________
305 void AliAODHeader::Print(Option_t* /*option*/) const
307 // prints event information
309 printf("Run # : %d\n", fRunNumber);
310 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
311 printf("Orbit Number # : %d\n", fOrbitNumber);
312 printf("Period Number # : %d\n", fPeriodNumber);
313 printf("Trigger mask : %lld\n", fTriggerMask);
314 printf("Trigger cluster : %d\n", fTriggerCluster);
315 printf("Event Type : %d\n", fEventType);
316 printf("Magnetic field : %f\n", fMagneticField);
317 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
319 printf("Centrality : %f\n", fCentrality);
320 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
321 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
322 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
323 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
324 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
325 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
326 printf("ref. Multiplicity : %d\n", fRefMult);
327 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
328 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
331 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
332 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));