ROOT logo
#ifndef ALIUNICOREVENTALICEESD_H
#define ALIUNICOREVENTALICEESD_H

/* Copyright(c) 1998-2048, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
/* $Id$ */

// Author: Dariusz Miskowiec <mailto:d.miskowiec@gsi.de> 2008

#include <cmath>
#include "TVector2.h"
#include "AliESDEvent.h"
//#include "AliPhysicsSelection.h"
#include "AliExternalTrackParam.h"
#include "AliUnicorEvent.h"

//class AliPhysicsSelection;
class TGraph;

//=============================================================================
class AliUnicorEventAliceESD : public AliUnicorEvent {

 public:
              AliUnicorEventAliceESD(AliESDEvent *esd=0);
	      //AliUnicorEventAliceESD(const AliUnicorEventAliceESD &ev): AliUnicorEvent(ev), fViper(ev.fViper), fESD(ev.fESD), fPhysicsSelection(ev.fPhysicsSelection){}
              AliUnicorEventAliceESD(const AliUnicorEventAliceESD &ev): AliUnicorEvent(ev), fViper(ev.fViper), fESD(ev.fESD) {}
  virtual     ~AliUnicorEventAliceESD();
  AliUnicorEventAliceESD &operator=(const AliUnicorEventAliceESD &source) {
    if(&source == this) return *this;
    AliUnicorEvent::operator=(source);
    fViper=source.fViper; fESD=source.fESD; return *this;}
  Double_t    Etamin() const {return -0.75;}
  Double_t    Etamax() const {return  0.75;}
  void        AttachTree(TTree *tr) {fESD->ReadFromTree(tr);}
  Bool_t      Good() const;
  //  Double_t    Centrality() const {return 0.9999*exp(-NGoodParticles()/1000.0);} // 7 for pp 900 GeV, 12 for pp 7 TeV, 1000  PbPb
  Double_t    Centrality() const; 
  void        RP(Double_t &qx, Double_t &qy) const {AliUnicorEvent::RP(qx,qy,2);}
  Double_t    RPphi() const {Double_t qx,qy; RP(qx,qy); return atan2(qy,qx);}
  Double_t    Zver() const {return fESD->GetPrimaryVertex()->GetZ()/12.0;}
  Int_t       NParticles() const {return fESD->GetNumberOfTracks();}

  Bool_t      ParticleGood(Int_t i, Int_t pidi=0) const;
  Double_t    ParticleP(Int_t i)     const {return GetTrackParam(i)->P();}
  Double_t    ParticleTheta(Int_t i) const {return GetTrackParam(i)->Theta();}
  Double_t    ParticlePhi(Int_t i)   const {return TVector2::Phi_mpi_pi(GetTrackParam(i)->Phi());}
  Double_t    ParticleDedx(Int_t i)  const {return fESD->GetTrack(i)->GetTPCsignal()/50.0;}
  Bool_t      PairGood(double p0, double the0, double phi0, double z0, 
		       double p1, double the1, double phi1, double z1) const;
  void        SetESD(AliESDEvent * const esd) {fESD = esd;}
  AliESDEvent *GetESD() const {return fESD;}
  //const AliExternalTrackParam *GetTrackParam(Int_t i) const {return fESD->GetTrack(i);}
  //const AliExternalTrackParam *GetTrackParam(Int_t i) const {return fESD->GetTrack(i)->GetConstrainedParam();}
  //const AliExternalTrackParam *GetTrackParam(Int_t i) const {return fESD->GetTrack(i)->GetInnerParam();} // not at vtx!
  const AliExternalTrackParam *GetTrackParam(Int_t i) const {return fESD->GetTrack(i)->GetTPCInnerParam();}

 protected:
  TGraph      *fViper;                    // V0 centrality percentile
  AliESDEvent *fESD;                      //! pointer to the actual source of data
  //  AliPhysicsSelection *fPhysicsSelection; //! interaction event filter

  ClassDef(AliUnicorEventAliceESD,0)
};
#endif 
//=============================================================================
 AliUnicorEventAliceESD.h:1
 AliUnicorEventAliceESD.h:2
 AliUnicorEventAliceESD.h:3
 AliUnicorEventAliceESD.h:4
 AliUnicorEventAliceESD.h:5
 AliUnicorEventAliceESD.h:6
 AliUnicorEventAliceESD.h:7
 AliUnicorEventAliceESD.h:8
 AliUnicorEventAliceESD.h:9
 AliUnicorEventAliceESD.h:10
 AliUnicorEventAliceESD.h:11
 AliUnicorEventAliceESD.h:12
 AliUnicorEventAliceESD.h:13
 AliUnicorEventAliceESD.h:14
 AliUnicorEventAliceESD.h:15
 AliUnicorEventAliceESD.h:16
 AliUnicorEventAliceESD.h:17
 AliUnicorEventAliceESD.h:18
 AliUnicorEventAliceESD.h:19
 AliUnicorEventAliceESD.h:20
 AliUnicorEventAliceESD.h:21
 AliUnicorEventAliceESD.h:22
 AliUnicorEventAliceESD.h:23
 AliUnicorEventAliceESD.h:24
 AliUnicorEventAliceESD.h:25
 AliUnicorEventAliceESD.h:26
 AliUnicorEventAliceESD.h:27
 AliUnicorEventAliceESD.h:28
 AliUnicorEventAliceESD.h:29
 AliUnicorEventAliceESD.h:30
 AliUnicorEventAliceESD.h:31
 AliUnicorEventAliceESD.h:32
 AliUnicorEventAliceESD.h:33
 AliUnicorEventAliceESD.h:34
 AliUnicorEventAliceESD.h:35
 AliUnicorEventAliceESD.h:36
 AliUnicorEventAliceESD.h:37
 AliUnicorEventAliceESD.h:38
 AliUnicorEventAliceESD.h:39
 AliUnicorEventAliceESD.h:40
 AliUnicorEventAliceESD.h:41
 AliUnicorEventAliceESD.h:42
 AliUnicorEventAliceESD.h:43
 AliUnicorEventAliceESD.h:44
 AliUnicorEventAliceESD.h:45
 AliUnicorEventAliceESD.h:46
 AliUnicorEventAliceESD.h:47
 AliUnicorEventAliceESD.h:48
 AliUnicorEventAliceESD.h:49
 AliUnicorEventAliceESD.h:50
 AliUnicorEventAliceESD.h:51
 AliUnicorEventAliceESD.h:52
 AliUnicorEventAliceESD.h:53
 AliUnicorEventAliceESD.h:54
 AliUnicorEventAliceESD.h:55
 AliUnicorEventAliceESD.h:56
 AliUnicorEventAliceESD.h:57
 AliUnicorEventAliceESD.h:58
 AliUnicorEventAliceESD.h:59
 AliUnicorEventAliceESD.h:60
 AliUnicorEventAliceESD.h:61
 AliUnicorEventAliceESD.h:62
 AliUnicorEventAliceESD.h:63
 AliUnicorEventAliceESD.h:64
 AliUnicorEventAliceESD.h:65