ROOT logo
/*************************************************************************
* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  * 
**************************************************************************/

#include "Riostream.h" //needed as include
#include "TProfile.h"
#include "TProfile2D.h"
#include "TList.h"


class AliAnalysisTaskSE;
#include "AliAnalysisManager.h"
#include "AliFlowEventSimple.h"


#include "AliAnalysisTaskMCEventPlane.h"
#include "AliFlowAnalysisWithMCEventPlane.h"
#include "AliFlowCommonHist.h"
#include "AliFlowCommonHistResults.h"

// AliAnalysisTaskMCEventPlane:
//
// analysis task for Monte Carlo Event Plane
//
// Author: Naomi van der Kolk (kolk@nikhef.nl)

using std::endl;
using std::cout;
ClassImp(AliAnalysisTaskMCEventPlane)

//________________________________________________________________________
AliAnalysisTaskMCEventPlane::AliAnalysisTaskMCEventPlane(const char *name) : 
  AliAnalysisTaskSE(name), 
  fEvent(NULL),
  fMc(NULL),
  fListHistos(NULL),
  fHarmonic(2),
  fEvaluateMixedHarmonics(kFALSE),
  fnBinsMult(10000),
  fMinMult(0.),  
  fMaxMult(10000.),    
  fNinCorrelator(2),
  fMinCorrelator(2),
  fXinPairAngle(0.5) 
{
  // Constructor
  cout<<"AliAnalysisTaskMCEventPlane::AliAnalysisTaskMCEventPlane(const char *name)"<<endl;

  // Define input and output slots here
  // Input slot #0 works with a TChain
  DefineInput(0, AliFlowEventSimple::Class());
  // Output slot #0 writes into a TList container
  DefineOutput(1, TList::Class()); 
}

//________________________________________________________________________
AliAnalysisTaskMCEventPlane::AliAnalysisTaskMCEventPlane() : 
  AliAnalysisTaskSE(),
  fEvent(NULL),
  fMc(NULL),
  fListHistos(NULL),
  fHarmonic(0),
  fEvaluateMixedHarmonics(kFALSE),
  fnBinsMult(0),
  fMinMult(0.0),  
  fMaxMult(0.0),     
  fNinCorrelator(0),
  fMinCorrelator(0),
  fXinPairAngle(0.0) 
{
  // Constructor
  cout<<"AliAnalysisTaskMCEventPlane::AliAnalysisTaskMCEventPlane()"<<endl;

}

//________________________________________________________________________
AliAnalysisTaskMCEventPlane::~AliAnalysisTaskMCEventPlane()
{

  //destructor

}

//________________________________________________________________________
void AliAnalysisTaskMCEventPlane::UserCreateOutputObjects() 
{
  // Called once
  cout<<"AliAnalysisTaskMCEventPlane::CreateOutputObjects()"<<endl;

  //Analyser
  fMc  = new AliFlowAnalysisWithMCEventPlane() ;
  
  fMc->SetHarmonic(fHarmonic);
  
  // Setters for mixed harmonics study:
  fMc->SetEvaluateMixedHarmonics(fEvaluateMixedHarmonics);
  fMc->SetNinCorrelator(fNinCorrelator);
  fMc->SetMinCorrelator(fMinCorrelator);
  fMc->SetXinPairAngle(fXinPairAngle);
  fMc->SetnBinsMult(fnBinsMult);
  fMc->SetMinMult(fMinMult);
  fMc->SetMaxMult(fMaxMult);
  
  // Initialized:    
  fMc-> Init();

  if (fMc->GetHistList()) {
    //fMc->GetHistList()->Print();
    fListHistos = fMc->GetHistList();
    //fListHistos->Print();
  }
  else {Printf("ERROR: Could not retrieve histogram list"); }

 PostData(1,fListHistos);

}

//________________________________________________________________________
void AliAnalysisTaskMCEventPlane::UserExec(Option_t *) 
{
  // Main loop
  // Called for each event

  fEvent = dynamic_cast<AliFlowEventSimple*>(GetInputData(0));
  if (fEvent){
    fMc->Make(fEvent);
  }
  else {
    cout << "Warning no input data!!!" << endl;
  }

  PostData(1,fListHistos); 
}      


