ROOT logo
AliAnalysisTaskSEDplus *AddTaskDplus(Int_t system=0/*0=pp,1=PbPb*/,
				     Float_t minC=0, Float_t maxC=100,
				     Bool_t storeNtuple=kFALSE,
				     Bool_t doSparse=kFALSE,
				     Bool_t readMC=kFALSE,
				     TString finDirname="Loose",
				     TString filename="",
				     TString finAnObjname="AnalysisCuts",
				     Int_t etaRange=0,
				     Bool_t cutsDistr=kFALSE)
{
  //                                                                                                                                    
  // Test macro for the AliAnalysisTaskSE for D+ candidates 

  //Invariant mass histogram and                                                 
  // association with MC truth (using MC info in AOD)                                                                                   
  //  R. Bala, bala@to.infn.it                                                                                                                                  
  // Get the pointer to the existing analysis manager via the static access method.                                                     
  //==============================================================================                                                      
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskDplus", "No analysis manager to connect to.");
  }

  Bool_t stdcuts=kFALSE;
  TFile* filecuts;
  if( filename.EqualTo("") ) {
    stdcuts=kTRUE; 
  } else {
      filecuts=TFile::Open(filename.Data());
      if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
	AliFatal("Input file not found : check your cut object");
      }
  }
  
  
  //Analysis Task

  
  AliRDHFCutsDplustoKpipi* analysiscuts=new AliRDHFCutsDplustoKpipi();
  if(stdcuts) {
    if(system==0) analysiscuts->SetStandardCutsPP2010();
    else if(system==1){
      analysiscuts->SetStandardCutsPbPb2011();
      analysiscuts->SetMinCentrality(minC);
      analysiscuts->SetMaxCentrality(maxC);
      //      analysiscuts->SetUseAOD049(kTRUE);
      analysiscuts->SetUseCentrality(AliRDHFCuts::kCentV0M);
    }
  }
  else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(finAnObjname);
  
  AliAnalysisTaskSEDplus *dplusTask = new AliAnalysisTaskSEDplus("DplusAnalysis",analysiscuts,storeNtuple);
  dplusTask->SetReadMC(readMC);
  dplusTask->SetDoLikeSign(kFALSE);
  //  dplusTask->SetUseTPCpid(kTRUE);
  //dplusTask->SetUseTOFpid(kTRUE);
  dplusTask->SetDebugLevel(0);
  dplusTask->SetMassLimits(0.2);
  dplusTask->SetUseBit(kTRUE);
  dplusTask->SetCutsDistr(cutsDistr);
  dplusTask->SetSystem(system);
  if (doSparse) dplusTask->SetDoImpactParameterHistos(kTRUE);
  if(etaRange==1) dplusTask->SetUseOnlyPositiveEta();
  if(etaRange==-1) dplusTask->SetUseOnlyNegativeEta();

  mgr->AddTask(dplusTask);
  
  // Create containers for input/output 

  TString inname = "cinputDplus";
  TString outname = "coutputDplus";
  TString cutsname = "coutputDplusCuts";
  TString normname = "coutputDplusNorm";
  TString ntuplename = "coutputDplus2";
  inname += finDirname.Data();
  outname += finDirname.Data();
  cutsname += finDirname.Data();
  normname += finDirname.Data();
  ntuplename += finDirname.Data();
  TString centr=Form("%.0f%.0f",analysiscuts->GetMinCentrality(),analysiscuts->GetMaxCentrality());
  inname += centr;
  outname += centr;
  cutsname += centr;
  normname += centr;
  ntuplename += centr;


  AliAnalysisDataContainer *cinputDplus = mgr->CreateContainer(inname,TChain::Class(),
							       AliAnalysisManager::kInputContainer);
  TString outputfile = AliAnalysisManager::GetCommonFileName();
  outputfile += ":PWG3_D2H_InvMassDplus";
  
  AliAnalysisDataContainer *coutputDplusCuts = mgr->CreateContainer(cutsname,TList::Class(),
								    AliAnalysisManager::kOutputContainer,
								    outputfile.Data());
  
  AliAnalysisDataContainer *coutputDplus = mgr->CreateContainer(outname,TList::Class(),
								AliAnalysisManager::kOutputContainer,
								outputfile.Data());
  AliAnalysisDataContainer *coutputDplusNorm = mgr->CreateContainer(normname,AliNormalizationCounter::Class(),
								AliAnalysisManager::kOutputContainer,
								outputfile.Data());
  
  if(storeNtuple){
    AliAnalysisDataContainer *coutputDplus2 = mgr->CreateContainer(ntuplename,TNtuple::Class(),
								   AliAnalysisManager::kOutputContainer,
								   outputfile.Data());
    
    coutputDplus2->SetSpecialOutput();
  }
  mgr->ConnectInput(dplusTask,0,mgr->GetCommonInputContainer());
  
  mgr->ConnectOutput(dplusTask,1,coutputDplus);
  
  mgr->ConnectOutput(dplusTask,2,coutputDplusCuts);

  mgr->ConnectOutput(dplusTask,3,coutputDplusNorm);  
  if(storeNtuple){
    mgr->ConnectOutput(dplusTask,4,coutputDplus2);
  }
  return dplusTask;
}
 AddTaskDplus.C:1
 AddTaskDplus.C:2
 AddTaskDplus.C:3
 AddTaskDplus.C:4
 AddTaskDplus.C:5
 AddTaskDplus.C:6
 AddTaskDplus.C:7
 AddTaskDplus.C:8
 AddTaskDplus.C:9
 AddTaskDplus.C:10
 AddTaskDplus.C:11
 AddTaskDplus.C:12
 AddTaskDplus.C:13
 AddTaskDplus.C:14
 AddTaskDplus.C:15
 AddTaskDplus.C:16
 AddTaskDplus.C:17
 AddTaskDplus.C:18
 AddTaskDplus.C:19
 AddTaskDplus.C:20
 AddTaskDplus.C:21
 AddTaskDplus.C:22
 AddTaskDplus.C:23
 AddTaskDplus.C:24
 AddTaskDplus.C:25
 AddTaskDplus.C:26
 AddTaskDplus.C:27
 AddTaskDplus.C:28
 AddTaskDplus.C:29
 AddTaskDplus.C:30
 AddTaskDplus.C:31
 AddTaskDplus.C:32
 AddTaskDplus.C:33
 AddTaskDplus.C:34
 AddTaskDplus.C:35
 AddTaskDplus.C:36
 AddTaskDplus.C:37
 AddTaskDplus.C:38
 AddTaskDplus.C:39
 AddTaskDplus.C:40
 AddTaskDplus.C:41
 AddTaskDplus.C:42
 AddTaskDplus.C:43
 AddTaskDplus.C:44
 AddTaskDplus.C:45
 AddTaskDplus.C:46
 AddTaskDplus.C:47
 AddTaskDplus.C:48
 AddTaskDplus.C:49
 AddTaskDplus.C:50
 AddTaskDplus.C:51
 AddTaskDplus.C:52
 AddTaskDplus.C:53
 AddTaskDplus.C:54
 AddTaskDplus.C:55
 AddTaskDplus.C:56
 AddTaskDplus.C:57
 AddTaskDplus.C:58
 AddTaskDplus.C:59
 AddTaskDplus.C:60
 AddTaskDplus.C:61
 AddTaskDplus.C:62
 AddTaskDplus.C:63
 AddTaskDplus.C:64
 AddTaskDplus.C:65
 AddTaskDplus.C:66
 AddTaskDplus.C:67
 AddTaskDplus.C:68
 AddTaskDplus.C:69
 AddTaskDplus.C:70
 AddTaskDplus.C:71
 AddTaskDplus.C:72
 AddTaskDplus.C:73
 AddTaskDplus.C:74
 AddTaskDplus.C:75
 AddTaskDplus.C:76
 AddTaskDplus.C:77
 AddTaskDplus.C:78
 AddTaskDplus.C:79
 AddTaskDplus.C:80
 AddTaskDplus.C:81
 AddTaskDplus.C:82
 AddTaskDplus.C:83
 AddTaskDplus.C:84
 AddTaskDplus.C:85
 AddTaskDplus.C:86
 AddTaskDplus.C:87
 AddTaskDplus.C:88
 AddTaskDplus.C:89
 AddTaskDplus.C:90
 AddTaskDplus.C:91
 AddTaskDplus.C:92
 AddTaskDplus.C:93
 AddTaskDplus.C:94
 AddTaskDplus.C:95
 AddTaskDplus.C:96
 AddTaskDplus.C:97
 AddTaskDplus.C:98
 AddTaskDplus.C:99
 AddTaskDplus.C:100
 AddTaskDplus.C:101
 AddTaskDplus.C:102
 AddTaskDplus.C:103
 AddTaskDplus.C:104
 AddTaskDplus.C:105
 AddTaskDplus.C:106
 AddTaskDplus.C:107
 AddTaskDplus.C:108
 AddTaskDplus.C:109
 AddTaskDplus.C:110
 AddTaskDplus.C:111
 AddTaskDplus.C:112
 AddTaskDplus.C:113
 AddTaskDplus.C:114
 AddTaskDplus.C:115
 AddTaskDplus.C:116
 AddTaskDplus.C:117
 AddTaskDplus.C:118
 AddTaskDplus.C:119
 AddTaskDplus.C:120
 AddTaskDplus.C:121
 AddTaskDplus.C:122
 AddTaskDplus.C:123
 AddTaskDplus.C:124