f91fc7abd2f6bf73ddb5d8edd5a0271e28b41513
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / FourierDecomposition / AddTaskMuonEffMC.C
1
2 AliMuonEffMC* AddTaskMuonEffMC(Bool_t MDProcess = kTRUE,
3                                TString centralityEstimator = "V0M",
4                                const Int_t NEtaBins = 15,
5                                const Int_t NpTBins = 100,
6                                const Int_t NCentBins = 1,
7                                const Int_t NZvtxBins = 10,
8                                const Int_t NPhiBins = 12,
9                                const char* outputFileName = 0,
10                                const char* folderName = "Muon_TrkEff")
11 {
12   // Get the pointer to the existing analysis manager via the static access method.
13   //==============================================================================
14   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
15   if (!mgr)
16   {
17     ::Error("AddTaskSOH", "No analysis manager to connect to.");
18     return NULL;
19   }  
20   
21   // Check the analysis type using the event handlers connected to the analysis manager.
22   //==============================================================================
23   if (!mgr->GetInputEventHandler())
24   {
25     ::Error("AddTaskSOH", "This task requires an input event handler");
26     return NULL;
27   }
28
29   TString analysisType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
30   if(dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler())) analysisType = "MC";
31
32   Bool_t IsMc = kTRUE;
33   if (analysisType !="MC") IsMc = kFALSE;
34
35   //-------------------------------------------------------
36   // Init the task and do settings
37   //-------------------------------------------------------
38
39   AliMuonEffMC *MuonEff = new AliMuonEffMC("MuonEffMC");
40   MuonEff->SetMcAna(IsMc);
41   MuonEff->SetMDProcess(MDProcess);
42   MuonEff->SetCentEstimator(centralityEstimator);
43   MuonEff->SetNEtaBins(NEtaBins);
44   MuonEff->SetNpTBins(NpTBins);
45   MuonEff->SetNCentBins(NCentBins);
46   MuonEff->SetNZvtxBins(NZvtxBins);
47   MuonEff->SetNPhiBins(NPhiBins);
48   MuonEff->SelectCollisionCandidates(AliVEvent::kAnyINT);
49
50   // Add task(s)
51   mgr->AddTask(MuonEff); 
52
53   // Create containers for input/output
54   if (!outputFileName) 
55     outputFileName = AliAnalysisManager::GetCommonFileName();
56
57   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
58   AliAnalysisDataContainer *coutputpt = mgr->CreateContainer(Form("MuonEff_%s",centralityEstimator.Data()), 
59                                                              TList::Class(), 
60                                                              AliAnalysisManager::kOutputContainer, 
61                                                              Form("%s:%s", outputFileName, folderName));
62
63   // Connect input/output
64   mgr->ConnectInput(MuonEff, 0, cinput);
65   mgr->ConnectOutput(MuonEff, 1, coutputpt);
66
67   return MuonEff;
68 }