]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/macros/AddTaskHFQA.C
Use TFile::Open in all AddTask macros
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskHFQA.C
CommitLineData
7b4ad19d 1AliAnalysisTaskSEHFQA* AddTaskHFQA(AliAnalysisTaskSEHFQA::DecChannel ch,TString filecutsname="D0toKpiCuts.root",Bool_t readMC=kFALSE, Bool_t simplemode=kFALSE, Int_t system=1 /*0=pp, 1=PbPb*/, TString finDirname=""){\r
2 //\r
3 // Test macro for the AliAnalysisTaskSE for HF mesons quality assurance\r
4 //Author: C.Bianchin chiara.bianchin@pd.infn.it\r
5\r
6 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
7 if (!mgr) {\r
8 ::Error("AddTaskHFQA", "No analysis manager to connect to.");\r
9 return NULL;\r
10 }\r
11\r
12 Bool_t stdcuts=kFALSE;\r
01e9725a 13 TFile* filecuts=TFile::Open(filecutsname.Data());\r
7b4ad19d 14 if(!filecuts->IsOpen()){\r
15 cout<<"Input file not found: using std cut object"<<endl;\r
16 stdcuts=kTRUE;\r
17 }\r
18\r
19 Bool_t onoff[4]={kTRUE,kTRUE,kTRUE,kTRUE}; //tracks (0), PID (1), centrality (2), event selection(3) \r
20 if(system==0) onoff[2]=kFALSE;\r
21\r
22 AliRDHFCuts *analysiscuts=0x0;\r
23\r
24 TString filename="",out1name="nEntriesQA",out2name="outputPid",out3name="outputTrack",out4name="cuts",out5name="countersCentrality",out6name="outputCentrCheck",out7name="outputEvSel",inname="input",suffix="",cutsobjname="",centr="";\r
25 filename = AliAnalysisManager::GetCommonFileName();\r
26 filename += ":PWG3_D2H_QA";\r
27 filename += finDirname.Data();\r
28\r
29 switch (ch){\r
30 case 0:\r
31 cutsobjname="AnalysisCuts";\r
32 if(stdcuts) {\r
33 analysiscuts = new AliRDHFCutsDplustoKpipi();\r
34 if (system == 0) analysiscuts->SetStandardCutsPP2010();\r
35 else analysiscuts->SetStandardCutsPbPb2010();\r
36 }\r
37 else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);\r
38 suffix="Dplus";\r
39 break;\r
40 case 1:\r
41 cutsobjname="D0toKpiCuts";\r
42 if(stdcuts) {\r
43 analysiscuts = new AliRDHFCutsD0toKpi();\r
44 if (system == 0) analysiscuts->SetStandardCutsPP2010();\r
45 else analysiscuts->SetStandardCutsPbPb2010();\r
46 }\r
47 else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);\r
48 suffix="D0";\r
49 break;\r
50 case 2:\r
51 cutsobjname="DStartoKpipiCuts";\r
52 if(stdcuts) {\r
53 analysiscuts = new AliRDHFCutsDStartoKpipi();\r
54 if (system == 0) analysiscuts->SetStandardCutsPP2010();\r
55 else analysiscuts->SetStandardCutsPbPb2010();\r
56 }\r
57 else analysiscuts = (AliRDHFCutsDstartoKpipi*)filecuts->Get(cutsobjname);\r
58 suffix="Dstar";\r
59 break;\r
60 case 3:\r
61 cutsobjname="DstoKKpiCuts";\r
62 if(stdcuts) {\r
63 analysiscuts = new AliRDHFCutsDstoKKpi();\r
64 if (system == 0) analysiscuts->SetStandardCutsPP2010();\r
65 else analysiscuts->SetStandardCutsPbPb2010();\r
66 }\r
67 else analysiscuts = (AliRDHFCutsDstoKKpi*)filecuts->Get(cutsobjname);\r
68 suffix="Ds";\r
69 break;\r
70 case 4:\r
71 cutsobjname="D0toKpipipiCuts";\r
72 if(stdcuts) {\r
73 analysiscuts = new AliRDHFCutsD0toKpipipi();\r
74 if (system == 0) analysiscuts->SetStandardCutsPP2010();\r
75 else analysiscuts->SetStandardCutsPbPb2010();\r
76 }\r
77 else analysiscuts = (AliRDHFCutsD0toKpipipi*)filecuts->Get(cutsobjname);\r
78 suffix="D04";\r
79 break;\r
80 case 5:\r
81 cutsobjname="LctopKpiAnalysisCuts";\r
82 if(stdcuts) {\r
83 analysiscuts = new AliRDHFCutsLctopKpi();\r
84 if (system == 0) analysiscuts->SetStandardCutsPP2010();\r
85 else analysiscuts->SetStandardCutsPbPb2010();\r
86 }\r
87 else analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get(cutsobjname);\r
88 suffix="Lc";\r
89 break;\r
90 }\r
91\r
92 inname+=suffix;\r
93 out1name+=suffix;\r
94 out2name+=suffix;\r
95 out3name+=suffix;\r
96 out4name=cutsobjname;\r
97 out5name+=suffix;\r
98 out6name+=suffix;\r
99 out7name+=suffix;\r
100\r
101 if(!analysiscuts && filecutsname!="none"){\r
102 cout<<"Specific AliRDHFCuts not found"<<endl;\r
103 return;\r
104 }\r
105\r
106 centr=Form("%.0f%.0f",analysiscuts->GetMinCentrality(),analysiscuts->GetMaxCentrality());\r
107 inname+=centr;\r
108 out1name+=centr;\r
109 out2name+=centr;\r
110 out3name+=centr;\r
111 out4name+=centr;\r
112 out5name+=centr;\r
113 out6name+=centr;\r
114 out7name+=centr;\r
115 inname+= finDirname.Data();\r
116 out1name+= finDirname.Data();\r
117 out2name+= finDirname.Data();\r
118 out3name+= finDirname.Data();\r
119 out4name+= finDirname.Data();\r
120 out5name+= finDirname.Data();\r
121 out6name+= finDirname.Data();\r
122 out7name+= finDirname.Data();\r
123\r
124 \r
125 AliAnalysisTaskSEHFQA* taskQA=new AliAnalysisTaskSEHFQA(Form("QA%s",suffix.Data()),ch,analysiscuts);\r
126\r
127 taskQA->SetReadMC(readMC);\r
128 taskQA->SetSimpleMode(simplemode); // set to kTRUE to go faster in PbPb\r
129 taskQA->SetTrackOn(onoff[0]);\r
130 taskQA->SetPIDOn(onoff[1]);\r
131 taskQA->SetCentralityOn(onoff[2]);\r
132 taskQA->SetEvSelectionOn(onoff[3]);\r
133 mgr->AddTask(taskQA);\r
134\r
135 //\r
136 // Create containers for input/output\r
137 AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(), AliAnalysisManager::kInputContainer);\r
138 mgr->ConnectInput(taskQA,0,mgr->GetCommonInputContainer());\r
139\r
140 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(out1name,TH1F::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //events analysed\r
141 mgr->ConnectOutput(taskQA,1,coutput1);\r
142\r
143 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(out2name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //PID\r
144 if(onoff[1]) mgr->ConnectOutput(taskQA,2,coutput2);\r
145\r
146 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(out3name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of tracks\r
147 if(onoff[0]) mgr->ConnectOutput(taskQA,3,coutput3);\r
148\r
149 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer(out4name,AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts\r
150 mgr->ConnectOutput(taskQA,4,coutput4);\r
151\r
152 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer(out5name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality\r
153 if(onoff[2]) mgr->ConnectOutput(taskQA,5,coutput5);\r
154\r
155 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer(out6name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality\r
156 if(onoff[2]) mgr->ConnectOutput(taskQA,6,coutput6);\r
157\r
158 AliAnalysisDataContainer *coutput7 = mgr->CreateContainer(out7name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //event selection\r
159 if(onoff[3]) mgr->ConnectOutput(taskQA,7,coutput7);\r
160\r
161 return taskQA;\r
162}\r
163\r