ROOT logo
//=========================================================================//
//                                                                         //
//           Analysis AddTask for Particle Ratio Fluctuation Study         //
//              Author: Deepika Rathee  || Satyajit Jenara                 //
//                      drathee@cern.ch || sjena@cern.ch                   //
//                       Thu Dec 19 09:09:38 CET 2013
//                                                                         //
//=========================================================================//

void AddAliEbyENetChargeFluctuationTask(const Char_t *taskname="TOFTPC",
					const Char_t *centralityEstimator = "V0M",
					Bool_t isModeAOD    = 1,
					Int_t  aodFilterBit = 768, 
					Int_t  sysType      = 0,   // 0-pp,1-pA,2-AA, 3,4,5 mc
					Int_t  cuttype      = 9,   // esd cut type

					Int_t pidtype       = 2, 
					Int_t requestTofPid = 1,
					Double_t nSigmaCut  = 3.,
					Double_t lptfortof  = 0.5,
					
					Double_t ptl        = 0.5, 
					Double_t pth        = 5.0, 
					
					Double_t gEta       = 0.8,
					Double_t gRap       = 0.5,

					Double_t dcaxy     = 2.4,
					Double_t dcaz      = 3.2,
					
					Double_t vz         = 10.,
					Int_t nSample       = 25,
					Int_t analType      = 1) {

  Double_t vx = 3.; Double_t vy = 3.; 
 

  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskFluctuations", "No analysis manager to connect to.");
    return NULL;
  }

  if (!mgr->GetInputEventHandler()) {
    ::Error("AddTaskFluctuations", "This task requires an input event handler");
    return NULL;
  }

  Bool_t isMC = (mgr->GetMCtruthEventHandler() != NULL);
  if (isMC)
    Info("AddTaskNetParticle", "This task has MC.");

  AliEbyENetChargeFluctuationTask *task = new AliEbyENetChargeFluctuationTask(taskname);
  if (!task) {
    Error("EbyEPidRatio", "Task could not be created.");
    return NULL;
  }


  Printf("============================== I am here very great ================================");

  if (isMC) task->SetIsMC();

  Int_t sysii = sysType;
  if (sysType > 2) {task->SetIsMC(); sysii = sysType - 3;}

  
  if (isModeAOD) {
    task->SetIsAOD();                       
    task->SetTrackFilterBit(aodFilterBit);
  }
  task->SetSystemType(sysii);
  task->SetCentralityEstimator(centralityEstimator);
  task->SetVertexDiamond(vx,vy,vz);
  task->SetKinematicsCuts(ptl,pth,gEta,gRap);
  task->SetNSubSamples(nSample);
  task->SetDca(dcaxy,dcaz);
  
  if (!isModeAOD) {
    gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/PIDFluctuation/macros/configureNetChargeTrackCut.C"); 
    // gROOT->LoadMacro("./configureNetChargeTrackCut.C"); 
     AliESDtrackCuts *cuts = configureNetChargeTrackCut(cuttype,10001006, gEta, 5.,5.); 
     task->SetAnalysisCutObject(cuts);
  }

  AliHelperPID* help = new AliHelperPID();
  help->SetNSigmaCut(nSigmaCut);
  help->SetPIDType(pidtype); // kNSigmaTPC,kNSigmaTOF, kNSigmaTPCTOF
  if (requestTofPid) {
    help->SetfRequestTOFPID(requestTofPid);
    if (ptl != 0 ) help->SetfPtTOFPID(lptfortof);
  }

  if (sysType > 2) help->SetisMC(1); else help->SetisMC(0);

  if (pidtype == 3){
    AliPIDCombined *pidc=new AliPIDCombined();
    pidc->SetDefaultTPCPriors();
    help->SetPIDCombined(pidc);
  }
  task->SetHelperPID(help);
  task->SetAnal(analType);
  mgr->AddTask(task);

    
  TString commonname   = Form("%s:%s", AliAnalysisManager::GetCommonFileName(),taskname);
  
  AliAnalysisDataContainer *cout1 
    = mgr->CreateContainer(Form("%s_phy",taskname), TList::Class(),  
			   AliAnalysisManager::kOutputContainer, commonname);
  AliAnalysisDataContainer *cout2 
    = mgr->CreateContainer(Form("%s_qa",taskname), TList::Class(),  
			   AliAnalysisManager::kOutputContainer, commonname);
  AliAnalysisDataContainer *cout3 
    = mgr->CreateContainer(Form("%s_dca",taskname), TList::Class(),  
			   AliAnalysisManager::kOutputContainer, commonname);
  AliAnalysisDataContainer *cout4 
    = mgr->CreateContainer(Form("%s_eff",taskname), TList::Class(),  
			   AliAnalysisManager::kOutputContainer, commonname);
  
  mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(task, 1, cout1);
  mgr->ConnectOutput(task, 2, cout2);
  mgr->ConnectOutput(task, 3, cout3);
  mgr->ConnectOutput(task, 4, cout4);
  
  return;
}
 AddAliEbyENetChargeFluctuationTask.C:1
 AddAliEbyENetChargeFluctuationTask.C:2
 AddAliEbyENetChargeFluctuationTask.C:3
 AddAliEbyENetChargeFluctuationTask.C:4
 AddAliEbyENetChargeFluctuationTask.C:5
 AddAliEbyENetChargeFluctuationTask.C:6
 AddAliEbyENetChargeFluctuationTask.C:7
 AddAliEbyENetChargeFluctuationTask.C:8
 AddAliEbyENetChargeFluctuationTask.C:9
 AddAliEbyENetChargeFluctuationTask.C:10
 AddAliEbyENetChargeFluctuationTask.C:11
 AddAliEbyENetChargeFluctuationTask.C:12
 AddAliEbyENetChargeFluctuationTask.C:13
 AddAliEbyENetChargeFluctuationTask.C:14
 AddAliEbyENetChargeFluctuationTask.C:15
 AddAliEbyENetChargeFluctuationTask.C:16
 AddAliEbyENetChargeFluctuationTask.C:17
 AddAliEbyENetChargeFluctuationTask.C:18
 AddAliEbyENetChargeFluctuationTask.C:19
 AddAliEbyENetChargeFluctuationTask.C:20
 AddAliEbyENetChargeFluctuationTask.C:21
 AddAliEbyENetChargeFluctuationTask.C:22
 AddAliEbyENetChargeFluctuationTask.C:23
 AddAliEbyENetChargeFluctuationTask.C:24
 AddAliEbyENetChargeFluctuationTask.C:25
 AddAliEbyENetChargeFluctuationTask.C:26
 AddAliEbyENetChargeFluctuationTask.C:27
 AddAliEbyENetChargeFluctuationTask.C:28
 AddAliEbyENetChargeFluctuationTask.C:29
 AddAliEbyENetChargeFluctuationTask.C:30
 AddAliEbyENetChargeFluctuationTask.C:31
 AddAliEbyENetChargeFluctuationTask.C:32
 AddAliEbyENetChargeFluctuationTask.C:33
 AddAliEbyENetChargeFluctuationTask.C:34
 AddAliEbyENetChargeFluctuationTask.C:35
 AddAliEbyENetChargeFluctuationTask.C:36
 AddAliEbyENetChargeFluctuationTask.C:37
 AddAliEbyENetChargeFluctuationTask.C:38
 AddAliEbyENetChargeFluctuationTask.C:39
 AddAliEbyENetChargeFluctuationTask.C:40
 AddAliEbyENetChargeFluctuationTask.C:41
 AddAliEbyENetChargeFluctuationTask.C:42
 AddAliEbyENetChargeFluctuationTask.C:43
 AddAliEbyENetChargeFluctuationTask.C:44
 AddAliEbyENetChargeFluctuationTask.C:45
 AddAliEbyENetChargeFluctuationTask.C:46
 AddAliEbyENetChargeFluctuationTask.C:47
 AddAliEbyENetChargeFluctuationTask.C:48
 AddAliEbyENetChargeFluctuationTask.C:49
 AddAliEbyENetChargeFluctuationTask.C:50
 AddAliEbyENetChargeFluctuationTask.C:51
 AddAliEbyENetChargeFluctuationTask.C:52
 AddAliEbyENetChargeFluctuationTask.C:53
 AddAliEbyENetChargeFluctuationTask.C:54
 AddAliEbyENetChargeFluctuationTask.C:55
 AddAliEbyENetChargeFluctuationTask.C:56
 AddAliEbyENetChargeFluctuationTask.C:57
 AddAliEbyENetChargeFluctuationTask.C:58
 AddAliEbyENetChargeFluctuationTask.C:59
 AddAliEbyENetChargeFluctuationTask.C:60
 AddAliEbyENetChargeFluctuationTask.C:61
 AddAliEbyENetChargeFluctuationTask.C:62
 AddAliEbyENetChargeFluctuationTask.C:63
 AddAliEbyENetChargeFluctuationTask.C:64
 AddAliEbyENetChargeFluctuationTask.C:65
 AddAliEbyENetChargeFluctuationTask.C:66
 AddAliEbyENetChargeFluctuationTask.C:67
 AddAliEbyENetChargeFluctuationTask.C:68
 AddAliEbyENetChargeFluctuationTask.C:69
 AddAliEbyENetChargeFluctuationTask.C:70
 AddAliEbyENetChargeFluctuationTask.C:71
 AddAliEbyENetChargeFluctuationTask.C:72
 AddAliEbyENetChargeFluctuationTask.C:73
 AddAliEbyENetChargeFluctuationTask.C:74
 AddAliEbyENetChargeFluctuationTask.C:75
 AddAliEbyENetChargeFluctuationTask.C:76
 AddAliEbyENetChargeFluctuationTask.C:77
 AddAliEbyENetChargeFluctuationTask.C:78
 AddAliEbyENetChargeFluctuationTask.C:79
 AddAliEbyENetChargeFluctuationTask.C:80
 AddAliEbyENetChargeFluctuationTask.C:81
 AddAliEbyENetChargeFluctuationTask.C:82
 AddAliEbyENetChargeFluctuationTask.C:83
 AddAliEbyENetChargeFluctuationTask.C:84
 AddAliEbyENetChargeFluctuationTask.C:85
 AddAliEbyENetChargeFluctuationTask.C:86
 AddAliEbyENetChargeFluctuationTask.C:87
 AddAliEbyENetChargeFluctuationTask.C:88
 AddAliEbyENetChargeFluctuationTask.C:89
 AddAliEbyENetChargeFluctuationTask.C:90
 AddAliEbyENetChargeFluctuationTask.C:91
 AddAliEbyENetChargeFluctuationTask.C:92
 AddAliEbyENetChargeFluctuationTask.C:93
 AddAliEbyENetChargeFluctuationTask.C:94
 AddAliEbyENetChargeFluctuationTask.C:95
 AddAliEbyENetChargeFluctuationTask.C:96
 AddAliEbyENetChargeFluctuationTask.C:97
 AddAliEbyENetChargeFluctuationTask.C:98
 AddAliEbyENetChargeFluctuationTask.C:99
 AddAliEbyENetChargeFluctuationTask.C:100
 AddAliEbyENetChargeFluctuationTask.C:101
 AddAliEbyENetChargeFluctuationTask.C:102
 AddAliEbyENetChargeFluctuationTask.C:103
 AddAliEbyENetChargeFluctuationTask.C:104
 AddAliEbyENetChargeFluctuationTask.C:105
 AddAliEbyENetChargeFluctuationTask.C:106
 AddAliEbyENetChargeFluctuationTask.C:107
 AddAliEbyENetChargeFluctuationTask.C:108
 AddAliEbyENetChargeFluctuationTask.C:109
 AddAliEbyENetChargeFluctuationTask.C:110
 AddAliEbyENetChargeFluctuationTask.C:111
 AddAliEbyENetChargeFluctuationTask.C:112
 AddAliEbyENetChargeFluctuationTask.C:113
 AddAliEbyENetChargeFluctuationTask.C:114
 AddAliEbyENetChargeFluctuationTask.C:115
 AddAliEbyENetChargeFluctuationTask.C:116
 AddAliEbyENetChargeFluctuationTask.C:117
 AddAliEbyENetChargeFluctuationTask.C:118
 AddAliEbyENetChargeFluctuationTask.C:119
 AddAliEbyENetChargeFluctuationTask.C:120
 AddAliEbyENetChargeFluctuationTask.C:121
 AddAliEbyENetChargeFluctuationTask.C:122
 AddAliEbyENetChargeFluctuationTask.C:123
 AddAliEbyENetChargeFluctuationTask.C:124
 AddAliEbyENetChargeFluctuationTask.C:125
 AddAliEbyENetChargeFluctuationTask.C:126
 AddAliEbyENetChargeFluctuationTask.C:127
 AddAliEbyENetChargeFluctuationTask.C:128
 AddAliEbyENetChargeFluctuationTask.C:129