ROOT logo
#ifndef ALIUNICOREVENT_H
#define ALIUNICOREVENT_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> 2007

//=============================================================================
// parent class of all events; analyzers access data via this class
//=============================================================================

#include <cmath>
#include <TObject.h>

class TTree;

//=============================================================================
class AliUnicorEvent : public TObject {
 public:
  AliUnicorEvent() : TObject(){}                      // constructor
  virtual ~AliUnicorEvent()   {}                      // destructor

  // interface part

  virtual void        AttachTree(TTree *tr) = 0;
  virtual Double_t    Etamin() const = 0;         // experiment's acceptance
  virtual Double_t    Etamax() const = 0;
  virtual Bool_t      Good() const = 0;  
  virtual Double_t    Centrality() const = 0;     // centrality (0,1); 0 is most central
  virtual void        RP(Double_t &qx, Double_t &qy) const = 0;
  virtual Double_t    RPphi() const = 0;
  virtual Double_t    Zver() const = 0;           // z-vertex (-1,1)
  virtual Int_t       NParticles() const = 0;     // number of tracks

  virtual Bool_t      ParticleGood(Int_t i, Int_t pidi=0) const = 0;
  virtual Double_t    ParticleP(Int_t i) const = 0;
  virtual Double_t    ParticleTheta(Int_t i) const = 0;
  virtual Double_t    ParticlePhi(Int_t i) const = 0;
  virtual Double_t    ParticleDedx(Int_t i) const = 0;
  virtual Bool_t      PairGood(double p0, double the0, double phi0, double z0, 
			       double p1, double the1, double phi1, double z1) const = 0;

  // toolkit part

  Int_t    NGoodParticles() const {int n=0; for (int i=0; i<NParticles(); i++) if (ParticleGood(i)) n++; return n;}
  void     RP(Double_t &qx, Double_t &qy, Int_t harmonic) const;
  Double_t ParticlePt(Int_t i) const {return ParticleP(i)*sin(ParticleTheta(i));}
  Double_t ParticlePz(Int_t i) const {return ParticleP(i)*cos(ParticleTheta(i));}
  Double_t ParticleEta(Int_t i) const;
  Double_t ParticleY(Int_t i, Double_t mass) const; 

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