Introduction of VZERO event-plane selection task that can be used in order to flatten...
[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) const;
56   void      SetVZEROEPParams(Int_t ring,
57                              Double_t meanX2, Double_t meanY2,
58                              Double_t aPlus, Double_t aMinus,
59                              Double_t lambdaPlus, Double_t lambdaMinus,
60                              Double_t cos8Psi);
61
62   void Reset();
63
64  private:
65    TVector2* fQVector;           // Q-Vector of event
66    TArrayF* fQContributionX;     // array of the tracks' contributions to X component of Q-Vector - index = track ID
67    TArrayF* fQContributionY;     // array of the tracks' contributions to Y component of Q-Vector - index = track ID
68    TArrayF* fQContributionXsub1; // array of the tracks' contributions to X component of Q-Vectorsub1 - index = track ID
69    TArrayF* fQContributionYsub1; // array of the tracks' contributions to Y component of Q-Vectorsub1 - index = track ID
70    TArrayF* fQContributionXsub2; // array of the tracks' contributions to X component of Q-Vectorsub2 - index = track ID
71    TArrayF* fQContributionYsub2; // array of the tracks' contributions to Y component of Q-Vectorsub2 - index = track ID
72    Double_t fEventplaneQ;        // Event plane angle from Q-Vector
73    TVector2* fQsub1;             // Q-Vector of subevent 1
74    TVector2* fQsub2;             // Q-Vector of subevent 2
75    Double_t fQsubRes;            // Difference of EP angles of subevents
76    Double_t fMeanX2[8];          // Mean Q^2_X for VZERO EP
77    Double_t fMeanY2[8];          // Mean Q^2_Y for VZERO EP
78    Double_t fAPlus[8];           // Q^2_X rescaling parameter for VZERO EP
79    Double_t fAMinus[8];          // Q^2_Y rescaling parameter for VZERO EP
80    Double_t fLambdaPlus[8];      // Q^2_X twisting parameter for VZERO EP
81    Double_t fLambdaMinus[8];     // Q^2_Y twisting parameter for VZERO EP 
82    Double_t fCos8Psi[8];         // 4th Fourier momenta used to flatten VZERO EP within a sector 
83
84   ClassDef(AliEventplane, 4)
85 };
86 #endif //ALIEVENTPLANE_H