7 #include "AliAnalysisTask.h"
8 #include "AliAnalysisManager.h"
10 #include "AliESDEvent.h"
11 #include "AliESDInputHandler.h"
12 #include "AliAODEvent.h"
13 #include "AliAODInputHandler.h"
14 #include "AliMCEventHandler.h"
15 #include "AliMCEvent.h"
17 #include "AliESDVertex.h"
19 #include "AliProtonFeedDownAnalysis.h"
20 #include "AliProtonAnalysisBase.h"
21 #include "AliProtonFeedDownAnalysisTask.h"
22 #include <Riostream.h>
24 ClassImp(AliProtonFeedDownAnalysisTask)
26 //________________________________________________________________________
27 AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask()
28 : AliAnalysisTask(), fESD(0), fAOD(0), fMC(0),
29 fList(0), fProtonAnalysis(0),fStatHist(0)
35 //________________________________________________________________________
36 AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask(const char *name)
37 : AliAnalysisTask(name, ""), fESD(0), fAOD(0), fMC(0),
38 fList(0), fProtonAnalysis(0),fStatHist(0)
42 // Define input and output slots here
43 // Input slot #0 works with a TChain
44 DefineInput(0, TChain::Class());
45 // Output slot #0 writes into a TList container
46 DefineOutput(0, TList::Class());
49 //________________________________________________________________________
50 void AliProtonFeedDownAnalysisTask::ConnectInputData(Option_t *)
52 // Connect ESD or AOD here
54 TString gAnalysisLevel = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel();
56 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
59 Printf("ERROR: Could not read chain from input slot 0");
63 if(gAnalysisLevel == "ESD")
65 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
68 Printf("ERROR: Could not get ESDInputHandler");
71 fESD = esdH->GetEvent();
72 AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
75 Printf("ERROR: Could not retrieve MC event handler");
80 else if(gAnalysisLevel == "AOD")
82 AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
85 Printf("ERROR: Could not get AODInputHandler");
88 fAOD = aodH->GetEvent();
91 Printf("Wrong analysis type: Only ESD, AOD types are allowed!");
94 //________________________________________________________________________
95 void AliProtonFeedDownAnalysisTask::CreateOutputObjects()
97 // Create output objects
100 fList->Add(fProtonAnalysis->GetProtonContainer());
101 fList->Add(fProtonAnalysis->GetAntiProtonContainer());
102 fList->Add(fProtonAnalysis->GetLambdaHist());
103 fList->Add(fProtonAnalysis->GetLambdaweightedHist());
104 fList->Add(fProtonAnalysis->GetAntiLambdaHist());
105 fList->Add(fProtonAnalysis->GetAntiLambdaweightedHist());
106 fStatHist=new TH1F("StatsHist","StatsHist",10,-0.5,9.5);
107 fList->Add(fStatHist);
108 fStatHist->GetXaxis()->SetBinLabel(1,"level1cut");
109 fStatHist->GetXaxis()->SetBinLabel(2,"level2cut");
110 fStatHist->GetXaxis()->SetBinLabel(3,"level3cut");
111 fStatHist->GetXaxis()->SetBinLabel(4,"level4cut");
113 //________________________________________________________________________
114 void AliProtonFeedDownAnalysisTask::Exec(Option_t *)
117 // Called for each event
118 TString gAnalysisLevel = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel();
119 //TString gAnalysisLevel = (fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel();
120 if(gAnalysisLevel == "ESD")
124 Printf("ERROR: fESD not available");
128 if(dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->IsEventTriggered(fESD,dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetTriggerMode()))
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());
135 Printf("Proton ESD analysis task: There are %d tracks in this event", fESD->GetNumberOfTracks());
136 AliStack* stack1=0x0;
139 stack1 = fMC->Stack();
143 fProtonAnalysis->Analyze(fESD,vertex,stack1);
144 fProtonAnalysis->Analyze(stack1);
146 }//reconstructed vertex
150 else if(gAnalysisLevel == "AOD")
154 Printf("ERROR: fAOD not available");
157 Printf("Proton AOD analysis task: There are %d tracks in this event", fAOD->GetNumberOfTracks());
158 fProtonAnalysis->Analyze(fAOD);
165 //__________________________________________________________________________________________
166 void AliProtonFeedDownAnalysisTask::Terminate(Option_t *)