Added V0A23 (V0 rings 2-3), V0C01 (V0 rings 0-1) and V0S = V0A23+V0C01
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliEventplane.h
1 #ifndef ALIEVENTPLANE_H
2 #define ALIEVENTPLANE_H
3
4 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //*****************************************************
8 //   Class AliEventplane
9 //   author: Alberica Toia, Johanna Gramling
10 //*****************************************************
11
12 #include "TNamed.h"
13
14 class TVector2;
15 class AliVTrack;
16 class TObjArray;
17 class TArrayF;
18 class AliVEvent;
19
20 class AliEventplane : public TNamed
21 {
22  public:
23
24   AliEventplane();  /// constructor
25   ~AliEventplane();  /// destructor
26   AliEventplane(const AliEventplane& ep); /// copy constructor
27   AliEventplane& operator=(const AliEventplane& ep);   /// assignment operator
28   virtual void CopyEP(AliEventplane& ep) const;
29
30   /// set event plane result
31   void SetQVector(TVector2* qvector) {fQVector = qvector;}
32   void SetEventplaneQ(Double_t evp) {fEventplaneQ = evp;} 
33   void SetQsub(TVector2* qs1, TVector2* qs2) {fQsub1 = qs1;fQsub2 = qs2;}
34   void SetQsubRes (Double_t qsr) {fQsubRes = qsr;}
35
36   /// get event plane result
37   TVector2* GetQVector(); 
38   Double_t  GetQContributionX(AliVTrack* track);
39   Double_t  GetQContributionY(AliVTrack* track);
40   Double_t  GetQContributionXsub1(AliVTrack* track);
41   Double_t  GetQContributionYsub1(AliVTrack* track);
42   Double_t  GetQContributionXsub2(AliVTrack* track);
43   Double_t  GetQContributionYsub2(AliVTrack* track);
44   TArrayF*  GetQContributionXArray() { return fQContributionX; }
45   TArrayF*  GetQContributionYArray() { return fQContributionY; }
46   TArrayF*  GetQContributionXArraysub1() { return fQContributionXsub1; }
47   TArrayF*  GetQContributionYArraysub1() { return fQContributionYsub1; }
48   TArrayF*  GetQContributionXArraysub2() { return fQContributionXsub2; }
49   TArrayF*  GetQContributionYArraysub2() { return fQContributionYsub2; }
50   Double_t  GetEventplane(const char *x, const AliVEvent *event = NULL, Int_t harmonic = 2) const;
51   TVector2* GetQsub1();
52   TVector2* GetQsub2();
53   Double_t  GetQsubRes();
54   Bool_t    IsEventInEventplaneClass(Double_t a, Double_t b, const char *method);
55   Double_t  CalculateVZEROEventPlane(const AliVEvent *event, Int_t firstRing, Int_t lastRing, Int_t harmonic, Double_t &qxTot, Double_t &qyTot) const;
56   Double_t  CalculateVZEROEventPlane(const AliVEvent *  event, Int_t ring, Int_t harmonic, Double_t &qx, Double_t &qy) const;
57   void      SetVZEROEPParams(Int_t ring,
58                              Double_t meanX2, Double_t meanY2,
59                              Double_t aPlus, Double_t aMinus,
60                              Double_t lambdaPlus, Double_t lambdaMinus,
61                              Double_t cos8Psi);
62
63   void Reset();
64
65  private:
66    TVector2* fQVector;           // Q-Vector of event
67    TArrayF* fQContributionX;     // array of the tracks' contributions to X component of Q-Vector - index = track ID
68    TArrayF* fQContributionY;     // array of the tracks' contributions to Y component of Q-Vector - index = track ID
69    TArrayF* fQContributionXsub1; // array of the tracks' contributions to X component of Q-Vectorsub1 - index = track ID
70    TArrayF* fQContributionYsub1; // array of the tracks' contributions to Y component of Q-Vectorsub1 - index = track ID
71    TArrayF* fQContributionXsub2; // array of the tracks' contributions to X component of Q-Vectorsub2 - index = track ID
72    TArrayF* fQContributionYsub2; // array of the tracks' contributions to Y component of Q-Vectorsub2 - index = track ID
73    Double_t fEventplaneQ;        // Event plane angle from Q-Vector
74    TVector2* fQsub1;             // Q-Vector of subevent 1
75    TVector2* fQsub2;             // Q-Vector of subevent 2
76    Double_t fQsubRes;            // Difference of EP angles of subevents
77    Double_t fMeanX2[11];         // Mean Q^2_X for VZERO EP
78    Double_t fMeanY2[11];         // Mean Q^2_Y for VZERO EP
79    Double_t fAPlus[11];          // Q^2_X rescaling parameter for VZERO EP
80    Double_t fAMinus[11];         // Q^2_Y rescaling parameter for VZERO EP
81    Double_t fLambdaPlus[11];     // Q^2_X twisting parameter for VZERO EP
82    Double_t fLambdaMinus[11];    // Q^2_Y twisting parameter for VZERO EP 
83    Double_t fCos8Psi[11];        // 4th Fourier momenta used to flatten VZERO EP within a sector 
84
85   ClassDef(AliEventplane, 5)
86 };
87 #endif //ALIEVENTPLANE_H