new functions, mc analysis can be performed also for pi0 and k0. eta of seed can...
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskMinijet.h
1 #ifndef ALIANALYSISTASKMINIJET_H\r
2 #define ALIANALYSISTASKMINIJET_H\r
3 \r
4 // analysis task performing mini jet analysis (use ESD or AOD as input)\r
5 // Author: eva.sicking@cern.ch\r
6 \r
7 class TList;\r
8 class TH1F;\r
9 class TH2F;\r
10 class TProfile;\r
11 \r
12 class AliESDtrackCuts;\r
13 \r
14 \r
15 #include "AliAnalysisTaskSE.h"\r
16 \r
17 class AliAnalysisTaskMinijet : public AliAnalysisTaskSE {\r
18  public:\r
19   AliAnalysisTaskMinijet(const char *name="<default name>");\r
20   virtual ~AliAnalysisTaskMinijet();\r
21   \r
22   virtual void   UserCreateOutputObjects();\r
23   virtual void   UserExec(Option_t* option);\r
24   virtual void   Terminate(Option_t *);\r
25   \r
26   Int_t LoopESD  (Float_t **pt, Float_t **eta, Float_t **phi, Int_t **nTracksTracklets);\r
27   Int_t LoopESDMC(Float_t **pt, Float_t **eta, Float_t **phi, Int_t **nTracksTracklets);\r
28   Int_t LoopAOD  (Float_t **pt, Float_t **eta, Float_t **phi, Int_t **nTracksTracklets);\r
29   Int_t LoopAODMC(Float_t **pt, Float_t **eta, Float_t **phi, Int_t **nTracksTracklets);\r
30   void  Analyse  (Float_t* pt, Float_t* eta, Float_t* phi, Int_t ntacks, Int_t ntacklets=0,Int_t nAll=0, Int_t mode=0);\r
31   void  CleanArrays(Float_t* pt, Float_t* eta, Float_t* phi, Int_t* nTracksTracklets=0);\r
32   Bool_t SelectParticlePlusCharged(Int_t charge, Int_t pdg, Bool_t prim);\r
33   Bool_t SelectParticle(Int_t charge, Int_t pdg, Bool_t prim);\r
34 \r
35 \r
36   void UseMC(Bool_t useMC=kTRUE, Bool_t mcOnly=kFALSE)    {fUseMC = useMC; fMcOnly=mcOnly;}\r
37 \r
38   virtual void   SetCuts(AliESDtrackCuts* cuts)           {fCuts = cuts;}\r
39 \r
40   void   SetRadiusCut(Float_t radiusCut)           {fRadiusCut = radiusCut;}  \r
41   void   SetTriggerPtCut(Float_t triggerPtCut)     {fTriggerPtCut = triggerPtCut;}  \r
42   void   SetAssociatePtCut(Float_t associatePtCut) {fAssociatePtCut = associatePtCut;} \r
43   void   SetEventAxis(Int_t leadingOrRandom)       {fLeadingOrRandom = leadingOrRandom;}  \r
44   void   SetMode(Int_t mode)                       {fMode = mode;}\r
45   void   SetMaxVertexZ(Float_t vertexZCut)         {fVertexZCut = vertexZCut;}\r
46   void   SetMaxEta(Float_t etaCut)                 {fEtaCut = etaCut;}\r
47   void   SetMaxEtaSeed(Float_t etaCutSeed)         {fEtaCutSeed = etaCutSeed;}\r
48 \r
49   void   SelectParticles(Int_t selectParticles)    {fSelectParticles = selectParticles;}\r
50 \r
51  private:\r
52   Bool_t       fUseMC;\r
53   Bool_t       fMcOnly;\r
54   AliESDtrackCuts* fCuts;                   // List of cuts for ESDs\r
55   Float_t      fRadiusCut;                  // radius cut \r
56   Float_t      fTriggerPtCut;               // cut on particle pt used as event axis\r
57   Float_t      fAssociatePtCut;             // cut on particle pt used for correlations\r
58   Int_t        fLeadingOrRandom;            // event axis:leading track or random track\r
59   Int_t        fMode;                       // ESD(=0) of AOD(=1) reading \r
60   Float_t      fVertexZCut;                 // vertex cut\r
61   Float_t      fEtaCut;                     // eta acceptance cut\r
62   Float_t      fEtaCutSeed;                 // eta acceptance cut for seed\r
63   Int_t        fSelectParticles;            // only in cas of MC: use also neutral particles or not \r
64 \r
65   AliESDEvent *fESDEvent;                   //! esd event\r
66   AliAODEvent *fAODEvent;                   //! aod event\r
67   \r
68   TList       *fHists;                      // output list\r
69   TH1F        *fHistPt;                     // Pt spectrum ESD\r
70   TH1F        *fHistPtMC;                   // Pt spectrum MC\r
71   TH2F        *fChargedPi0;                 // charged versus charged+Pi0\r
72   TH1F       * fVertexZ[4];                 // z of vertex\r
73 \r
74   TH1F       * fPt[4];                      // pt\r
75   TH1F       * fEta[4];                     // et\r
76   TH1F       * fPhi[4];                     // phi\r
77 \r
78   TH1F       * fPtSeed[4];                  // pt of seed (event axis)\r
79   TH1F       * fEtaSeed[4];                 // eta of seed \r
80   TH1F       * fPhiSeed[4];                 // phi of seed\r
81 \r
82   TH2F       * fPhiEta[4];                  // eta - phi\r
83   TH2F       * fDPhiDEtaEventAxis[4];       // correlation dEta-dPhi towards event axis\r
84   TH1F       * fTriggerNch[4];              // number of triggers with accepted-track number\r
85   TH1F       * fTriggerTracklet[4];         // number of triggers with accepted-tracklet number\r
86   TH2F       * fNch07Nch[4];                // nCharged with pT>fTriggerPtCut vs nCharged\r
87   TProfile   * pNch07Nch[4];                // nCharged with pT>fTriggerPtCut vs nCharged\r
88   TH2F       * fNch07Tracklet[4];           // nCharged with pT>fTriggerPtCut vs nTracklet\r
89   TH2F       * fNchTracklet[4];             // nCharged vs nTracklet\r
90   TProfile   * pNch07Tracklet[4];           // nCharged with pT>fTriggerPtCut vs nTracklet\r
91 \r
92   TH1F       * fDPhiEventAxisNchBin[4][150];// delta phi of associate tracks to event axis per Nch bin\r
93   TH1F       * fDPhiEventAxisNchBinTrig[4][150];// "" for all possoble trigger particles\r
94 \r
95   TH1F       * fDPhiEventAxisTrackletBin[4][150]; // delta phi of associate tracks to event axis per Nch bin\r
96   TH1F       * fDPhiEventAxisTrackletBinTrig[4][150]; // "" for all possible trigger particles\r
97 \r
98   AliAnalysisTaskMinijet(const AliAnalysisTaskMinijet&); // not implemented\r
99   AliAnalysisTaskMinijet& operator=(const AliAnalysisTaskMinijet&); // not implemented\r
100   \r
101   ClassDef(AliAnalysisTaskMinijet, 1); // example of analysis\r
102 };\r
103 \r
104 #endif\r