45c318488a09e25e550f43914a6f7c9845afa999
[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);\r
27     AliAnalysisTaskESDMuonFilter(const char* name, Bool_t onlyMuon=kTRUE, Bool_t keepAllEvents=kTRUE);\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   \r
57   ClassDef(AliAnalysisTaskESDMuonFilter, 3); // Analysis task for standard ESD filtering\r
58 };\r
59  \r
60 class AliAnalysisNonMuonTrackCuts : public AliAnalysisCuts\r
61 {\r
62 public:\r
63   AliAnalysisNonMuonTrackCuts();\r
64   virtual ~AliAnalysisNonMuonTrackCuts() {}\r
65   virtual Bool_t IsSelected(TObject* obj);\r
66   virtual Bool_t IsSelected(TList*   /* list */ ) { return kTRUE; }\r
67 \r
68   ClassDef(AliAnalysisNonMuonTrackCuts,1); // Select muon spectrometer tracks\r
69 };\r
70 \r
71 class AliAnalysisNonPrimaryVertices : public AliAnalysisCuts\r
72 {\r
73 public:\r
74   AliAnalysisNonPrimaryVertices();\r
75   virtual ~AliAnalysisNonPrimaryVertices() {}\r
76   virtual Bool_t IsSelected(TObject* obj);\r
77   virtual Bool_t IsSelected(TList*   /* list */ ) { return kTRUE; }\r
78   \r
79   ClassDef(AliAnalysisNonPrimaryVertices,1); // Select primary vertices\r
80 };\r
81 \r
82 #endif\r