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 fEventNumberESDFile(-1),
63 // default constructor
66 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
67 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
68 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
70 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
71 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
74 //______________________________________________________________________________
75 AliAODHeader::AliAODHeader(Int_t nRun,
79 const Char_t *title) :
81 fMagneticField(-999.),
82 fMuonMagFieldScale(-999.),
100 fPeriodNumber(nPeriod),
101 fBunchCrossNumber(nBunchX),
107 fEventNumberESDFile(-1),
116 for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
117 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
118 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
120 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
121 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
124 //______________________________________________________________________________
125 AliAODHeader::AliAODHeader(Int_t nRun,
133 Double_t muonMagFieldScale,
147 fMagneticField(magField),
148 fMuonMagFieldScale(muonMagFieldScale),
150 fZDCN1Energy(n1Energy),
151 fZDCP1Energy(p1Energy),
152 fZDCN2Energy(n2Energy),
153 fZDCP2Energy(p2Energy),
156 fTriggerMask(trigMask),
160 fRefMultPos(refMultPos),
161 fRefMultNeg(refMultNeg),
165 fOrbitNumber(nOrbit),
166 fPeriodNumber(nPeriod),
167 fBunchCrossNumber(nBunchX),
168 fTriggerCluster(trigClus),
173 fEventNumberESDFile(-1),
182 for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
183 for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
184 fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
186 for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
187 for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
190 //______________________________________________________________________________
191 AliAODHeader::~AliAODHeader()
198 //______________________________________________________________________________
199 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
201 fMagneticField(hdr.fMagneticField),
202 fMuonMagFieldScale(hdr.fMuonMagFieldScale),
203 fCentrality(hdr.fCentrality),
204 fZDCN1Energy(hdr.fZDCN1Energy),
205 fZDCP1Energy(hdr.fZDCP1Energy),
206 fZDCN2Energy(hdr.fZDCN2Energy),
207 fZDCP2Energy(hdr.fZDCP2Energy),
210 fTriggerMask(hdr.fTriggerMask),
211 fFiredTriggers(hdr.fFiredTriggers),
212 fRunNumber(hdr.fRunNumber),
213 fRefMult(hdr.fRefMult),
214 fRefMultPos(hdr.fRefMultPos),
215 fRefMultNeg(hdr.fRefMultNeg),
216 fNMuons(hdr.fNMuons),
217 fNDimuons(hdr.fNDimuons),
218 fEventType(hdr.fEventType),
219 fOrbitNumber(hdr.fOrbitNumber),
220 fPeriodNumber(hdr.fPeriodNumber),
221 fBunchCrossNumber(hdr.fBunchCrossNumber),
222 fTriggerCluster(hdr.fTriggerCluster),
223 fDiamondZ(hdr.fDiamondZ),
224 fDiamondSig2Z(hdr.fDiamondSig2Z),
225 fOfflineTrigger(hdr.fOfflineTrigger),
226 fESDFileName(hdr.fESDFileName),
227 fEventNumberESDFile(hdr.fEventNumberESDFile),
228 fL0TriggerInputs(hdr.fL0TriggerInputs),
229 fL1TriggerInputs(hdr.fL1TriggerInputs),
230 fL2TriggerInputs(hdr.fL2TriggerInputs)
235 SetTitle(hdr.fTitle);
236 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
237 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
238 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
239 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
242 for(Int_t m=0; m<kNPHOSMatrix; m++){
243 if(hdr.fPHOSMatrix[m])
244 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
249 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
250 if(hdr.fEMCALMatrix[sm])
251 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
258 //______________________________________________________________________________
259 AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
261 // Assignment operator
264 AliVHeader::operator=(hdr);
266 fMagneticField = hdr.fMagneticField;
267 fMuonMagFieldScale= hdr.fMuonMagFieldScale;
268 fCentrality = hdr.fCentrality;
269 fZDCN1Energy = hdr.fZDCN1Energy;
270 fZDCP1Energy = hdr.fZDCP1Energy;
271 fZDCN2Energy = hdr.fZDCN2Energy;
272 fZDCP2Energy = hdr.fZDCP2Energy;
273 fTriggerMask = hdr.fTriggerMask;
274 fFiredTriggers = hdr.fFiredTriggers;
275 fRunNumber = hdr.fRunNumber;
276 fRefMult = hdr.fRefMult;
277 fRefMultPos = hdr.fRefMultPos;
278 fRefMultNeg = hdr.fRefMultNeg;
279 fEventType = hdr.fEventType;
280 fOrbitNumber = hdr.fOrbitNumber;
281 fPeriodNumber = hdr.fPeriodNumber;
282 fBunchCrossNumber = hdr.fBunchCrossNumber;
283 fTriggerCluster = hdr.fTriggerCluster;
284 fNMuons = hdr.fNMuons;
285 fNDimuons = hdr.fNDimuons;
286 fDiamondZ = hdr.fDiamondZ;
287 fDiamondSig2Z = hdr.fDiamondSig2Z;
288 fOfflineTrigger = hdr.fOfflineTrigger;
289 fESDFileName = hdr.fESDFileName;
290 fEventNumberESDFile = hdr.fEventNumberESDFile;
291 fL0TriggerInputs = hdr.fL0TriggerInputs;
292 fL1TriggerInputs = hdr.fL1TriggerInputs;
293 fL2TriggerInputs = hdr.fL2TriggerInputs;
296 SetTitle(hdr.fTitle);
297 SetQTheta(hdr.fQTheta, hdr.fNQTheta);
298 SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
299 for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
300 for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
302 for(Int_t m=0; m<kNPHOSMatrix; m++){
303 if(hdr.fPHOSMatrix[m])
304 fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
309 for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
310 if(hdr.fEMCALMatrix[sm])
311 fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
322 //______________________________________________________________________________
323 void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size)
325 if (QTheta && size>0) {
326 if (size != (UInt_t)fNQTheta) {
329 fQTheta = new Double_t[fNQTheta];
332 for (Int_t i = 0; i < fNQTheta; i++) {
333 fQTheta[i] = QTheta[i];
342 //______________________________________________________________________________
343 Double_t AliAODHeader::GetQTheta(UInt_t i) const
345 if (fQTheta && i < (UInt_t)fNQTheta) {
352 //______________________________________________________________________________
353 void AliAODHeader::RemoveQTheta()
362 //______________________________________________________________________________
363 void AliAODHeader::Print(Option_t* /*option*/) const
365 // prints event information
367 printf("Run # : %d\n", fRunNumber);
368 printf("Bunch Crossing # : %d\n", fBunchCrossNumber);
369 printf("Orbit Number # : %d\n", fOrbitNumber);
370 printf("Period Number # : %d\n", fPeriodNumber);
371 printf("Trigger mask : %lld\n", fTriggerMask);
372 printf("Trigger cluster : %d\n", fTriggerCluster);
373 printf("Event Type : %d\n", fEventType);
374 printf("Magnetic field : %f\n", fMagneticField);
375 printf("Muon mag. field scale : %f\n", fMuonMagFieldScale);
377 printf("Centrality : %f\n", fCentrality);
378 printf("ZDC N1 Energy : %f\n", fZDCN1Energy);
379 printf("ZDC P1 Energy : %f\n", fZDCP1Energy);
380 printf("ZDC N2 Energy : %f\n", fZDCN2Energy);
381 printf("ZDC P2 Energy : %f\n", fZDCP2Energy);
382 printf("ZDC EM1 Energy : %f\n", fZDCEMEnergy[0]);
383 printf("ZDC EM2 Energy : %f\n", fZDCEMEnergy[1]);
384 printf("ref. Multiplicity : %d\n", fRefMult);
385 printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
386 printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
387 printf("number of muons : %d\n", fNMuons);
388 printf("number of dimuons : %d\n", fNDimuons);
389 printf("offline trigger : %u\n", fOfflineTrigger);
392 for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
393 printf("QTheta[%d] : %13.3e\n", i, GetQTheta(i));