//________________________________________________________________________
void AliAnalysisTaskMCEventPlane::Terminate(Option_t *) 
{
  // Called once at the end of the query
  AliFlowAnalysisWithMCEventPlane* fMcTerm = new AliFlowAnalysisWithMCEventPlane() ;

  //Get output data
  fListHistos = (TList*)GetOutputData(1);
  if (fListHistos) {
    fMcTerm->GetOutputHistograms(fListHistos);
    fMcTerm->Finish();
    PostData(1,fListHistos);
  } else 
    { 
      cout << "histogram list pointer is empty" << endl;
    }
}

 AliAnalysisTaskMCEventPlane.cxx:1
 AliAnalysisTaskMCEventPlane.cxx:2
 AliAnalysisTaskMCEventPlane.cxx:3
 AliAnalysisTaskMCEventPlane.cxx:4
 AliAnalysisTaskMCEventPlane.cxx:5
 AliAnalysisTaskMCEventPlane.cxx:6
 AliAnalysisTaskMCEventPlane.cxx:7
 AliAnalysisTaskMCEventPlane.cxx:8
 AliAnalysisTaskMCEventPlane.cxx:9
 AliAnalysisTaskMCEventPlane.cxx:10
 AliAnalysisTaskMCEventPlane.cxx:11
 AliAnalysisTaskMCEventPlane.cxx:12
 AliAnalysisTaskMCEventPlane.cxx:13
 AliAnalysisTaskMCEventPlane.cxx:14
 AliAnalysisTaskMCEventPlane.cxx:15
 AliAnalysisTaskMCEventPlane.cxx:16
 AliAnalysisTaskMCEventPlane.cxx:17
 AliAnalysisTaskMCEventPlane.cxx:18
 AliAnalysisTaskMCEventPlane.cxx:19
 AliAnalysisTaskMCEventPlane.cxx:20
 AliAnalysisTaskMCEventPlane.cxx:21
 AliAnalysisTaskMCEventPlane.cxx:22
 AliAnalysisTaskMCEventPlane.cxx:23
 AliAnalysisTaskMCEventPlane.cxx:24
 AliAnalysisTaskMCEventPlane.cxx:25
 AliAnalysisTaskMCEventPlane.cxx:26
 AliAnalysisTaskMCEventPlane.cxx:27
 AliAnalysisTaskMCEventPlane.cxx:28
 AliAnalysisTaskMCEventPlane.cxx:29
 AliAnalysisTaskMCEventPlane.cxx:30
 AliAnalysisTaskMCEventPlane.cxx:31
 AliAnalysisTaskMCEventPlane.cxx:32
 AliAnalysisTaskMCEventPlane.cxx:33
 AliAnalysisTaskMCEventPlane.cxx:34
 AliAnalysisTaskMCEventPlane.cxx:35
 AliAnalysisTaskMCEventPlane.cxx:36
 AliAnalysisTaskMCEventPlane.cxx:37
 AliAnalysisTaskMCEventPlane.cxx:38
 AliAnalysisTaskMCEventPlane.cxx:39
 AliAnalysisTaskMCEventPlane.cxx:40
 AliAnalysisTaskMCEventPlane.cxx:41
 AliAnalysisTaskMCEventPlane.cxx:42
 AliAnalysisTaskMCEventPlane.cxx:43
 AliAnalysisTaskMCEventPlane.cxx:44
 AliAnalysisTaskMCEventPlane.cxx:45
 AliAnalysisTaskMCEventPlane.cxx:46
 AliAnalysisTaskMCEventPlane.cxx:47
 AliAnalysisTaskMCEventPlane.cxx:48
 AliAnalysisTaskMCEventPlane.cxx:49
 AliAnalysisTaskMCEventPlane.cxx:50
 AliAnalysisTaskMCEventPlane.cxx:51
 AliAnalysisTaskMCEventPlane.cxx:52
 AliAnalysisTaskMCEventPlane.cxx:53
 AliAnalysisTaskMCEventPlane.cxx:54
 AliAnalysisTaskMCEventPlane.cxx:55
 AliAnalysisTaskMCEventPlane.cxx:56
 AliAnalysisTaskMCEventPlane.cxx:57
 AliAnalysisTaskMCEventPlane.cxx:58
 AliAnalysisTaskMCEventPlane.cxx:59
 AliAnalysisTaskMCEventPlane.cxx:60
 AliAnalysisTaskMCEventPlane.cxx:61
 AliAnalysisTaskMCEventPlane.cxx:62
 AliAnalysisTaskMCEventPlane.cxx:63
 AliAnalysisTaskMCEventPlane.cxx:64
 AliAnalysisTaskMCEventPlane.cxx:65
 AliAnalysisTaskMCEventPlane.cxx:66
 AliAnalysisTaskMCEventPlane.cxx:67
 AliAnalysisTaskMCEventPlane.cxx:68
 AliAnalysisTaskMCEventPlane.cxx:69
 AliAnalysisTaskMCEventPlane.cxx:70
 AliAnalysisTaskMCEventPlane.cxx:71
 AliAnalysisTaskMCEventPlane.cxx:72
 AliAnalysisTaskMCEventPlane.cxx:73
 AliAnalysisTaskMCEventPlane.cxx:74
 AliAnalysisTaskMCEventPlane.cxx:75
 AliAnalysisTaskMCEventPlane.cxx:76
 AliAnalysisTaskMCEventPlane.cxx:77
 AliAnalysisTaskMCEventPlane.cxx:78
 AliAnalysisTaskMCEventPlane.cxx:79
 AliAnalysisTaskMCEventPlane.cxx:80
 AliAnalysisTaskMCEventPlane.cxx:81
 AliAnalysisTaskMCEventPlane.cxx:82
 AliAnalysisTaskMCEventPlane.cxx:83
 AliAnalysisTaskMCEventPlane.cxx:84
 AliAnalysisTaskMCEventPlane.cxx:85
 AliAnalysisTaskMCEventPlane.cxx:86
 AliAnalysisTaskMCEventPlane.cxx:87
 AliAnalysisTaskMCEventPlane.cxx:88
 AliAnalysisTaskMCEventPlane.cxx:89
 AliAnalysisTaskMCEventPlane.cxx:90
 AliAnalysisTaskMCEventPlane.cxx:91
 AliAnalysisTaskMCEventPlane.cxx:92
 AliAnalysisTaskMCEventPlane.cxx:93
 AliAnalysisTaskMCEventPlane.cxx:94
 AliAnalysisTaskMCEventPlane.cxx:95
 AliAnalysisTaskMCEventPlane.cxx:96
 AliAnalysisTaskMCEventPlane.cxx:97
 AliAnalysisTaskMCEventPlane.cxx:98
 AliAnalysisTaskMCEventPlane.cxx:99
 AliAnalysisTaskMCEventPlane.cxx:100
 AliAnalysisTaskMCEventPlane.cxx:101
 AliAnalysisTaskMCEventPlane.cxx:102
 AliAnalysisTaskMCEventPlane.cxx:103
 AliAnalysisTaskMCEventPlane.cxx:104
 AliAnalysisTaskMCEventPlane.cxx:105
 AliAnalysisTaskMCEventPlane.cxx:106
 AliAnalysisTaskMCEventPlane.cxx:107
 AliAnalysisTaskMCEventPlane.cxx:108
 AliAnalysisTaskMCEventPlane.cxx:109
 AliAnalysisTaskMCEventPlane.cxx:110
 AliAnalysisTaskMCEventPlane.cxx:111
 AliAnalysisTaskMCEventPlane.cxx:112
 AliAnalysisTaskMCEventPlane.cxx:113
 AliAnalysisTaskMCEventPlane.cxx:114
 AliAnalysisTaskMCEventPlane.cxx:115
 AliAnalysisTaskMCEventPlane.cxx:116
 AliAnalysisTaskMCEventPlane.cxx:117
 AliAnalysisTaskMCEventPlane.cxx:118
 AliAnalysisTaskMCEventPlane.cxx:119
 AliAnalysisTaskMCEventPlane.cxx:120
 AliAnalysisTaskMCEventPlane.cxx:121
 AliAnalysisTaskMCEventPlane.cxx:122
 AliAnalysisTaskMCEventPlane.cxx:123
 AliAnalysisTaskMCEventPlane.cxx:124
 AliAnalysisTaskMCEventPlane.cxx:125
 AliAnalysisTaskMCEventPlane.cxx:126
 AliAnalysisTaskMCEventPlane.cxx:127
 AliAnalysisTaskMCEventPlane.cxx:128
 AliAnalysisTaskMCEventPlane.cxx:129
 AliAnalysisTaskMCEventPlane.cxx:130
 AliAnalysisTaskMCEventPlane.cxx:131
 AliAnalysisTaskMCEventPlane.cxx:132
 AliAnalysisTaskMCEventPlane.cxx:133
 AliAnalysisTaskMCEventPlane.cxx:134
 AliAnalysisTaskMCEventPlane.cxx:135
 AliAnalysisTaskMCEventPlane.cxx:136
 AliAnalysisTaskMCEventPlane.cxx:137
 AliAnalysisTaskMCEventPlane.cxx:138
 AliAnalysisTaskMCEventPlane.cxx:139
 AliAnalysisTaskMCEventPlane.cxx:140
 AliAnalysisTaskMCEventPlane.cxx:141
 AliAnalysisTaskMCEventPlane.cxx:142
 AliAnalysisTaskMCEventPlane.cxx:143
 AliAnalysisTaskMCEventPlane.cxx:144
 AliAnalysisTaskMCEventPlane.cxx:145
 AliAnalysisTaskMCEventPlane.cxx:146
 AliAnalysisTaskMCEventPlane.cxx:147
 AliAnalysisTaskMCEventPlane.cxx:148
 AliAnalysisTaskMCEventPlane.cxx:149
 AliAnalysisTaskMCEventPlane.cxx:150
 AliAnalysisTaskMCEventPlane.cxx:151
 AliAnalysisTaskMCEventPlane.cxx:152
 AliAnalysisTaskMCEventPlane.cxx:153
 AliAnalysisTaskMCEventPlane.cxx:154
 AliAnalysisTaskMCEventPlane.cxx:155
 AliAnalysisTaskMCEventPlane.cxx:156
 AliAnalysisTaskMCEventPlane.cxx:157
 AliAnalysisTaskMCEventPlane.cxx:158
 AliAnalysisTaskMCEventPlane.cxx:159
 AliAnalysisTaskMCEventPlane.cxx:160
 AliAnalysisTaskMCEventPlane.cxx:161
 AliAnalysisTaskMCEventPlane.cxx:162
 AliAnalysisTaskMCEventPlane.cxx:163
 AliAnalysisTaskMCEventPlane.cxx:164