ROOT logo
#ifndef AliAODEventInfo_H
#define AliAODEventInfo_H

/* $Id$ */ 

#include "TClonesArray.h"

#include "AliAODEvent.h"

class AliAODHeader;

// AliAODEventInfo: a class for AODs for the MUON Arm of the ALICE Experiment
// Author: P. Cortese, Universita' del Piemonte Orientale in Alessandria and
// INFN of Torino - Italy
//
// This class provides additional information about the AliAODEvent, some
// of this is specific to MUON. The information stored in this class will 
// follow the evolution of the framework (i.e. some data members  may be 
// moved into the header in the future).
//
//

// 2007/11/06 v1.00 Initial version
// 2007/12/18 v1.01 More compact information for what regards trigger info
// 2008/02/01 v1.02 Apply coding conventions

class AliAODEventInfo : public TNamed {
public:
  AliAODEventInfo();
  ~AliAODEventInfo();

  void SetBeamEnergy(Double_t BeamEnergy){ fBeamEnergy=BeamEnergy; };
  Double_t EBeam() const { return fBeamEnergy; };
  Double_t SqrtS() const { return 2*fBeamEnergy; };

  // -- Trigger information (to be updated in future)
  void SelectTriggerBits(UChar_t muonSingleLPtL0, UChar_t muonSingleHPtL0,
			 UChar_t muonLikeLPtL0, UChar_t muonLikeHPtL0,
			 UChar_t muonUnlikeLPtL0, UChar_t muonUnlikeHPtL0);

  UChar_t GetBitSingleLPtL0() const { return fMuonSingleLPtL0; }
  UChar_t GetBitSingleHPtL0() const { return fMuonSingleHPtL0; }
  UChar_t GetBitLikeLPtL0() const { return fMuonLikeLPtL0; }
  UChar_t GetBitLikeHPtL0() const { return fMuonLikeHPtL0; }
  UChar_t GetBitUnlikeLPtL0() const { return fMuonUnlikeLPtL0; }
  UChar_t GetBitUnlikeHPtL0() const { return fMuonUnlikeHPtL0; }

  Bool_t MuonSingleLPtL0() const; // Test trigger pattern for MUON_Single_LPt_L0
  Bool_t MuonSingleHPtL0() const; // Test trigger pattern for MUON_Single_HPt_L0
  Bool_t MuonLikeLPtL0() const; // Test trigger pattern for MUON_Like_LPt_L0
  Bool_t MuonLikeHPtL0() const; // Test trigger pattern for MUON_Like_HPt_L0
  Bool_t MuonUnlikeLPtL0() const; // Test trigger pattern for MUON_Unlike_LPt_L0
  Bool_t MuonUnlikeHPtL0() const; // Test trigger pattern for MUON_Unlike_HPt_L0

  Int_t GetNDimuons() const { return (fDi!=0) ? ((TClonesArray*)fDi.GetObject())->GetSize() : 0;}
  Int_t NDimu() const { return GetNDimuons();}

  // Pointers
  void SetEv(AliAODEvent *ev){ fEv=ev; }
  void SetEi(AliAODEventInfo *ei){ fEi=ei; }
  void SetHe(AliAODHeader *he){ fHe=he; }
  void SetTr(TClonesArray *tr){ fTr=tr; }
  void SetDi(TClonesArray *di){ fDi=di; }

  AliAODEvent *GetEv() { return (fEv!=0) ? (AliAODEvent*)fEv.GetObject() : 0; }
  AliAODEventInfo* GetEi() { return (fEi!=0) ? (AliAODEventInfo*)fEi.GetObject() : 0; }
  TClonesArray *GetDi() { return (fDi!=0) ? (TClonesArray*)fDi.GetObject() : 0; } // Get dimuon array

  AliAODEvent *Ev() { return (fEv!=0) ? (AliAODEvent*)fEv.GetObject() : 0; }
  TClonesArray *Di() { return (fDi!=0) ? (TClonesArray*)fDi.GetObject() : 0; } // Get dimuon array
  AliAODEventInfo* Ei() { return (fEi!=0) ? (AliAODEventInfo*)fEi.GetObject() : 0; }

//  AliAODHeader *GetHe() { return (fHe!=0) ? (AliAODHeader*)fHe.GetObject() : 0; }
//  AliAODTrack *GetTr();

  Bool_t IsHeaderAccessible(const Char_t *msg=0) const;

