]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/Base/AliAnalyseLeadingTrackUE.h
forward muon selection added
[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(const AliAnalyseLeadingTrackUE & g);                 //copy constructor
42   AliAnalyseLeadingTrackUE & operator = (const AliAnalyseLeadingTrackUE & g);   //assignment operator
43   virtual ~AliAnalyseLeadingTrackUE();                                          //virtual destructor
44
45   // Setters
46   void  SetParticleSelectionCriteria(Int_t filterbit, Bool_t onlyhadrons, Double_t etacut, Double_t etacutMin=-1., Double_t ptMin = 0) { fFilterBit   = filterbit;
47                                                                                              fOnlyHadrons = onlyhadrons;
48                                                                                              fTrackEtaCut = etacut;     
49                                                                                              fTrackEtaCutMin = etacutMin;     
50                                                                                              fTrackPtMin = ptMin;}
51
52   void SetEventSelection(UInt_t bits) { fEventSelection = bits; }
53   void  SetDebug(Int_t debug) { fDebug = debug; } 
54   Bool_t         ApplyCuts(TObject* track);                       // Reproduces the cuts of the corresponding bit in the ESD->AOD filtering
55   void           DefineESDCuts(Int_t filterbit);                                 // Emulate filterbit
56   TObjArray*     FindLeadingObjects(TObject* obj);                                 // Looks for leading track or MC particle
57   TObjArray*     GetMinMaxRegion(TList* transv1, TList* transv2);                  // Sorts the transverse regions in MIN and MAX
58   Int_t          NParticles(TObject *obj);                                         // Counts tracks or MC particles
59   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
60   void           QSortTracks(TObjArray &a, Int_t first, Int_t last);               // Sort by pT an array of AliVParticles 
61   TObjArray*     SortRegions(const AliVParticle* leading, TObject* obj, TObject* arrayMC, Bool_t onlyprimaries = kTRUE); // Assign particles to towards, away or transverse regions
62   TObjArray*     GetAcceptedParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries = kTRUE, Int_t particleSpecies = -1, Bool_t useEtaPtCuts = kFALSE, Bool_t speciesOnTracks = kTRUE); 
63   TObjArray*     GetFakeParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries, Int_t particleSpecies, Bool_t useEtaPtCuts);
64   Bool_t         TriggerSelection(const TObject* obj);                                   // Select good triggers with AliPhysicsSelection class
65   Bool_t         VertexSelection(const TObject* obj, Int_t ntracks, Double_t zed);       // Vertex selection: see implementation
66   void           RemoveInjectedSignals(TObjArray* tracks, TObject* arrayMC, Int_t maxLabel);
67   void           RemoveWeakDecays(TObjArray* tracks, TObject* mcObj);
68   AliHelperPID*  GetHelperPID() { return fHelperPID; }
69   void           SetHelperPID(AliHelperPID* pid) { fHelperPID = pid; }
70   void           SetTrackStatus(UInt_t status) { fTrackStatus = status; }
71   UInt_t         GetTrackStatus() { return fTrackStatus; }
72   void           SetCheckMotherPDG(Bool_t checkpdg) { fCheckMotherPDG = checkpdg; }
73   Bool_t         GetCheckMotherPDG() { return fCheckMotherPDG; }
74   void           NextEvent() { fEventCounter++; }
75   UInt_t         GetEventCounter() { return fEventCounter; }
76   void           SetDCAXYCut(TFormula* value) { fDCAXYCut = value; }
77   void           SetSharedClusterCut(Double_t value) { fSharedClusterCut = value; }
78   void           SetCrossedRowsCut(Int_t value) { fCrossedRowsCut = value; }
79   void           SetFoundFractionCut(Double_t value) { fFoundFractionCut = value; }
80
81 protected:
82   Bool_t CheckTrack(AliVParticle * part);
83
84 private:
85   Int_t          fDebug;             // debug flag
86   Int_t          fFilterBit;         // track selection cuts
87   UInt_t         fTrackStatus;       // if non-0, the bits set in this variable are required for each track
88   Bool_t         fOnlyHadrons;       // consider only charged Pions, Protons and Kaons 
89   Bool_t         fCheckMotherPDG;     // Check the PDG code of mother for secondaries 
90   Double_t       fTrackEtaCut;       // pseudo-rapidity limit of transverse regions     
91   Double_t       fTrackEtaCutMin;       // minimum of the pseudo-rapidity limit of transverse regions     
92   Double_t       fTrackPtMin;        // pt limit for selecting particles
93   UInt_t         fEventSelection;    // bit for physics selection
94   TFormula*      fDCAXYCut;          // additional pt dependent cut on DCA XY (only for AOD)
95   Double_t       fSharedClusterCut;  // cut on shared clusters (only for AOD)
96   Int_t          fCrossedRowsCut;   // cut on crossed rows (only for AOD)
97   Double_t       fFoundFractionCut;     // cut on crossed rows/findable clusters (only for AOD)
98   
99   AliESDtrackCuts *fEsdTrackCuts;    // set of cuts when reading ESD
100   AliESDtrackCuts *fEsdTrackCutsExtra1;    // set of cuts when reading ESD
101   AliESDtrackCuts *fEsdTrackCutsExtra2;    // set of cuts when reading ESD
102   AliHelperPID   *fHelperPID;    // PID Helper object
103   UInt_t fEventCounter;           //! processed events (counter)
104   
105   ClassDef(AliAnalyseLeadingTrackUE,0)
106 };
107 #endif