1 #ifndef ALIANALYSISTASKCORRECTIONSUE_H
2 #define ALIANALYSISTASKCORRECTIONSUE_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 ////////////////////////////////////////////////////////////////////////
9 // Analysis class to Correct Underlying Event studies
11 // This class needs as input ESDs.
\r
12 // The output is an analysis-specific container.
\r
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
21 ////////////////////////////////////////////////////////////////////////
23 #include "AliAnalysisTask.h"
25 class AliAnalyseLeadingTrackUE;
\r
26 class AliESDtrackCuts;
\r
27 class AliInputEventHandler;
29 class AliCFContainer;
\r
32 class AliAODInputHandler;
33 class AliESDInputHandler;
\r
34 class AliMCEventHandler;
44 class AliAnalysisTaskCorrectionsUE : public AliAnalysisTask
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
55 AliAnalysisTaskCorrectionsUE(const char* name="AliAnalysisTaskCorrectionsUE");
56 virtual ~AliAnalysisTaskCorrectionsUE() {if ( fListOfHistos ) delete fListOfHistos; }
57 AliAnalysisTaskCorrectionsUE(const AliAnalysisTaskCorrectionsUE &det);
58 AliAnalysisTaskCorrectionsUE& operator=(const AliAnalysisTaskCorrectionsUE &det);
60 // return instance of the singleton
61 static AliAnalysisTaskCorrectionsUE* Instance();
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 *);
71 virtual void SetDebugLevel( Int_t level ) { fDebug = level; }
\r
72 virtual void SetMode(Int_t mode) { fMode = mode; }
\r
75 void SetZVertex( Double_t val ) { fZVertex = val; }
\r
76 void SetTracksInVertex( Int_t val ){ fnTracksVertex = val; }
78 // Track selection cuts
\r
79 void SetTrackEtaCut( Double_t val ) { fTrackEtaCut = val; }
\r
80 void SetTrackPtCut( Double_t val ) { fTrackPtCut = val; }
\r
83 static AliAnalysisTaskCorrectionsUE* fgTaskCorrectionsUE; // Pointer to single instance
\r
85 void AddSettingsTree(); // add list of settings to output list
\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
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
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