ROOT logo
#ifndef ALIESDFRIEND_H
#define ALIESDFRIEND_H

//-------------------------------------------------------------------------
//                     Class AliESDfriend
//               This class contains ESD additions
//       Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
//-------------------------------------------------------------------------

#include <TObject.h>
#include <TClonesArray.h>

#include "AliESDfriendTrack.h"
#include "AliVfriendEvent.h"

class AliESDVZEROfriend;
class AliESDTZEROfriend;

//_____________________________________________________________________________
class AliESDfriend : public AliVfriendEvent {
public:
  AliESDfriend();
  AliESDfriend(const AliESDfriend &);
  AliESDfriend& operator=(const AliESDfriend& esd);  
  virtual ~AliESDfriend();

  Int_t GetNumberOfTracks() const {return fTracks.GetEntriesFast();}
  AliESDfriendTrack *GetTrack(Int_t i) const {
     return (AliESDfriendTrack *)fTracks.At(i);
  }
  Int_t GetEntriesInTracks() const {return fTracks.GetEntries();}
  void AddTrack(const AliESDfriendTrack *t) {
     new(fTracks[fTracks.GetEntriesFast()]) AliESDfriendTrack(*t);
  }

  void AddTrackAt(const AliESDfriendTrack *t, Int_t i) {
     new(fTracks[i]) AliESDfriendTrack(*t);
  }

  void SetVZEROfriend(AliESDVZEROfriend * obj);
  AliESDVZEROfriend *GetVZEROfriend(){ return fESDVZEROfriend; }
  void SetTZEROfriend(AliESDTZEROfriend * obj);
  AliESDTZEROfriend *GetTZEROfriend(){ return fESDTZEROfriend; }

  void Ls() const {
	  return fTracks.ls();
  }

  void Reset();
  // bit manipulation for filtering
  void SetSkipBit(Bool_t skip){SetBit(23,skip);}
  Bool_t TestSkipBit() const { return TestBit(23); }

  //TPC cluster occupancy
  Int_t GetNclustersTPC(UInt_t sector) const {return (sector<72)?fNclustersTPC[sector]:0;}
  Int_t GetNclustersTPCused(UInt_t sector) const {return (sector<72)?fNclustersTPCused[sector]:0;}
  void SetNclustersTPC(UInt_t sector, Int_t occupancy) {if (sector<72) fNclustersTPC[sector]=occupancy;}
  void SetNclustersTPCused(UInt_t sector, Int_t occupancy) {if (sector<72) fNclustersTPCused[sector]=occupancy;}

protected:
  TClonesArray fTracks;    // ESD friend tracks
  AliESDVZEROfriend *fESDVZEROfriend; // VZERO object containing complete raw data
  AliESDTZEROfriend *fESDTZEROfriend; // TZERO calibration object
  
  Int_t fNclustersTPC[72]; //cluster occupancy per sector per sector
  Int_t fNclustersTPCused[72]; //number of clusters used in tracking per sector

  ClassDef(AliESDfriend,5) // ESD friend
};

#endif


 AliESDfriend.h:1
 AliESDfriend.h:2
 AliESDfriend.h:3
 AliESDfriend.h:4
 AliESDfriend.h:5
 AliESDfriend.h:6
 AliESDfriend.h:7
 AliESDfriend.h:8
 AliESDfriend.h:9
 AliESDfriend.h:10
 AliESDfriend.h:11
 AliESDfriend.h:12
 AliESDfriend.h:13
 AliESDfriend.h:14
 AliESDfriend.h:15
 AliESDfriend.h:16
 AliESDfriend.h:17
 AliESDfriend.h:18
 AliESDfriend.h:19
 AliESDfriend.h:20
 AliESDfriend.h:21
 AliESDfriend.h:22
 AliESDfriend.h:23
 AliESDfriend.h:24
 AliESDfriend.h:25
 AliESDfriend.h:26
 AliESDfriend.h:27
 AliESDfriend.h:28
 AliESDfriend.h:29
 AliESDfriend.h:30
 AliESDfriend.h:31
 AliESDfriend.h:32
 AliESDfriend.h:33
 AliESDfriend.h:34
 AliESDfriend.h:35
 AliESDfriend.h:36
 AliESDfriend.h:37
 AliESDfriend.h:38
 AliESDfriend.h:39
 AliESDfriend.h:40
 AliESDfriend.h:41
 AliESDfriend.h:42
 AliESDfriend.h:43
 AliESDfriend.h:44
 AliESDfriend.h:45
 AliESDfriend.h:46
 AliESDfriend.h:47
 AliESDfriend.h:48
 AliESDfriend.h:49
 AliESDfriend.h:50
 AliESDfriend.h:51
 AliESDfriend.h:52
 AliESDfriend.h:53
 AliESDfriend.h:54
 AliESDfriend.h:55
 AliESDfriend.h:56
 AliESDfriend.h:57
 AliESDfriend.h:58
 AliESDfriend.h:59
 AliESDfriend.h:60
 AliESDfriend.h:61
 AliESDfriend.h:62
 AliESDfriend.h:63
 AliESDfriend.h:64
 AliESDfriend.h:65
 AliESDfriend.h:66
 AliESDfriend.h:67
 AliESDfriend.h:68
 AliESDfriend.h:69
 AliESDfriend.h:70
 AliESDfriend.h:71
 AliESDfriend.h:72
 AliESDfriend.h:73