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   AliAnalysisTaskDxHFECorrelation.h
/// @author Sedat Altinpinar, Hege Erdal, Matthias Richter
/// @date   2012-03-19
/// @brief  AnalysisTask D0 - HFE correlation
///

#ifndef ALIANALYSISTASKDXHFECORRELATION_H
#define ALIANALYSISTASKDXHFECORRELATION_H

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

class AliPID;
class AliPIDResponse;
class TList;
class AliDxHFEParticleSelection;
class AliDxHFEParticleSelectionD0;
class AliDxHFEParticleSelectionEl;
class AliDxHFECorrelation;
class AliAnalysisCuts;
class AliHFEpid;
class AliHFEcuts;
class AliHFAssociatedTrackCuts;

/**
 * @class AliAnalysisTaskDxHFECorrelation
 * Task for D0-HFE correleations
 */
class AliAnalysisTaskDxHFECorrelation : public AliAnalysisTaskSE {
  public:
  /// constructor
  AliAnalysisTaskDxHFECorrelation(const char* opt="");
  /// destructor
  virtual ~AliAnalysisTaskDxHFECorrelation();

  /// 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*);

  /// set options
  // TODO: Some of them are not in use, as the members are set by parsing arguments.
  // Keep it for now.
  void SetOption(const char* opt) { fOption = opt; }
  virtual void SetUseMC(Bool_t useMC){fUseMC=useMC;}
  virtual void SetCutsD0(AliAnalysisCuts* cuts){fCutsD0=cuts;}
  virtual void SetCutsHFE(TList* cuts){fListHFE=cuts;}

  void SetCuts(AliAnalysisCuts* cuts){fCuts=cuts;}
  void SetUseEventMixing(Bool_t useMixing) {fUseEventMixing=useMixing;}
  void SetSystem(Bool_t system){fSystem=system;}
  void SetTriggerParticle(int trigger){fTriggerParticle=trigger;} 

  /// overloaded from TObject: get option
  virtual Option_t* GetOption() const { return fOption;}
  Bool_t GetUseMC() const {return fUseMC;}

 protected:

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

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

  TList* fOutput;                        //! list send on output slot 1
  TString fOption;                       //  option string
  AliDxHFECorrelation* fCorrelation;     //  correlation worker class
  AliDxHFEParticleSelection* fD0s;       //  selection of D0s
  AliDxHFEParticleSelection* fElectrons; //  selection of electrons
  AliAnalysisCuts *fCutsD0;              //  Cuts D0 
  AliAnalysisCuts *fCuts;                // Cuts which holds info for AliHFCorrelator 
  Bool_t fUseMC;                         // use MC info
  Bool_t fUseEventMixing;                // Run Event Mixing analysis
  Int_t fSystem;                         // Which system pp/PbPb
  TObjArray *fSelectedD0s;               // Array for selected D0s
  TObjArray *fSelectedElectrons;         // Array for selected Electrons
  TList* fListHFE;                       // List containing cut and pid objects for HFE
  Int_t fTriggerParticle;                // Which particle to trigger on 
  Bool_t fUseKine;                       // To run over MC or reconstructed data
  TObjArray* fMCArray;                   // Array to hold MCarray
  TString fCorrelationArguments;         // String argument for correlation

  ClassDef(AliAnalysisTaskDxHFECorrelation, 6);
};

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