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.                  * 
**************************************************************************/

/**************************************
 * analysis task for cumulant method  * 
 *                                    * 
 * authors: Naomi van der Kolk        *
 *           (kolk@nikhef.nl)         *  
 *          Raimond Snellings         *
 *           (snelling@nikhef.nl)     * 
 *          Ante Bilandzic            *
 *           (anteb@nikhef.nl)        * 
 * ***********************************/
 
class TFile;
class TList;
class AliAnalysisTaskSE; 
 
#include "Riostream.h"
#include "AliFlowEventSimple.h"
#include "AliAnalysisTaskCumulants.h"
#include "AliFlowAnalysisWithCumulants.h"

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

//================================================================================================================

AliAnalysisTaskCumulants::AliAnalysisTaskCumulants(const char *name, Bool_t useWeights): 
AliAnalysisTaskSE(name), 
fEvent(NULL),
fGFC(NULL),
fListHistos(NULL),
fHarmonic(2),  
fMultiple(1),
fCalculateVsMultiplicity(kFALSE),
fnBinsMult(10000),  
fMinMult(0.),   
fMaxMult(10000.),
fUseWeights(useWeights),
fUsePhiWeights(kFALSE),
fUsePtWeights(kFALSE),
fUseEtaWeights(kFALSE),
fWeightsList(NULL),
fTuneParameters(kFALSE)
{
 // Constructor
 cout<<"AliAnalysisTaskCumulants::AliAnalysisTaskCumulants(const char *name, Bool_t useWeights)"<<endl;
 
 // Define input and output slots here
 // Input slot #0 works with an AliFlowEventSimple
 DefineInput(0, AliFlowEventSimple::Class());
 
 // Input slot #1 is needed for the weights input files 
 if(useWeights) 
 {
  DefineInput(1, TList::Class());   
 }
 // Output slot #0 is reserved
 // Output slot #1 writes into a TList container
 DefineOutput(1, TList::Class());   
 
 // Initilize arrays:
 for(Int_t r=0;r<10;r++)
 {
  fTuningR0[r] = 0.;
 }
} // end of constructor

AliAnalysisTaskCumulants::AliAnalysisTaskCumulants():
AliAnalysisTaskSE(),
fEvent(NULL),
fGFC(NULL),
fListHistos(NULL),
fHarmonic(0),  
fMultiple(0),
fCalculateVsMultiplicity(kFALSE),
fnBinsMult(0),  
fMinMult(0.),   
fMaxMult(0.),
fUseWeights(kFALSE),
fUsePhiWeights(kFALSE),
fUsePtWeights(kFALSE),
fUseEtaWeights(kFALSE),
fWeightsList(NULL),
fTuneParameters(kFALSE)
{
 // Dummy constructor
 cout<<"AliAnalysisTaskCumulants::AliAnalysisTaskCumulants()"<<endl;

 // Initilize arrays:
 for(Int_t r=0;r<10;r++)
 {
  fTuningR0[r] = 0.;
 }
}

//================================================================================================================

void AliAnalysisTaskCumulants::UserCreateOutputObjects() 
{
 // Called at every worker node to initialize
 cout<<"AliAnalysisTaskCumulants::UserCreateOutputObjects()"<<endl;

 // Analyser:
 fGFC = new AliFlowAnalysisWithCumulants(); 
 fGFC->SetHarmonic(fHarmonic);
 
 // Calculation vs multiplicity:
 if(fCalculateVsMultiplicity)
 {
  fGFC->SetCalculateVsMultiplicity(fCalculateVsMultiplicity);
  fGFC->SetnBinsMult(fnBinsMult);
  fGFC->SetMinMult(fMinMult);
  fGFC->SetMaxMult(fMaxMult);
 }
 
 // Weights:
 if(fUseWeights)
 {
  // Pass the flags to class:
  if(fUsePhiWeights) fGFC->SetUsePhiWeights(fUsePhiWeights);
  if(fUsePtWeights) fGFC->SetUsePtWeights(fUsePtWeights);
  if(fUseEtaWeights) fGFC->SetUseEtaWeights(fUseEtaWeights);
  // Get data from input slot #1 which is used for weights:
  if(GetNinputs()==2) 
  {                   
   fWeightsList = (TList*)GetInputData(1); 
  }
  // Pass the list with weights to class:
  if(fWeightsList) fGFC->SetWeightsList(fWeightsList);
 }

 // Tuning:
 if(fTuneParameters)
 {
  fGFC->SetTuneParameters(fTuneParameters); 
  for(Int_t r=0;r<10;r++) {fGFC->SetTuningR0(fTuningR0[r],r);}
 }
 
 fGFC->Init();

 if(fGFC->GetHistList()) 
 {
  fListHistos = fGFC->GetHistList();
  //fListHistos->Print();
 } else
   {
    Printf("ERROR: Could not retrieve histogram list (GFC, Task::UserCreateOutputObjects()) !!!!"); 
   }

 PostData(1,fListHistos);
   
} // end of void AliAnalysisTaskCumulants::UserCreateOutputObjects() 

