9f2acf89d4654e476d168ae26ff70a1caf531e55
[u/mrichter/AliRoot.git] / PWG3 / muon / AddTaskMuonsHF.C
1 AliAnalysisTaskSEMuonsHF* AddTaskMuonsHF(Int_t mode=0, Bool_t isMC=kFALSE, Bool_t isTree=kFALSE)
2 {
3   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
4   if (!mgr) {
5     ::Error("AddTaskMuonsHF", "No analysis manager to connect to.");
6     return NULL;
7   }
8
9   TString type = mgr->GetInputEventHandler()->GetDataType();
10   if (!type.Contains("ESD") && !type.Contains("AOD")) {
11     ::Error("AddTaskMuonsHF", "MuonsHF task needs the manager to have an ESD or AOD input handler.");
12     return NULL;
13   }
14
15   /*if (isMC) {
16     AliMCEventHandler *mcH = mgr->GetMCtruthEventHandler();
17     if (!mcH) {
18       ::Error("AddTaskMuonsHF", "MuonsHF task needs the manager to have an MC evnet handler.");
19       return NULL;
20     }
21   }*/
22
23   if (isTree) {
24     AliAODHandler *aodH = (AliAODHandler*)mgr->GetOutputEventHandler();
25     if (!aodH) {
26       ::Error("AddTaskMuonsHF", "MuonsHF task needs the manager to have an AOD output handler.");
27       return NULL;
28     }
29   }
30
31   // set cuts for single muon track selection
32   Double_t cuts[10]={-1.,      // 0, min of 3-momentum
33                      999999.,  // 1, max of 3-momnentum
34                      1.,       // 2, PtMin
35                      999999.,  // 3, PtMax
36                      -4.,      // 4, EtaMin
37                      -2.5,     // 5, EtaMax
38                      -1.,      // 6, DCAmin
39                      10.,      // 7, DCAmax
40                      0.5,      // 8, for trigger
41                      3.5.      // 9, for trigger
42                     };
43
44   AliAnalysisTaskSEMuonsHF *taskMuonsHF = new AliAnalysisTaskSEMuonsHF("MuonsHF Analysis Task");
45   taskMuonsHF->SetAnaMode(mode);
46   taskMuonsHF->SetIsUseMC(isMC);
47   taskMuonsHF->SetIsOutputTree(isTree);
48   taskMuonsHF->SetSingleMuonCuts(cuts);
49   mgr->AddTask(taskMuonsHF);
50   
51   TString outputfile = AliAnalysisManager::GetCommonFileName();
52   outputfile += ":PWG3Muon_MuonHF";
53
54   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("listHisEventH",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
55   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("listHisSingleMuon",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
56   AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("listHisDimuon",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
57
58   mgr->ConnectInput(taskMuonsHF,0,mgr->GetCommonInputContainer());
59   if (isTree) mgr->ConnectOutput(taskMuonsHF,0,mgr->GetCommonOutputContainer());
60   mgr->ConnectOutput(taskMuonsHF,1,coutput2);
61   mgr->ConnectOutput(taskMuonsHF,2,coutput3);
62   mgr->ConnectOutput(taskMuonsHF,3,coutput4);
63
64   return taskMuonsHF;
65 }