ROOT logo
#ifndef ALIANALYSISTASKESDNUCLEXFILTER_H
#define ALIANALYSISTASKESDNUCLEXFILTER_H


// Create a new AOD starting from the general AOD. This Task can be used also strating 
//from ESD changing the input handler. (Method to be testeted on the grid)
// filtering of the ESD. 
//
// Authors: S. Bufalino (stefania.bufalino@cern.ch)
//          R. Lea      (ramona.lea@cern.ch)
// Based on AliAnalysisTaskESDMuonFilter.h  

#ifndef ALIANALYSISTASKSE_H
#  include "AliAnalysisTaskSE.h"
#  include "AliESDtrack.h"
#  include "AliAODTrack.h"
#  include "AliAODPid.h"
#  include "AliAODNuclExReplicator.h"
//#include "AliAOD3LH.h"

#endif
#ifndef ALIANALYSISCUTS_H
#  include "AliAnalysisCuts.h"
#endif

class AliAnalysisFilter;
class AliESDtrack;
class AliPIDResponse;

class AliAnalysisTaskESDNuclExFilter : public AliAnalysisTaskSE
{
 public:
    AliAnalysisTaskESDNuclExFilter(Bool_t onlyMuon=kTRUE, Bool_t keepAllEvents=kTRUE, Int_t mcMode=0, Int_t nsigmaTrk1=3 ,Int_t nsigmaTrk2 = 3, Int_t partType1 = 2,Int_t partType2 = 7);
    AliAnalysisTaskESDNuclExFilter(const char* name, Bool_t onlyMuon=kTRUE, Bool_t keepAllEvents=kTRUE, Int_t mcMode=0, Int_t nsigmaTrk1=3 ,Int_t nsigmaTrk2 = 3, Int_t partType1 = 2,Int_t partType2 = 7);
    virtual ~AliAnalysisTaskESDNuclExFilter() {;}
    // Implementation of interface methods
    virtual void UserCreateOutputObjects();
    virtual void Init();
    virtual void LocalInit() {Init();}
    virtual void UserExec(Option_t *option);
    virtual void Terminate(Option_t *option);

    virtual void ConvertESDtoAOD();
  

    // Setters
    virtual void SetTrackFilter(AliAnalysisFilter* trackF) {fTrackFilter = trackF;}
    void SetWriteMuonAOD(Bool_t enableMuonAOD){fEnableMuonAOD = enableMuonAOD;}
    void SetWriteDimuonAOD(Bool_t enableDimuonAOD){fEnableDimuonAOD = enableDimuonAOD;}

    void PrintTask(Option_t *option="", Int_t indent=0) const;
 

 private:
    AliAnalysisTaskESDNuclExFilter(const AliAnalysisTaskESDNuclExFilter&);
    AliAnalysisTaskESDNuclExFilter& operator=(const AliAnalysisTaskESDNuclExFilter&);
    void AddFilteredAOD(const char* aodfilename, const char* title, Bool_t toMerge);

    AliAnalysisFilter* fTrackFilter; //  Track Filter
    Bool_t fEnableMuonAOD; // flag for enabling Muon AOD production
    Bool_t fEnableDimuonAOD; // flag for enabling Dimuon AOD production
    Bool_t fOnlyMuon; // flag for disabling branches irrelevant for (most) muon analyses
    Bool_t fKeepAllEvents; // keep even events where there's no muons (to get e.g. unbiased vertex distribution)
    Int_t  fMCMode; // whether and how we're filtering MC data
    
    Int_t fnSigmaTrk1;
    Int_t fnSigmaTrk2;
    Int_t fpartType1;
    Int_t fpartType2;

    AliAODNuclExReplicator* murep;

    AliPIDResponse  *fPIDResponse;                  //! PID response object

  ClassDef(AliAnalysisTaskESDNuclExFilter, 5); // Analysis task for standard ESD filtering
};
 
/* class AliAnalysisNonMuonTrackCuts : public AliAnalysisCuts */
/* { */
/* public: */
/*   AliAnalysisNonMuonTrackCuts(); */
/*   virtual ~AliAnalysisNonMuonTrackCuts() {} */
/*   /\* virtual Bool_t IsSelected(TObject* obj); *\/ */
/*   /\* virtual Bool_t IsSelected(TList*   /\\* list *\\/ ) { return kTRUE; } *\/ */

/*   ClassDef(AliAnalysisNonMuonTrackCuts,1); // Select muon spectrometer tracks */
/* }; */

/* class AliAnalysisNonPrimaryVertices : public AliAnalysisCuts */
/* { */
/* public: */
/*   AliAnalysisNonPrimaryVertices(); */
/*   virtual ~AliAnalysisNonPrimaryVertices() {} */
/*   /\* virtual Bool_t IsSelected(TObject* obj); *\/ */
/*   /\* virtual Bool_t IsSelected(TList*   /\\* list *\\/ ) { return kTRUE; } *\/ */
  
/*   ClassDef(AliAnalysisNonPrimaryVertices,1); // Select primary vertices */
/* }; */

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