Coding rule violations corrected.
[u/mrichter/AliRoot.git] / ANALYSIS / AliEPSelectionTask.h
1 #ifndef ALIEPSELECTIONTASK_H
2 #define ALIEPSELECTIONTASK_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 AliEPSelectionTask
9 //   author: Alberica Toia, Johanna Gramling
10 //*****************************************************
11
12 #include "AliAnalysisTaskSE.h"
13
14 class TFile;
15 class TH1F;
16 class TH2F;
17 class TList;
18 class TString;
19 class TVector2;
20 class TObjArray;
21
22 class AliESDEvent;
23 class AliESDtrackCuts;
24 class AliESDtrack;
25 class AliEventplane;
26 class AliOADBContainer;
27
28 class AliEPSelectionTask : public AliAnalysisTaskSE {
29
30  public:
31
32   AliEPSelectionTask();
33   AliEPSelectionTask(const char *name);
34   virtual ~AliEPSelectionTask();
35
36   // Implementation of interface methods
37   virtual void UserCreateOutputObjects();
38   virtual void UserExec(Option_t *option);
39   virtual void Terminate(Option_t *option);
40   
41   TVector2 GetQ(AliEventplane* EP, TObjArray* event);
42   void GetQsub(TVector2& Qsub1, TVector2& Qsub2, TObjArray* event);
43   Double_t GetWeight(AliESDtrack* track);
44   Double_t GetPhiWeight(AliESDtrack* track);
45
46   virtual void  SetDebugLevel(Int_t level) {fDebug = level;}
47   void SetInput(const char* input)         {fAnalysisInput = input;}
48   void SetUseMCRP()                        {fUseMCRP = kTRUE;}
49   void SetUsePhiWeight()                   {fUsePhiWeight = kTRUE;}
50   void SetUsePtWeight()                    {fUsePtWeight = kTRUE;}
51   void SetSaveTrackContribution()          {fSaveTrackContribution = kTRUE;}
52   void SetTrackType(TString tracktype);
53   void SetPhiDist();
54   void SetPersonalESDtrackCuts(AliESDtrackCuts* trackcuts);
55   void SetPersonalPhiDistribution(const char* filename, char* listname);
56   
57  private:
58    
59   AliEPSelectionTask(const AliEPSelectionTask& ep);
60   AliEPSelectionTask& operator= (const AliEPSelectionTask& ep); 
61
62   TString  fAnalysisInput;              // "ESD", "AOD"
63   TString  fTrackType;                  // "GLOBAL", "TPC"
64   Bool_t   fUseMCRP;                    // i.e. usable for Therminator, when MC RP is provided
65   Bool_t   fUsePhiWeight;               // use of phi weights
66   Bool_t   fUsePtWeight;                // use of pT weights
67   Bool_t   fSaveTrackContribution;      // storage of contribution of each track to Q-Vector
68   Bool_t   fuserphidist;                // bool, if personal phi distribution should be used
69   Bool_t   fusercuts;                   // bool, if personal cuts should be used
70   Int_t    frunNumber;                  // runnumber
71   
72   AliESDtrackCuts* fESDtrackCuts;       //! track cuts
73   
74   TObjArray* ftracklist;                //! list of accepted tracks for Q-Vector
75   AliOADBContainer* fEPContainer;       //! OADB Container
76   TH1F*  fPhiDist;                      // Phi distribution used to calculate phi weights
77
78   TVector2* fQVector;                   //! Q-Vector of the event  
79   Double_t* fQContributionX;            //! array of the tracks' contributions to X component of Q-Vector - index = track ID
80   Double_t* fQContributionY;            //! array of the tracks' contributions to Y component of Q-Vector - index = track ID
81   Double_t  fEventplaneQ;               //! Event plane angle from Q-Vector
82   TVector2* fQsub1;                     //! Q-Vector of sub-event 1
83   TVector2* fQsub2;                     //! Q-Vector of sub-event 2
84   Double_t  fQsubRes;                   //! Difference of EP angles of subevents
85   
86   TList* fOutputList;                   // Output histograms
87   TH1F*  fHOutEventplaneQ;              //! control histogram: Event Plane angle
88   TH1F*  fHOutPhi;                      //! control histogram: original phi distribution
89   TH1F*  fHOutPhiCorr;                  //! control histogram: corrected phi distribution
90   TH2F*  fHOutsub1sub2;                 //! control histogram: correlation of EP from subevents
91   TH2F*  fHOutNTEPRes;                  //! control histogram: Difference of EP angles of subevents vs Nch
92   TH2F*  fHOutPTPsi;                    //! control histogram: Difference of EP angle and emission angle of track vs track pT
93   TH2F*  fHOutDiff;                     //! control histogram: Difference of MC RP and EP - only filled if fUseMCRP is true!
94   TH2F*  fHOutleadPTPsi;                //! control histogram: emission angle of leading pT track vs EP angle
95
96   ClassDef(AliEPSelectionTask,3); 
97 };
98
99 #endif
100