LCOV - code coverage report
Current view: top level - STEER/ESD - AliESD.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 134 0.7 %
Date: 2016-06-14 17:26:59 Functions: 1 118 0.8 %

          Line data    Source code
       1             : // -*- mode: C++ -*- 
       2             : #ifndef ALIESD_H
       3             : #define ALIESD_H
       4             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       5             :  * See cxx source for full Copyright notice                               */
       6             : 
       7             : 
       8             : /* $Id: AliESD.h 52237 2011-10-20 19:26:08Z hristov $ */
       9             : 
      10             : //-------------------------------------------------------------------------
      11             : //                          Class AliESD
      12             : //   This is the class to deal with during the physical analysis of data
      13             : //      
      14             : //         Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
      15             : //-------------------------------------------------------------------------
      16             : 
      17             : #include <TClonesArray.h>
      18             : #include <TObject.h>
      19             : #include <TArrayF.h>
      20             : 
      21             : #include "AliESDMuonTrack.h"
      22             : #include "AliESDPmdTrack.h"
      23             : #include "AliESDTrdTrack.h"
      24             : #include "AliESDVertex.h"
      25             : #include "AliESDcascade.h"
      26             : #include "AliESDkink.h"
      27             : #include "AliESDtrack.h"
      28             : #include "AliESDHLTtrack.h"
      29             : #include "AliESDCaloCluster.h"
      30             : #include "AliESDv0.h"
      31             : #include "AliESDFMD.h"
      32             : #include "AliESDVZERO.h"
      33             : #include "AliMultiplicity.h"
      34             : #include "AliRawDataErrorLog.h"
      35             : #include "AliESDACORDE.h"
      36             : #include "AliESDAD.h"
      37             : 
      38             : class AliESDfriend;
      39             : 
      40             : class AliESD : public TObject {
      41             : public:
      42             :   AliESD();
      43             :   AliESD(const AliESD&);  
      44             :   virtual ~AliESD(); 
      45             : 
      46             :   void SetESDfriend(const AliESDfriend *f);
      47             :   void GetESDfriend(AliESDfriend *f) const;
      48             : 
      49           0 :   void SetEventNumberInFile(Int_t n) {fEventNumberInFile=n;}
      50           0 :   void SetBunchCrossNumber(UShort_t n) {fBunchCrossNumber=n;}
      51           0 :   void SetOrbitNumber(UInt_t n) {fOrbitNumber=n;}
      52           0 :   void SetPeriodNumber(UInt_t n) {fPeriodNumber=n;}
      53           0 :   void SetRunNumber(Int_t n) {fRunNumber=n;}
      54           0 :   void SetTimeStamp(UInt_t timeStamp){fTimeStamp = timeStamp;}
      55           0 :   void SetEventType(UInt_t eventType){fEventType = eventType;}
      56           0 :   void SetTriggerMask(ULong64_t n) {fTriggerMask=n;}
      57           0 :   void SetTriggerMaskNext50(ULong64_t n) {fTriggerMaskNext50=n;}
      58           0 :   void SetTriggerCluster(UChar_t n) {fTriggerCluster = n;}
      59           0 :   void SetMagneticField(Float_t mf){fMagneticField = mf;}
      60           0 :   Float_t GetMagneticField() const {return fMagneticField;}
      61             :   
      62             :   AliESDtrack *GetTrack(Int_t i) const {
      63           0 :     return (AliESDtrack *)fTracks.UncheckedAt(i);
      64             :   }
      65             :   AliESDHLTtrack *GetHLTConfMapTrack(Int_t i) const {
      66           0 :     return (AliESDHLTtrack *)fHLTConfMapTracks.UncheckedAt(i);
      67             :   }
      68             :   AliESDHLTtrack *GetHLTHoughTrack(Int_t i) const {
      69           0 :     return (AliESDHLTtrack *)fHLTHoughTracks.UncheckedAt(i);
      70             :   }
      71             :   AliESDMuonTrack *GetMuonTrack(Int_t i) const {
      72           0 :     return (AliESDMuonTrack *)fMuonTracks.UncheckedAt(i);
      73             :   }
      74             :   AliESDPmdTrack *GetPmdTrack(Int_t i) const {
      75           0 :     return (AliESDPmdTrack *)fPmdTracks.UncheckedAt(i);
      76             :   }
      77             :   AliESDTrdTrack *GetTrdTrack(Int_t i) const {
      78           0 :     return (AliESDTrdTrack *)fTrdTracks.UncheckedAt(i);
      79             :   }
      80             : 
      81             :   Bool_t Clean(Float_t *cleanPars);
      82             :   Bool_t RemoveKink(Int_t i);
      83             :   Bool_t RemoveV0(Int_t i);
      84             :   Bool_t RemoveTrack(Int_t i);
      85             : 
      86             :   Int_t  AddTrack(const AliESDtrack *t) {
      87           0 :     AliESDtrack * track = new(fTracks[fTracks.GetEntriesFast()]) AliESDtrack(*t);track->SetID(fTracks.GetEntriesFast()-1);return  track->GetID();
      88           0 :   }
      89             :   void AddHLTConfMapTrack(const AliESDHLTtrack *t) {
      90           0 :     new(fHLTConfMapTracks[fHLTConfMapTracks.GetEntriesFast()]) AliESDHLTtrack(*t);
      91           0 :   }
      92             :   void AddHLTHoughTrack(const AliESDHLTtrack *t) {
      93           0 :     new(fHLTHoughTracks[fHLTHoughTracks.GetEntriesFast()]) AliESDHLTtrack(*t);
      94           0 :   }
      95             :   void AddMuonTrack(const AliESDMuonTrack *t) {
      96           0 :     new(fMuonTracks[fMuonTracks.GetEntriesFast()]) AliESDMuonTrack(*t);
      97           0 :   }
      98             :   void AddPmdTrack(const AliESDPmdTrack *t) {
      99           0 :     new(fPmdTracks[fPmdTracks.GetEntriesFast()]) AliESDPmdTrack(*t);
     100           0 :   }
     101             :   void AddTrdTrack(const AliESDTrdTrack *t) {
     102           0 :     new(fTrdTracks[fTrdTracks.GetEntriesFast()]) AliESDTrdTrack(*t);
     103           0 :   }
     104             : 
     105             :   AliESDv0 *GetV0(Int_t i) const {
     106           0 :     return (AliESDv0 *)fV0s.UncheckedAt(i);
     107             :   }
     108             :   Int_t AddV0(const AliESDv0 *v);
     109             : 
     110             :   AliESDcascade *GetCascade(Int_t i) const {
     111           0 :     return (AliESDcascade *)fCascades.UncheckedAt(i);
     112             :   }
     113             :   void AddCascade(const AliESDcascade *c) {
     114           0 :     new(fCascades[fCascades.GetEntriesFast()]) AliESDcascade(*c);
     115           0 :   }
     116             : 
     117             :   AliESDkink *GetKink(Int_t i) const {
     118           0 :     return (AliESDkink *)fKinks.UncheckedAt(i);
     119             :   }
     120             :   Int_t AddKink(const AliESDkink *c) {
     121           0 :     AliESDkink * kink = new(fKinks[fKinks.GetEntriesFast()]) AliESDkink(*c);
     122           0 :     kink->SetID(fKinks.GetEntriesFast());
     123           0 :     return fKinks.GetEntriesFast()-1;
     124           0 :   }
     125             : 
     126             :   AliESDCaloCluster *GetCaloCluster(Int_t i) const {
     127           0 :     return (AliESDCaloCluster *)fCaloClusters.UncheckedAt(i);
     128             :   }
     129             :   Int_t AddCaloCluster(const AliESDCaloCluster *c) {
     130           0 :     AliESDCaloCluster *clus = new(fCaloClusters[fCaloClusters.GetEntriesFast()]) AliESDCaloCluster(*c);
     131           0 :     clus->SetID(fCaloClusters.GetEntriesFast()-1);
     132           0 :     return fCaloClusters.GetEntriesFast()-1;
     133           0 :   }
     134             :     
     135           0 :   void AddPHOSTriggerPosition(TArrayF array)   { fPHOSTriggerPosition    = new TArrayF(array) ; }
     136           0 :   void AddPHOSTriggerAmplitudes(TArrayF array) { fPHOSTriggerAmplitudes  = new TArrayF(array) ; }
     137           0 :   void AddEMCALTriggerPosition(TArrayF array)  { fEMCALTriggerPosition   = new TArrayF(array) ; }
     138           0 :   void AddEMCALTriggerAmplitudes(TArrayF array){ fEMCALTriggerAmplitudes = new TArrayF(array) ; }
     139             : 
     140             :   void SetVertex(const AliESDVertex *vertex) {
     141           0 :      new (&fSPDVertex) AliESDVertex(*vertex);
     142           0 :   }
     143           0 :   const AliESDVertex *GetVertex() const {return &fSPDVertex;}
     144             : 
     145             :   void SetMultiplicity(const AliMultiplicity *mul) {
     146           0 :      new (&fSPDMult) AliMultiplicity(*mul);
     147           0 :   }
     148           0 :   const AliMultiplicity *GetMultiplicity() const {return &fSPDMult;}
     149             : 
     150             :   void SetPrimaryVertex(const AliESDVertex *vertex) {
     151           0 :      new (&fPrimaryVertex) AliESDVertex(*vertex);
     152           0 :   }
     153           0 :   const AliESDVertex *GetPrimaryVertex() const {return &fPrimaryVertex;}
     154             : 
     155             :   void SetDiamond(const AliESDVertex *vertex);
     156           0 :   Float_t GetDiamondX() const {return fDiamondXY[0];}
     157           0 :   Float_t GetDiamondY() const {return fDiamondXY[1];}
     158           0 :   Float_t GetSigma2DiamondX() const {return fDiamondCovXY[0];}
     159           0 :   Float_t GetSigma2DiamondY() const {return fDiamondCovXY[2];}
     160             :   void GetDiamondCovXY(Float_t cov[3]) const {
     161           0 :     for(Int_t i=0;i<3;i++) cov[i]=fDiamondCovXY[i]; return;
     162             :   }
     163             : 
     164           0 :   Int_t  GetEventNumberInFile() const {return fEventNumberInFile;}
     165           0 :   UShort_t GetBunchCrossNumber() const {return fBunchCrossNumber;}
     166           0 :   UInt_t GetOrbitNumber() const {return fOrbitNumber;}
     167           0 :   UInt_t GetPeriodNumber() const {return fPeriodNumber;}
     168           0 :   Int_t  GetRunNumber() const {return fRunNumber;}
     169           0 :   UInt_t    GetTimeStamp()  const { return fTimeStamp;}
     170           0 :   UInt_t    GetEventType()  const { return fEventType;}
     171           0 :   ULong64_t GetTriggerMask() const {return fTriggerMask;}
     172           0 :   ULong64_t GetTriggerMaskNext50() const {return fTriggerMaskNext50;}
     173           0 :   UChar_t  GetTriggerCluster() const {return fTriggerCluster;}
     174             :   
     175           0 :   Int_t GetNumberOfTracks()     const {return fTracks.GetEntriesFast();}
     176           0 :   Int_t GetNumberOfHLTConfMapTracks()     const {return fHLTConfMapTracks.GetEntriesFast();}
     177           0 :   Int_t GetNumberOfHLTHoughTracks()     const {return fHLTHoughTracks.GetEntriesFast();}
     178           0 :   Int_t GetNumberOfMuonTracks() const {return fMuonTracks.GetEntriesFast();}
     179           0 :   Int_t GetNumberOfPmdTracks() const {return fPmdTracks.GetEntriesFast();}
     180           0 :   Int_t GetNumberOfTrdTracks() const {return fTrdTracks.GetEntriesFast();}
     181           0 :   Int_t GetNumberOfV0s()      const {return fV0s.GetEntriesFast();}
     182           0 :   Int_t GetNumberOfCascades() const {return fCascades.GetEntriesFast();}
     183           0 :   Int_t GetNumberOfKinks() const {return fKinks.GetEntriesFast();}
     184           0 :   Int_t GetNumberOfCaloClusters() const {return fCaloClusters.GetEntriesFast();}
     185             : 
     186           0 :   Int_t GetNumberOfEMCALClusters() const {return fEMCALClusters;}
     187           0 :   void  SetNumberOfEMCALClusters(Int_t clus) {fEMCALClusters = clus;}
     188           0 :   Int_t GetFirstEMCALCluster() const {return fFirstEMCALCluster;}
     189           0 :   void  SetFirstEMCALCluster(Int_t index) {fFirstEMCALCluster = index;}
     190           0 :   TArrayF *GetEMCALTriggerPosition() const {return  fEMCALTriggerPosition;}
     191           0 :   TArrayF *GetEMCALTriggerAmplitudes() const {return  fEMCALTriggerAmplitudes;}
     192             : 
     193           0 :   Int_t GetNumberOfPHOSClusters() const {return fPHOSClusters;}
     194           0 :   void  SetNumberOfPHOSClusters(Int_t part) { fPHOSClusters = part ; }
     195           0 :   void  SetFirstPHOSCluster(Int_t index) { fFirstPHOSCluster = index ; } 
     196           0 :   Int_t GetFirstPHOSCluster() const  { return fFirstPHOSCluster ; }
     197           0 :   TArrayF *GetPHOSTriggerPosition() const {return  fPHOSTriggerPosition;}
     198           0 :   TArrayF *GetPHOSTriggerAmplitudes() const {return  fPHOSTriggerAmplitudes;}
     199             : 
     200             : 
     201           0 :   Double32_t GetT0zVertex() const {return fT0zVertex;}
     202           0 :   void SetT0zVertex(Double32_t z) {fT0zVertex=z;}
     203           0 :   Double32_t GetT0() const {return fT0timeStart;}
     204           0 :   void SetT0(Double32_t timeStart) {fT0timeStart = timeStart;}
     205           0 :   Float_t GetT0clock() const {return fT0clock;}
     206           0 :   void SetT0clock(Float_t timeStart) {fT0clock = timeStart;}
     207           0 :   Double32_t GetT0TOF(Int_t i) const {return fT0TOF[i];}
     208           0 :   const Double32_t * GetT0TOF() const {return fT0TOF;}
     209           0 :   void SetT0TOF(Int_t icase, Float_t time) { fT0TOF[icase] = time;}
     210           0 :   Int_t GetT0Trig() const {return fT0trig;}
     211           0 :   void SetT0Trig(Int_t tvdc) {fT0trig = tvdc;}
     212           0 :   const Double32_t * GetT0time() const {return fT0time;}
     213             :   void SetT0time(Double32_t time[24]) {
     214           0 :   for (Int_t i=0; i<24; i++) fT0time[i] = time[i];
     215           0 :   }
     216           0 :   const Double32_t * GetT0amplitude() const {return fT0amplitude;}
     217             :   void SetT0amplitude(Double32_t amp[24]) {
     218           0 :     for (Int_t i=0; i<24; i++) fT0amplitude[i] = amp[i];
     219           0 :   }
     220             :     
     221           0 :   Float_t GetZDCN1Energy() const {return fZDCN1Energy;}
     222           0 :   Float_t GetZDCP1Energy() const {return fZDCP1Energy;}
     223           0 :   Float_t GetZDCN2Energy() const {return fZDCN2Energy;}
     224           0 :   Float_t GetZDCP2Energy() const {return fZDCP2Energy;}
     225           0 :   Float_t GetZDCEMEnergy() const {return fZDCEMEnergy;}
     226           0 :   Int_t   GetZDCParticipants() const {return fZDCParticipants;}
     227             :   void    SetZDC(Float_t n1Energy, Float_t p1Energy, Float_t emEnergy,
     228             :                  Float_t n2Energy, Float_t p2Energy, Int_t participants) 
     229           0 :    {fZDCN1Energy=n1Energy; fZDCP1Energy=p1Energy; fZDCEMEnergy=emEnergy;
     230           0 :     fZDCN2Energy=n2Energy; fZDCP2Energy=p2Energy; fZDCParticipants=participants;}
     231             : 
     232           0 :   void ResetV0s() { fV0s.Clear(); }
     233           0 :   void ResetCascades() { fCascades.Clear(); }
     234             :   void Reset();
     235             : 
     236             :   void  Print(Option_t *option="") const;
     237             : 
     238           0 :   void SetFMDData(AliESDFMD * obj) { fESDFMD = new AliESDFMD(*obj); }
     239           0 :   AliESDFMD *GetFMDData(){ return fESDFMD; }
     240             :    
     241           0 :   void SetVZEROData(AliESDVZERO * obj) { fESDVZERO = new AliESDVZERO(*obj); }
     242           0 :   AliESDVZERO *GetVZEROData(){ return fESDVZERO; }
     243           0 :   void SetACORDEData(AliESDACORDE * obj){ fESDACORDE = new AliESDACORDE(*obj); } 
     244           0 :   AliESDACORDE *GetACORDEDAta(){ return fESDACORDE; }
     245           0 :   void SetADData(AliESDAD * obj){ fESDAD = new AliESDAD(*obj); } 
     246           0 :   AliESDAD *GetADData(){ return fESDAD; }
     247             : 
     248             : 
     249             : 
     250             :   AliRawDataErrorLog *GetErrorLog(Int_t i) const {
     251           0 :     return (AliRawDataErrorLog *)fErrorLogs.UncheckedAt(i);
     252             :   }
     253             :   void  AddRawDataErrorLog(const AliRawDataErrorLog *log) {
     254           0 :     new(fErrorLogs[fErrorLogs.GetEntriesFast()]) AliRawDataErrorLog(*log);
     255           0 :   }
     256           0 :   Int_t GetNumberOfErrorLogs()   const {return fErrorLogs.GetEntriesFast();}
     257             : 
     258             : protected:
     259             :   AliESD &operator=(const AliESD& source);
     260             : 
     261             :   // Event Identification
     262             : 
     263             :   Int_t        fEventNumberInFile;// running Event count in the file
     264             :   UShort_t     fBunchCrossNumber;// Bunch Crossing Number
     265             :   UInt_t       fOrbitNumber;     // Orbit Number
     266             :   UInt_t       fPeriodNumber;    // Period Number
     267             :   Int_t        fRunNumber;       // Run Number
     268             :   UInt_t       fTimeStamp;       // Time stamp
     269             :   UInt_t       fEventType;       // Type of Event
     270             :   ULong64_t    fTriggerMask;     // Trigger Type (mask)
     271             :   ULong64_t    fTriggerMaskNext50; // Trigger Type (mask)
     272             :   UChar_t      fTriggerCluster;  // Trigger cluster (mask)
     273             :   Int_t        fRecoVersion;     // Version of reconstruction 
     274             :   Float_t      fMagneticField;   // Solenoid Magnetic Field in kG : for compatibility with AliMagF
     275             : 
     276             :   Float_t      fZDCN1Energy;      // reconstructed energy in the neutron ZDC
     277             :   Float_t      fZDCP1Energy;      // reconstructed energy in the proton ZDC
     278             :   Float_t      fZDCN2Energy;      // reconstructed energy in the neutron ZDC
     279             :   Float_t      fZDCP2Energy;      // reconstructed energy in the proton ZDC
     280             :   Float_t      fZDCEMEnergy;     // reconstructed energy in the electromagnetic ZDC
     281             :   Int_t        fZDCParticipants; // number of participants estimated by the ZDC
     282             : 
     283             : 
     284             :   Double32_t   fT0zVertex;       // vertex z position estimated by the T0
     285             :   AliESDVertex fSPDVertex;       // Primary vertex estimated by the SPD
     286             :   AliESDVertex fPrimaryVertex;   // Primary vertex estimated using ESD tracks
     287             :   Float_t      fDiamondXY[2];    // Interaction diamond (x,y) in RUN
     288             :   Float_t      fDiamondCovXY[3]; // Interaction diamond covariance (x,y) in RUN
     289             :   AliMultiplicity fSPDMult;      // SPD tracklet multiplicity
     290             : 
     291             :   Float_t      fT0clock;     // backward compatibility
     292             :   Double32_t   fT0TOF[3];     // interaction time in ns ( A&C, A, C)
     293             :   Double32_t   fT0timeStart;     // interaction time estimated by the T0
     294             :   Int_t        fT0trig;            // T0 trigger signals
     295             :   Double32_t   fT0time[24];      // best TOF on each T0 PMT
     296             :   Double32_t   fT0amplitude[24]; // number of particles(MIPs) on each T0 PMT
     297             : 
     298             : 
     299             :   TClonesArray fTracks;          // ESD tracks
     300             :   TClonesArray fHLTConfMapTracks;// HLT ESD tracks from Conformal Mapper method
     301             :   TClonesArray fHLTHoughTracks;  // HLT ESD tracks from Hough Transform method
     302             :   TClonesArray fMuonTracks;      // MUON ESD tracks
     303             :   TClonesArray fPmdTracks;       // PMD ESD tracks
     304             :   TClonesArray fTrdTracks;       // TRD ESD tracks (triggered)
     305             :   TClonesArray fV0s;             // V0 vertices
     306             :   TClonesArray fCascades;        // Cascade vertices
     307             :   TClonesArray fKinks;           // Kinks
     308             :   TClonesArray fCaloClusters;    // Calorimeter clusters for PHOS/EMCAL
     309             :   Int_t        fEMCALClusters;   // Number of EMCAL clusters (subset of caloclusters)
     310             :   Int_t        fFirstEMCALCluster; // First EMCAL cluster in the fCaloClusters list 
     311             :   TArrayF   *fEMCALTriggerPosition; ///(x,y,z of 2x2 and x,y,z of nxn) not position of centroid but of patch corner
     312             :   TArrayF   *fEMCALTriggerAmplitudes; //(2x2 max ampl, 2x2 amp out of patch,  nxn max ampl, nxn amp out of patch)
     313             : 
     314             :   Int_t        fPHOSClusters;     // Number of PHOS clusters (subset of caloclusters)
     315             :   Int_t        fFirstPHOSCluster; // First PHOS cluster in the fCaloClusters list 
     316             :   TArrayF   *fPHOSTriggerPosition; //(x,y,z of 2x2 and x,y,z of nxn), not position of centroid but of patch corner
     317             :   TArrayF   *fPHOSTriggerAmplitudes; //(2x2 max ampl, 2x2 amp out of patch,  nxn max ampl, nxn amp out of patch)
     318             : 
     319             :   AliESDFMD   *fESDFMD;   // FMD object containing rough multiplicity
     320             :   AliESDVZERO *fESDVZERO; // VZERO object containing rough multiplicity
     321             :   AliESDACORDE *fESDACORDE; // ACORDE ESD object containing bit pattern
     322             :   AliESDAD *fESDAD; // AD ESD object containing bit pattern
     323             :   TClonesArray fErrorLogs;        // Raw-data reading error messages
     324             : 
     325         172 :   ClassDef(AliESD,24)  //ESD class 
     326             : };
     327             : #endif 
     328             : 

Generated by: LCOV version 1.11