PWGCF/Correlations converted to native cmake
[u/mrichter/AliRoot.git] / PWGCF / Correlations / Base / AliAnalyseLeadingTrackUE.h
1 //-*- Mode: C++ -*-
2 #ifndef ALIANALYSELEADINGTRACKUE_H
3 #define ALIANALYSELEADINGTRACKUE_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice     */
6
7 ////////////////////////////////////////////////
8 //--------------------------------------------- 
9 // Class  for transverse regions analysis w.r.t leading track
10 //---------------------------------------------
11 ////////////////////////////////////////////////
12
13 // --- ROOT system ---
14 #include <TObject.h> 
15
16 class AliAODEvent;
17 class AliAODInputHandler;
18 class AliESDEvent;
19 class AliESDtrackCuts;
20 class AliAODTrack;
21 class AliESDTrack;
22 class AliGenPythiaEventHeader;
23 class AliInputEventHandler;
24 class AliLog;
25 class AliMCEvent;
26 class AliStack;
27 class AliVParticle;
28 class TClonesArray;
29 class TObject;
30 class TROOT;
31 class TVector3;
32 class AliVTrack;
33 class AliHelperPID;
34 class TFormula;
35
36 class AliAnalyseLeadingTrackUE : public TObject {
37
38  public: 
39
40   AliAnalyseLeadingTrackUE();                                                   //constructor
41   AliAnalyseLeadingTrackUE & operator = (const AliAnalyseLeadingTrackUE & g);   //assignment operator
42   virtual ~AliAnalyseLeadingTrackUE();                                          //virtual destructor
43
44   // Setters
45   void  SetParticleSelectionCriteria(Int_t filterbit, Bool_t onlyhadrons, Double_t etacut, Double_t etacutMin=-1., Double_t ptMin = 0) { fFilterBit   = filterbit;
46                                                                                              fOnlyHadrons = onlyhadrons;
47                                                                                              fTrackEtaCut = etacut;     
48                                                                                              fTrackEtaCutMin = etacutMin;     
49                                                                                              fTrackPtMin = ptMin;}
50
51   void SetEventSelection(UInt_t bits) { fEventSelection = bits; }
52   void  SetDebug(Int_t debug) { fDebug = debug; } 
53   Bool_t         ApplyCuts(TObject* track);                       // Reproduces the cuts of the corresponding bit in the ESD->AOD filtering
54   void           DefineESDCuts(Int_t filterbit);                                 // Emulate filterbit
55   TObjArray*     FindLeadingObjects(TObject* obj);                                 // Looks for leading track or MC particle
56   TObjArray*     GetMinMaxRegion(TList* transv1, TList* transv2);                  // Sorts the transverse regions in MIN and MAX
57   Int_t          NParticles(TObject *obj);                                         // Counts tracks or MC particles
58   AliVParticle*  ParticleWithCuts(TObject* obj, Int_t ipart, Bool_t onlyprimaries = kTRUE, Int_t particleSpecies = -1);                     // Returns track or MC particle at position "ipart" if passes selection criteria
59   void           QSortTracks(TObjArray &a, Int_t first, Int_t last);               // Sort by pT an array of AliVParticles 
60   TObjArray*     SortRegions(const AliVParticle* leading, TObject* obj, TObject* arrayMC, Bool_t onlyprimaries = kTRUE); // Assign particles to towards, away or transverse regions
61   TObjArray*     GetAcceptedParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries = kTRUE, Int_t particleSpecies = -1, Bool_t useEtaPtCuts = kFALSE, Bool_t speciesOnTracks = kTRUE, Double_t evtPlane = -999.); 
62   TObjArray*     GetFakeParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries, Int_t particleSpecies, Bool_t useEtaPtCuts);
63   Bool_t         TriggerSelection(const TObject* obj);                                   // Select good triggers with AliPhysicsSelection class
64   Bool_t         VertexSelection(const TObject* obj, Int_t ntracks, Double_t zed);       // Vertex selection: see implementation
65   void           RemoveInjectedSignals(TObjArray* tracks, TObject* arrayMC, Int_t maxLabel);
66   void           RemoveWeakDecays(TObjArray* tracks, TObject* mcObj);
67   AliHelperPID*  GetHelperPID() { return fHelperPID; }
68   void           SetHelperPID(AliHelperPID* pid) { fHelperPID = pid; }
69   void           SetTrackStatus(UInt_t status) { fTrackStatus = status; }
70   UInt_t         GetTrackStatus() { return fTrackStatus; }
71   void           SetCheckMotherPDG(Bool_t checkpdg) { fCheckMotherPDG = checkpdg; }
72   Bool_t         GetCheckMotherPDG() { return fCheckMotherPDG; }
73   void           NextEvent() { fEventCounter++; }
74   UInt_t         GetEventCounter() { return fEventCounter; }
75   void           SetDCAXYCut(TFormula* value) { fDCAXYCut = value; }
76   void           SetSharedClusterCut(Double_t value) { fSharedClusterCut = value; }
77   void           SetCrossedRowsCut(Int_t value) { fCrossedRowsCut = value; }
78   void           SetFoundFractionCut(Double_t value) { fFoundFractionCut = value; }
79   void           SetParticlePhiCutEventPlane(Double_t min, Double_t max) { fTrackPhiCutEvPlMin = min; fTrackPhiCutEvPlMax = max; }
80
81 protected:
82   Bool_t CheckTrack(AliVParticle * part);
83
84 private:
85   AliAnalyseLeadingTrackUE(const AliAnalyseLeadingTrackUE & g);                 //copy constructor, not implemented
86   Int_t          fDebug;             // debug flag
87   Int_t          fFilterBit;         // track selection cuts
88   UInt_t         fTrackStatus;       // if non-0, the bits set in this variable are required for each track
89   Bool_t         fOnlyHadrons;       // consider only charged Pions, Protons and Kaons 
90   Bool_t         fCheckMotherPDG;     // Check the PDG code of mother for secondaries 
91   Double_t       fTrackEtaCut;       // pseudo-rapidity limit of transverse regions     
92   Double_t       fTrackEtaCutMin;       // minimum of the pseudo-rapidity limit of transverse regions     
93   Double_t       fTrackPhiCutEvPlMin;   // Minimum Phi cut on particles with respect to the Event Plane (values between 0 and Pi/2)
94   Double_t       fTrackPhiCutEvPlMax;   // Maximum Phi cut on particles with respect to the Event Plane (values between 0 and Pi/2)
95   Double_t       fTrackPtMin;        // pt limit for selecting particles
96   UInt_t         fEventSelection;    // bit for physics selection
97   TFormula*      fDCAXYCut;          // additional pt dependent cut on DCA XY (only for AOD)
98   Double_t       fSharedClusterCut;  // cut on shared clusters (only for AOD)
99   Int_t          fCrossedRowsCut;   // cut on crossed rows (only for AOD)
100   Double_t       fFoundFractionCut;     // cut on crossed rows/findable clusters (only for AOD)
101   
102   AliESDtrackCuts *fEsdTrackCuts;    // set of cuts when reading ESD
103   AliESDtrackCuts *fEsdTrackCutsExtra1;    // set of cuts when reading ESD
104   AliESDtrackCuts *fEsdTrackCutsExtra2;    // set of cuts when reading ESD
105   AliHelperPID   *fHelperPID;    // PID Helper object
106   UInt_t fEventCounter;           //! processed events (counter)
107   
108   ClassDef(AliAnalyseLeadingTrackUE,0)
109 };
110 #endif