Line data Source code
1 : /**
2 : * \file AliVTrackSelection.h
3 : * \brief Declartion of class AliVTrackSelection
4 : *
5 : * In this header file the class AliVTrackSelection, which handles the
6 : * track selection in a transparent way for ESD and AOD Tracks, is declared.
7 : *
8 : * \author Markus Fasel <markus.fasel@cern.ch>, Lawrence Berkeley National Laboratory
9 : * \author Salvatore Aiola <salvatore.aiola@cern.ch>, Yale University
10 : * \date Jan 30, 2016
11 : */
12 : #ifndef ALIVTRACKSELECTION_H_
13 : #define ALIVTRACKSELECTION_H_
14 : /* Copyright(c) 1998-2015, ALICE Experiment at CERN, All rights reserved. *
15 : * See cxx source for full Copyright notice */
16 :
17 : #include <TObject.h>
18 : #include <TBits.h>
19 :
20 : class TClonesArray;
21 : class TObjArray;
22 : class AliVCuts;
23 : class AliVEvent;
24 : class AliVTrack;
25 :
26 : /**
27 : * \class AliVTrackSelection
28 : * \brief Interface for virtual track selection
29 : *
30 : * Interface for track selection within the EMCAL framework. Enables transparent track selection
31 : * for ESDs and AODs by implementing a wrapper derived from this class. The following abstract
32 : * functions need to be implemented by inheriting classes:
33 : * - GetAcceptedTracks (with TClonesArray and AliVEvent as parameters)
34 : * - IsTrackAccepted (with AliVTrackCuts)
35 : * - GenerateTrackCuts
36 : */
37 : class AliVTrackSelection : public TObject {
38 : public:
39 : AliVTrackSelection();
40 : AliVTrackSelection(const AliVTrackSelection &ref);
41 : AliVTrackSelection &operator=(const AliVTrackSelection &ref);
42 : virtual ~AliVTrackSelection();
43 :
44 : TObjArray *GetAcceptedTracks(const TClonesArray * const tracks);
45 : TObjArray *GetAcceptedTracks(const AliVEvent *const event);
46 : virtual bool IsTrackAccepted(AliVTrack * const trk) = 0;
47 :
48 : void AddTrackCuts(AliVCuts *cuts);
49 : void AddTrackCuts(TObjArray *cuts);
50 : Int_t GetNumberOfCutObjects() const;
51 : AliVCuts *GetTrackCuts(Int_t icut);
52 :
53 0 : const TBits& GetTrackBitmap() const { return fTrackBitmap; }
54 0 : const TClonesArray* GetAcceptedTrackBitmaps() const { return fListOfTrackBitmaps; }
55 :
56 0 : void SetSelectionModeAny() { fSelectionModeAny = kTRUE ; }
57 0 : void SetSelectionModeAll() { fSelectionModeAny = kFALSE; }
58 :
59 : protected:
60 : TObjArray *fListOfTracks; ///< TObjArray with accepted tracks
61 : TClonesArray *fListOfTrackBitmaps; ///< TClonesArray with accepted tracks' bit maps
62 : TBits fTrackBitmap; ///< Bitmap of last accepted/rejected track
63 : TObjArray *fListOfCuts; ///< List of track cut objects
64 : Bool_t fSelectionModeAny; ///< Accept track if any of the cuts is fulfilled
65 :
66 : /// \cond CLASSIMP
67 170 : ClassDef(AliVTrackSelection, 1);
68 : /// \endcond
69 : };
70 :
71 : #endif /* ALIVTRACKSELECTION_H_ */
|