ROOT logo
#ifndef ALIEVENTPLANE_H
#define ALIEVENTPLANE_H

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

//*****************************************************
//   Class AliEventplane
//   author: Alberica Toia, Johanna Gramling
//*****************************************************

#include "TNamed.h"

class TVector2;
class AliVTrack;
class TObjArray;
class TArrayF;
class AliVEvent;

class AliEventplane : public TNamed
{
 public:

  AliEventplane();  /// constructor
  ~AliEventplane();  /// destructor
  AliEventplane(const AliEventplane& ep); /// copy constructor
  AliEventplane& operator=(const AliEventplane& ep);   /// assignment operator
  virtual void CopyEP(AliEventplane& ep) const;

  /// set event plane result
  void SetQVector(TVector2* qvector) {fQVector = qvector;}
  void SetEventplaneQ(Double_t evp) {fEventplaneQ = evp;} 
  void SetQsub(TVector2* qs1, TVector2* qs2) {fQsub1 = qs1;fQsub2 = qs2;}
  void SetQsubRes (Double_t qsr) {fQsubRes = qsr;}

  /// get event plane result
  TVector2* GetQVector(); 
  Double_t  GetQContributionX(AliVTrack* track);
  Double_t  GetQContributionY(AliVTrack* track);
  Double_t  GetQContributionXsub1(AliVTrack* track);
  Double_t  GetQContributionYsub1(AliVTrack* track);
  Double_t  GetQContributionXsub2(AliVTrack* track);
  Double_t  GetQContributionYsub2(AliVTrack* track);
  TArrayF*  GetQContributionXArray() { return fQContributionX; }
  TArrayF*  GetQContributionYArray() { return fQContributionY; }
  TArrayF*  GetQContributionXArraysub1() { return fQContributionXsub1; }
  TArrayF*  GetQContributionYArraysub1() { return fQContributionYsub1; }
  TArrayF*  GetQContributionXArraysub2() { return fQContributionXsub2; }
  TArrayF*  GetQContributionYArraysub2() { return fQContributionYsub2; }
  Double_t  GetEventplane(const char *x, const AliVEvent *event = NULL, Int_t harmonic = 2) const;
  TVector2* GetQsub1();
  TVector2* GetQsub2();
  Double_t  GetQsubRes();
  Bool_t    IsEventInEventplaneClass(Double_t a, Double_t b, const char *method);
  Double_t  CalculateVZEROEventPlane(const AliVEvent *event, Int_t firstRing, Int_t lastRing, Int_t harmonic, Double_t &qxTot, Double_t &qyTot) const;
  Double_t  CalculateVZEROEventPlane(const AliVEvent *  event, Int_t ring, Int_t harmonic, Double_t &qx, Double_t &qy) const;
  void      SetVZEROEPParams(Int_t ring,
			     Double_t meanX2, Double_t meanY2,
			     Double_t aPlus, Double_t aMinus,
			     Double_t lambdaPlus, Double_t lambdaMinus,
			     Double_t cos8Psi);

  void Reset();

 private:
   TVector2* fQVector;		 // Q-Vector of event
   TArrayF* fQContributionX;	 // array of the tracks' contributions to X component of Q-Vector - index = track ID
   TArrayF* fQContributionY;	 // array of the tracks' contributions to Y component of Q-Vector - index = track ID
   TArrayF* fQContributionXsub1; // array of the tracks' contributions to X component of Q-Vectorsub1 - index = track ID
   TArrayF* fQContributionYsub1; // array of the tracks' contributions to Y component of Q-Vectorsub1 - index = track ID
   TArrayF* fQContributionXsub2; // array of the tracks' contributions to X component of Q-Vectorsub2 - index = track ID
   TArrayF* fQContributionYsub2; // array of the tracks' contributions to Y component of Q-Vectorsub2 - index = track ID
   Double_t fEventplaneQ;	 // Event plane angle from Q-Vector
   TVector2* fQsub1;		 // Q-Vector of subevent 1
   TVector2* fQsub2;		 // Q-Vector of subevent 2
   Double_t fQsubRes;		 // Difference of EP angles of subevents
   Double_t fMeanX2[11];         // Mean Q^2_X for VZERO EP
   Double_t fMeanY2[11];         // Mean Q^2_Y for VZERO EP
   Double_t fAPlus[11];          // Q^2_X rescaling parameter for VZERO EP
   Double_t fAMinus[11];         // Q^2_Y rescaling parameter for VZERO EP
   Double_t fLambdaPlus[11];     // Q^2_X twisting parameter for VZERO EP
   Double_t fLambdaMinus[11];    // Q^2_Y twisting parameter for VZERO EP 
   Double_t fCos8Psi[11];        // 4th Fourier momenta used to flatten VZERO EP within a sector 

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