#ifndef ALIEVENTPLANE_H
#define ALIEVENTPLANE_H
#include "TNamed.h"
class TVector2;
class AliVTrack;
class TObjArray;
class TArrayF;
class AliVEvent;
class AliEventplane : public TNamed
{
public:
AliEventplane();
~AliEventplane();
AliEventplane(const AliEventplane& ep);
AliEventplane& operator=(const AliEventplane& ep);
virtual void CopyEP(AliEventplane& ep) const;
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;}
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;
TArrayF* fQContributionX;
TArrayF* fQContributionY;
TArrayF* fQContributionXsub1;
TArrayF* fQContributionYsub1;
TArrayF* fQContributionXsub2;
TArrayF* fQContributionYsub2;
Double_t fEventplaneQ;
TVector2* fQsub1;
TVector2* fQsub2;
Double_t fQsubRes;
Double_t fMeanX2[11];
Double_t fMeanY2[11];
Double_t fAPlus[11];
Double_t fAMinus[11];
Double_t fLambdaPlus[11];
Double_t fLambdaMinus[11];
Double_t fCos8Psi[11];
ClassDef(AliEventplane, 5)
};
#endif //ALIEVENTPLANE_H