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 "TChain.h"
#include "TTree.h"
#include "TFile.h"
#include "TList.h"
#include "TProfile.h"

class AliAnalysisTaskSE;
#include "AliAnalysisManager.h"
#include "AliFlowEventSimple.h"
#include "AliFlowLYZConstants.h"   
#include "AliAnalysisTaskLeeYangZeros.h"
#include "AliFlowCommonHist.h"
#include "AliFlowCommonHistResults.h"
#include "AliFlowLYZHist1.h"
#include "AliFlowLYZHist2.h"
#include "AliFlowAnalysisWithLeeYangZeros.h"

// AliAnalysisTaskLeeYangZeros:
// analysis task for Lee Yang Zeros method
// Author: Naomi van der Kolk (kolk@nikhef.nl)

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

//________________________________________________________________________
AliAnalysisTaskLeeYangZeros::AliAnalysisTaskLeeYangZeros(const char *name, Bool_t firstrun) : 
  AliAnalysisTaskSE(name), 
  fEvent(0),
  fLyz(0),
  fFirstRunFile(0),
  fListHistos(NULL),
  fFirstRunLYZ(firstrun), //set boolean for firstrun to initial value
  fUseSumLYZ(kTRUE)       //set boolean for use sum to initial value
{
  // Constructor
  cout<<"AliAnalysisTaskLeeYangZeros::AliAnalysisTaskLeeYangZeros(const char *name)"<<endl;

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

//________________________________________________________________________
AliAnalysisTaskLeeYangZeros::AliAnalysisTaskLeeYangZeros() :
  AliAnalysisTaskSE(),
  fEvent(0),
  fLyz(0),
  fFirstRunFile(0),
  fListHistos(NULL),
  fFirstRunLYZ(kTRUE), //set boolean for firstrun to initial value
  fUseSumLYZ(kTRUE)    //set boolean for use sum to initial value
{
  // Constructor
  cout<<"AliAnalysisTaskLeeYangZeros::AliAnalysisTaskLeeYangZeros()"<<endl;

}

//________________________________________________________________________
AliAnalysisTaskLeeYangZeros::~AliAnalysisTaskLeeYangZeros()
{

  //destructor

}

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

  
  //Analyser
  fLyz = new AliFlowAnalysisWithLeeYangZeros() ;
  fLyz -> SetFirstRun(GetFirstRunLYZ());   //set first run true or false
  fLyz -> SetUseSum(GetUseSumLYZ());       //set use sum true or false

  // Get data from input slot 1
  if (GetNinputs() == 2) {                   //if there are two input slots
    TList* pFirstRunList = (TList*)GetInputData(1);
    if (pFirstRunList) {
      fLyz -> SetFirstRunList(pFirstRunList);
    } else { cout<<"No first run List!"<<endl; exit(0); }
  }
  
  fLyz -> Init();

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

 PostData(1,fListHistos);
  
}

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

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

