ROOT logo
//-*- Mode: C++ -*-
// $Id$

//* This file is property of and copyright by the ALICE Project        * 
//* ALICE Experiment at CERN, All rights reserved.                     *
//* See cxx source for full Copyright notice                           *

/// @file   AliAnalysisTaskDxHFEParticleSelection.h
/// @author Sedat Altinpinar, Hege Erdal, Matthias Richter
/// @date   2012-03-19
/// @brief  AnalysisTask electron selection for D0 - HFE correlation
///

#ifndef ALIANALYSISTASKDXHFEPARTICLESELECTION_H
#define ALIANALYSISTASKDXHFEPARTICLESELECTION_H

#include "AliAnalysisTaskSE.h"
#include "TString.h"

class AliDxHFEParticleSelection;
class AliAnalysisCuts;
class TList;
class TObjArray;

/**
 * @class AliAnalysisTaskDxHFEParticleSelection
 * Selection task for particles uesd in the D0 - HFE correlation studies
 * Task performs the selection based on a configured AliDxHFEParticleSelection
 * instance.
 */
class AliAnalysisTaskDxHFEParticleSelection : public AliAnalysisTaskSE {
  public:
  /// constructor
  AliAnalysisTaskDxHFEParticleSelection(const char* opt="");
  /// destructor
  virtual ~AliAnalysisTaskDxHFEParticleSelection();

  enum {
    kD0=0,
    kElectron=1
  };

  /// inherited from AliAnalysisTask: connect tree branches at input slots
  virtual void ConnectInputData(Option_t *option="") {
    return AliAnalysisTaskSE::ConnectInputData(option);
  }

  /// inherited from AliAnalysisTaskSE: create output objects
  virtual void UserCreateOutputObjects();
  /// inherited from AliAnalysisTaskSE: event processing
  virtual void UserExec(Option_t*);
  /// inherited from AliAnalysisTask: called in SlaveTerminate phase for each task
  virtual void FinishTaskOutput();
  /// inherited from AliAnalysisTask: final step
  virtual void Terminate(Option_t*);

  void SetOption(const char* opt) { fOption = opt; }
  void SetFillOnlyD0D0bar(Int_t flagfill){fFillOnlyD0D0bar=flagfill;}
  void SetParticleType(int particle){fParticleType=particle;}
  virtual void SetUseMC(Bool_t useMC){fUseMC=useMC;}
  //  virtual void SetCuts(AliAnalysisCuts* cuts){fCuts=cuts;}
  virtual void SetCutList(TList* cuts){fCutList=cuts;}
  Bool_t GetUseMC() const {return fUseMC;}

 protected:

 private:
  /// copy constructor prohibited: might change
  AliAnalysisTaskDxHFEParticleSelection(const AliAnalysisTaskDxHFEParticleSelection&);
  /// assignment operator prohibited: might change
  AliAnalysisTaskDxHFEParticleSelection& operator=(const AliAnalysisTaskDxHFEParticleSelection&);

  int DefineSlots();
  int ParseArguments(const char* arguments);

  TList* fOutput;                       // list send on output slot 1
  TString fOption;                      // option string
  TList* fCutList;                         // TList containg cut objects
  AliAnalysisCuts *fCutsD0;             // Cut Object for D0 
  AliDxHFEParticleSelection* fSelector; // selector instance
  bool fUseMC;                          // use MC info
  Int_t     fFillOnlyD0D0bar;           // flag to set what to fill (0 = both, 1 = D0 only, 2 = D0bar only)
  TObjArray *fSelectedTracks;           // Array for selected Tracks
  TObjArray *fMCArray;                  // MC array
  Int_t fParticleType;                   // Holds which particle to run on
  Int_t fSystem;                        // holds collisions system (0=pp, 1=PbPb(,2=pPb))
  Bool_t fUseKine;                      // Whether or not to run on MC stack


  ClassDef(AliAnalysisTaskDxHFEParticleSelection, 5);
};

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