b5f4e49fac8f81f7e65607839f36129b7c487696
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / macros / AddTaskSEDmesonsFilterCJ.C
1 // $Id$
2
3 AliAnalysisTaskSEDmesonsFilterCJ *AddTaskSEDmesonsFilterCJ(
4   AliAnalysisTaskSEDmesonsForJetCorrelations::ECandidateType cand = AliAnalysisTaskSEDmesonsForJetCorrelations::kDstartoKpipi,
5   TString filename = "DStartoKpipiCuts.root",
6   Bool_t theMCon = kFALSE,
7   TString suffix = "")
8 {
9   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
10   if (!mgr) {
11     ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to.");
12     return NULL;
13   } 
14
15   Bool_t useStdC = kFALSE;
16   TFile* filecuts=TFile::Open(filename);
17   if(!filecuts || (filecuts && !filecuts->IsOpen())) {
18     cout<<"Input file not found: use std cuts"<<endl;
19     useStdC = kTRUE;
20   }
21
22   AliRDHFCuts *analysiscuts=0x0;
23   switch (cand) {
24   case 0 :
25     if(useStdC) {
26       analysiscuts = new AliRDHFCutsD0toKpi();
27       analysiscuts->SetStandardCutsPP2010();
28     } else
29       analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
30     break;
31   case 1 :
32     if(useStdC) {
33       analysiscuts = new AliRDHFCutsDStartoKpipi();
34       analysiscuts->SetStandardCutsPP2010();
35     } else
36       analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
37     analysiscuts->SetName("DStartoKpipiCuts");
38     break;
39   }
40   
41   if (!analysiscuts) { // mm let's see if everything is ok
42     AliFatal("Specific AliRDHFCuts not found");
43     return;
44   } 
45
46   printf("CREATE TASK\n"); //CREATE THE TASK
47
48   // create the task
49   AliAnalysisTaskSEDmesonsFilterCJ *task = new AliAnalysisTaskSEDmesonsFilterCJ("AnaTaskSEDmesonsFilterCJ",analysiscuts,cand);
50   task->SetMC(theMCon); //D meson settings
51   mgr->AddTask(task);
52
53   // Create and connect containers for input/output
54   TString outputfile = AliAnalysisManager::GetCommonFileName();
55   outputfile += ":PWG3_D2H_DmesonsForJetCorrelations";
56   outputfile += suffix;
57
58   TString nameContainer0="histograms";
59   TString nameContainer1="cuts";
60 //TString nameContainer2="DcandidatesSel";
61
62   nameContainer0 += suffix;
63   nameContainer1 += suffix;
64 //nameContainer2 += suffix;
65
66   // ------ input data ------
67   AliAnalysisDataContainer *cinput0  = mgr->GetCommonInputContainer();
68   
69   // ----- output data -----
70   
71   // output TH1I for event counting
72   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(nameContainer0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
73   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(nameContainer1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data());
74 //AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(nameContainer2, TList::Class(),AliAnalysisManager::kExchangeContainer, outputfile.Data());
75   
76   mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());
77   mgr->ConnectOutput(task,1,coutput1);
78   mgr->ConnectOutput(task,2,coutput2);
79 //mgr->ConnectOutput(task,3,coutput3);
80
81   Printf("Input and Output connected to the manager");
82   return task ;
83 }
84