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 */
7 ////////////////////////////////////////////////
8 //---------------------------------------------
9 // Class for transverse regions analysis w.r.t leading track
10 //---------------------------------------------
11 ////////////////////////////////////////////////
13 // --- ROOT system ---
17 class AliAODInputHandler;
19 class AliESDtrackCuts;
22 class AliGenPythiaEventHeader;
23 class AliInputEventHandler;
34 class AliAnalyseLeadingTrackUE : public TObject {
38 AliAnalyseLeadingTrackUE(); //constructor
39 AliAnalyseLeadingTrackUE(const AliAnalyseLeadingTrackUE & g); //copy constructor
40 AliAnalyseLeadingTrackUE & operator = (const AliAnalyseLeadingTrackUE & g); //assignment operator
41 virtual ~AliAnalyseLeadingTrackUE(); //virtual destructor
44 void SetParticleSelectionCriteria(Int_t filterbit, Bool_t onlyhadrons, Double_t etacut, Double_t ptMin = 0) { fFilterBit = filterbit;
45 fOnlyHadrons = onlyhadrons;
46 fTrackEtaCut = etacut;
48 void SetEventSelection(UInt_t bits) { fEventSelection = bits; }
49 void SetDebug(Int_t debug) { fDebug = debug; }
50 Bool_t ApplyCuts(TObject* track); // Reproduces the cuts of the corresponding bit in the ESD->AOD filtering
51 void DefineESDCuts(Int_t filterbit); // Emulate filterbit
52 TObjArray* FindLeadingObjects(TObject* obj); // Looks for leading track or MC particle
53 TObjArray* GetMinMaxRegion(TList* transv1, TList* transv2); // Sorts the transverse regions in MIN and MAX
54 Int_t NParticles(TObject *obj); // Counts tracks or MC particles
55 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
56 void QSortTracks(TObjArray &a, Int_t first, Int_t last); // Sort by pT an array of AliVParticles
57 TObjArray* SortRegions(const AliVParticle* leading, TObject* obj, TObject* arrayMC, Bool_t onlyprimaries = kTRUE); // Assign particles to towards, away or transverse regions
58 TObjArray* GetAcceptedParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries = kTRUE, Int_t particleSpecies = -1, Bool_t useEtaPtCuts = kFALSE);
59 TObjArray* GetFakeParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries, Int_t particleSpecies, Bool_t useEtaPtCuts);
60 Bool_t TriggerSelection(const TObject* obj); // Select good triggers with AliPhysicsSelection class
61 Bool_t VertexSelection(const TObject* obj, Int_t ntracks, Double_t zed); // Vertex selection: see implementation
62 void RemoveInjectedSignals(TObjArray* tracks, TObject* arrayMC, Int_t maxLabel);
63 void RemoveWeakDecays(TObjArray* tracks, TObject* mcObj);
64 Int_t GetParticleSpecies(AliVTrack * trk);// PID
67 Int_t fDebug; // debug flag
68 Int_t fFilterBit; // track selection cuts
69 Bool_t fOnlyHadrons; // consider only charged Pions, Protons and Kaons
70 Double_t fTrackEtaCut; // pseudo-rapidity limit of transverse regions
71 Double_t fTrackPtMin; // pt limit for selecting particles
72 UInt_t fEventSelection; // bit for physics selection
73 AliESDtrackCuts *fEsdTrackCuts; // set of cuts when reading ESD
74 AliESDtrackCuts *fEsdTrackCutsExtra1; // set of cuts when reading ESD
75 AliESDtrackCuts *fEsdTrackCutsExtra2; // set of cuts when reading ESD
77 ClassDef(AliAnalyseLeadingTrackUE,0)