9 #include "TLorentzVector.h"
11 #include "AliAnalysisTask.h"
12 #include "AliAnalysisManager.h"
14 #include "AliESDEvent.h"
15 #include "AliESDInputHandler.h"
16 #include "AliMCEventHandler.h"
17 #include "AliMCEvent.h"
20 #include "AliProtonQAAnalysis.h"
21 #include "AliAnalysisTaskProtonsQA.h"
23 // Analysis task used for the QA of the (anti)proton analysis
24 // Author: Panos Cristakoglou
26 ClassImp(AliAnalysisTaskProtonsQA)
28 //________________________________________________________________________
29 AliAnalysisTaskProtonsQA::AliAnalysisTaskProtonsQA()
30 : AliAnalysisTask(), fESD(0), fMC(0),
31 fList0(0), fList1(0), fList2(0), fList3(0), fList4(0), fList5(0),
36 //________________________________________________________________________
37 AliAnalysisTaskProtonsQA::AliAnalysisTaskProtonsQA(const char *name)
38 : AliAnalysisTask(name, ""), fESD(0), fMC(0),
39 fList0(0), fList1(0), fList2(0), fList3(0), fList4(0), fList5(0),
43 // Define input and output slots here
44 // Input slot #0 works with a TChain
45 DefineInput(0, TChain::Class());
46 // Output slot #0 writes into a TList container
47 DefineOutput(0, TList::Class());
48 DefineOutput(1, TList::Class());
49 DefineOutput(2, TList::Class());
50 DefineOutput(3, TList::Class());
51 DefineOutput(4, TList::Class());
52 DefineOutput(5, TList::Class());
55 //________________________________________________________________________
56 void AliAnalysisTaskProtonsQA::ConnectInputData(Option_t *) {
57 // Connect ESD or AOD here
60 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
62 Printf("ERROR: Could not read chain from input slot 0");
64 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
67 Printf("ERROR: Could not get ESDInputHandler");
69 fESD = esdH->GetEvent();
72 AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
74 Printf("ERROR: Could not retrieve MC event handler");
80 //________________________________________________________________________
81 void AliAnalysisTaskProtonsQA::CreateOutputObjects() {
85 Double_t partFrac[5] = {0.01, 0.01, 0.85, 0.10, 0.05};
87 //proton analysis object
88 fAnalysis = new AliProtonQAAnalysis();
89 fAnalysis->SetRunMCAnalysis();
90 fAnalysis->SetRunEfficiencyAnalysis(kTRUE,kTRUE); //kTRUE,kTRUE for eta-pT efficiencies and if the cuts should be used in the reco and pid efficiencies
91 //fAnalysis->SetMCProcessId(13);//4: weak decay - 13: hadronic interaction
92 //fAnalysis->SetMotherParticlePDGCode(3122);//3122: Lambda
94 //Use of TPConly tracks
95 /*fAnalysis->SetQAYPtBins(10, -0.5, 0.5, 12, 0.5, 0.9); //TPC only
96 fAnalysis->UseTPCOnly();
97 fAnalysis->SetTPCpid();
98 fAnalysis->SetMinTPCClusters(100);
99 fAnalysis->SetMaxChi2PerTPCCluster(2.2);
100 fAnalysis->SetMaxCov11(0.5);
101 fAnalysis->SetMaxCov22(0.5);
102 fAnalysis->SetMaxCov33(0.5);
103 fAnalysis->SetMaxCov44(0.5);
104 fAnalysis->SetMaxCov55(0.5);
105 //fAnalysis->SetMaxSigmaToVertexTPC(2.0);
106 fAnalysis->SetMaxDCAXYTPC(1.5);
107 fAnalysis->SetMaxDCAZTPC(1.5);*/
109 //Use of HybridTPC tracks
110 fAnalysis->SetQAYPtBins(20, -1.0, 1.0, 26, 0.2, 1.5); //HybridTPC
111 fAnalysis->UseHybridTPC();
112 fAnalysis->SetTPCpid();
113 fAnalysis->SetMinTPCClusters(110);
114 fAnalysis->SetMaxChi2PerTPCCluster(2.2);
115 fAnalysis->SetMaxCov11(0.5);
116 fAnalysis->SetMaxCov22(0.5);
117 fAnalysis->SetMaxCov33(0.5);
118 fAnalysis->SetMaxCov44(0.5);
119 fAnalysis->SetMaxCov55(0.5);
120 fAnalysis->SetMaxSigmaToVertex(2.0);
121 //fAnalysis->SetMaxDCAXY(1.5);
122 //fAnalysis->SetMaxDCAZ(1.5);
123 //fAnalysis->SetPointOnITSLayer6();
124 //fAnalysis->SetPointOnITSLayer5();
125 //fAnalysis->SetPointOnITSLayer4();
126 //fAnalysis->SetPointOnITSLayer3();
127 fAnalysis->SetPointOnITSLayer2();
128 fAnalysis->SetPointOnITSLayer1();
129 fAnalysis->SetMinITSClusters(5);
132 /*fAnalysis->SetQAYPtBins(10, -0.5, 0.5, 12, 0.5, 0.9); //HybridTPC
133 //fAnalysis->SetQAYPtBins(20, -1.0, 1.0, 27, 0.4, 3.1); //combined tracking
134 fAnalysis->SetMinTPCClusters(110);
135 fAnalysis->SetMaxChi2PerTPCCluster(2.2);
136 fAnalysis->SetMaxCov11(0.5);
137 fAnalysis->SetMaxCov22(0.5);
138 fAnalysis->SetMaxCov33(0.5);
139 fAnalysis->SetMaxCov44(0.5);
140 fAnalysis->SetMaxCov55(0.5);
141 fAnalysis->SetMaxSigmaToVertex(2.0);
142 //fAnalysis->SetMaxDCAXY(2.0);
143 //fAnalysis->SetMaxDCAZ(2.0);
144 fAnalysis->SetTPCRefit();
145 fAnalysis->SetPointOnITSLayer1();
146 fAnalysis->SetPointOnITSLayer2();
147 //fAnalysis->SetPointOnITSLayer3();
148 //fAnalysis->SetPointOnITSLayer4();
149 //fAnalysis->SetPointOnITSLayer5();
150 //fAnalysis->SetPointOnITSLayer6();
151 fAnalysis->SetMinITSClusters(1);
152 fAnalysis->SetITSRefit();
153 fAnalysis->SetESDpid();*/
155 fAnalysis->SetPriorProbabilities(partFrac);
157 fList0 = new TList();
158 fList0 = fAnalysis->GetGlobalQAList();
160 fList1 = new TList();
161 fList1 = fAnalysis->GetPDGList();
163 fList2 = new TList();
164 fList2 = fAnalysis->GetMCProcessesList();
166 fList3 = new TList();
167 fList3 = fAnalysis->GetAcceptedCutList();
169 fList4 = new TList();
170 fList4 = fAnalysis->GetAcceptedDCAList();
172 fList5 = new TList();
173 fList5 = fAnalysis->GetEfficiencyQAList();
176 //________________________________________________________________________
177 void AliAnalysisTaskProtonsQA::Exec(Option_t *) {
179 // Called for each event
182 Printf("ERROR: fESD not available");
187 Printf("ERROR: Could not retrieve MC event");
191 AliStack* stack = fMC->Stack();
193 Printf("ERROR: Could not retrieve the stack");
197 fAnalysis->RunQAAnalysis(stack, fESD);
198 fAnalysis->RunMCAnalysis(stack);
199 fAnalysis->RunEfficiencyAnalysis(stack, fESD);
210 //________________________________________________________________________
211 void AliAnalysisTaskProtonsQA::Terminate(Option_t *) {
212 // Draw result to the screen
213 // Called once at the end of the query
215 fList0 = dynamic_cast<TList*> (GetOutputData(0));
217 Printf("ERROR: fList not available");