fixes from Laurent for the MC branch in the AOD filters
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskESDMuonFilter.h
1 #ifndef ALIANALYSISTASKESDMUONFILTER_H\r
2 #define ALIANALYSISTASKESDMUONFILTER_H\r
3  \r
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
5  * See cxx source for full Copyright notice                               */\r
6 \r
7 //\r
8 // Add the muon tracks to the generic AOD track branch during the \r
9 // filtering of the ESD. \r
10 //\r
11 // Authors: R. Arnaldi 5/5/08 and L. Aphecetche January 2011\r
12 \r
13 #ifndef ALIANALYSISTASKSE_H\r
14 #  include "AliAnalysisTaskSE.h"\r
15 #endif\r
16 #ifndef ALIANALYSISCUTS_H\r
17 #  include "AliAnalysisCuts.h"\r
18 #endif\r
19 \r
20 class AliAnalysisFilter;\r
21 class AliStack;\r
22 \r
23 class AliAnalysisTaskESDMuonFilter : public AliAnalysisTaskSE\r
24 {\r
25  public:\r
26     AliAnalysisTaskESDMuonFilter(Bool_t onlyMuon=kTRUE, Bool_t keepAllEvents=kTRUE, Int_t mcMode=0);\r
27     AliAnalysisTaskESDMuonFilter(const char* name, Bool_t onlyMuon=kTRUE, Bool_t keepAllEvents=kTRUE, Int_t mcMode=0);\r
28     virtual ~AliAnalysisTaskESDMuonFilter() {;}\r
29     // Implementation of interface methods\r
30     virtual void UserCreateOutputObjects();\r
31     virtual void Init();\r
32     virtual void LocalInit() {Init();}\r
33     virtual void UserExec(Option_t *option);\r
34     virtual void Terminate(Option_t *option);\r
35 \r
36     virtual void ConvertESDtoAOD();\r
37 \r
38     // Setters\r
39     virtual void SetTrackFilter(AliAnalysisFilter* trackF) {fTrackFilter = trackF;}\r
40     void SetWriteMuonAOD(Bool_t enableMuonAOD){fEnableMuonAOD = enableMuonAOD;}\r
41     void SetWriteDimuonAOD(Bool_t enableDimuonAOD){fEnableDimuonAOD = enableDimuonAOD;}\r
42 \r
43   void PrintTask(Option_t *option="", Int_t indent=0) const;\r
44 \r
45  private:\r
46     AliAnalysisTaskESDMuonFilter(const AliAnalysisTaskESDMuonFilter&);\r
47     AliAnalysisTaskESDMuonFilter& operator=(const AliAnalysisTaskESDMuonFilter&);\r
48     void PrintMCInfo(AliStack *pStack,Int_t label); // for debugging\r
49   void AddFilteredAOD(const char* aodfilename, const char* title);\r
50 \r
51   AliAnalysisFilter* fTrackFilter; //  Track Filter\r
52   Bool_t fEnableMuonAOD; // flag for enabling Muon AOD production\r
53   Bool_t fEnableDimuonAOD; // flag for enabling Dimuon AOD production\r
54   Bool_t fOnlyMuon; // flag for disabling branches irrelevant for (most) muon analyses\r
55   Bool_t fKeepAllEvents; // keep even events where there's no muons (to get e.g. unbiased vertex distribution)\r
56   Int_t  fMCMode; // whether and how we're filtering MC data\r
57   \r
58   ClassDef(AliAnalysisTaskESDMuonFilter, 5); // Analysis task for standard ESD filtering\r
59 };\r
60  \r
61 class AliAnalysisNonMuonTrackCuts : public AliAnalysisCuts\r
62 {\r
63 public:\r
64   AliAnalysisNonMuonTrackCuts();\r
65   virtual ~AliAnalysisNonMuonTrackCuts() {}\r
66   virtual Bool_t IsSelected(TObject* obj);\r
67   virtual Bool_t IsSelected(TList*   /* list */ ) { return kTRUE; }\r
68 \r
69   ClassDef(AliAnalysisNonMuonTrackCuts,1); // Select muon spectrometer tracks\r
70 };\r
71 \r
72 class AliAnalysisNonPrimaryVertices : public AliAnalysisCuts\r
73 {\r
74 public:\r
75   AliAnalysisNonPrimaryVertices();\r
76   virtual ~AliAnalysisNonPrimaryVertices() {}\r
77   virtual Bool_t IsSelected(TObject* obj);\r
78   virtual Bool_t IsSelected(TList*   /* list */ ) { return kTRUE; }\r
79   \r
80   ClassDef(AliAnalysisNonPrimaryVertices,1); // Select primary vertices\r
81 };\r
82 \r
83 #endif\r