  protected:
  // Missing in AliAODHeader and added here
  Double_t fBeamEnergy; // Add beam energy not present in AliAODHeader
  UChar_t fMuonSingleLPtL0; // Decode trigger info
  UChar_t fMuonSingleHPtL0; // Decode trigger info
  UChar_t fMuonLikeLPtL0;   // Decode trigger info
  UChar_t fMuonLikeHPtL0;   // Decode trigger info
  UChar_t fMuonUnlikeLPtL0; // Decode trigger info
  UChar_t fMuonUnlikeHPtL0; // Decode trigger info

  // Data members to provide automatic access
  TRef fEv; // Event
  TRef fEi; // EventInfo
  TRef fHe; // Header
  TRef fTr; // Tracks
  TRef fDi; // Dimuons

  ClassDef(AliAODEventInfo,1)  // Additional header for MUON arm
};

#endif
 AliAODEventInfo.h:1
 AliAODEventInfo.h:2
 AliAODEventInfo.h:3
 AliAODEventInfo.h:4
 AliAODEventInfo.h:5
 AliAODEventInfo.h:6
 AliAODEventInfo.h:7
 AliAODEventInfo.h:8
 AliAODEventInfo.h:9
 AliAODEventInfo.h:10
 AliAODEventInfo.h:11
 AliAODEventInfo.h:12
 AliAODEventInfo.h:13
 AliAODEventInfo.h:14
 AliAODEventInfo.h:15
 AliAODEventInfo.h:16
 AliAODEventInfo.h:17
 AliAODEventInfo.h:18
 AliAODEventInfo.h:19
 AliAODEventInfo.h:20
 AliAODEventInfo.h:21
 AliAODEventInfo.h:22
 AliAODEventInfo.h:23
 AliAODEventInfo.h:24
 AliAODEventInfo.h:25
 AliAODEventInfo.h:26
 AliAODEventInfo.h:27
 AliAODEventInfo.h:28
 AliAODEventInfo.h:29
 AliAODEventInfo.h:30
 AliAODEventInfo.h:31
 AliAODEventInfo.h:32
 AliAODEventInfo.h:33
 AliAODEventInfo.h:34
 AliAODEventInfo.h:35
 AliAODEventInfo.h:36
 AliAODEventInfo.h:37
 AliAODEventInfo.h:38
 AliAODEventInfo.h:39
 AliAODEventInfo.h:40
 AliAODEventInfo.h:41
 AliAODEventInfo.h:42
 AliAODEventInfo.h:43
 AliAODEventInfo.h:44
 AliAODEventInfo.h:45
 AliAODEventInfo.h:46
 AliAODEventInfo.h:47
 AliAODEventInfo.h:48
 AliAODEventInfo.h:49
 AliAODEventInfo.h:50
 AliAODEventInfo.h:51
 AliAODEventInfo.h:52
 AliAODEventInfo.h:53
 AliAODEventInfo.h:54
 AliAODEventInfo.h:55
 AliAODEventInfo.h:56
 AliAODEventInfo.h:57
 AliAODEventInfo.h:58
 AliAODEventInfo.h:59
 AliAODEventInfo.h:60
 AliAODEventInfo.h:61
 AliAODEventInfo.h:62
 AliAODEventInfo.h:63
 AliAODEventInfo.h:64
 AliAODEventInfo.h:65
 AliAODEventInfo.h:66
 AliAODEventInfo.h:67
 AliAODEventInfo.h:68
 AliAODEventInfo.h:69
 AliAODEventInfo.h:70
 AliAODEventInfo.h:71
 AliAODEventInfo.h:72
 AliAODEventInfo.h:73
 AliAODEventInfo.h:74
 AliAODEventInfo.h:75
 AliAODEventInfo.h:76
 AliAODEventInfo.h:77
 AliAODEventInfo.h:78
 AliAODEventInfo.h:79
 AliAODEventInfo.h:80
 AliAODEventInfo.h:81
 AliAODEventInfo.h:82
 AliAODEventInfo.h:83
 AliAODEventInfo.h:84
 AliAODEventInfo.h:85
 AliAODEventInfo.h:86
 AliAODEventInfo.h:87
 AliAODEventInfo.h:88
 AliAODEventInfo.h:89
 AliAODEventInfo.h:90
 AliAODEventInfo.h:91
 AliAODEventInfo.h:92
 AliAODEventInfo.h:93
 AliAODEventInfo.h:94
 AliAODEventInfo.h:95
 AliAODEventInfo.h:96
 AliAODEventInfo.h:97
 AliAODEventInfo.h:98