]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/Base/AliAnalysisTaskCFTree.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / Correlations / Base / AliAnalysisTaskCFTree.h
1 #ifndef AliAnalysisTaskCFTree_h
2 #define AliAnalysisTaskCFTree_h
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // Analysis task to produce trees of lightweight events
8 // evgeny.kryshen@cern.ch
9
10 #include "AliAnalysisTaskSE.h"
11 class TList;
12 class TH1I;
13 class TTree;
14 class TClonesArray;
15 class AliAnalysisFilter;
16 class AliVTrack;
17 class AliCFParticle;
18 class AliAnalysisUtils;
19
20 class AliAnalysisTaskCFTree : public AliAnalysisTaskSE {
21  public:
22   AliAnalysisTaskCFTree(const char* name="AliAnalysisTaskCFTree");
23   virtual ~AliAnalysisTaskCFTree(){};
24   virtual void UserCreateOutputObjects();
25   virtual void UserExec(Option_t *option);
26
27   void SetTrackFilter(AliAnalysisFilter* filter) { fTrackFilter = filter; }
28   void SetHybridConstrainedMask(UInt_t mask)  { fHybridConstrainedMask = mask; }
29   void SetTPConlyConstrainedMask(UInt_t mask) { fTPConlyConstrainedMask = mask; }
30   // Event cut setters
31   void SetEventSelectionBit(UInt_t val) { fSelectBit = val; }
32   void SetZVertex(Float_t val)          { fZVertexCut = val; }
33   // Track cut setters
34   void SetTrackFilterBit(UInt_t val)    { fTrackFilterBit = val; }
35   void SetTrackEtaCut(Float_t val)      { fTrackEtaCut = val; }
36   void SetPtMin(Float_t val)            { fPtMin = val; } 
37   void SetSharedClusterCut(Float_t val) { fSharedClusterCut = val;  }
38   void SetCrossedRowsCut(Int_t val)     { fCrossedRowsCut = val; }
39   void SetFoundFractionCut(Float_t val) { fFoundFractionCut = val;  }
40   void SetDphiCut(Float_t val)          { fDphiCut = val; }
41   // Switchers for additional data to be stored
42   void SetStoreTracks(Bool_t val=kTRUE)      { fStoreTracks      = val; }
43   void SetStoreTracklets(Bool_t val=kTRUE)   { fStoreTracklets   = val; }
44   void SetStoreMuons(Bool_t val=kTRUE)       { fStoreMuons       = val; }
45   void SetStoreMcTracks(Bool_t val=kTRUE)    { fStoreMcTracks    = val; }
46   void SetStoreMcTracklets(Bool_t val=kTRUE) { fStoreMcTracklets = val; }
47   void SetStoreMcMuons(Bool_t val=kTRUE)     { fStoreMcMuons     = val; }
48   void SetStorePidInfo(Bool_t val=kTRUE)     { fStorePidInfo     = val; }
49
50  protected:
51   AliAnalysisTaskCFTree(const  AliAnalysisTaskCFTree &task);
52   AliAnalysisTaskCFTree& operator=(const  AliAnalysisTaskCFTree &task);
53
54   UInt_t GetFilterMap(AliVTrack* part);
55   AliCFParticle* AddTrack(AliVTrack* track, UInt_t mask, UInt_t flag=0);
56
57   AliAnalysisFilter* fTrackFilter; // track filter used in ESD analysis
58   UInt_t fHybridConstrainedMask;       // Filter mask for hybrid constrained tracks (ESD analysis)
59   UInt_t fTPConlyConstrainedMask;      // Filter mask for TPConly constrained tracks (ESD analysis)
60   AliAnalysisUtils* fUtils;   //! analysis utils to detect pileup
61   TList* fListOfHistos;       //! list of output histograms
62   TH1I*  fEventStatistics;    //! cut-by-cut counter of events
63   TTree* fTree;               //! output tree
64   // Tree variables
65   TClonesArray* fTracks;      //! tree var: selected AliCFParticles
66   TClonesArray* fTracklets;   //! tree var: selected tracklets (stored if fStoreTracklets=kTRUE)
67   TClonesArray* fMuons;       //! tree var: selected muons (stored if fStoreMuons=kTRUE)
68   TClonesArray* fMcParticles; //! tree var: MC particles
69   Float_t fField;             //  tree var: magnetic field value
70   Float_t fCentrality[6];     //  tree var: centrality
71   Float_t fVtxZ;              //  tree var: z-vertex
72   Bool_t fVtxTPConly;         //  tree var: is vertex TPC only
73   UInt_t fVtxContributors;    //  tree var: number of vertex contributors
74   UInt_t fPeriod;             //  tree var: period
75   UInt_t fOrbit;              //  tree var: orbit
76   UShort_t fBc;               //  tree var: bunch crossing
77   UInt_t fSelectMask;         //  tree var: physics selection mask
78   Bool_t fIsPileupSPD;        //  tree var: is pileup from SPD flag
79   Bool_t fIsPileupMV;         //  tree var: is pileup from MV flag
80
81   // Event cuts
82   UInt_t fSelectBit;          // event selection bit
83   Float_t fZVertexCut;        // Z-vertex cut
84   // Track cuts
85   UInt_t fTrackFilterBit;     // track filter bits to be stored
86   Float_t fTrackEtaCut;       // maximum abs(eta) cut
87   Float_t fPtMin;             // minimum pt cut
88   Float_t fSharedClusterCut;  // cut on shared clusters
89   Int_t   fCrossedRowsCut;    // cut on crossed rows
90   Float_t fFoundFractionCut;  // cut on crossed rows/findable clusters
91   Float_t fDphiCut;           // cut on tracklet dphi
92   //
93   Bool_t fStoreTracks;        // if kTRUE - Barrel tracks will be stored as AliCFParticles
94   Bool_t fStoreTracklets;     // if kTRUE - SPD tracklets will be stored as AliCFParticles
95   Bool_t fStoreMuons;         // if kTRUE - muon tracks will be stored as AliCFParticles
96   Bool_t fStoreMcTracks;      // if kTRUE - mc particles will be stored as AliCFParticles
97   Bool_t fStoreMcTracklets;   // if kTRUE - Store Monte-Carlo info for tracklets
98   Bool_t fStoreMcMuons;       // if kTRUE - Store Monte-Carlo info for muons
99   Bool_t fStorePidInfo;       // if kTRUE - Store PID info for tracks
100   ClassDef(AliAnalysisTaskCFTree,4);
101 };
102 #endif
103