ROOT logo
//
// Calculate the FMD eventplane 
//
// Inputs:
//  - AliAODEvent
//
// Outputs:
//  - AnalysisResults.root
//
/**
 * @file   AliFMDEventPlaneTask.cxx
 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
 * @date   Thu Feb  7 01:09:40 2013
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_flow
 */
#include <TList.h>
#include <TMath.h>
#include "TH2D.h"
#include "AliLog.h"
#include "TAxis.h"
#include "AliAnalysisManager.h"
#include "AliFMDEventPlaneTask.h"
#include "AliAODHandler.h"
#include "AliAODInputHandler.h"
#include "AliAODForwardMult.h"
#include "AliAODEvent.h"
#include "AliAODForwardEP.h"

ClassImp(AliFMDEventPlaneTask)
#if 0
; // For emacs 
#endif

AliFMDEventPlaneTask::AliFMDEventPlaneTask()
  : AliBaseAODTask(),
    fEventPlaneFinder(), // EP finder
    fHistVertexSel()     // Diagnostics histogram
{
  // 
  // Default constructor
  //
  DGUARD(fDebug, 3,"Default CTOR of AliFMDEventPlaneTask");
}
//_____________________________________________________________________
AliFMDEventPlaneTask::AliFMDEventPlaneTask(const char* name) 
  : AliBaseAODTask(name, "AliFMDEventPlaneTask"),
    fEventPlaneFinder("eventPlane"), // EP finder
    fHistVertexSel(0)               // Diagnostics histogram
{
  // 
  // Constructor
  //
  // Parameters:
  //  name: Name of task
  //
  DGUARD(fDebug, 3,"Named CTOR of AliFMDEventPlaneTask: %s", name);
}
//_____________________________________________________________________
Bool_t AliFMDEventPlaneTask::Book()
{
  //
  // Create output objects
  //
  DGUARD(fDebug,1,"Create user objects of AliFMDEventPlaneTask");
  // Diagnostics histograms
  fHistVertexSel     = new TH1D("hVertexSel", "Selected vertices", 40, -20, 20);

  fSums->Add(fHistVertexSel);

  // Init of EventPlaneFinder
  TAxis* pe = new TAxis(200, -4., 6.);
  fEventPlaneFinder.CreateOutputObjects(fSums);
  fEventPlaneFinder.SetupForData(*pe);

  return true;
}
//_____________________________________________________________________
Bool_t AliFMDEventPlaneTask::Event(AliAODEvent& aod)
{
  // 
  // Called each event
  //
  // Parameters:
  //  option: Not used
  //
  DGUARD(fDebug,1,"Process an event in AliFMDEventPlaneTask");

  // Reset data members
  AliAODForwardMult* aodfmult = GetForward(aod);
  fHistVertexSel->Fill(aodfmult->GetIpZ());

  if (aod.GetRunNumber() != fEventPlaneFinder.GetRunNumber())
    fEventPlaneFinder.SetRunNumber(aod.GetRunNumber());

  AliAODForwardEP aodep;
  TH2D& fmdHist = aodfmult->GetHistogram();

  fEventPlaneFinder.FindEventplane(&aod, aodep, &fmdHist, 0);

  return true;
}
//_____________________________________________________________________
Bool_t AliFMDEventPlaneTask::Finalize()
{
  //
  // Terminate - Called after all events
  //
  // Parameters:
  //  option: Not used
  //
  DGUARD(fDebug,1,"Process merged output of AliFMDEventPlaneTask");
  
  // Calculations can be done here: Currently there are none
  // Summed histograms can be found in the list fSums
  // Output should be stored in the output list fResults

  return true;
}
//_____________________________________________________________________
//
//
// EOF
 AliFMDEventPlaneTask.cxx:1
 AliFMDEventPlaneTask.cxx:2
 AliFMDEventPlaneTask.cxx:3
 AliFMDEventPlaneTask.cxx:4
 AliFMDEventPlaneTask.cxx:5
 AliFMDEventPlaneTask.cxx:6
 AliFMDEventPlaneTask.cxx:7
 AliFMDEventPlaneTask.cxx:8
 AliFMDEventPlaneTask.cxx:9
 AliFMDEventPlaneTask.cxx:10
 AliFMDEventPlaneTask.cxx:11
 AliFMDEventPlaneTask.cxx:12
 AliFMDEventPlaneTask.cxx:13
 AliFMDEventPlaneTask.cxx:14
 AliFMDEventPlaneTask.cxx:15
 AliFMDEventPlaneTask.cxx:16
 AliFMDEventPlaneTask.cxx:17
 AliFMDEventPlaneTask.cxx:18
 AliFMDEventPlaneTask.cxx:19
 AliFMDEventPlaneTask.cxx:20
 AliFMDEventPlaneTask.cxx:21
 AliFMDEventPlaneTask.cxx:22
 AliFMDEventPlaneTask.cxx:23
 AliFMDEventPlaneTask.cxx:24
 AliFMDEventPlaneTask.cxx:25
 AliFMDEventPlaneTask.cxx:26
 AliFMDEventPlaneTask.cxx:27
 AliFMDEventPlaneTask.cxx:28
 AliFMDEventPlaneTask.cxx:29
 AliFMDEventPlaneTask.cxx:30
 AliFMDEventPlaneTask.cxx:31
 AliFMDEventPlaneTask.cxx:32
 AliFMDEventPlaneTask.cxx:33
 AliFMDEventPlaneTask.cxx:34
 AliFMDEventPlaneTask.cxx:35
 AliFMDEventPlaneTask.cxx:36
 AliFMDEventPlaneTask.cxx:37
 AliFMDEventPlaneTask.cxx:38
 AliFMDEventPlaneTask.cxx:39
 AliFMDEventPlaneTask.cxx:40
 AliFMDEventPlaneTask.cxx:41
 AliFMDEventPlaneTask.cxx:42
 AliFMDEventPlaneTask.cxx:43
 AliFMDEventPlaneTask.cxx:44
 AliFMDEventPlaneTask.cxx:45
 AliFMDEventPlaneTask.cxx:46
 AliFMDEventPlaneTask.cxx:47
 AliFMDEventPlaneTask.cxx:48
 AliFMDEventPlaneTask.cxx:49
 AliFMDEventPlaneTask.cxx:50
 AliFMDEventPlaneTask.cxx:51
 AliFMDEventPlaneTask.cxx:52
 AliFMDEventPlaneTask.cxx:53
 AliFMDEventPlaneTask.cxx:54
 AliFMDEventPlaneTask.cxx:55
 AliFMDEventPlaneTask.cxx:56
 AliFMDEventPlaneTask.cxx:57
 AliFMDEventPlaneTask.cxx:58
 AliFMDEventPlaneTask.cxx:59
 AliFMDEventPlaneTask.cxx:60
 AliFMDEventPlaneTask.cxx:61
 AliFMDEventPlaneTask.cxx:62
 AliFMDEventPlaneTask.cxx:63
 AliFMDEventPlaneTask.cxx:64
 AliFMDEventPlaneTask.cxx:65
 AliFMDEventPlaneTask.cxx:66
 AliFMDEventPlaneTask.cxx:67
 AliFMDEventPlaneTask.cxx:68
 AliFMDEventPlaneTask.cxx:69
 AliFMDEventPlaneTask.cxx:70
 AliFMDEventPlaneTask.cxx:71
 AliFMDEventPlaneTask.cxx:72
 AliFMDEventPlaneTask.cxx:73
 AliFMDEventPlaneTask.cxx:74
 AliFMDEventPlaneTask.cxx:75
 AliFMDEventPlaneTask.cxx:76
 AliFMDEventPlaneTask.cxx:77
 AliFMDEventPlaneTask.cxx:78
 AliFMDEventPlaneTask.cxx:79
 AliFMDEventPlaneTask.cxx:80
 AliFMDEventPlaneTask.cxx:81
 AliFMDEventPlaneTask.cxx:82
 AliFMDEventPlaneTask.cxx:83
 AliFMDEventPlaneTask.cxx:84
 AliFMDEventPlaneTask.cxx:85
 AliFMDEventPlaneTask.cxx:86
 AliFMDEventPlaneTask.cxx:87
 AliFMDEventPlaneTask.cxx:88
 AliFMDEventPlaneTask.cxx:89
 AliFMDEventPlaneTask.cxx:90
 AliFMDEventPlaneTask.cxx:91
 AliFMDEventPlaneTask.cxx:92
 AliFMDEventPlaneTask.cxx:93
 AliFMDEventPlaneTask.cxx:94
 AliFMDEventPlaneTask.cxx:95
 AliFMDEventPlaneTask.cxx:96
 AliFMDEventPlaneTask.cxx:97
 AliFMDEventPlaneTask.cxx:98
 AliFMDEventPlaneTask.cxx:99
 AliFMDEventPlaneTask.cxx:100
 AliFMDEventPlaneTask.cxx:101
 AliFMDEventPlaneTask.cxx:102
 AliFMDEventPlaneTask.cxx:103
 AliFMDEventPlaneTask.cxx:104
 AliFMDEventPlaneTask.cxx:105
 AliFMDEventPlaneTask.cxx:106
 AliFMDEventPlaneTask.cxx:107
 AliFMDEventPlaneTask.cxx:108
 AliFMDEventPlaneTask.cxx:109
 AliFMDEventPlaneTask.cxx:110
 AliFMDEventPlaneTask.cxx:111
 AliFMDEventPlaneTask.cxx:112
 AliFMDEventPlaneTask.cxx:113
 AliFMDEventPlaneTask.cxx:114
 AliFMDEventPlaneTask.cxx:115
 AliFMDEventPlaneTask.cxx:116
 AliFMDEventPlaneTask.cxx:117
 AliFMDEventPlaneTask.cxx:118
 AliFMDEventPlaneTask.cxx:119
 AliFMDEventPlaneTask.cxx:120
 AliFMDEventPlaneTask.cxx:121
 AliFMDEventPlaneTask.cxx:122
 AliFMDEventPlaneTask.cxx:123
 AliFMDEventPlaneTask.cxx:124
 AliFMDEventPlaneTask.cxx:125
 AliFMDEventPlaneTask.cxx:126