]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/JetTasks/AliAnalysisTaskMinijet.h
6954238782fc7c2c049ffbc10581256c64aadb70
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskMinijet.h
1 #ifndef ALIANALYSISTASKMINIJET_H\r
2 #define ALIANALYSISTASKMINIJET_H\r
3 \r
4 // Two-particle correlations using all particles over pt threshold\r
5 // Extract mini-jet yield and fragmentation properties via Delta-Phi histograms\r
6 // Can use ESD or AOD, reconstructed and Monte Carlo data as input\r
7 // Author: eva.sicking@cern.ch\r
8 \r
9 class TList;\r
10 class TH1F;\r
11 class TH2F;\r
12 class TProfile;\r
13 class THnSparse;\r
14 class AliESDtrackCuts;\r
15 \r
16 #include "AliAnalysisTaskSE.h"\r
17 #include <vector>\r
18 \r
19 class AliAnalysisTaskMinijet : public AliAnalysisTaskSE {\r
20  public:\r
21   AliAnalysisTaskMinijet(const char *name="<default name>");\r
22   virtual ~AliAnalysisTaskMinijet();\r
23   \r
24   virtual void UserCreateOutputObjects();\r
25   virtual void UserExec(Option_t* option);\r
26   virtual void Terminate(Option_t *);\r
27   virtual void SetCuts(AliESDtrackCuts* cuts){fCuts = cuts;}\r
28   \r
29   void         SetUseMC(Bool_t useMC=kTRUE, Bool_t mcOnly=kFALSE)    {fUseMC = useMC; fMcOnly=mcOnly;}\r
30   void         SetAnalyseOnlyPrimaries(Bool_t analysePrimOnly)       {fAnalysePrimOnly = analysePrimOnly;} // not used anymore\r
31   void         SetPtRange(Float_t ptMin, Float_t ptMax)              {fPtMin = ptMin; fPtMax = ptMax; }\r
32   void         SetTriggerPtCut(Float_t triggerPtCut)                 {fTriggerPtCut = triggerPtCut;}  \r
33   void         SetAssociatePtCut(Float_t associatePtCut)             {fAssociatePtCut = associatePtCut;} \r
34   void         SetModeEsdAod(Int_t mode)                             {fMode = mode;}\r
35   void         SetTriggerMask(Int_t triggerType)                     {fTriggerType = triggerType;}\r
36   void         SetFilterBit(Int_t filterBit)                         {fFilterBit = filterBit;}\r
37   void         SetMaxVertexZ(Float_t vertexZCut)                     {fVertexZCut = vertexZCut;}\r
38   void         SetMaxEta(Float_t etaCut)                             {fEtaCut = etaCut;}\r
39   void         SetMaxEtaSeed(Float_t etaCutSeed)                     {fEtaCutSeed = etaCutSeed;}\r
40   void         SetSelectParticles(Int_t selectParticles)             {fSelectParticles = selectParticles;}\r
41   void         SetSelectParticlesAssoc(Int_t selectParticlesAssoc)   {fSelectParticlesAssoc = selectParticlesAssoc;}\r
42 \r
43 \r
44  private:\r
45 \r
46   Int_t ReadEventESD         (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,\r
47                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
48                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
49   Int_t ReadEventESDRecMcProp(std::vector<Float_t> &pt,  std::vector<Float_t> &eta,\r
50                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
51                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
52   Int_t ReadEventESDMC       (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,\r
53                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
54                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
55   \r
56   Int_t ReadEventAOD         (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,  \r
57                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
58                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
59   Int_t ReadEventAODRecMcProp(std::vector<Float_t> &pt,  std::vector<Float_t> &eta,\r
60                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
61                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
62   Int_t ReadEventAODMC       (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,  \r
63                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
64                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
65   \r
66   void  Analyse         (const std::vector<Float_t> &pt, \r
67                          const std::vector<Float_t> &eta, \r
68                          const std::vector<Float_t> &phi, \r
69                          const std::vector<Short_t> &charge, \r
70                          const Int_t ntacks, const Int_t ntacklets=0, \r
71                          const Int_t nAll=0, const Int_t step=0);\r
72   \r
73   Bool_t                 SelectParticlePlusCharged(const Short_t charge, const Int_t pdg, const Bool_t prim);\r
74   Bool_t                 SelectParticle(const Short_t charge, const Int_t pdg, const Bool_t prim);\r
75   Bool_t                 CheckEvent(const Bool_t recVertex);\r
76   const Double_t*        CreateLogAxis(const Int_t nbins, const Double_t xmin, const Double_t xmax); \r
77   Bool_t                 CheckLikeSign(const Short_t chargeEventAxis, const Short_t chargeOthers);\r
78 \r
79 \r
80   Bool_t       fUseMC;                      // flag for Monte Carlo usages\r
81   Bool_t       fMcOnly;                     // flag defines, if only MC data is used in analysis or also reconstructed data\r
82   Double_t     fBSign;                      // magnetic field\r
83   Bool_t       fAnalysePrimOnly;            // flag for analysis of primaries only (also in reconstructed data)\r
84   Float_t      fPtMin;                      // set lower limit for pt acceptance for mutliplicity defintion\r
85   Float_t      fPtMax;                      // set upper limit for pt acceptance for mutliplicity defintion\r
86   AliESDtrackCuts* fCuts;                   // List of cuts for ESDs\r
87   Float_t      fTriggerPtCut;               // cut on particle pt used as event axis\r
88   Float_t      fAssociatePtCut;             // cut on particle pt used for correlations\r
89   Int_t        fMode;                       // ESD(=0) of AOD(=1) reading \r
90   Int_t        fTriggerType;                // sets trigger -> AliVEvent::kMB, AliVEvent::kHighMult\r
91   Int_t        fFilterBit;                  // Filter bit written in ESD filter, select track type\r
92   Float_t      fVertexZCut;                 // vertex cut\r
93   Float_t      fEtaCut;                     // eta acceptance cut\r
94   Float_t      fEtaCutSeed;                 // eta acceptance cut for seed\r
95   Int_t        fSelectParticles;            // only in cas of MC: use also neutral particles or not \r
96   Int_t        fSelectParticlesAssoc;       // only in cas of MC: use also neutral particles or not \r
97 \r
98   AliESDEvent *fESDEvent;                   //! esd event\r
99   AliAODEvent *fAODEvent;                   //! aod event\r
100   Int_t        fNMcPrimAccept;              // global variable for mc multiplucity\r
101   Int_t        fNRecAccept;                 // global variable for rec multiplucity\r
102   Int_t        fNMcPrimAcceptTracklet;      // global variable for mc multiplucity\r
103   Int_t        fNRecAcceptTracklet;         // global variable for rec multiplucity\r
104   Float_t      fVzEvent;                    // global variable for rec vertex position\r
105   Double_t     fMeanPtRec;                  // global variable for rec mean pt\r
106   Double_t     fLeadingPtRec;               // global variable for rec mean pt\r
107   \r
108   TList      *fHists;                       // output list\r
109   TH1F       *fStep;                        // how many events have passed which correction step\r
110   TH1F       *fHistPt;                      // Pt spectrum ESD\r
111   TH1F       *fHistPtMC;                    // Pt spectrum MC\r
112 \r
113   TH2F       *fNmcNch;                      // N mc - N ch rec\r
114   TProfile   *fPNmcNch;                     // N mc - N ch rec\r
115   TH2F       *fNmcNchVtx;                   // N mc - N ch rec for events with reconstructed vertex\r
116   TProfile   *fPNmcNchVtx;                  // N mc - N ch rec for events with reconstructed vertex\r
117   TH2F       *fNmcNchTracklet;              // N mc - N ch rec\r
118   TProfile   *fPNmcNchTracklet;             // N mc - N ch rec\r
119   TH2F       *fNmcNchVtxTracklet;           // N mc - N ch rec for events with reconstructed vertex\r
120   TProfile   *fPNmcNchVtxTracklet;          // N mc - N ch rec for events with reconstructed vertex\r
121   TH2F       *fChargedPi0;                  // charged versus charged+Pi0\r
122 \r
123   THnSparse   *fMapSingleTrig[6];           //! multi-dim histo for trigger track properties\r
124   THnSparse   *fMapPair[6];                 //! multi-dim histo for pair properties\r
125   THnSparse   *fMapEvent[6];                //! multi-dim histo for event properties\r
126   THnSparse   *fMapAll[6];                  //! multi-dim histo for properties of all analysed tracks\r
127   \r
128   TH1F       * fVertexZ[6];                 // z of vertex\r
129   TH1F       * fNcharge[6];                 // pt\r
130   TH1F       * fPt[6];                      // pt\r
131   TH1F       * fEta[6];                     // eta\r
132   TH1F       * fPhi[6];                     // phi\r
133   TH1F       * fDcaXY[6];                   // dca xy direction\r
134   TH1F       * fDcaZ[6];                    // dca z direction\r
135 \r
136   TH1F       * fPtSeed[6];                  // pt of seed (event axis)\r
137   TH1F       * fEtaSeed[6];                 // eta of seed \r
138   TH1F       * fPhiSeed[6];                 // phi of seed\r
139 \r
140   TH1F       * fPtOthers[6];                // pt of all other particels used in dEtadPhi\r
141   TH1F       * fEtaOthers[6];               // eta of all other particels used in dEtadPhi\r
142   TH1F       * fPhiOthers[6];               // phi of all other particels used in dEtadPhi\r
143   TH2F       * fPtEtaOthers[6];             // pt-eta of all other particels used in dEtadPhi\r
144 \r
145 \r
146   TH2F       * fPhiEta[6];                  // eta - phi\r
147   TH2F       * fDPhiDEtaEventAxis[6];       // correlation dEta-dPhi towards event axis\r
148   TH2F       * fDPhiDEtaEventAxisSeeds[6];  // correlation dEta-dPhi towards event axis of trigger particles\r
149   TH1F       * fTriggerNch[6];              // number of triggers with accepted-track number\r
150   TH2F       * fTriggerNchSeeds[6];         // number of triggers with accepted-track number\r
151   TH1F       * fTriggerTracklet[6];         // number of triggers with accepted-tracklet number\r
152   TH2F       * fNch07Nch[6];                // nCharged with pT>fTriggerPtCut vs nCharged\r
153   TProfile   * fPNch07Nch[6];               // nCharged with pT>fTriggerPtCut vs nCharged\r
154   \r
155   TH2F       * fNch07Tracklet[6];           // nCharged with pT>fTriggerPtCut vs nTracklet\r
156   TH2F       * fNchTracklet[6];             // nCharged vs nTracklet\r
157   TProfile   * fPNch07Tracklet[6];           // nCharged with pT>fTriggerPtCut vs nTracklet\r
158 \r
159   TH1F       * fDPhiEventAxis[6];           // delta phi of associate tracks to event axis\r
160   \r
161   AliAnalysisTaskMinijet(const AliAnalysisTaskMinijet&); // not implemented\r
162   AliAnalysisTaskMinijet& operator=(const AliAnalysisTaskMinijet&); // not implemented\r
163   \r
164   ClassDef(AliAnalysisTaskMinijet, 1); // example of analysis\r
165 };\r
166 \r
167 #endif\r