#ifndef ALIFLOWVECTOR_H
#define ALIFLOWVECTOR_H
#include "TVector2.h"
#include "AliFlowTrackSimple.h"
class AliFlowTrackSimple;
class AliFlowVector: public TVector2 {
public:
AliFlowVector();
AliFlowVector(const AliFlowVector& aVector);
AliFlowVector(const TVector2 &p, Double_t m, Int_t h=2, Int_t poiType=0, Int_t s=1);
AliFlowVector(Double_t *y, Double_t m=1, Int_t h=2, Int_t poiType=0, Int_t s=-1);
AliFlowVector(Double_t x, Double_t y, Double_t m=1, Int_t h=2, Int_t poiType=0, Int_t s=-1);
virtual ~AliFlowVector();
void SetMagPhi(Double_t size, Double_t angle, Double_t mult=1);
AliFlowVector& operator=(const AliFlowVector& aVector);
AliFlowVector& operator+=(const AliFlowVector& aVector);
AliFlowVector& operator-=(const AliFlowVector& aVector);
AliFlowVector& operator*=(Double_t w);
AliFlowVector& operator/=(Double_t w){ (*this)*=(1.0/w); return *this;};
const AliFlowVector operator+(const AliFlowVector&a) const { AliFlowVector v(*this); return v+=a; };
const AliFlowVector operator-(const AliFlowVector&a) const { AliFlowVector v(*this); return v-=a; };
const AliFlowVector operator*(Double_t w) const { AliFlowVector v(*this); return v*=w; };
const AliFlowVector operator/(Double_t w) const { AliFlowVector v(*this); return v/=w; };
Int_t SubtractTrackWithDaughters( const AliFlowTrackSimple* track,
Double_t extraWeight=1.
);
Bool_t IsFolder() const {return kTRUE;};
void SetMult(Double_t mult) {fMult = mult;};
Double_t GetMult() const {return fMult;};
void SetHarmonic(Int_t h) {fHarmonic = h;}
Int_t GetHarmonic() const {return fHarmonic;}
void SetPOItype(Int_t t) {fPOItype=t;}
Int_t GetPOItype() const {return fPOItype;}
void SetSubeventNumber(Int_t n) {fSubeventNumber=n;}
Int_t GetSubeventNumber() const {return fSubeventNumber;}
void Clear(Option_t* option="");
private:
Double_t fMult;
Int_t fHarmonic;
Int_t fPOItype;
Int_t fSubeventNumber;
ClassDef(AliFlowVector, 2)
};
#endif