ROOT logo
#ifndef ALIANALYSISTASKESDMUONFILTER_H
#define ALIANALYSISTASKESDMUONFILTER_H
 
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */ 

///
/// \brief Add the muon tracks to the generic AOD track branch during the
/// filtering of the ESD.
///
/// \author R. Arnaldi 5/5/08 and L. Aphecetche January 2011

#ifndef ALIANALYSISTASKSE_H
#include "AliAnalysisTaskSE.h"
#endif

#include "TMatrixD.h"

class AliAnalysisFilter;

class AliAnalysisTaskESDMuonFilter : public AliAnalysisTaskSE
{
public:
  AliAnalysisTaskESDMuonFilter(Bool_t onlyMuon=kTRUE, Bool_t keepAllEvents=kTRUE, Int_t mcMode=0, Bool_t withSPDtracklets=kFALSE);
  AliAnalysisTaskESDMuonFilter(const char* name, Bool_t onlyMuon=kTRUE, Bool_t keepAllEvents=kTRUE, Int_t mcMode=0, Bool_t withSPDtracklets=kFALSE);
  virtual ~AliAnalysisTaskESDMuonFilter() {;}
  
  virtual void UserCreateOutputObjects();
  virtual void Init();
  virtual void LocalInit() {Init();}
  virtual void UserExec(Option_t *option);
  
  virtual void ConvertESDtoAOD();
  
  virtual void SetTrackFilter(AliAnalysisFilter* trackF) {fTrackFilter = trackF;}
  void SetWriteMuonAOD(Bool_t enableMuonAOD){fEnableMuonAOD = enableMuonAOD;}
  void SetWriteDimuonAOD(Bool_t enableDimuonAOD){fEnableDimuonAOD = enableDimuonAOD;}
  void SetWithSPDtracklets(Bool_t withSPDtracklets=kTRUE) { fWithSPDTracklets = withSPDtracklets; }
  void SetMCMode(Int_t mcMode) { fMCMode=mcMode; }
  
  void PrintTask(Option_t *option="", Int_t indent=0) const;

  void ConvertCovMatrixMUON2AOD(const TMatrixD& covMUON, Double_t covAOD[21]);
  
private:
  AliAnalysisTaskESDMuonFilter(const AliAnalysisTaskESDMuonFilter&);
  AliAnalysisTaskESDMuonFilter& operator=(const AliAnalysisTaskESDMuonFilter&);
  void AddFilteredAOD(const char* aodfilename, const char* title);
  
  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
  Bool_t fWithSPDTracklets; ///< whether or not we keep SPD tracklets
  
  ClassDef(AliAnalysisTaskESDMuonFilter, 6); // Analysis task for standard ESD filtering
};

#endif
 AliAnalysisTaskESDMuonFilter.h:1
 AliAnalysisTaskESDMuonFilter.h:2
 AliAnalysisTaskESDMuonFilter.h:3
 AliAnalysisTaskESDMuonFilter.h:4
 AliAnalysisTaskESDMuonFilter.h:5
 AliAnalysisTaskESDMuonFilter.h:6
 AliAnalysisTaskESDMuonFilter.h:7
 AliAnalysisTaskESDMuonFilter.h:8
 AliAnalysisTaskESDMuonFilter.h:9
 AliAnalysisTaskESDMuonFilter.h:10
 AliAnalysisTaskESDMuonFilter.h:11
 AliAnalysisTaskESDMuonFilter.h:12
 AliAnalysisTaskESDMuonFilter.h:13
 AliAnalysisTaskESDMuonFilter.h:14
 AliAnalysisTaskESDMuonFilter.h:15
 AliAnalysisTaskESDMuonFilter.h:16
 AliAnalysisTaskESDMuonFilter.h:17
 AliAnalysisTaskESDMuonFilter.h:18
 AliAnalysisTaskESDMuonFilter.h:19
 AliAnalysisTaskESDMuonFilter.h:20
 AliAnalysisTaskESDMuonFilter.h:21
 AliAnalysisTaskESDMuonFilter.h:22
 AliAnalysisTaskESDMuonFilter.h:23
 AliAnalysisTaskESDMuonFilter.h:24
 AliAnalysisTaskESDMuonFilter.h:25
 AliAnalysisTaskESDMuonFilter.h:26
 AliAnalysisTaskESDMuonFilter.h:27
 AliAnalysisTaskESDMuonFilter.h:28
 AliAnalysisTaskESDMuonFilter.h:29
 AliAnalysisTaskESDMuonFilter.h:30
 AliAnalysisTaskESDMuonFilter.h:31
 AliAnalysisTaskESDMuonFilter.h:32
 AliAnalysisTaskESDMuonFilter.h:33
 AliAnalysisTaskESDMuonFilter.h:34
 AliAnalysisTaskESDMuonFilter.h:35
 AliAnalysisTaskESDMuonFilter.h:36
 AliAnalysisTaskESDMuonFilter.h:37
 AliAnalysisTaskESDMuonFilter.h:38
 AliAnalysisTaskESDMuonFilter.h:39
 AliAnalysisTaskESDMuonFilter.h:40
 AliAnalysisTaskESDMuonFilter.h:41
 AliAnalysisTaskESDMuonFilter.h:42
 AliAnalysisTaskESDMuonFilter.h:43
 AliAnalysisTaskESDMuonFilter.h:44
 AliAnalysisTaskESDMuonFilter.h:45
 AliAnalysisTaskESDMuonFilter.h:46
 AliAnalysisTaskESDMuonFilter.h:47
 AliAnalysisTaskESDMuonFilter.h:48
 AliAnalysisTaskESDMuonFilter.h:49
 AliAnalysisTaskESDMuonFilter.h:50
 AliAnalysisTaskESDMuonFilter.h:51
 AliAnalysisTaskESDMuonFilter.h:52
 AliAnalysisTaskESDMuonFilter.h:53
 AliAnalysisTaskESDMuonFilter.h:54
 AliAnalysisTaskESDMuonFilter.h:55
 AliAnalysisTaskESDMuonFilter.h:56
 AliAnalysisTaskESDMuonFilter.h:57
 AliAnalysisTaskESDMuonFilter.h:58
 AliAnalysisTaskESDMuonFilter.h:59
 AliAnalysisTaskESDMuonFilter.h:60
 AliAnalysisTaskESDMuonFilter.h:61
 AliAnalysisTaskESDMuonFilter.h:62
 AliAnalysisTaskESDMuonFilter.h:63