]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/Hypernuclei/AddTaskESDEventPlane.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Hypernuclei / AddTaskESDEventPlane.C
1 AliEPSelectionTask *AddTaskESDEventPlane(Bool_t useEtaGap=kTRUE,Float_t etaGap=0.4,Bool_t posTPC=kFALSE,TString containername = "EPStat")
2 {
3   // Macro to connect an event plane selection task to an existing analysis manager.
4
5   if(useEtaGap && posTPCAOD){
6     ::Error("AddTaskEventplane", "eta-splitting of events and one side of TPC not possible at same time!");
7     return NULL;
8   }
9   
10   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
11   if (!mgr) {
12     ::Error("AddTaskEventplane", "No analysis manager to connect to.");
13     return NULL;
14   }      
15   // Check the analysis type using the event handlers connected to the analysis manager.
16   //==============================================================================
17   if (!mgr->GetInputEventHandler()) {
18     ::Error("AddTaskEventplane", "This task requires an input event handler");
19     return NULL;
20   }
21   TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
22  
23   AliEPSelectionTask *eventplaneTask = new AliEPSelectionTask("EventplaneSelection");
24   eventplaneTask->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kSemiCentral | AliVEvent::kCentral);
25   
26   if (inputDataType == "AOD"){
27     eventplaneTask->SetInput("AOD");
28   }
29   eventplaneTask->SetTrackType("TPC");
30   eventplaneTask->SetUsePtWeight();
31   eventplaneTask->SetUsePhiWeight();
32   eventplaneTask->SetSaveTrackContribution();
33   
34   if(useEtaGap){
35     eventplaneTask->SetSubeventsSplitMethod(AliEPSelectionTask::kEta); 
36     eventplaneTask->SetEtaGap(etaGap); 
37   } 
38   
39   // Cuts on ESD tracks wich corresponds to the one applied for AOD
40   Float_t etalow = 0;
41   Float_t etaup  = 0.8;
42   Float_t ptlow  = 0.15;
43   Float_t ptup   = 20;
44   Int_t   ntpc   = 50;
45   
46   AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Standard");
47  
48   esdTrackCutsL = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
49   esdTrackCutsL->SetPtRange(ptlow,ptup);
50   esdTrackCutsL->SetMinNClustersTPC(ntpc);
51   esdTrackCutsL->SetEtaRange(etalow,etaup);
52
53   if(posTPC){
54     if(inputDataType == "AOD"){
55     eventplaneTask->SetPersonalAODtrackCuts(128,0.,0.8,0.15,20.);
56     eventplaneTask->SetSubeventsSplitMethod(AliEPSelectionTask::kRandom);
57     }
58     else{
59
60       eventplaneTask->SetPersonalESDtrackCuts(esdTrackCutsL);
61       eventplaneTask->SetSubeventsSplitMethod(AliEPSelectionTask::kRandom);
62     }
63   }
64   mgr->AddTask(eventplaneTask);
65
66   AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
67   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(containername,
68                 TList::Class(), AliAnalysisManager::kOutputContainer,
69                 "EventStat_temp.root");
70   
71   mgr->ConnectInput(eventplaneTask, 0, mgr->GetCommonInputContainer());
72   mgr->ConnectOutput(eventplaneTask,1,coutput1);
73     
74   return eventplaneTask;
75 }