]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/DPhi/AliAnalysisTaskTwoPlusOne.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliAnalysisTaskTwoPlusOne.h
1 #ifndef ALIANALYSISTASKTWOPLUSONE_H
2 #define ALIANALYSISTASKTWOPLUSONE_H
3
4 class TList;
5 class TH1F;
6 class TH2F;
7 class TProfile;
8 class THnSparse;
9 class AliESDtrackCuts;
10
11 #include "AliAnalysisTaskSE.h"
12 #include "AliTwoPlusOneContainer.h"
13 #include "TString.h"
14 #include "AliVParticle.h"
15 #include "AliLog.h"
16 #include "THn.h"
17
18 class AliAODEvent;
19 class AliAnalyseLeadingTrackUE;
20 class AliInputEventHandler;
21 class AliMCEvent;
22 class AliMCEventHandler;
23 class AliTwoPlusOneContainer;
24 class AliVParticle;
25 class TH1;
26 class TObjArray;
27 class AliEventPoolManager;
28 class AliESDEvent;
29 class AliHelperPID;
30 class AliAnalysisUtils;
31 class TFormula;
32 class TMap;
33 class AliGenEventHeader;
34
35 class AliAnalysisTaskTwoPlusOne : public AliAnalysisTaskSE {
36  public:
37   AliAnalysisTaskTwoPlusOne(const char *name="AliAnalysisTaskTwoPlusOne");
38   virtual ~AliAnalysisTaskTwoPlusOne();
39
40   virtual void UserCreateOutputObjects();
41   virtual void UserExec(Option_t* option);
42   virtual void Terminate(Option_t *);
43
44   // Setters/Getters
45   // general configuration
46   void   SetMixingTracks(Int_t tracks) { fMixingTracks = tracks; }
47   void   SetTracksInVertex( Int_t val ){ fnTracksVertex = val; }
48   void   SetZVertex( Double_t val )    { fZVertex = val; }
49   
50   // track cuts
51   void   SetTrackEtaCut( Double_t val )    { fTrackEtaCut = val; }
52   void   SetTrackEtaCutMin( Double_t val )    { fTrackEtaCutMin = val; }
53   void   SetPtMin(Double_t val)            { fPtMin = val; }
54   void   SetFilterBit( UInt_t val )        { fFilterBit = val;  }
55   void   SetDCAXYCut(TFormula* value)      { fDCAXYCut = value; }
56   void   SetSharedClusterCut(Float_t value) { fSharedClusterCut = value; }
57   void   SetCrossedRowsCut(Int_t value)    { fCrossedRowsCut = value; }
58   void   SetFoundFractionCut(Double_t value) { fFoundFractionCut = value; }
59   void   SetTrackStatus(UInt_t status)     { fTrackStatus = status; }
60
61   void   SetThreeParticleMixed(Bool_t flag) { fThreeParticleMixed = flag; }
62   void   SetUseEventCombination(Bool_t flag) { fUseEventCombination = flag; }
63   
64   void   SetCentralityMethod(const char* method) { fCentralityMethod = method; }
65
66   void   SetCustomBinning(const char* binningStr) { fCustomBinning = binningStr; }
67   
68   void   SetAlpha(Double_t val){fAlpha = val; }
69
70  private:
71   void            AddSettingsTree();                                  // add list of settings to output list
72
73   TObjArray* CloneAndReduceTrackList(TObjArray* tracks);
74   void AddEventCombination(TObjArray* tracks);
75
76   //general configuration
77   Int_t                 fMixingTracks;          // size of track buffer for event mixing
78
79   // Pointers to external UE classes
80   AliAnalyseLeadingTrackUE*     fAnalyseUE;      //! points to class containing common analysis algorithms
81   AliTwoPlusOneContainer* fHistos;// Histogram class based on UEHist
82   
83   // Handlers and events
84   AliAODEvent*             fAOD;             //! AOD Event 
85   AliEventPoolManager*     fPoolMgr;         //! event pool manager
86
87   TObjArray*     fEventCombination;         //reduced tracklist which contains 4 semi central events which have the same multiplicity as 1 central event
88   Int_t          fUsedEvents;               //used events in fEventCombination
89
90   // Histogram settings
91   TList*              fListOfHistos;    //  Output list of containers 
92
93   // Event QA cuts
94   Int_t               fnTracksVertex;        // QA tracks pointing to principal vertex
95   Double_t            fZVertex;              // Position of Vertex in Z direction
96   TString             fCentralityMethod;     // Method to determine centrality
97
98     // Track cuts
99     Double_t            fTrackEtaCut;          // Maximum Eta cut on particles
100     Double_t            fTrackEtaCutMin;       // Minimum Eta cut on particles
101     Double_t            fPtMin;                // Min pT to start correlations
102     TFormula*           fDCAXYCut;             // additional pt dependent cut on DCA XY (only for AOD)
103     Double_t            fSharedClusterCut;  // cut on shared clusters (only for AOD)
104     Int_t               fCrossedRowsCut;   // cut on crossed rows (only for AOD)
105     Double_t            fFoundFractionCut;     // cut on crossed rows/findable clusters (only for AOD)
106     UInt_t              fFilterBit;            // Select tracks from an specific track cut 
107     UInt_t              fTrackStatus;          // if non-0, the bits set in this variable are required for each track
108     
109     Bool_t              fThreeParticleMixed;   //0 use trigger from one event and mixed particles from another; 1 use trigger particles from two different events and mixed event from a third event
110     Bool_t              fUseEventCombination;   //0 normal analysis run; 1 add 4 30-50% events up to the multiplicity of an 0-5% event
111
112     TString fCustomBinning;        // supersedes default binning if set, see AliUEHist::GetBinning or AliUEHistograms::AliUEHistograms for syntax and examples
113     Double_t fAlpha;            //sets the alpha parameter in the container
114     
115     AliAnalysisTaskTwoPlusOne(const AliAnalysisTaskTwoPlusOne&); // not implemented
116     AliAnalysisTaskTwoPlusOne& operator=(const AliAnalysisTaskTwoPlusOne&); // not implemented
117
118
119   ClassDef(AliAnalysisTaskTwoPlusOne, 1); // two plus one analysis with two trigger particles and particle correlations to these triggers
120 };
121
122 #endif