//================================================================================================================

void AliAnalysisTaskCumulants::UserExec(Option_t *) 
{
 // Main loop (called for each event)
 fEvent = dynamic_cast<AliFlowEventSimple*>(GetInputData(0));

 // Generating function cumulants (GFC):
 if(fEvent) 
 {
  fGFC->Make(fEvent);
 } else 
   {
    cout<<"WARNING: No input data (GFC, Task::UserExec()) !!!!"<<endl;
   }
  
 PostData(1,fListHistos);
 
} // end of void AliAnalysisTaskCumulants::UserExec(Option_t *)

//================================================================================================================

void AliAnalysisTaskCumulants::Terminate(Option_t *) 
{  
 // Accessing the output list which contains the merged 2D and 3D profiles from all worker nodes
 fListHistos = (TList*)GetOutputData(1);
 //fListHistos->Print();
 
 fGFC = new AliFlowAnalysisWithCumulants();  
 
 if(fListHistos)
 {
  fGFC->GetOutputHistograms(fListHistos);
  fGFC->Finish();
  PostData(1,fListHistos);
 } else
   {
    cout<<"WARNING: histogram list pointer is empty (GFC, Task::Terminate()) !!!!"<<endl;
    cout<<endl;
   }
   
} // end of void AliAnalysisTaskCumulants::Terminate(Option_t *) 





















 AliAnalysisTaskCumulants.cxx:1
 AliAnalysisTaskCumulants.cxx:2
 AliAnalysisTaskCumulants.cxx:3
 AliAnalysisTaskCumulants.cxx:4
 AliAnalysisTaskCumulants.cxx:5
 AliAnalysisTaskCumulants.cxx:6
 AliAnalysisTaskCumulants.cxx:7
 AliAnalysisTaskCumulants.cxx:8
 AliAnalysisTaskCumulants.cxx:9
 AliAnalysisTaskCumulants.cxx:10
 AliAnalysisTaskCumulants.cxx:11
 AliAnalysisTaskCumulants.cxx:12
 AliAnalysisTaskCumulants.cxx:13
 AliAnalysisTaskCumulants.cxx:14
 AliAnalysisTaskCumulants.cxx:15
 AliAnalysisTaskCumulants.cxx:16
 AliAnalysisTaskCumulants.cxx:17
 AliAnalysisTaskCumulants.cxx:18
 AliAnalysisTaskCumulants.cxx:19
 AliAnalysisTaskCumulants.cxx:20
 AliAnalysisTaskCumulants.cxx:21
 AliAnalysisTaskCumulants.cxx:22
 AliAnalysisTaskCumulants.cxx:23
 AliAnalysisTaskCumulants.cxx:24
 AliAnalysisTaskCumulants.cxx:25
 AliAnalysisTaskCumulants.cxx:26
 AliAnalysisTaskCumulants.cxx:27
 AliAnalysisTaskCumulants.cxx:28
 AliAnalysisTaskCumulants.cxx:29
 AliAnalysisTaskCumulants.cxx:30
 AliAnalysisTaskCumulants.cxx:31
 AliAnalysisTaskCumulants.cxx:32
 AliAnalysisTaskCumulants.cxx:33
 AliAnalysisTaskCumulants.cxx:34
 AliAnalysisTaskCumulants.cxx:35
 AliAnalysisTaskCumulants.cxx:36
 AliAnalysisTaskCumulants.cxx:37
 AliAnalysisTaskCumulants.cxx:38
 AliAnalysisTaskCumulants.cxx:39
 AliAnalysisTaskCumulants.cxx:40
 AliAnalysisTaskCumulants.cxx:41
 AliAnalysisTaskCumulants.cxx:42
 AliAnalysisTaskCumulants.cxx:43
 AliAnalysisTaskCumulants.cxx:44
 AliAnalysisTaskCumulants.cxx:45
 AliAnalysisTaskCumulants.cxx:46
 AliAnalysisTaskCumulants.cxx:47
 AliAnalysisTaskCumulants.cxx:48
 AliAnalysisTaskCumulants.cxx:49
 AliAnalysisTaskCumulants.cxx:50
 AliAnalysisTaskCumulants.cxx:51
 AliAnalysisTaskCumulants.cxx:52
 AliAnalysisTaskCumulants.cxx:53
 AliAnalysisTaskCumulants.cxx:54
 AliAnalysisTaskCumulants.cxx:55
 AliAnalysisTaskCumulants.cxx:56
 AliAnalysisTaskCumulants.cxx:57
 AliAnalysisTaskCumulants.cxx:58
 AliAnalysisTaskCumulants.cxx:59
 AliAnalysisTaskCumulants.cxx:60
 AliAnalysisTaskCumulants.cxx:61
 AliAnalysisTaskCumulants.cxx:62
 AliAnalysisTaskCumulants.cxx:63
 AliAnalysisTaskCumulants.cxx:64
 AliAnalysisTaskCumulants.cxx:65
 AliAnalysisTaskCumulants.cxx:66
 AliAnalysisTaskCumulants.cxx:67
 AliAnalysisTaskCumulants.cxx:68
 AliAnalysisTaskCumulants.cxx:69
 AliAnalysisTaskCumulants.cxx:70
 AliAnalysisTaskCumulants.cxx:71
 AliAnalysisTaskCumulants.cxx:72
 AliAnalysisTaskCumulants.cxx:73
 AliAnalysisTaskCumulants.cxx:74
 AliAnalysisTaskCumulants.cxx:75
 AliAnalysisTaskCumulants.cxx:76
 AliAnalysisTaskCumulants.cxx:77
 AliAnalysisTaskCumulants.cxx:78
 AliAnalysisTaskCumulants.cxx:79
 AliAnalysisTaskCumulants.cxx:80
 AliAnalysisTaskCumulants.cxx:81
 AliAnalysisTaskCumulants.cxx:82
 AliAnalysisTaskCumulants.cxx:83
 AliAnalysisTaskCumulants.cxx:84
 AliAnalysisTaskCumulants.cxx:85
 AliAnalysisTaskCumulants.cxx:86
 AliAnalysisTaskCumulants.cxx:87
 AliAnalysisTaskCumulants.cxx:88
 AliAnalysisTaskCumulants.cxx:89
 AliAnalysisTaskCumulants.cxx:90
 AliAnalysisTaskCumulants.cxx:91
 AliAnalysisTaskCumulants.cxx:92
 AliAnalysisTaskCumulants.cxx:93
 AliAnalysisTaskCumulants.cxx:94
 AliAnalysisTaskCumulants.cxx:95
 AliAnalysisTaskCumulants.cxx:96
 AliAnalysisTaskCumulants.cxx:97
 AliAnalysisTaskCumulants.cxx:98
 AliAnalysisTaskCumulants.cxx:99
 AliAnalysisTaskCumulants.cxx:100
 AliAnalysisTaskCumulants.cxx:101
 AliAnalysisTaskCumulants.cxx:102
 AliAnalysisTaskCumulants.cxx:103
 AliAnalysisTaskCumulants.cxx:104
 AliAnalysisTaskCumulants.cxx:105
 AliAnalysisTaskCumulants.cxx:106
 AliAnalysisTaskCumulants.cxx:107
 AliAnalysisTaskCumulants.cxx:108
 AliAnalysisTaskCumulants.cxx:109
 AliAnalysisTaskCumulants.cxx:110
 AliAnalysisTaskCumulants.cxx:111
 AliAnalysisTaskCumulants.cxx:112
 AliAnalysisTaskCumulants.cxx:113
 AliAnalysisTaskCumulants.cxx:114
 AliAnalysisTaskCumulants.cxx:115
 AliAnalysisTaskCumulants.cxx:116
 AliAnalysisTaskCumulants.cxx:117
 AliAnalysisTaskCumulants.cxx:118
 AliAnalysisTaskCumulants.cxx:119
 AliAnalysisTaskCumulants.cxx:120
 AliAnalysisTaskCumulants.cxx:121
 AliAnalysisTaskCumulants.cxx:122
 AliAnalysisTaskCumulants.cxx:123
 AliAnalysisTaskCumulants.cxx:124
 AliAnalysisTaskCumulants.cxx:125
 AliAnalysisTaskCumulants.cxx:126
 AliAnalysisTaskCumulants.cxx:127
 AliAnalysisTaskCumulants.cxx:128
 AliAnalysisTaskCumulants.cxx:129
 AliAnalysisTaskCumulants.cxx:130
 AliAnalysisTaskCumulants.cxx:131
 AliAnalysisTaskCumulants.cxx:132
 AliAnalysisTaskCumulants.cxx:133
 AliAnalysisTaskCumulants.cxx:134
 AliAnalysisTaskCumulants.cxx:135
 AliAnalysisTaskCumulants.cxx:136
 AliAnalysisTaskCumulants.cxx:137
 AliAnalysisTaskCumulants.cxx:138
 AliAnalysisTaskCumulants.cxx:139
 AliAnalysisTaskCumulants.cxx:140
 AliAnalysisTaskCumulants.cxx:141
 AliAnalysisTaskCumulants.cxx:142
 AliAnalysisTaskCumulants.cxx:143
 AliAnalysisTaskCumulants.cxx:144
 AliAnalysisTaskCumulants.cxx:145
 AliAnalysisTaskCumulants.cxx:146
 AliAnalysisTaskCumulants.cxx:147
 AliAnalysisTaskCumulants.cxx:148
 AliAnalysisTaskCumulants.cxx:149
 AliAnalysisTaskCumulants.cxx:150
 AliAnalysisTaskCumulants.cxx:151
 AliAnalysisTaskCumulants.cxx:152
 AliAnalysisTaskCumulants.cxx:153
 AliAnalysisTaskCumulants.cxx:154
 AliAnalysisTaskCumulants.cxx:155
 AliAnalysisTaskCumulants.cxx:156
 AliAnalysisTaskCumulants.cxx:157
 AliAnalysisTaskCumulants.cxx:158
 AliAnalysisTaskCumulants.cxx:159
 AliAnalysisTaskCumulants.cxx:160
 AliAnalysisTaskCumulants.cxx:161
 AliAnalysisTaskCumulants.cxx:162
 AliAnalysisTaskCumulants.cxx:163
 AliAnalysisTaskCumulants.cxx:164
 AliAnalysisTaskCumulants.cxx:165
 AliAnalysisTaskCumulants.cxx:166
 AliAnalysisTaskCumulants.cxx:167
 AliAnalysisTaskCumulants.cxx:168
 AliAnalysisTaskCumulants.cxx:169
 AliAnalysisTaskCumulants.cxx:170
 AliAnalysisTaskCumulants.cxx:171
 AliAnalysisTaskCumulants.cxx:172
 AliAnalysisTaskCumulants.cxx:173
 AliAnalysisTaskCumulants.cxx:174
 AliAnalysisTaskCumulants.cxx:175
 AliAnalysisTaskCumulants.cxx:176
 AliAnalysisTaskCumulants.cxx:177
 AliAnalysisTaskCumulants.cxx:178
 AliAnalysisTaskCumulants.cxx:179
 AliAnalysisTaskCumulants.cxx:180
 AliAnalysisTaskCumulants.cxx:181
 AliAnalysisTaskCumulants.cxx:182
 AliAnalysisTaskCumulants.cxx:183
 AliAnalysisTaskCumulants.cxx:184
 AliAnalysisTaskCumulants.cxx:185
 AliAnalysisTaskCumulants.cxx:186
 AliAnalysisTaskCumulants.cxx:187
 AliAnalysisTaskCumulants.cxx:188
 AliAnalysisTaskCumulants.cxx:189
 AliAnalysisTaskCumulants.cxx:190
 AliAnalysisTaskCumulants.cxx:191
 AliAnalysisTaskCumulants.cxx:192
 AliAnalysisTaskCumulants.cxx:193
 AliAnalysisTaskCumulants.cxx:194
 AliAnalysisTaskCumulants.cxx:195
 AliAnalysisTaskCumulants.cxx:196
 AliAnalysisTaskCumulants.cxx:197
 AliAnalysisTaskCumulants.cxx:198
 AliAnalysisTaskCumulants.cxx:199
 AliAnalysisTaskCumulants.cxx:200
 AliAnalysisTaskCumulants.cxx:201
 AliAnalysisTaskCumulants.cxx:202
 AliAnalysisTaskCumulants.cxx:203
 AliAnalysisTaskCumulants.cxx:204
 AliAnalysisTaskCumulants.cxx:205
 AliAnalysisTaskCumulants.cxx:206
 AliAnalysisTaskCumulants.cxx:207
 AliAnalysisTaskCumulants.cxx:208
 AliAnalysisTaskCumulants.cxx:209
 AliAnalysisTaskCumulants.cxx:210
 AliAnalysisTaskCumulants.cxx:211
 AliAnalysisTaskCumulants.cxx:212
 AliAnalysisTaskCumulants.cxx:213
 AliAnalysisTaskCumulants.cxx:214
 AliAnalysisTaskCumulants.cxx:215
 AliAnalysisTaskCumulants.cxx:216
 AliAnalysisTaskCumulants.cxx:217
 AliAnalysisTaskCumulants.cxx:218
 AliAnalysisTaskCumulants.cxx:219
 AliAnalysisTaskCumulants.cxx:220
 AliAnalysisTaskCumulants.cxx:221
 AliAnalysisTaskCumulants.cxx:222
 AliAnalysisTaskCumulants.cxx:223
 AliAnalysisTaskCumulants.cxx:224
 AliAnalysisTaskCumulants.cxx:225
 AliAnalysisTaskCumulants.cxx:226
 AliAnalysisTaskCumulants.cxx:227
 AliAnalysisTaskCumulants.cxx:228
 AliAnalysisTaskCumulants.cxx:229
 AliAnalysisTaskCumulants.cxx:230
 AliAnalysisTaskCumulants.cxx:231