//________________________________________________________________________
void AliAnalysisTaskLeeYangZeros::Terminate(Option_t *) 
{
  // Called once at the end of the query
  
  AliFlowAnalysisWithLeeYangZeros* lyzTerm = new AliFlowAnalysisWithLeeYangZeros() ;
  lyzTerm -> SetFirstRun(GetFirstRunLYZ());   //set first run true or false
  lyzTerm -> SetUseSum(GetUseSumLYZ());       //set use sum true or false
   
  fListHistos = (TList*)GetOutputData(1);
  
  if(fListHistos) 
  {
   lyzTerm -> GetOutputHistograms(fListHistos);
   lyzTerm -> Finish();
	PostData(1,fListHistos);
  } else 
    {
     cout << "histogram list pointer in Lee-Yang Zeros is empty in AliAnalysisTaskLYZ::Terminate ()" << endl;
    } 
  
  delete lyzTerm;
  
}
 AliAnalysisTaskLeeYangZeros.cxx:1
 AliAnalysisTaskLeeYangZeros.cxx:2
 AliAnalysisTaskLeeYangZeros.cxx:3
 AliAnalysisTaskLeeYangZeros.cxx:4
 AliAnalysisTaskLeeYangZeros.cxx:5
 AliAnalysisTaskLeeYangZeros.cxx:6
 AliAnalysisTaskLeeYangZeros.cxx:7
 AliAnalysisTaskLeeYangZeros.cxx:8
 AliAnalysisTaskLeeYangZeros.cxx:9
 AliAnalysisTaskLeeYangZeros.cxx:10
 AliAnalysisTaskLeeYangZeros.cxx:11
 AliAnalysisTaskLeeYangZeros.cxx:12
 AliAnalysisTaskLeeYangZeros.cxx:13
 AliAnalysisTaskLeeYangZeros.cxx:14
 AliAnalysisTaskLeeYangZeros.cxx:15
 AliAnalysisTaskLeeYangZeros.cxx:16
 AliAnalysisTaskLeeYangZeros.cxx:17
 AliAnalysisTaskLeeYangZeros.cxx:18
 AliAnalysisTaskLeeYangZeros.cxx:19
 AliAnalysisTaskLeeYangZeros.cxx:20
 AliAnalysisTaskLeeYangZeros.cxx:21
 AliAnalysisTaskLeeYangZeros.cxx:22
 AliAnalysisTaskLeeYangZeros.cxx:23
 AliAnalysisTaskLeeYangZeros.cxx:24
 AliAnalysisTaskLeeYangZeros.cxx:25
 AliAnalysisTaskLeeYangZeros.cxx:26
 AliAnalysisTaskLeeYangZeros.cxx:27
 AliAnalysisTaskLeeYangZeros.cxx:28
 AliAnalysisTaskLeeYangZeros.cxx:29
 AliAnalysisTaskLeeYangZeros.cxx:30
 AliAnalysisTaskLeeYangZeros.cxx:31
 AliAnalysisTaskLeeYangZeros.cxx:32
 AliAnalysisTaskLeeYangZeros.cxx:33
 AliAnalysisTaskLeeYangZeros.cxx:34
 AliAnalysisTaskLeeYangZeros.cxx:35
 AliAnalysisTaskLeeYangZeros.cxx:36
 AliAnalysisTaskLeeYangZeros.cxx:37
 AliAnalysisTaskLeeYangZeros.cxx:38
 AliAnalysisTaskLeeYangZeros.cxx:39
 AliAnalysisTaskLeeYangZeros.cxx:40
 AliAnalysisTaskLeeYangZeros.cxx:41
 AliAnalysisTaskLeeYangZeros.cxx:42
 AliAnalysisTaskLeeYangZeros.cxx:43
 AliAnalysisTaskLeeYangZeros.cxx:44
 AliAnalysisTaskLeeYangZeros.cxx:45
 AliAnalysisTaskLeeYangZeros.cxx:46
 AliAnalysisTaskLeeYangZeros.cxx:47
 AliAnalysisTaskLeeYangZeros.cxx:48
 AliAnalysisTaskLeeYangZeros.cxx:49
 AliAnalysisTaskLeeYangZeros.cxx:50
 AliAnalysisTaskLeeYangZeros.cxx:51
 AliAnalysisTaskLeeYangZeros.cxx:52
 AliAnalysisTaskLeeYangZeros.cxx:53
 AliAnalysisTaskLeeYangZeros.cxx:54
 AliAnalysisTaskLeeYangZeros.cxx:55
 AliAnalysisTaskLeeYangZeros.cxx:56
 AliAnalysisTaskLeeYangZeros.cxx:57
 AliAnalysisTaskLeeYangZeros.cxx:58
 AliAnalysisTaskLeeYangZeros.cxx:59
 AliAnalysisTaskLeeYangZeros.cxx:60
 AliAnalysisTaskLeeYangZeros.cxx:61
 AliAnalysisTaskLeeYangZeros.cxx:62
 AliAnalysisTaskLeeYangZeros.cxx:63
 AliAnalysisTaskLeeYangZeros.cxx:64
 AliAnalysisTaskLeeYangZeros.cxx:65
 AliAnalysisTaskLeeYangZeros.cxx:66
 AliAnalysisTaskLeeYangZeros.cxx:67
 AliAnalysisTaskLeeYangZeros.cxx:68
 AliAnalysisTaskLeeYangZeros.cxx:69
 AliAnalysisTaskLeeYangZeros.cxx:70
 AliAnalysisTaskLeeYangZeros.cxx:71
 AliAnalysisTaskLeeYangZeros.cxx:72
 AliAnalysisTaskLeeYangZeros.cxx:73
 AliAnalysisTaskLeeYangZeros.cxx:74
 AliAnalysisTaskLeeYangZeros.cxx:75
 AliAnalysisTaskLeeYangZeros.cxx:76
 AliAnalysisTaskLeeYangZeros.cxx:77
 AliAnalysisTaskLeeYangZeros.cxx:78
 AliAnalysisTaskLeeYangZeros.cxx:79
 AliAnalysisTaskLeeYangZeros.cxx:80
 AliAnalysisTaskLeeYangZeros.cxx:81
 AliAnalysisTaskLeeYangZeros.cxx:82
 AliAnalysisTaskLeeYangZeros.cxx:83
 AliAnalysisTaskLeeYangZeros.cxx:84
 AliAnalysisTaskLeeYangZeros.cxx:85
 AliAnalysisTaskLeeYangZeros.cxx:86
 AliAnalysisTaskLeeYangZeros.cxx:87
 AliAnalysisTaskLeeYangZeros.cxx:88
 AliAnalysisTaskLeeYangZeros.cxx:89
 AliAnalysisTaskLeeYangZeros.cxx:90
 AliAnalysisTaskLeeYangZeros.cxx:91
 AliAnalysisTaskLeeYangZeros.cxx:92
 AliAnalysisTaskLeeYangZeros.cxx:93
 AliAnalysisTaskLeeYangZeros.cxx:94
 AliAnalysisTaskLeeYangZeros.cxx:95
 AliAnalysisTaskLeeYangZeros.cxx:96
 AliAnalysisTaskLeeYangZeros.cxx:97
 AliAnalysisTaskLeeYangZeros.cxx:98
 AliAnalysisTaskLeeYangZeros.cxx:99
 AliAnalysisTaskLeeYangZeros.cxx:100
 AliAnalysisTaskLeeYangZeros.cxx:101
 AliAnalysisTaskLeeYangZeros.cxx:102
 AliAnalysisTaskLeeYangZeros.cxx:103
 AliAnalysisTaskLeeYangZeros.cxx:104
 AliAnalysisTaskLeeYangZeros.cxx:105
 AliAnalysisTaskLeeYangZeros.cxx:106
 AliAnalysisTaskLeeYangZeros.cxx:107
 AliAnalysisTaskLeeYangZeros.cxx:108
 AliAnalysisTaskLeeYangZeros.cxx:109
 AliAnalysisTaskLeeYangZeros.cxx:110
 AliAnalysisTaskLeeYangZeros.cxx:111
 AliAnalysisTaskLeeYangZeros.cxx:112
 AliAnalysisTaskLeeYangZeros.cxx:113
 AliAnalysisTaskLeeYangZeros.cxx:114
 AliAnalysisTaskLeeYangZeros.cxx:115
 AliAnalysisTaskLeeYangZeros.cxx:116
 AliAnalysisTaskLeeYangZeros.cxx:117
 AliAnalysisTaskLeeYangZeros.cxx:118
 AliAnalysisTaskLeeYangZeros.cxx:119
 AliAnalysisTaskLeeYangZeros.cxx:120
 AliAnalysisTaskLeeYangZeros.cxx:121
 AliAnalysisTaskLeeYangZeros.cxx:122
 AliAnalysisTaskLeeYangZeros.cxx:123
 AliAnalysisTaskLeeYangZeros.cxx:124
 AliAnalysisTaskLeeYangZeros.cxx:125
 AliAnalysisTaskLeeYangZeros.cxx:126
 AliAnalysisTaskLeeYangZeros.cxx:127
 AliAnalysisTaskLeeYangZeros.cxx:128
 AliAnalysisTaskLeeYangZeros.cxx:129
 AliAnalysisTaskLeeYangZeros.cxx:130
 AliAnalysisTaskLeeYangZeros.cxx:131
 AliAnalysisTaskLeeYangZeros.cxx:132
 AliAnalysisTaskLeeYangZeros.cxx:133
 AliAnalysisTaskLeeYangZeros.cxx:134
 AliAnalysisTaskLeeYangZeros.cxx:135
 AliAnalysisTaskLeeYangZeros.cxx:136
 AliAnalysisTaskLeeYangZeros.cxx:137
 AliAnalysisTaskLeeYangZeros.cxx:138
 AliAnalysisTaskLeeYangZeros.cxx:139
 AliAnalysisTaskLeeYangZeros.cxx:140
 AliAnalysisTaskLeeYangZeros.cxx:141
 AliAnalysisTaskLeeYangZeros.cxx:142
 AliAnalysisTaskLeeYangZeros.cxx:143
 AliAnalysisTaskLeeYangZeros.cxx:144
 AliAnalysisTaskLeeYangZeros.cxx:145
 AliAnalysisTaskLeeYangZeros.cxx:146
 AliAnalysisTaskLeeYangZeros.cxx:147
 AliAnalysisTaskLeeYangZeros.cxx:148
 AliAnalysisTaskLeeYangZeros.cxx:149
 AliAnalysisTaskLeeYangZeros.cxx:150
 AliAnalysisTaskLeeYangZeros.cxx:151
 AliAnalysisTaskLeeYangZeros.cxx:152
 AliAnalysisTaskLeeYangZeros.cxx:153
 AliAnalysisTaskLeeYangZeros.cxx:154
 AliAnalysisTaskLeeYangZeros.cxx:155
 AliAnalysisTaskLeeYangZeros.cxx:156
 AliAnalysisTaskLeeYangZeros.cxx:157
 AliAnalysisTaskLeeYangZeros.cxx:158
 AliAnalysisTaskLeeYangZeros.cxx:159