6942f8a52e9569881e06927587a604eef588fb84
[u/mrichter/AliRoot.git] / PWG3 / hfe / AddTaskHFE.C
1 AliAnalysisTask *AddTaskHFE(){
2   //get the current analysis manager
3   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
4   if (!mgr) {
5     Error("AddTaskHFE", "No analysis manager found.");
6     return NULL;
7   }
8   if (!mgr->GetInputEventHandler()) {
9     ::Error("AddTaskHFE", "This task requires an input event handler");
10     return NULL;
11   }  
12   TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
13   if (type=="AOD"){
14     ::Error("AddTaskHFE", "The tasks exits because AODs are in input");
15     return NULL;
16   }
17   Bool_t MCthere=kTRUE;
18   AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*>(mgr->GetMCtruthEventHandler());
19   if(!mcH){
20     MCthere=kFALSE;
21   }
22
23   //============= Set Task Name ===================
24   //TString taskName=("AliAnalysisTaskHFE.cxx+");
25   //===============================================
26
27   AliHFEcuts *hfecuts = new AliHFEcuts("hfeCuts","HFE Standard Cuts");
28   hfecuts->CreateStandardCuts();
29   hfecuts->SetMinNClustersTPC(110);
30   hfecuts->SetCutITSpixel(AliHFEextraCuts::kFirst);
31   hfecuts->SetCheckITSLayerStatus(kFALSE);
32   hfecuts->SetSigmaToVertex(10);
33   hfecuts->SetQAOn();
34   //hfecuts->SetMinNTrackletsTRD(5);
35
36   AliAnalysisTaskHFE *task = new AliAnalysisTaskHFE("HFEanalysis");
37   task->SetESDAnalysis();
38   if (MCthere)
39     task->SetHasMCData(kTRUE);
40   else{
41     task->SetHasMCData(kFALSE);
42     task->SelectCollisionCandidates();
43   }
44
45   task->SetPIDStrategy(6);
46   task->SetHFECuts(hfecuts);
47   if(!MCthere){
48     TF1 *hBackground = new TF1("hadronicBackgroundFunction", "[0]+[1]*TMath::Erf([2]*x+[3])", 0, 20);
49     hBackground->SetParameter(0, 0.2194);
50     hBackground->SetParameter(1, 0.217);
51     hBackground->SetParameter(2, 0.6829);
52     hBackground->SetParameter(3, -2.697);
53     task->SetBackGroundFactorsFunction(hBackground);
54   }
55
56   // kPIDqa needs to be off for flat pT spectra !!!
57   task->SetQAOn(AliAnalysisTaskHFE::kPIDqa);
58   task->SetQAOn(AliAnalysisTaskHFE::kMCqa);
59   //task->SwitchOnPlugin(AliAnalysisTaskHFE::kIsElecBackGround);
60   //task->SwitchOnPlugin(AliAnalysisTaskHFE::kSecVtx);
61
62   mgr->AddTask(task);
63
64   //----------------------
65   //create data containers
66   //----------------------
67  
68   //find input container
69   AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
70   TString containerName = mgr->GetCommonFileName();
71   containerName += ":PWG3_hfe";
72   
73   task->ConnectOutput(1, mgr->CreateContainer("HFE_nEvents", TH1I::Class(),
74                                               AliAnalysisManager::kOutputContainer, containerName.Data()));
75   task->ConnectOutput(2, mgr->CreateContainer("HFE_Results", TList::Class(),
76                                               AliAnalysisManager::kOutputContainer, containerName.Data()));
77   task->ConnectOutput(3, mgr->CreateContainer("HFE_QA", TList::Class(),
78                                               AliAnalysisManager::kOutputContainer, containerName.Data()));
79   mgr->ConnectInput  (task,  0, cinput );
80   
81   return task;
82 }