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