ROOT logo
AliChaoticity *AddTaskChaoticity(
				 Bool_t LEGO=kTRUE, 
				 Bool_t MCcase=kFALSE, 
				 Bool_t PbPbcase=kTRUE, 
				 Bool_t GenerateSignal=kFALSE, 
				 Bool_t TabulatePairs=kFALSE, 
				 Int_t CentBinLowLimit=0, 
				 Int_t CentBinHighLimit=1,
				 Int_t RMax=11,
				 Int_t FixedLambdaBinMomRes=9,
				 Int_t FixedLambdaBinr3=10,
				 UInt_t FilterBit=7,
				 Float_t MaxChi2NDF=10,
				 Int_t MinTPCncls=0,
				 Float_t MinSepPairEta=0.03,
				 Float_t MinSepPairPhi=0.04,
				 Float_t SigmaCutTPC=2.0,
				 Float_t SigmaCutTOF=2.0,
				 TString StWeightName="alien:///alice/cern.ch/user/d/dgangadh/WeightFile.root",
				 TString StMomResName="alien:///alice/cern.ch/user/d/dgangadh/MomResFile.root",
				 TString StKName="alien:///alice/cern.ch/user/d/dgangadh/KFile.root"
				 ) {
  
  //===========================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskChaoticity", "No analysis manager to connect to.");
    return NULL;
  }
 

  //____________________________________________//
  // Create task
  AliChaoticity *ChaoticityTask = new AliChaoticity("ChaoticityTask");
  if(!ChaoticityTask) return NULL;
  ChaoticityTask->SetLEGOCase(LEGO);
  ChaoticityTask->SetMCdecision(MCcase);
  ChaoticityTask->SetPbPbCase(PbPbcase);
  ChaoticityTask->SetGenerateSignal(GenerateSignal);
  ChaoticityTask->SetTabulatePairs(TabulatePairs);
  ChaoticityTask->SetCentBinRange(CentBinLowLimit, CentBinHighLimit);
  ChaoticityTask->SetRMax(RMax);
  ChaoticityTask->SetFixedLambdaBinMomRes(FixedLambdaBinMomRes);
  ChaoticityTask->SetFixedLambdaBinr3(FixedLambdaBinr3);
  ChaoticityTask->SetFilterBit(FilterBit);
  ChaoticityTask->SetMaxChi2NDF(MaxChi2NDF);
  ChaoticityTask->SetMinTPCncls(MinTPCncls);
  ChaoticityTask->SetPairSeparationCutEta(MinSepPairEta);
  ChaoticityTask->SetPairSeparationCutPhi(MinSepPairPhi);
  ChaoticityTask->SetNsigmaTPC(SigmaCutTPC);
  ChaoticityTask->SetNsigmaTOF(SigmaCutTOF);
  mgr->AddTask(ChaoticityTask);


  // Create ONLY the output containers for the data produced by the task.
  // Get and connect other common input/output containers via the manager as below
  //==============================================================================
  TString outputFileName = AliAnalysisManager::GetCommonFileName();
  outputFileName += ":PWGCF.outputChaoticityAnalysis.root";
  AliAnalysisDataContainer *coutChaoticity = mgr->CreateContainer("ChaoticityOutput", TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
  mgr->ConnectInput(ChaoticityTask, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(ChaoticityTask, 1, coutChaoticity);
  

  TFile *inputFileWeight = 0;
  TFile *inputFileMomRes = 0;
  TFile *inputFileFSI = 0;

 
  if(!TabulatePairs){
    inputFileWeight = TFile::Open(StWeightName,"OLD");
    if (!inputFileWeight){
      cout << "Requested file:" << inputFileWeight << " was not opened. ABORT." << endl;
      return NULL;
    }
    ////////////////////////////////////////////////////
    // C2 Weight File
    const Int_t ktbins_temp = ChaoticityTask->GetNumKtBins();
    const Int_t cbins_temp = ChaoticityTask->GetNumCentBins(); 
    const Int_t ktbins = ktbins_temp;
    const Int_t cbins = cbins_temp;

    TH3F *weightHisto[ktbins][cbins];
    for(Int_t i=0; i<ktbins; i++){
      for(Int_t j=0; j<cbins; j++){
	TString name = "Weight_Kt_";
	name += i;
	name += "_Ky_0_M_";
	name += j;
	name += "_ED_0";
	
	weightHisto[i][j] = (TH3F*)inputFileWeight->Get(name);
      }
    }
    ChaoticityTask->SetWeightArrays( kTRUE, weightHisto );
    ////////////////////////////////////////////////////
  }// TabulatePairs check
  
  if(!MCcase && !TabulatePairs){
    
    inputFileMomRes = TFile::Open(StMomResName,"OLD");
    if (!inputFileMomRes){
      cout << "Requested file:" << inputFileMomRes << " was not opened. ABORT." << endl;
      return NULL;
    }
    ////////////////////////////////////////////////////
    // Momentum Resolution File
    TH2D *momResHisto2D = 0;
    momResHisto2D = (TH2D*)inputFileMomRes->Get("MomResHisto_pp");
    ChaoticityTask->SetMomResCorrections( kTRUE, momResHisto2D);
    ////////////////////////////////////////////////////
  }// MCcase and TabulatePairs check
  

  ////////////////////////////////////////////////////
  // FSI File
  inputFileFSI = TFile::Open(StKName,"OLD");
  if (!inputFileFSI){
    cout << "Requested file:" << inputFileFSI << " was not opened. ABORT." << endl;
    return NULL;
  }  
  TH2D *FSI2therm[2];
  TH3D *FSI3ss[6];
  TH3D *FSI3os[6];
  FSI2therm[0] = (TH2D*)inputFileFSI->Get("K2ssT");
  FSI2therm[1] = (TH2D*)inputFileFSI->Get("K2osT");
  for(Int_t CB=0; CB<6; CB++) {
    TString *nameSS=new TString("K3ss_");
    *nameSS += CB;
    FSI3ss[CB] = (TH3D*)inputFileFSI->Get(nameSS->Data());
    TString *nameOS=new TString("K3os_");
    *nameOS += CB;
    FSI3os[CB] = (TH3D*)inputFileFSI->Get(nameOS->Data());
  }
  //
  FSI2therm[0]->SetDirectory(0);
  FSI2therm[1]->SetDirectory(0);
  for(Int_t CB=0; CB<6; CB++) {
    FSI3ss[CB]->SetDirectory(0);
    FSI3os[CB]->SetDirectory(0);
  }
  ChaoticityTask->SetFSICorrelations( kTRUE, FSI2therm , FSI3os, FSI3ss);
  ////////////////////////////////////////////////////
  
  
  // Return the task pointer
  return ChaoticityTask;
}
 AddTaskChaoticity.C:1
 AddTaskChaoticity.C:2
 AddTaskChaoticity.C:3
 AddTaskChaoticity.C:4
 AddTaskChaoticity.C:5
 AddTaskChaoticity.C:6
 AddTaskChaoticity.C:7
 AddTaskChaoticity.C:8
 AddTaskChaoticity.C:9
 AddTaskChaoticity.C:10
 AddTaskChaoticity.C:11
 AddTaskChaoticity.C:12
 AddTaskChaoticity.C:13
 AddTaskChaoticity.C:14
 AddTaskChaoticity.C:15
 AddTaskChaoticity.C:16
 AddTaskChaoticity.C:17
 AddTaskChaoticity.C:18
 AddTaskChaoticity.C:19
 AddTaskChaoticity.C:20
 AddTaskChaoticity.C:21
 AddTaskChaoticity.C:22
 AddTaskChaoticity.C:23
 AddTaskChaoticity.C:24
 AddTaskChaoticity.C:25
 AddTaskChaoticity.C:26
 AddTaskChaoticity.C:27
 AddTaskChaoticity.C:28
 AddTaskChaoticity.C:29
 AddTaskChaoticity.C:30
 AddTaskChaoticity.C:31
 AddTaskChaoticity.C:32
 AddTaskChaoticity.C:33
 AddTaskChaoticity.C:34
 AddTaskChaoticity.C:35
 AddTaskChaoticity.C:36
 AddTaskChaoticity.C:37
 AddTaskChaoticity.C:38
 AddTaskChaoticity.C:39
 AddTaskChaoticity.C:40
 AddTaskChaoticity.C:41
 AddTaskChaoticity.C:42
 AddTaskChaoticity.C:43
 AddTaskChaoticity.C:44
 AddTaskChaoticity.C:45
 AddTaskChaoticity.C:46
 AddTaskChaoticity.C:47
 AddTaskChaoticity.C:48
 AddTaskChaoticity.C:49
 AddTaskChaoticity.C:50
 AddTaskChaoticity.C:51
 AddTaskChaoticity.C:52
 AddTaskChaoticity.C:53
 AddTaskChaoticity.C:54
 AddTaskChaoticity.C:55
 AddTaskChaoticity.C:56
 AddTaskChaoticity.C:57
 AddTaskChaoticity.C:58
 AddTaskChaoticity.C:59
 AddTaskChaoticity.C:60
 AddTaskChaoticity.C:61
 AddTaskChaoticity.C:62
 AddTaskChaoticity.C:63
 AddTaskChaoticity.C:64
 AddTaskChaoticity.C:65
 AddTaskChaoticity.C:66
 AddTaskChaoticity.C:67
 AddTaskChaoticity.C:68
 AddTaskChaoticity.C:69
 AddTaskChaoticity.C:70
 AddTaskChaoticity.C:71
 AddTaskChaoticity.C:72
 AddTaskChaoticity.C:73
 AddTaskChaoticity.C:74
 AddTaskChaoticity.C:75
 AddTaskChaoticity.C:76
 AddTaskChaoticity.C:77
 AddTaskChaoticity.C:78
 AddTaskChaoticity.C:79
 AddTaskChaoticity.C:80
 AddTaskChaoticity.C:81
 AddTaskChaoticity.C:82
 AddTaskChaoticity.C:83
 AddTaskChaoticity.C:84
 AddTaskChaoticity.C:85
 AddTaskChaoticity.C:86
 AddTaskChaoticity.C:87
 AddTaskChaoticity.C:88
 AddTaskChaoticity.C:89
 AddTaskChaoticity.C:90
 AddTaskChaoticity.C:91
 AddTaskChaoticity.C:92
 AddTaskChaoticity.C:93
 AddTaskChaoticity.C:94
 AddTaskChaoticity.C:95
 AddTaskChaoticity.C:96
 AddTaskChaoticity.C:97
 AddTaskChaoticity.C:98
 AddTaskChaoticity.C:99
 AddTaskChaoticity.C:100
 AddTaskChaoticity.C:101
 AddTaskChaoticity.C:102
 AddTaskChaoticity.C:103
 AddTaskChaoticity.C:104
 AddTaskChaoticity.C:105
 AddTaskChaoticity.C:106
 AddTaskChaoticity.C:107
 AddTaskChaoticity.C:108
 AddTaskChaoticity.C:109
 AddTaskChaoticity.C:110
 AddTaskChaoticity.C:111
 AddTaskChaoticity.C:112
 AddTaskChaoticity.C:113
 AddTaskChaoticity.C:114
 AddTaskChaoticity.C:115
 AddTaskChaoticity.C:116
 AddTaskChaoticity.C:117
 AddTaskChaoticity.C:118
 AddTaskChaoticity.C:119
 AddTaskChaoticity.C:120
 AddTaskChaoticity.C:121
 AddTaskChaoticity.C:122
 AddTaskChaoticity.C:123
 AddTaskChaoticity.C:124
 AddTaskChaoticity.C:125
 AddTaskChaoticity.C:126
 AddTaskChaoticity.C:127
 AddTaskChaoticity.C:128
 AddTaskChaoticity.C:129
 AddTaskChaoticity.C:130
 AddTaskChaoticity.C:131
 AddTaskChaoticity.C:132
 AddTaskChaoticity.C:133
 AddTaskChaoticity.C:134
 AddTaskChaoticity.C:135
 AddTaskChaoticity.C:136
 AddTaskChaoticity.C:137
 AddTaskChaoticity.C:138
 AddTaskChaoticity.C:139
 AddTaskChaoticity.C:140
 AddTaskChaoticity.C:141
 AddTaskChaoticity.C:142
 AddTaskChaoticity.C:143
 AddTaskChaoticity.C:144
 AddTaskChaoticity.C:145
 AddTaskChaoticity.C:146
 AddTaskChaoticity.C:147
 AddTaskChaoticity.C:148
 AddTaskChaoticity.C:149