ROOT logo
#ifndef ALIANALYSISTASKESDNUCLEXFILTERMC_H
#define ALIANALYSISTASKESDNUCLEXFILTERMC_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 "AliAODMCNuclExReplicator.h"
//#include "AliAOD3LH.h"

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

class AliAnalysisFilter;
class AliESDtrack;
//class AliPIDResponse;

class AliAnalysisTaskESDNuclExFilterMC : public AliAnalysisTaskSE
{
 public:
    AliAnalysisTaskESDNuclExFilterMC(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);
    AliAnalysisTaskESDNuclExFilterMC(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 ~AliAnalysisTaskESDNuclExFilterMC() {;}
    // 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:
    AliAnalysisTaskESDNuclExFilterMC(const AliAnalysisTaskESDNuclExFilterMC&);
    AliAnalysisTaskESDNuclExFilterMC& operator=(const AliAnalysisTaskESDNuclExFilterMC&);
    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;

    AliAODMCNuclExReplicator* murep;

    /* AliPIDResponse  *fPIDResponse;                  //! PID response object */

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