]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/JetTasks/AliAnalysisTaskCorrectionsUE.h
new add tasks for reader and finder
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskCorrectionsUE.h
1 #ifndef ALIANALYSISTASKCORRECTIONSUE_H
2 #define ALIANALYSISTASKCORRECTIONSUE_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 ////////////////////////////////////////////////////////////////////////
8 //
9 // Analysis class to Correct Underlying Event studies
10 //
11 // This class needs as input ESDs.\r
12 // The output is an analysis-specific container.\r
13 //
14 // The class is used to get the contamination from secondaries\r
15 // from tracks DCA distribution \r
16 // as function of track pT and pseudo-rapidity.\r
17 // It provides additional information for the corrections \r
18 // that can not be retrieved by the AliAnalysisTaskLeadingTackUE\r
19 // task, which is running on AODs.\r
20 // 
21 ////////////////////////////////////////////////////////////////////////
22
23 #include "AliAnalysisTask.h"
24
25 class AliAnalyseLeadingTrackUE;\r
26 class AliESDtrackCuts;\r
27 class AliInputEventHandler;
28 class AliAODEvent;
29 class AliCFContainer;\r
30 class AliESDEvent;
31 class AliESDtrack;\r
32 class AliAODInputHandler;
33 class AliESDInputHandler;\r
34 class AliMCEventHandler;
35 class AliMCEvent;
36 class TH1F;
37 class TH2F;
38 class TH3F;\r
39 class TH1I;
40 class TProfile;
41 class TTree;
42 class TVector3;
43
44 class  AliAnalysisTaskCorrectionsUE : public AliAnalysisTask
45   {
46   public:
47     // track cuts steps\r
48     enum CFSteps {\r
49         kCFStepAll     = 0,\r
50         kCFStepCuts    = 1, // standard ITS+TPC 2009 cuts w.o. DCA cut and SPD cluster requirement\r
51         kCFStepSPD     = 2, // add SPD cluster requirement\r
52         kCFStepDCA     = 3  // add pT dependent DCA cut\r
53         };\r
54
55     AliAnalysisTaskCorrectionsUE(const char* name="AliAnalysisTaskCorrectionsUE");
56     virtual           ~AliAnalysisTaskCorrectionsUE() {if ( fListOfHistos ) delete fListOfHistos; }
57     AliAnalysisTaskCorrectionsUE(const  AliAnalysisTaskCorrectionsUE &det);
58     AliAnalysisTaskCorrectionsUE&   operator=(const  AliAnalysisTaskCorrectionsUE &det);
59        
60     // return instance of the singleton
61     static  AliAnalysisTaskCorrectionsUE* Instance();
62       
63     // Implementation of interace methods
64     virtual     Bool_t Notify();
65     virtual     void   ConnectInputData(Option_t *);
66     virtual     void   CreateOutputObjects();
67     virtual     void   Exec(Option_t *option);
68     virtual     void   Terminate(Option_t *);
69
70     //  Setters/Getters
71     virtual     void   SetDebugLevel( Int_t level )  { fDebug = level; }\r
72     virtual     void   SetMode(Int_t mode)           { fMode  = mode;  }\r
73
74     //Event QA
75     void  SetZVertex( Double_t val )          { fZVertex = val; }\r
76     void  SetTracksInVertex( Int_t val ){ fnTracksVertex = val; }
77
78     // Track selection cuts\r
79     void  SetTrackEtaCut( Double_t val ) { fTrackEtaCut = val; }\r
80     void  SetTrackPtCut( Double_t val )  { fTrackPtCut = val; }\r
81         
82   protected:
83     static     AliAnalysisTaskCorrectionsUE*     fgTaskCorrectionsUE;        // Pointer to single instance\r
84   private:
85     void       AddSettingsTree();                                  // add list of settings to output list\r
86     // Analysis methods\r
87     void       AnalyseCorrectionMode();                            // main algorithm to get correction maps\r
88     void       CreateContainer();                                  // create the output CF container\r
89     void       FillContainer(AliESDtrack *track, Int_t step,Bool_t mcvertex, Double_t matchLeading); // fill container \r
90     AliAnalyseLeadingTrackUE*       fAnalyseUE;         //! points to AliAnalyseLeadingTrackUE class\r
91     Int_t                           fDebug;             //  Debug flag\r
92     AliESDEvent*                    fESDEvent;          //! ESD Event\r
93     AliESDInputHandler*             fESDHandler;        //! ESD Input Handler\r
94     AliInputEventHandler*           fInputHandler;      //  Input event handler\r
95     TList*                          fListOfHistos;      //  Output list of histograms\r
96     AliMCEvent*                     fMcEvent;           //  pointer to MC event\r
97     AliMCEventHandler*              fMcHandler;         //  pointer to MC handler\r
98     Int_t                           fMode;              //  fMode = 0: data-like analysis \r
99                                                         //  fMode = 1: corrections analysis     \r
100     AliCFContainer*                 fOutCFcont;         //  output CF container   \r
101     TH1F*                           fhEntries;          //  count events         \r
102     TH1F*                           fhFakes;            //  counts the amount of fake tracks \r
103     TH1F*                           fhPtMCAll;          //  pT distribution of all accepted MC tracks \r
104     TH1F*                           fhPtMCPrim;         //  pT distribution MC primaries\r
105     TH1F*                           fhPtMCSec;          //  pT distribution MC secondaries\r
106     TH1F*                           fhPtMCPrimFake;     //  pT distribution MC fake primaries\r
107     TH1F*                           fhPtMCSecFake;      //  pT distribution MC fake secondaries\r
108 \r
109     // Cuts Events QA\r
110     Int_t          fnTracksVertex;        // QA tracks pointing to principal vertex (= 3 default) 
111     Double_t       fZVertex;              // Position of Vertex in Z direction
112     TH1F*          fhVertexContributors;  // Plot number of contributors in vertex  \r
113     TH3F*          fhVertexReso;          //  vertex resolution in XY and Z vs. number of contributors\r
114     // Track cuts\r
115     Double_t       fTrackEtaCut;          // Eta cut on tracks in the regions (fRegionType=1)\r
116     Double_t       fTrackPtCut;           // Pt cut of tracks in the regions\r
117     AliESDtrackCuts* fEsdTrackCuts;       // ITS+TPC 2009 cuts (no SPD requirement, no DCA cut) \r
118     AliESDtrackCuts* fEsdTrackCutsSPD;     // Require 1 cluser in SPD\r
119     AliESDtrackCuts* fEsdTrackCutsSDD;     // Require 1 cluser in 1st layer SDD\r
120     AliESDtrackCuts* fEsdTrackCutsDCA;     // Add pT dependent DCA cut\r
121     ClassDef( AliAnalysisTaskCorrectionsUE, 5); // Analysis task to correct Underlying Event analysis\r
122   };
123
124 #endif
125
126