]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/SPECTRA/AliProtonFeedDownAnalysisTask.cxx
dca plots - updated version
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliProtonFeedDownAnalysisTask.cxx
CommitLineData
b3360800 1#include "TChain.h"\r
2#include "TTree.h"\r
3#include "TString.h"\r
4#include "TList.h"\r
5#include "TH2F.h"\r
6\r
7#include "AliAnalysisTask.h"\r
8#include "AliAnalysisManager.h"\r
9\r
10#include "AliESDEvent.h"\r
11#include "AliESDInputHandler.h"\r
12#include "AliAODEvent.h"\r
13#include "AliAODInputHandler.h"\r
14#include "AliMCEventHandler.h"\r
15#include "AliMCEvent.h"\r
16#include "AliStack.h"\r
17#include "AliESDVertex.h"\r
18\r
19#include "AliProtonFeedDownAnalysis.h"\r
20#include "AliProtonAnalysisBase.h"\r
21#include "AliProtonFeedDownAnalysisTask.h"\r
22#include <Riostream.h>\r
23\r
24ClassImp(AliProtonFeedDownAnalysisTask)\r
25 \r
26//________________________________________________________________________ \r
27AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask()\r
28 : AliAnalysisTask(), fESD(0), fAOD(0), fMC(0),\r
29 fList(0), fProtonAnalysis(0),fStatHist(0)\r
30 {\r
31 //Dummy constructor\r
32 \r
33}\r
34\r
35//________________________________________________________________________\r
36AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask(const char *name) \r
37 : AliAnalysisTask(name, ""), fESD(0), fAOD(0), fMC(0),\r
38 fList(0), fProtonAnalysis(0),fStatHist(0)\r
39 {\r
40 // Constructor\r
41 \r
42 // Define input and output slots here\r
43 // Input slot #0 works with a TChain\r
44 DefineInput(0, TChain::Class());\r
45 // Output slot #0 writes into a TList container\r
46 DefineOutput(0, TList::Class());\r
47}\r
48\r
49//________________________________________________________________________\r
50void AliProtonFeedDownAnalysisTask::ConnectInputData(Option_t *) \r
51{\r
52 // Connect ESD or AOD here\r
53 // Called once\r
54 TString gAnalysisLevel = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel(); \r
55 \r
56 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));\r
57 if (!tree) \r
58 {\r
59 Printf("ERROR: Could not read chain from input slot 0");\r
60 } \r
61 else \r
62 {\r
63 if(gAnalysisLevel == "ESD") \r
64 {\r
65 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); \r
66 if (!esdH) \r
67 {\r
68 Printf("ERROR: Could not get ESDInputHandler");\r
69 } \r
70 else\r
71 fESD = esdH->GetEvent();\r
72 AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());\r
73 if (!mcH) \r
74 {\r
75 Printf("ERROR: Could not retrieve MC event handler");\r
76 }\r
77 else\r
78 fMC = mcH->MCEvent();\r
79 }\r
80 else if(gAnalysisLevel == "AOD") \r
81 {\r
82 AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); \r
83 if (!aodH) \r
84 {\r
85 Printf("ERROR: Could not get AODInputHandler");\r
86 }\r
87 else\r
88 fAOD = aodH->GetEvent();\r
89 }\r
90 else\r
91 Printf("Wrong analysis type: Only ESD, AOD types are allowed!");\r
92 }\r
93}\r
94//________________________________________________________________________\r
95void AliProtonFeedDownAnalysisTask::CreateOutputObjects() \r
96{\r
97 // Create output objects\r
98 // Called once\r
99 fList = new TList();\r
100 fList->Add(fProtonAnalysis->GetProtonContainer());\r
101 fList->Add(fProtonAnalysis->GetAntiProtonContainer());\r
102 fList->Add(fProtonAnalysis->GetLambdaHist());\r
103 fList->Add(fProtonAnalysis->GetLambdaweightedHist());\r
104 fList->Add(fProtonAnalysis->GetAntiLambdaHist());\r
105 fList->Add(fProtonAnalysis->GetAntiLambdaweightedHist());\r
106 fStatHist=new TH1F("StatsHist","StatsHist",10,-0.5,9.5);\r
107 fList->Add(fStatHist);\r
108 fStatHist->GetXaxis()->SetBinLabel(1,"level1cut");\r
109 fStatHist->GetXaxis()->SetBinLabel(2,"level2cut");\r
110 fStatHist->GetXaxis()->SetBinLabel(3,"level3cut");\r
111 fStatHist->GetXaxis()->SetBinLabel(4,"level4cut");\r
112}\r
113//________________________________________________________________________\r
114void AliProtonFeedDownAnalysisTask::Exec(Option_t *) \r
115{\r
116 // Main loop\r
117 // Called for each event\r
118 TString gAnalysisLevel = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel(); \r
119 //TString gAnalysisLevel = (fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel(); \r
120 if(gAnalysisLevel == "ESD") \r
121 {\r
122 if (!fESD) \r
123 {\r
124 Printf("ERROR: fESD not available");\r
125 return;\r
126 }\r
127 fStatHist->Fill(0);\r
128 if(dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->IsEventTriggered(fESD,dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetTriggerMode())) \r
129 {\r
130 fStatHist->Fill(1);\r
131 const AliESDVertex *vertex = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetVertex(fESD,dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisMode(),dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetVxMax(),dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetVyMax(),dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetVzMax());\r
132 if(vertex) \r
133 {\r
134 fStatHist->Fill(2);\r
135 Printf("Proton ESD analysis task: There are %d tracks in this event", fESD->GetNumberOfTracks());\r
136 AliStack* stack1=0x0;\r
137 if(!fMC)\r
138 return; \r
139 stack1 = fMC->Stack();\r
140 if(!stack1)\r
141 return;\r
142 fStatHist->Fill(3); \r
143 fProtonAnalysis->Analyze(fESD,vertex,stack1);\r
144 fProtonAnalysis->Analyze(stack1);\r
145\r
146 }//reconstructed vertex\r
147 }//triggered event\r
148 }//ESD analysis \r
149 \r
150 else if(gAnalysisLevel == "AOD") \r
151 {\r
152 if (!fAOD) \r
153 {\r
154 Printf("ERROR: fAOD not available");\r
155 return;\r
156 }\r
157 Printf("Proton AOD analysis task: There are %d tracks in this event", fAOD->GetNumberOfTracks());\r
158 fProtonAnalysis->Analyze(fAOD);\r
159 }//AOD analysis\r
160 \r
161 \r
162 // Post output data.\r
163 PostData(0, fList);\r
164} \r
165//__________________________________________________________________________________________\r
166void AliProtonFeedDownAnalysisTask::Terminate(Option_t *) \r
167{\r
168\r
169}\r
170\r
171\r