7 #include "AliAnalysisTask.h"
\r
8 #include "AliAnalysisManager.h"
\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
19 #include "AliProtonFeedDownAnalysis.h"
\r
20 #include "AliProtonAnalysisBase.h"
\r
21 #include "AliProtonFeedDownAnalysisTask.h"
\r
22 #include <Riostream.h>
\r
24 ClassImp(AliProtonFeedDownAnalysisTask)
\r
26 //________________________________________________________________________
\r
27 AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask()
\r
28 : AliAnalysisTask(), fESD(0), fAOD(0), fMC(0),
\r
29 fList(0), fProtonAnalysis(0),fStatHist(0)
\r
35 //________________________________________________________________________
\r
36 AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask(const char *name)
\r
37 : AliAnalysisTask(name, ""), fESD(0), fAOD(0), fMC(0),
\r
38 fList(0), fProtonAnalysis(0),fStatHist(0)
\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
49 //________________________________________________________________________
\r
50 void AliProtonFeedDownAnalysisTask::ConnectInputData(Option_t *)
\r
52 // Connect ESD or AOD here
\r
54 TString gAnalysisLevel = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel();
\r
56 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
\r
59 Printf("ERROR: Could not read chain from input slot 0");
\r
63 if(gAnalysisLevel == "ESD")
\r
65 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
\r
68 Printf("ERROR: Could not get ESDInputHandler");
\r
71 fESD = esdH->GetEvent();
\r
72 AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
\r
75 Printf("ERROR: Could not retrieve MC event handler");
\r
78 fMC = mcH->MCEvent();
\r
80 else if(gAnalysisLevel == "AOD")
\r
82 AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
\r
85 Printf("ERROR: Could not get AODInputHandler");
\r
88 fAOD = aodH->GetEvent();
\r
91 Printf("Wrong analysis type: Only ESD, AOD types are allowed!");
\r
94 //________________________________________________________________________
\r
95 void AliProtonFeedDownAnalysisTask::CreateOutputObjects()
\r
97 // Create output objects
\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
113 //________________________________________________________________________
\r
114 void AliProtonFeedDownAnalysisTask::Exec(Option_t *)
\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
124 Printf("ERROR: fESD not available");
\r
127 fStatHist->Fill(0);
\r
128 if(dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->IsEventTriggered(fESD,dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetTriggerMode()))
\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
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
139 stack1 = fMC->Stack();
\r
142 fStatHist->Fill(3);
\r
143 fProtonAnalysis->Analyze(fESD,vertex,stack1);
\r
144 fProtonAnalysis->Analyze(stack1);
\r
146 }//reconstructed vertex
\r
150 else if(gAnalysisLevel == "AOD")
\r
154 Printf("ERROR: fAOD not available");
\r
157 Printf("Proton AOD analysis task: There are %d tracks in this event", fAOD->GetNumberOfTracks());
\r
158 fProtonAnalysis->Analyze(fAOD);
\r
162 // Post output data.
\r
163 PostData(0, fList);
\r
165 //__________________________________________________________________________________________
\r
166 void AliProtonFeedDownAnalysisTask::Terminate(Option_t *)
\r