]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/macros/AddTaskBalanceEffCont.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / AddTaskBalanceEffCont.C
1 AliAnalysisTaskEffContBF *AddTaskBalanceEffCont( TString  centralityEstimator="V0M",
2                                                  Double_t centrMin=0.,
3                                                  Double_t centrMax=80.,
4                                                  Double_t vertexZ=10.,
5                                                  Int_t AODfilterBit = 128,
6                                                  Bool_t bUseElectronRejection = kFALSE,
7                                                  TString fileNameBase="AnalysisResults"
8                                                  ) {
9
10   // Creates a balance function analysis task and adds it to the analysis manager.
11   // Get the pointer to the existing analysis manager via the static access method.
12   TString centralityName("");
13
14   centralityName+=Form("%.0f-%.0f_%.0f",centrMin,centrMax,vertexZ);
15   TString outputFileName(fileNameBase);
16   outputFileName.Append(".root");
17   
18   //===========================================================================
19   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
20   if (!mgr) {
21     ::Error("AddTaskTriggeredBF", "No analysis manager to connect to.");
22     return NULL;
23   }
24
25   // Check the analysis type using the event handlers connected to the analysis manager.
26   //===========================================================================
27   if (!mgr->GetInputEventHandler()) {
28     ::Error("AddTaskTriggeredBF", "This task requires an input event handler");
29     return NULL;
30   }
31   TString analysisType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
32   if(dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler())) analysisType = "MC";
33
34  
35   // Create the task, add it to manager and configure it.
36   //===========================================================================
37
38
39   AliAnalysisTaskEffContBF *taskEffContBF = new AliAnalysisTaskEffContBF("TaskEffContBF");
40
41   // centrality
42   if(centralityEstimator) {
43     taskEffContBF->UseCentrality();
44     taskEffContBF->SetCentralityEstimator(centralityEstimator);
45     taskEffContBF->SetCentralityPercentileRange(centrMin,centrMax);
46   }
47   taskEffContBF->SelectCollisionCandidates(AliVEvent::kMB);
48
49   // vertex
50   taskEffContBF->SetVertexDiamond(.3,.3,vertexZ);
51
52   //analysis kinematic cuts
53   taskEffContBF->SetMinPt(0.0);
54   taskEffContBF->SetMaxPt(20.0); //5.0
55   //taskEffContBF->SetEtaRange(-0.8,0.8,100,0.0,1.6, 64); //acceptance cuts
56   //taskEffContBF->SetPtRange(0.1, 20.0, 100);  //acceptance cuts //5.0,49
57   taskEffContBF->SetEtaRange(-0.8,0.8,100,0.0,1.6, 64); //acceptance cuts
58   taskEffContBF->SetPtRange(0.0, 20.0, 100);  //acceptance cuts //5.0,49
59
60   // electron rejection
61     if(bUseElectronRejection){
62       taskEffContBF->SetElectronOnlyRejection(3.); // no other particle in nsigma (this is what we use standard in BF code)
63     }
64
65   //AODs  
66   taskEffContBF->SetAODtrackCutBit(AODfilterBit);
67   mgr->AddTask(taskEffContBF);
68
69   // Create ONLY the output containers for the data produced by the task.
70   // Get and connect other common input/output containers via the manager as below
71   //==============================================================================
72   TString outputFileName = AliAnalysisManager::GetCommonFileName();
73   outputFileName += ":PWGCFEbyE.outputBalanceFunctionEffContAnalysis";
74   AliAnalysisDataContainer *coutQA = mgr->CreateContainer(Form("listQA_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
75   AliAnalysisDataContainer *coutEffContBF = mgr->CreateContainer(Form("listEffContBF_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
76
77   mgr->ConnectInput(taskEffContBF, 0, mgr->GetCommonInputContainer());
78   mgr->ConnectOutput(taskEffContBF, 1, coutQA);
79   mgr->ConnectOutput(taskEffContBF, 2, coutEffContBF);
80   
81   return taskEffContBF;
82 }