]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/CorrelationsDPhi/AliAnalysisTaskMinijet.h
Add additional quaity check for AOD vertex and control histograms. (Using this additi...
[u/mrichter/AliRoot.git] / PWG4 / CorrelationsDPhi / 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   void         SetCheckSDD (Bool_t checkSDD, Int_t selOption)        {fCheckSDD = checkSDD; fSelOption = selOption;}\r
43 \r
44 \r
45  private:\r
46 \r
47   Int_t ReadEventESD         (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,\r
48                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
49                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
50   Int_t ReadEventESDRecMcProp(std::vector<Float_t> &pt,  std::vector<Float_t> &eta,\r
51                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
52                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
53   Int_t ReadEventESDMC       (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,\r
54                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
55                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
56   \r
57   Int_t ReadEventAOD         (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,  \r
58                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
59                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
60   Int_t ReadEventAODRecMcProp(std::vector<Float_t> &pt,  std::vector<Float_t> &eta,\r
61                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
62                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
63   Int_t ReadEventAODMC       (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,  \r
64                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,\r
65                               std::vector<Int_t> &nTracksTracklets, const Int_t step);\r
66   \r
67   void  Analyse         (const std::vector<Float_t> &pt, \r
68                          const std::vector<Float_t> &eta, \r
69                          const std::vector<Float_t> &phi, \r
70                          const std::vector<Short_t> &charge, \r
71                          const Int_t ntacks, const Int_t ntacklets=0, \r
72                          const Int_t nAll=0, const Int_t step=0);\r
73   \r
74   Bool_t                 SelectParticlePlusCharged(const Short_t charge, const Int_t pdg, const Bool_t prim);\r
75   Bool_t                 SelectParticle(const Short_t charge, const Int_t pdg, const Bool_t prim);\r
76   Bool_t                 CheckEvent(const Bool_t recVertex);\r
77   const Double_t*        CreateLogAxis(const Int_t nbins, const Double_t xmin, const Double_t xmax); \r
78   Bool_t                 CheckLikeSign(const Short_t chargeEventAxis, const Short_t chargeOthers);\r
79 \r
80 \r
81   Bool_t       fUseMC;                      // flag for Monte Carlo usages\r
82   Bool_t       fMcOnly;                     // flag defines, if only MC data is used in analysis or also reconstructed data\r
83   Double_t     fBSign;                      // magnetic field\r
84   Bool_t       fAnalysePrimOnly;            // flag for analysis of primaries only (also in reconstructed data)\r
85   Float_t      fPtMin;                      // set lower limit for pt acceptance for mutliplicity defintion\r
86   Float_t      fPtMax;                      // set upper limit for pt acceptance for mutliplicity defintion\r
87   AliESDtrackCuts* fCuts;                   // List of cuts for ESDs\r
88   Float_t      fTriggerPtCut;               // cut on particle pt used as event axis\r
89   Float_t      fAssociatePtCut;             // cut on particle pt used for correlations\r
90   Int_t        fMode;                       // ESD(=0) of AOD(=1) reading \r
91   Int_t        fTriggerType;                // sets trigger -> AliVEvent::kMB, AliVEvent::kHighMult\r
92   Int_t        fFilterBit;                  // Filter bit written in ESD filter, select track type\r
93   Float_t      fVertexZCut;                 // vertex cut\r
94   Float_t      fEtaCut;                     // eta acceptance cut\r
95   Float_t      fEtaCutSeed;                 // eta acceptance cut for seed\r
96   Int_t        fSelectParticles;            // only in cas of MC: use also neutral particles or not \r
97   Int_t        fSelectParticlesAssoc;       // only in cas of MC: use also neutral particles or not \r
98   Bool_t       fCheckSDD;                   // check if SDD was in read out partition (needed for LHC11a)\r
99   Int_t        fSelOption;                  // 0 = use hit in SDD for event selection, 1 = use trigger for event selection\r
100 \r
101   AliESDEvent *fESDEvent;                   //! esd event\r
102   AliAODEvent *fAODEvent;                   //! aod event\r
103   Int_t        fNMcPrimAccept;              // global variable for mc multiplucity\r
104   Int_t        fNRecAccept;                 // global variable for rec multiplucity\r
105   Int_t        fNMcPrimAcceptTracklet;      // global variable for mc multiplucity\r
106   Int_t        fNRecAcceptTracklet;         // global variable for rec multiplucity\r
107   Float_t      fVzEvent;                    // global variable for rec vertex position\r
108   Double_t     fMeanPtRec;                  // global variable for rec mean pt\r
109   Double_t     fLeadingPtRec;               // global variable for rec mean pt\r
110 \r
111   TList      *fHists;                       // output list\r
112   TH1F       *fStep;                        // how many events have passed which correction step\r
113   TH1F       *fHistPt;                      // Pt spectrum ESD\r
114   TH1F       *fHistPtMC;                    // Pt spectrum MC\r
115   TH2F       *fNContrNtracklets;            // controll histogram for vertex->nContributers and number of tracklets\r
116   TH2F       *fNContrNtracks;               // controll histogram for vertex->nContributers and number of tracks\r
117 \r
118   TH2F       *fNmcNch;                      // N mc - N ch rec\r
119   TProfile   *fPNmcNch;                     // N mc - N ch rec\r
120   TH2F       *fNmcNchVtx;                   // N mc - N ch rec for events with reconstructed vertex\r
121   TProfile   *fPNmcNchVtx;                  // N mc - N ch rec for events with reconstructed vertex\r
122   TH2F       *fNmcNchTracklet;              // N mc - N ch rec\r
123   TProfile   *fPNmcNchTracklet;             // N mc - N ch rec\r
124   TH2F       *fNmcNchVtxTracklet;           // N mc - N ch rec for events with reconstructed vertex\r
125   TProfile   *fPNmcNchVtxTracklet;          // N mc - N ch rec for events with reconstructed vertex\r
126   TH2F       *fChargedPi0;                  // charged versus charged+Pi0\r
127   TH1F       *fVertexCheck;                 // check which fraction of events has vtx_rec but no good vtx_mc\r
128 \r
129   THnSparse  *fMapSingleTrig[6];            //! multi-dim histo for trigger track properties\r
130   THnSparse  *fMapPair[6];                  //! multi-dim histo for pair properties\r
131   THnSparse  *fMapEvent[6];                 //! multi-dim histo for event properties\r
132   THnSparse  *fMapAll[6];                   //! multi-dim histo for properties of all analysed tracks\r
133   \r
134   TH1F       * fVertexZ[6];                 // z of vertex\r
135   TH1F       * fNcharge[6];                 // pt\r
136   TH1F       * fPt[6];                      // pt\r
137   TH1F       * fEta[6];                     // eta\r
138   TH1F       * fPhi[6];                     // phi\r
139   TH1F       * fDcaXY[6];                   // dca xy direction\r
140   TH1F       * fDcaZ[6];                    // dca z direction\r
141 \r
142   TH1F       * fPtSeed[6];                  // pt of seed (event axis)\r
143   TH1F       * fEtaSeed[6];                 // eta of seed \r
144   TH1F       * fPhiSeed[6];                 // phi of seed\r
145 \r
146   TH1F       * fPtOthers[6];                // pt of all other particels used in dEtadPhi\r
147   TH1F       * fEtaOthers[6];               // eta of all other particels used in dEtadPhi\r
148   TH1F       * fPhiOthers[6];               // phi of all other particels used in dEtadPhi\r
149   TH2F       * fPtEtaOthers[6];             // pt-eta of all other particels used in dEtadPhi\r
150 \r
151 \r
152   TH2F       * fPhiEta[6];                  // eta - phi\r
153   TH2F       * fDPhiDEtaEventAxis[6];       // correlation dEta-dPhi towards event axis\r
154   TH2F       * fDPhiDEtaEventAxisSeeds[6];  // correlation dEta-dPhi towards event axis of trigger particles\r
155   TH1F       * fTriggerNch[6];              // number of triggers with accepted-track number\r
156   TH2F       * fTriggerNchSeeds[6];         // number of triggers with accepted-track number\r
157   TH1F       * fTriggerTracklet[6];         // number of triggers with accepted-tracklet number\r
158   TH2F       * fNch07Nch[6];                // nCharged with pT>fTriggerPtCut vs nCharged\r
159   TProfile   * fPNch07Nch[6];               // nCharged with pT>fTriggerPtCut vs nCharged\r
160   \r
161   TH2F       * fNch07Tracklet[6];           // nCharged with pT>fTriggerPtCut vs nTracklet\r
162   TH2F       * fNchTracklet[6];             // nCharged vs nTracklet\r
163   TProfile   * fPNch07Tracklet[6];           // nCharged with pT>fTriggerPtCut vs nTracklet\r
164 \r
165   TH1F       * fDPhiEventAxis[6];           // delta phi of associate tracks to event axis\r
166  \r
167   AliAnalysisTaskMinijet(const AliAnalysisTaskMinijet&); // not implemented\r
168   AliAnalysisTaskMinijet& operator=(const AliAnalysisTaskMinijet&); // not implemented\r
169   \r
170   ClassDef(AliAnalysisTaskMinijet, 1); // example of analysis\r
171 };\r
172 \r
173 #endif\r