5 #include "AliAnalysisTask.h"
6 #include "AliAnalysisManager.h"
8 #include "AliGenEventHeader.h"
9 #include "AliESDEvent.h"
10 #include "AliESDInputHandler.h"
11 #include "AliMCEventHandler.h"
12 #include "AliMCEvent.h"
14 #include "AliESDVertex.h"
16 #include "AliProtonQAAnalysis.h"
17 #include "AliProtonAnalysisBase.h"
18 #include "AliAnalysisTaskProtonsQA.h"
20 //-----------------------------------------------------------------
21 // AliAnalysisTakProtonsQA class
22 // This is the task to run the \bar{p}/p QA analysis
23 // Origin: Panos Christakoglou | Panos.Christakoglou@cern.ch
24 //-----------------------------------------------------------------
26 ClassImp(AliAnalysisTaskProtonsQA)
28 //________________________________________________________________________
29 AliAnalysisTaskProtonsQA::AliAnalysisTaskProtonsQA()
30 : AliAnalysisTask(), fESD(0), fMC(0),
31 fList0(0), fList1(0), fList2(0), fList3(0),
32 fList4(0), fList5(0), fList6(0), fList7(0), fList8(0),
33 fProtonQAAnalysis(0) {
37 //________________________________________________________________________
38 AliAnalysisTaskProtonsQA::AliAnalysisTaskProtonsQA(const char *name)
39 : AliAnalysisTask(name, ""), fESD(0), fMC(0),
40 fList0(0), fList1(0), fList2(0), fList3(0),
41 fList4(0), fList5(0), fList6(0), fList7(0), fList8(0),
42 fProtonQAAnalysis(0) {
45 // Define input and output slots here
46 // Input slot #0 works with a TChain
47 DefineInput(0, TChain::Class());
48 // Output slot #0 writes into a TList container
49 DefineOutput(0, TList::Class());
50 DefineOutput(1, TList::Class());
51 DefineOutput(2, TList::Class());
52 DefineOutput(3, TList::Class());
53 DefineOutput(4, TList::Class());
54 DefineOutput(5, TList::Class());
55 DefineOutput(6, TList::Class());
56 DefineOutput(7, TList::Class());
57 DefineOutput(8, TList::Class());
60 //________________________________________________________________________
61 void AliAnalysisTaskProtonsQA::ConnectInputData(Option_t *) {
62 // Connect ESD or AOD here
65 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
67 Printf("ERROR: Could not read chain from input slot 0");
69 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
72 Printf("ERROR: Could not get ESDInputHandler");
74 fESD = esdH->GetEvent();
77 AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
79 Printf("ERROR: Could not retrieve MC event handler");
85 //________________________________________________________________________
86 void AliAnalysisTaskProtonsQA::CreateOutputObjects() {
90 fList0 = fProtonQAAnalysis->GetGlobalQAList();
93 fList1 = fProtonQAAnalysis->GetPDGList();
96 fList2 = fProtonQAAnalysis->GetMCProcessesList();
99 fList3 = fProtonQAAnalysis->GetAcceptedCutList();
101 fList4 = new TList();
102 fList4 = fProtonQAAnalysis->GetRejectedCutList();
104 fList5 = new TList();
105 fList5 = fProtonQAAnalysis->GetAcceptedDCAList();
107 fList6 = new TList();
108 fList6 = fProtonQAAnalysis->GetEfficiencyQAList();
110 fList7 = new TList();
111 fList7 = fProtonQAAnalysis->GetVertexQAList();
113 fList8 = new TList();
114 fList8 = fProtonQAAnalysis->GetCutEfficiencyList();
117 //________________________________________________________________________
118 void AliAnalysisTaskProtonsQA::Exec(Option_t *) {
120 // Called for each event
123 Printf("ERROR: fESD not available");
128 Printf("ERROR: Could not retrieve MC event");
132 AliGenEventHeader *header = fMC->GenEventHeader();
134 Printf("ERROR: Could not retrieve the header");
138 AliStack* stack = fMC->Stack();
140 Printf("ERROR: Could not retrieve the stack");
144 if(dynamic_cast<AliProtonAnalysisBase*>(fProtonQAAnalysis->GetProtonAnalysisBaseObject())->IsEventTriggered(fESD,dynamic_cast<AliProtonAnalysisBase*>(fProtonQAAnalysis->GetProtonAnalysisBaseObject())->GetTriggerMode())) {
145 fProtonQAAnalysis->RunVertexQA(header,
147 const AliESDVertex *vertex = dynamic_cast<AliProtonAnalysisBase*>(fProtonQAAnalysis->GetProtonAnalysisBaseObject())->GetVertex(fESD,dynamic_cast<AliProtonAnalysisBase*>(fProtonQAAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisMode(),dynamic_cast<AliProtonAnalysisBase*>(fProtonQAAnalysis->GetProtonAnalysisBaseObject())->GetVxMax(),dynamic_cast<AliProtonAnalysisBase*>(fProtonQAAnalysis->GetProtonAnalysisBaseObject())->GetVyMax(),dynamic_cast<AliProtonAnalysisBase*>(fProtonQAAnalysis->GetProtonAnalysisBaseObject())->GetVzMax());
149 fProtonQAAnalysis->RunQAAnalysis(stack, fESD, vertex);
150 fProtonQAAnalysis->RunMCAnalysis(stack);
151 fProtonQAAnalysis->RunPIDEfficiencyAnalysis(stack, fESD, vertex);
152 fProtonQAAnalysis->RunReconstructionEfficiencyAnalysis(fMC,fESD,vertex);
153 fProtonQAAnalysis->RunCutEfficiencyAnalysis(stack, fESD, vertex);
169 //________________________________________________________________________
170 void AliAnalysisTaskProtonsQA::Terminate(Option_t *) {
171 // Draw result to the screen
172 // Called once at the end of the query
174 fList0 = dynamic_cast<TList*> (GetOutputData(0));
176 Printf("ERROR: fList0 not available");
179 fList1 = dynamic_cast<TList*> (GetOutputData(1));
181 Printf("ERROR: fList1 not available");
184 fList2 = dynamic_cast<TList*> (GetOutputData(2));
186 Printf("ERROR: fList2 not available");
189 fList3 = dynamic_cast<TList*> (GetOutputData(3));
191 Printf("ERROR: fList3 not available");
194 fList4 = dynamic_cast<TList*> (GetOutputData(4));
196 Printf("ERROR: fList4 not available");
199 fList5 = dynamic_cast<TList*> (GetOutputData(5));
201 Printf("ERROR: fList5 not available");
204 fList6 = dynamic_cast<TList*> (GetOutputData(6));
206 Printf("ERROR: fList6 not available");
209 fList7 = dynamic_cast<TList*> (GetOutputData(7));
211 Printf("ERROR: fList7 not available");
214 fList8 = dynamic_cast<TList*> (GetOutputData(8));
216 Printf("ERROR: fList8 not available");