ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/
//
// Track filter class 
// Apply cut steps to all tracks in one event and returns a list of
// filtered tracks
//
#ifndef ALIHFETRACKFILTER_H
#define ALIHFETRACKFILTER_H

#ifndef ROOT_TNamed
#include <TNamed.h>
#endif

#ifndef ROOT_TObjArray
#include <TObjArray.h>
#endif

class AliCFContainer;
class AliVEvent;
class AliHFEcontainer;
class AliHFEcutStep;
class AliMCEvent;

class AliHFEtrackFilter : public TNamed{
  public:
    AliHFEtrackFilter();
    AliHFEtrackFilter(const Char_t *name);
    AliHFEtrackFilter(const AliHFEtrackFilter &o);
    AliHFEtrackFilter &operator=(const AliHFEtrackFilter &o);
    virtual void Copy(TObject &o) const;
    ~AliHFEtrackFilter();
  
    // Base Functionality
    void AddCutStep(AliHFEcutStep *cuts);
    void GenerateCutSteps();
    void SetRecEvent(const AliVEvent *rec);
    AliHFEcutStep *GetCutStep(Int_t istep);
    AliHFEcutStep *GetCutStep(const Char_t *name);
    void FilterTracks(const AliVEvent *const esd);
    TObjArray *GetFilteredTracks() const { return fFilteredTracks; }
    void Flush();

    // Usage of the Correction Framework
    void InitCF();
    void InitCF(AliHFEcontainer *cont);
    AliCFContainer *GetEfficiencyContainer(Int_t icont); 
    void ReleaseContainers() { SetBit(kOwnCFContainers, kFALSE); }
    void OwnContainers() { SetBit(kOwnCFContainers, kTRUE); }
    void SetPtBins(Int_t nBins, Double_t *binning);
    void SetEtaBins(Int_t nBins, Double_t *binning);
    void SetPhiBins(Int_t nBins, Double_t *binning);

    // Add Possibility to check Monte-Carlo Information
    void SetMC(AliMCEvent * const mc);
    void SetMCSignalStep(AliHFEcutStep * const sig) { fMCsignal = sig; };
    AliHFEcutStep *GetMCSignalCuts() const { return fMCsignal; }

    // Creators for Standard Cut Steps
    AliHFEcutStep *MakeCutStepRecKineITSTPC();
    AliHFEcutStep *MakeCutStepPrimary();
    AliHFEcutStep *MakeCutStepHFEITS();
    AliHFEcutStep *MakeCutStepHFETRD();
    AliHFEcutStep *MakeMCSignalCuts();

  private:
    enum{
      kOwnCFContainers = BIT(14)
    };
    TObjArray *fFilteredTracks;             //! List of Tracks which survived the filter
    TObjArray *fCutSteps;                   //! Container of Cut Objects
    TObjArray *fEfficiencyContainers;       //! Efficiency Container
    AliMCEvent * fMC;                       //! Monte Carlo Event
    AliHFEcutStep *fMCsignal;               //! Cuts for MC Signal

    // Helpers for the correction framework
    Int_t fPtBins;                          // Number of Pt Bins
    Int_t fEtaBins;                         // Number of Eta Bins
    Int_t fPhiBins;                         // Number of Phi Bins
    Double_t *fPtBinning;                   // Pt binning
    Double_t *fEtaBinning;                  // Eta binning
    Double_t *fPhiBinning;                  // Phi binning

    ClassDef(AliHFEtrackFilter, 1)
};
#endif

 AliHFEtrackFilter.h:1
 AliHFEtrackFilter.h:2
 AliHFEtrackFilter.h:3
 AliHFEtrackFilter.h:4
 AliHFEtrackFilter.h:5
 AliHFEtrackFilter.h:6
 AliHFEtrackFilter.h:7
 AliHFEtrackFilter.h:8
 AliHFEtrackFilter.h:9
 AliHFEtrackFilter.h:10
 AliHFEtrackFilter.h:11
 AliHFEtrackFilter.h:12
 AliHFEtrackFilter.h:13
 AliHFEtrackFilter.h:14
 AliHFEtrackFilter.h:15
 AliHFEtrackFilter.h:16
 AliHFEtrackFilter.h:17
 AliHFEtrackFilter.h:18
 AliHFEtrackFilter.h:19
 AliHFEtrackFilter.h:20
 AliHFEtrackFilter.h:21
 AliHFEtrackFilter.h:22
 AliHFEtrackFilter.h:23
 AliHFEtrackFilter.h:24
 AliHFEtrackFilter.h:25
 AliHFEtrackFilter.h:26
 AliHFEtrackFilter.h:27
 AliHFEtrackFilter.h:28
 AliHFEtrackFilter.h:29
 AliHFEtrackFilter.h:30
 AliHFEtrackFilter.h:31
 AliHFEtrackFilter.h:32
 AliHFEtrackFilter.h:33
 AliHFEtrackFilter.h:34
 AliHFEtrackFilter.h:35
 AliHFEtrackFilter.h:36
 AliHFEtrackFilter.h:37
 AliHFEtrackFilter.h:38
 AliHFEtrackFilter.h:39
 AliHFEtrackFilter.h:40
 AliHFEtrackFilter.h:41
 AliHFEtrackFilter.h:42
 AliHFEtrackFilter.h:43
 AliHFEtrackFilter.h:44
 AliHFEtrackFilter.h:45
 AliHFEtrackFilter.h:46
 AliHFEtrackFilter.h:47
 AliHFEtrackFilter.h:48
 AliHFEtrackFilter.h:49
 AliHFEtrackFilter.h:50
 AliHFEtrackFilter.h:51
 AliHFEtrackFilter.h:52
 AliHFEtrackFilter.h:53
 AliHFEtrackFilter.h:54
 AliHFEtrackFilter.h:55
 AliHFEtrackFilter.h:56
 AliHFEtrackFilter.h:57
 AliHFEtrackFilter.h:58
 AliHFEtrackFilter.h:59
 AliHFEtrackFilter.h:60
 AliHFEtrackFilter.h:61
 AliHFEtrackFilter.h:62
 AliHFEtrackFilter.h:63
 AliHFEtrackFilter.h:64
 AliHFEtrackFilter.h:65
 AliHFEtrackFilter.h:66
 AliHFEtrackFilter.h:67
 AliHFEtrackFilter.h:68
 AliHFEtrackFilter.h:69
 AliHFEtrackFilter.h:70
 AliHFEtrackFilter.h:71
 AliHFEtrackFilter.h:72
 AliHFEtrackFilter.h:73
 AliHFEtrackFilter.h:74
 AliHFEtrackFilter.h:75
 AliHFEtrackFilter.h:76
 AliHFEtrackFilter.h:77
 AliHFEtrackFilter.h:78
 AliHFEtrackFilter.h:79
 AliHFEtrackFilter.h:80
 AliHFEtrackFilter.h:81
 AliHFEtrackFilter.h:82
 AliHFEtrackFilter.h:83
 AliHFEtrackFilter.h:84
 AliHFEtrackFilter.h:85
 AliHFEtrackFilter.h:86
 AliHFEtrackFilter.h:87
 AliHFEtrackFilter.h:88
 AliHFEtrackFilter.h:89
 AliHFEtrackFilter.h:90
 AliHFEtrackFilter.h:91
 AliHFEtrackFilter.h:92
 AliHFEtrackFilter.h:93
 AliHFEtrackFilter.h:94
 AliHFEtrackFilter.h:95
 AliHFEtrackFilter.h:96
 AliHFEtrackFilter.h:97
 AliHFEtrackFilter.h:98
 AliHFEtrackFilter.h:99