ROOT logo
AliAnalysisTaskSE *AddTaskLambdac(TString finname,Bool_t storeNtuple,Bool_t readMC,Bool_t MCPid,Bool_t realPid,Bool_t resPid,Bool_t useKF,
				  Bool_t fillVarHists=kFALSE, Bool_t priorsHists=kFALSE, Bool_t multiplicityHists=kFALSE, Int_t syst=0, Int_t bit=0,  TString postname="")
{
  //==============================================================================                                                      
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskLambdac", "No analysis manager to connect to.");
    return NULL;
  }


  Bool_t stdcuts=kFALSE;
  TFile* filecuts;
  if( finname.EqualTo("") ) {
    stdcuts=kTRUE; 
  } else {
      filecuts=TFile::Open(finname.Data());
      if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
	AliFatal("Input file not found : check your cut object");
      }
  }
  AliRDHFCutsLctopKpi* prodcuts=new AliRDHFCutsLctopKpi();
  // syst = 0 : pp, syst = 1: PbPb, syst = 2 : pPb
  if(stdcuts) {
    if(syst==0) prodcuts->SetStandardCutsPP2010();
    if(syst==1) prodcuts->SetStandardCutsPbPb2011();
    if(syst==2) prodcuts->SetStandardCutsPPb2013();
  }
  else   prodcuts = (AliRDHFCutsLctopKpi*)filecuts->Get("LctopKpiProdCuts");
  prodcuts->SetName("LctopKpiProdCuts");
  prodcuts->SetMinPtCandidate(-1.);
  prodcuts->SetMaxPtCandidate(10000.);

  AliRDHFCutsLctopKpi *analysiscuts = new AliRDHFCutsLctopKpi();
  if(stdcuts) {
   if(syst==0) analysiscuts->SetStandardCutsPP2010();
   if(syst==1) analysiscuts->SetStandardCutsPbPb2011();
   if(syst==2) analysiscuts->SetStandardCutsPPb2013();
  }
  else analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get("LctopKpiAnalysisCuts");
  analysiscuts->SetName("LctopKpiAnalysisCuts");
  analysiscuts->SetMinPtCandidate(-1.);
  analysiscuts->SetMaxPtCandidate(10000.);

  // Aanalysis task                                                                                                                     
  AliAnalysisTaskSELambdac *lambdacTask = new AliAnalysisTaskSELambdac("LambdacAnalysis",storeNtuple,analysiscuts,prodcuts);
  lambdacTask->SetReadMC(readMC);
  if(MCPid) lambdacTask->SetMCPid();
  if(resPid) lambdacTask->SetResonantPid();
  if(realPid) lambdacTask->SetRealPid();
  lambdacTask->SetFillVarHists(fillVarHists);
  lambdacTask->SetPriorsHists(priorsHists);
  lambdacTask->SetMultiplicityHists(multiplicityHists);
  lambdacTask->SetAnalysis(kTRUE);

  //bit:0 nocut, 1:LcCut, 2:LcPID, 3: Both
  lambdacTask->SetUseFilterBitCut(bit==1||bit==3?1:0);
  lambdacTask->SetUseFilterBitPID(bit>1?1:0);

  lambdacTask->SetDebugLevel(0);
  if(useKF) {
    lambdacTask->SetUseKF();
    Float_t cuts[10]={0.1,0.1,1.5,0.5,0.1,1.5,0.5,0.1,1.5,0.5};
    lambdacTask->SetCutsKF(cuts);
  }
  mgr->AddTask(lambdacTask);

  //
  // Create containers for input/output
  TString outputfile = AliAnalysisManager::GetCommonFileName();
  outputfile += ":PWG3_D2H_InvMassLambdac";

  TString finDirname="pp";
  TString inname = "cinputLc";
  TString outname = "coutputLc";
  TString cutsname = "coutputLcCuts";
  TString normname = "coutputLcNorm";
  TString ntuplename = "coutputLc2";
  TString nev2 = "coutputNev";
  TString outname2 = "coutputLambdacMC";
  TString aPrioriname = "coutputAPriori";
  TString multiplicityname = "coutputMultiplicity";
  inname += finDirname.Data();
  outname += finDirname.Data();
  cutsname += finDirname.Data();
  normname += finDirname.Data();
  ntuplename += finDirname.Data();
  nev2 += finDirname.Data();
  outname2 += finDirname.Data();
  aPrioriname += finDirname.Data();
  multiplicityname += finDirname.Data();

  inname +=  postname.Data();
  outname +=  postname.Data();
  cutsname +=  postname.Data();
  normname += postname.Data();
  ntuplename +=  postname.Data();
  nev2 +=  postname.Data();
  outname2 +=  postname.Data();
  aPrioriname +=  postname.Data();
  multiplicityname +=  postname.Data();


  AliAnalysisDataContainer *cinputLambdac = mgr->CreateContainer(inname,TChain::Class(),
								 AliAnalysisManager::kInputContainer);
  mgr->ConnectInput(lambdacTask,0,mgr->GetCommonInputContainer());

  AliAnalysisDataContainer *coutputLambdacCuts = mgr->CreateContainer(cutsname,TList::Class(),
								      AliAnalysisManager::kOutputContainer,outputfile.Data());
  mgr->ConnectOutput(lambdacTask,2,coutputLambdacCuts);

  AliAnalysisDataContainer *coutputLambdac = mgr->CreateContainer(outname,TList::Class(),
								  AliAnalysisManager::kOutputContainer,outputfile.Data());
  mgr->ConnectOutput(lambdacTask,1,coutputLambdac);

  AliAnalysisDataContainer *coutputLambdacMC = mgr->CreateContainer(outname2,TList::Class(),
								    AliAnalysisManager::kOutputContainer,outputfile.Data());
  mgr->ConnectOutput(lambdacTask,3,coutputLambdacMC);

  AliAnalysisDataContainer *coutputLambdacNev = mgr->CreateContainer(nev2,TH1F::Class(),
								     AliAnalysisManager::kOutputContainer,outputfile.Data());
  mgr->ConnectOutput(lambdacTask,4,coutputLambdacNev);

  AliAnalysisDataContainer *coutputAPriori = mgr->CreateContainer(aPrioriname,TList::Class(),
								  AliAnalysisManager::kOutputContainer,outputfile.Data());
  mgr->ConnectOutput(lambdacTask,5,coutputAPriori);
  AliAnalysisDataContainer *coutputMultiplicity = mgr->CreateContainer(multiplicityname,TList::Class(),
								       AliAnalysisManager::kOutputContainer,outputfile.Data());
  mgr->ConnectOutput(lambdacTask,6,coutputMultiplicity);

  AliAnalysisDataContainer *coutputLambdacNorm = mgr->CreateContainer(normname,AliNormalizationCounter::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());

 mgr->ConnectOutput(lambdacTask,7,coutputLambdacNorm);

  if (storeNtuple) {
    AliAnalysisDataContainer *coutputLambdac2 = mgr->CreateContainer(ntuplename,TNtuple::Class(),
								     AliAnalysisManager::kOutputContainer,"InvMassLambdac_nt1.root");
    coutputLambdac2->SetSpecialOutput();
    mgr->ConnectOutput(lambdacTask,7,coutputLambdac2);
  }


  return lambdacTask;
}
 AddTaskLambdac.C:1
 AddTaskLambdac.C:2
 AddTaskLambdac.C:3
 AddTaskLambdac.C:4
 AddTaskLambdac.C:5
 AddTaskLambdac.C:6
 AddTaskLambdac.C:7
 AddTaskLambdac.C:8
 AddTaskLambdac.C:9
 AddTaskLambdac.C:10
 AddTaskLambdac.C:11
 AddTaskLambdac.C:12
 AddTaskLambdac.C:13
 AddTaskLambdac.C:14
 AddTaskLambdac.C:15
 AddTaskLambdac.C:16
 AddTaskLambdac.C:17
 AddTaskLambdac.C:18
 AddTaskLambdac.C:19
 AddTaskLambdac.C:20
 AddTaskLambdac.C:21
 AddTaskLambdac.C:22
 AddTaskLambdac.C:23
 AddTaskLambdac.C:24
 AddTaskLambdac.C:25
 AddTaskLambdac.C:26
 AddTaskLambdac.C:27
 AddTaskLambdac.C:28
 AddTaskLambdac.C:29
 AddTaskLambdac.C:30
 AddTaskLambdac.C:31
 AddTaskLambdac.C:32
 AddTaskLambdac.C:33
 AddTaskLambdac.C:34
 AddTaskLambdac.C:35
 AddTaskLambdac.C:36
 AddTaskLambdac.C:37
 AddTaskLambdac.C:38
 AddTaskLambdac.C:39
 AddTaskLambdac.C:40
 AddTaskLambdac.C:41
 AddTaskLambdac.C:42
 AddTaskLambdac.C:43
 AddTaskLambdac.C:44
 AddTaskLambdac.C:45
 AddTaskLambdac.C:46
 AddTaskLambdac.C:47
 AddTaskLambdac.C:48
 AddTaskLambdac.C:49
 AddTaskLambdac.C:50
 AddTaskLambdac.C:51
 AddTaskLambdac.C:52
 AddTaskLambdac.C:53
 AddTaskLambdac.C:54
 AddTaskLambdac.C:55
 AddTaskLambdac.C:56
 AddTaskLambdac.C:57
 AddTaskLambdac.C:58
 AddTaskLambdac.C:59
 AddTaskLambdac.C:60
 AddTaskLambdac.C:61
 AddTaskLambdac.C:62
 AddTaskLambdac.C:63
 AddTaskLambdac.C:64
 AddTaskLambdac.C:65
 AddTaskLambdac.C:66
 AddTaskLambdac.C:67
 AddTaskLambdac.C:68
 AddTaskLambdac.C:69
 AddTaskLambdac.C:70
 AddTaskLambdac.C:71
 AddTaskLambdac.C:72
 AddTaskLambdac.C:73
 AddTaskLambdac.C:74
 AddTaskLambdac.C:75
 AddTaskLambdac.C:76
 AddTaskLambdac.C:77
 AddTaskLambdac.C:78
 AddTaskLambdac.C:79
 AddTaskLambdac.C:80
 AddTaskLambdac.C:81
 AddTaskLambdac.C:82
 AddTaskLambdac.C:83
 AddTaskLambdac.C:84
 AddTaskLambdac.C:85
 AddTaskLambdac.C:86
 AddTaskLambdac.C:87
 AddTaskLambdac.C:88
 AddTaskLambdac.C:89
 AddTaskLambdac.C:90
 AddTaskLambdac.C:91
 AddTaskLambdac.C:92
 AddTaskLambdac.C:93
 AddTaskLambdac.C:94
 AddTaskLambdac.C:95
 AddTaskLambdac.C:96
 AddTaskLambdac.C:97
 AddTaskLambdac.C:98
 AddTaskLambdac.C:99
 AddTaskLambdac.C:100
 AddTaskLambdac.C:101
 AddTaskLambdac.C:102
 AddTaskLambdac.C:103
 AddTaskLambdac.C:104
 AddTaskLambdac.C:105
 AddTaskLambdac.C:106
 AddTaskLambdac.C:107
 AddTaskLambdac.C:108
 AddTaskLambdac.C:109
 AddTaskLambdac.C:110
 AddTaskLambdac.C:111
 AddTaskLambdac.C:112
 AddTaskLambdac.C:113
 AddTaskLambdac.C:114
 AddTaskLambdac.C:115
 AddTaskLambdac.C:116
 AddTaskLambdac.C:117
 AddTaskLambdac.C:118
 AddTaskLambdac.C:119
 AddTaskLambdac.C:120
 AddTaskLambdac.C:121
 AddTaskLambdac.C:122
 AddTaskLambdac.C:123
 AddTaskLambdac.C:124
 AddTaskLambdac.C:125
 AddTaskLambdac.C:126
 AddTaskLambdac.C:127
 AddTaskLambdac.C:128
 AddTaskLambdac.C:129
 AddTaskLambdac.C:130
 AddTaskLambdac.C:131
 AddTaskLambdac.C:132
 AddTaskLambdac.C:133
 AddTaskLambdac.C:134
 AddTaskLambdac.C:135
 AddTaskLambdac.C:136
 AddTaskLambdac.C:137
 AddTaskLambdac.C:138
 AddTaskLambdac.C:139
 AddTaskLambdac.C:140
 AddTaskLambdac.C:141
 AddTaskLambdac.C:142
 AddTaskLambdac.C:143
 AddTaskLambdac.C:144
 AddTaskLambdac.C:145