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