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.),
53 // default constructor
56 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
57 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
58 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
60 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
61 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
64 //______________________________________________________________________________
65 AliAODHeader::AliAODHeader(Int_t nRun,
69 const Char_t *title) :
71 fMagneticField(-999.),
72 fMuonMagFieldScale(-999.),
88 fPeriodNumber(nPeriod),
89 fBunchCrossNumber(nBunchX),
96 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
97 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
98 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
100 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
101 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
104 //______________________________________________________________________________
105 AliAODHeader::AliAODHeader(Int_t nRun,
113 Double_t muonMagFieldScale,
123 const Char_t *title) :
125 fMagneticField(magField),
126 fMuonMagFieldScale(muonMagFieldScale),
128 fZDCN1Energy(n1Energy),
129 fZDCP1Energy(p1Energy),
130 fZDCN2Energy(n2Energy),
131 fZDCP2Energy(p2Energy),
134 fTriggerMask(trigMask),
138 fRefMultPos(refMultPos),
139 fRefMultNeg(refMultNeg),
141 fOrbitNumber(nOrbit),
142 fPeriodNumber(nPeriod),
143 fBunchCrossNumber(nBunchX),
144 fTriggerCluster(trigClus)
150 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
151 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
152 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
154 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
155 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
158 //______________________________________________________________________________
159 AliAODHeader::~AliAODHeader()
166 //______________________________________________________________________________
167 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
169 fMagneticField(hdr.fMagneticField),
170 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
171 fCentrality(hdr.fCentrality),
172 fZDCN1Energy(hdr.fZDCN1Energy),
173 fZDCP1Energy(hdr.fZDCP1Energy),
174 fZDCN2Energy(hdr.fZDCN2Energy),
175 fZDCP2Energy(hdr.fZDCP2Energy),
178 fTriggerMask(hdr.fTriggerMask),
179 fFiredTriggers(hdr.fFiredTriggers),
180 fRunNumber(hdr.fRunNumber),
181 fRefMult(hdr.fRefMult),
182 fRefMultPos(hdr.fRefMultPos),
183 fRefMultNeg(hdr.fRefMultNeg),
184 fEventType(hdr.fEventType),
185 fOrbitNumber(hdr.fOrbitNumber),
186 fPeriodNumber(hdr.fPeriodNumber),
187 fBunchCrossNumber(hdr.fBunchCrossNumber),
188 fTriggerCluster(hdr.fTriggerCluster)
193 SetTitle(hdr.fTitle);
194 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
195 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
196 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
197 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
200 for(Int_t m=0; m<kNPHOSMatrix; m++){
201 if(hdr.fPHOSMatrix[m])
202 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
207 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
208 if(hdr.fEMCALMatrix[sm])
209 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
216 //______________________________________________________________________________
217 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
219 // Assignment operator
222 AliVHeader::operator=(hdr);
224 fMagneticField = hdr.fMagneticField;
225 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
226 fCentrality = hdr.fCentrality;
227 fZDCN1Energy = hdr.fZDCN1Energy;
228 fZDCP1Energy = hdr.fZDCP1Energy;
229 fZDCN2Energy = hdr.fZDCN2Energy;
230 fZDCP2Energy = hdr.fZDCP2Energy;
231 fTriggerMask = hdr.fTriggerMask;
232 fFiredTriggers = hdr.fFiredTriggers;
233 fRunNumber = hdr.fRunNumber;
234 fRefMult = hdr.fRefMult;
235 fRefMultPos = hdr.fRefMultPos;
236 fRefMultNeg = hdr.fRefMultNeg;
237 fEventType = hdr.fEventType;
238 fOrbitNumber = hdr.fOrbitNumber;
239 fPeriodNumber = hdr.fPeriodNumber;
240 fBunchCrossNumber = hdr.fBunchCrossNumber;
241 fTriggerCluster = hdr.fTriggerCluster;
244 SetTitle(hdr.fTitle);
245 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
246 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
247 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
248 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
250 for(Int_t m=0; m<kNPHOSMatrix; m++){
251 if(hdr.fPHOSMatrix[m])
252 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
257 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
258 if(hdr.fEMCALMatrix[sm])
259 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
270 //______________________________________________________________________________
271 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
273 if (QTheta && size>0) {
274 if (size != (UInt_t)fNQTheta) {
277 fQTheta = new Double_t[fNQTheta];
280 for (Int_t i = 0; i < fNQTheta; i++) {
281 fQTheta[i] = QTheta[i];
290 //______________________________________________________________________________
291 Double_t AliAODHeader::GetQTheta(UInt_t i) const
293 if (fQTheta && i < (UInt_t)fNQTheta) {
300 //______________________________________________________________________________
301 void AliAODHeader::RemoveQTheta()
310 //______________________________________________________________________________
311 void AliAODHeader::Print(Option_t* /*option*/) const
313 // prints event information
315 printf("Run # : %d\n", fRunNumber);
316 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
317 printf("Orbit Number # : %d\n", fOrbitNumber);
318 printf("Period Number # : %d\n", fPeriodNumber);
319 printf("Trigger mask : %lld\n", fTriggerMask);
320 printf("Trigger cluster : %d\n", fTriggerCluster);
321 printf("Event Type : %d\n", fEventType);
322 printf("Magnetic field : %f\n", fMagneticField);
323 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
325 printf("Centrality : %f\n", fCentrality);
326 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
327 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
328 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
329 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
330 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
331 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
332 printf("ref. Multiplicity : %d\n", fRefMult);
333 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
334 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
337 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
338 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));