-#include "TChain.h"\r
-#include "TTree.h"\r
-#include "TString.h"\r
-#include "TList.h"\r
-#include "TH2F.h"\r
-\r
-#include "AliAnalysisTask.h"\r
-#include "AliAnalysisManager.h"\r
-\r
-#include "AliESDEvent.h"\r
-#include "AliESDInputHandler.h"\r
-#include "AliAODEvent.h"\r
-#include "AliAODInputHandler.h"\r
-#include "AliMCEventHandler.h"\r
-#include "AliMCEvent.h"\r
-#include "AliStack.h"\r
-#include "AliESDVertex.h"\r
-\r
-#include "AliProtonFeedDownAnalysis.h"\r
-#include "AliProtonAnalysisBase.h"\r
-#include "AliProtonFeedDownAnalysisTask.h"\r
-#include <Riostream.h>\r
-\r
-ClassImp(AliProtonFeedDownAnalysisTask)\r
- \r
-//________________________________________________________________________ \r
-AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask()\r
- : AliAnalysisTask(), fESD(0), fAOD(0), fMC(0),\r
- fList(0), fProtonAnalysis(0),fStatHist(0)\r
- {\r
- //Dummy constructor\r
- \r
-}\r
-\r
-//________________________________________________________________________\r
-AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask(const char *name) \r
- : AliAnalysisTask(name, ""), fESD(0), fAOD(0), fMC(0),\r
- fList(0), fProtonAnalysis(0),fStatHist(0)\r
- {\r
- // Constructor\r
- \r
- // Define input and output slots here\r
- // Input slot #0 works with a TChain\r
- DefineInput(0, TChain::Class());\r
- // Output slot #0 writes into a TList container\r
- DefineOutput(0, TList::Class());\r
-}\r
-\r
-//________________________________________________________________________\r
-void AliProtonFeedDownAnalysisTask::ConnectInputData(Option_t *) \r
-{\r
- // Connect ESD or AOD here\r
- // Called once\r
- TString gAnalysisLevel = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel(); \r
- \r
- TTree* tree = dynamic_cast<TTree*> (GetInputData(0));\r
- if (!tree) \r
- {\r
- Printf("ERROR: Could not read chain from input slot 0");\r
- } \r
- else \r
- {\r
- if(gAnalysisLevel == "ESD") \r
- {\r
- AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); \r
- if (!esdH) \r
- {\r
- Printf("ERROR: Could not get ESDInputHandler");\r
- } \r
- else\r
- fESD = esdH->GetEvent();\r
- AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());\r
- if (!mcH) \r
- {\r
- Printf("ERROR: Could not retrieve MC event handler");\r
- }\r
- else\r
- fMC = mcH->MCEvent();\r
- }\r
- else if(gAnalysisLevel == "AOD") \r
- {\r
- AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); \r
- if (!aodH) \r
- {\r
- Printf("ERROR: Could not get AODInputHandler");\r
- }\r
- else\r
- fAOD = aodH->GetEvent();\r
- }\r
- else\r
- Printf("Wrong analysis type: Only ESD, AOD types are allowed!");\r
- }\r
-}\r
-//________________________________________________________________________\r
-void AliProtonFeedDownAnalysisTask::CreateOutputObjects() \r
-{\r
- // Create output objects\r
- // Called once\r
- fList = new TList();\r
- fList->Add(fProtonAnalysis->GetProtonContainer());\r
- fList->Add(fProtonAnalysis->GetAntiProtonContainer());\r
- fList->Add(fProtonAnalysis->GetLambdaHist());\r
- fList->Add(fProtonAnalysis->GetLambdaweightedHist());\r
- fList->Add(fProtonAnalysis->GetAntiLambdaHist());\r
- fList->Add(fProtonAnalysis->GetAntiLambdaweightedHist());\r
- fStatHist=new TH1F("StatsHist","StatsHist",10,-0.5,9.5);\r
- fList->Add(fStatHist);\r
- fStatHist->GetXaxis()->SetBinLabel(1,"level1cut");\r
- fStatHist->GetXaxis()->SetBinLabel(2,"level2cut");\r
- fStatHist->GetXaxis()->SetBinLabel(3,"level3cut");\r
- fStatHist->GetXaxis()->SetBinLabel(4,"level4cut");\r
-}\r
-//________________________________________________________________________\r
-void AliProtonFeedDownAnalysisTask::Exec(Option_t *) \r
-{\r
- // Main loop\r
- // Called for each event\r
- TString gAnalysisLevel = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel(); \r
- //TString gAnalysisLevel = (fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel(); \r
- if(gAnalysisLevel == "ESD") \r
- {\r
- if (!fESD) \r
- {\r
- Printf("ERROR: fESD not available");\r
- return;\r
- }\r
- fStatHist->Fill(0);\r
- if(dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->IsEventTriggered(fESD,dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetTriggerMode())) \r
- {\r
- fStatHist->Fill(1);\r
- 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
- if(vertex) \r
- {\r
- fStatHist->Fill(2);\r
- Printf("Proton ESD analysis task: There are %d tracks in this event", fESD->GetNumberOfTracks());\r
- AliStack* stack1=0x0;\r
- if(!fMC)\r
- return; \r
- stack1 = fMC->Stack();\r
- if(!stack1)\r
- return;\r
- fStatHist->Fill(3); \r
- fProtonAnalysis->Analyze(fESD,vertex,stack1);\r
- fProtonAnalysis->Analyze(stack1);\r
-\r
- }//reconstructed vertex\r
- }//triggered event\r
- }//ESD analysis \r
- \r
- else if(gAnalysisLevel == "AOD") \r
- {\r
- if (!fAOD) \r
- {\r
- Printf("ERROR: fAOD not available");\r
- return;\r
- }\r
- Printf("Proton AOD analysis task: There are %d tracks in this event", fAOD->GetNumberOfTracks());\r
- fProtonAnalysis->Analyze(fAOD);\r
- }//AOD analysis\r
- \r
- \r
- // Post output data.\r
- PostData(0, fList);\r
-} \r
-//__________________________________________________________________________________________\r
-void AliProtonFeedDownAnalysisTask::Terminate(Option_t *) \r
-{\r
-\r
-}\r
-\r
-\r
+#include "TChain.h"
+#include "TTree.h"
+#include "TString.h"
+#include "TList.h"
+#include "TH2F.h"
+
+#include "AliAnalysisTask.h"
+#include "AliAnalysisManager.h"
+
+#include "AliESDEvent.h"
+#include "AliESDInputHandler.h"
+#include "AliAODEvent.h"
+#include "AliAODInputHandler.h"
+#include "AliMCEventHandler.h"
+#include "AliMCEvent.h"
+#include "AliStack.h"
+#include "AliESDVertex.h"
+
+#include "AliProtonFeedDownAnalysis.h"
+#include "AliProtonAnalysisBase.h"
+#include "AliProtonFeedDownAnalysisTask.h"
+#include <Riostream.h>
+
+ClassImp(AliProtonFeedDownAnalysisTask)
+
+//________________________________________________________________________
+AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask()
+ : AliAnalysisTask(), fESD(0), fAOD(0), fMC(0),
+ fList(0), fProtonAnalysis(0),fStatHist(0)
+ {
+ //Dummy constructor
+
+}
+
+//________________________________________________________________________
+AliProtonFeedDownAnalysisTask::AliProtonFeedDownAnalysisTask(const char *name)
+ : AliAnalysisTask(name, ""), fESD(0), fAOD(0), fMC(0),
+ fList(0), fProtonAnalysis(0),fStatHist(0)
+ {
+ // Constructor
+
+ // Define input and output slots here
+ // Input slot #0 works with a TChain
+ DefineInput(0, TChain::Class());
+ // Output slot #0 writes into a TList container
+ DefineOutput(0, TList::Class());
+}
+
+//________________________________________________________________________
+void AliProtonFeedDownAnalysisTask::ConnectInputData(Option_t *)
+{
+ // Connect ESD or AOD here
+ // Called once
+ TString gAnalysisLevel = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel();
+
+ TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
+ if (!tree)
+ {
+ Printf("ERROR: Could not read chain from input slot 0");
+ }
+ else
+ {
+ if(gAnalysisLevel == "ESD")
+ {
+ AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
+ if (!esdH)
+ {
+ Printf("ERROR: Could not get ESDInputHandler");
+ }
+ else
+ fESD = esdH->GetEvent();
+ AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
+ if (!mcH)
+ {
+ Printf("ERROR: Could not retrieve MC event handler");
+ }
+ else
+ fMC = mcH->MCEvent();
+ }
+ else if(gAnalysisLevel == "AOD")
+ {
+ AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
+ if (!aodH)
+ {
+ Printf("ERROR: Could not get AODInputHandler");
+ }
+ else
+ fAOD = aodH->GetEvent();
+ }
+ else
+ Printf("Wrong analysis type: Only ESD, AOD types are allowed!");
+ }
+}
+//________________________________________________________________________
+void AliProtonFeedDownAnalysisTask::CreateOutputObjects()
+{
+ // Create output objects
+ // Called once
+ fList = new TList();
+ fList->Add(fProtonAnalysis->GetProtonContainer());
+ fList->Add(fProtonAnalysis->GetAntiProtonContainer());
+ fList->Add(fProtonAnalysis->GetLambdaHist());
+ fList->Add(fProtonAnalysis->GetLambdaweightedHist());
+ fList->Add(fProtonAnalysis->GetAntiLambdaHist());
+ fList->Add(fProtonAnalysis->GetAntiLambdaweightedHist());
+ fStatHist=new TH1F("StatsHist","StatsHist",10,-0.5,9.5);
+ fList->Add(fStatHist);
+ fStatHist->GetXaxis()->SetBinLabel(1,"level1cut");
+ fStatHist->GetXaxis()->SetBinLabel(2,"level2cut");
+ fStatHist->GetXaxis()->SetBinLabel(3,"level3cut");
+ fStatHist->GetXaxis()->SetBinLabel(4,"level4cut");
+}
+//________________________________________________________________________
+void AliProtonFeedDownAnalysisTask::Exec(Option_t *)
+{
+ // Main loop
+ // Called for each event
+ TString gAnalysisLevel = dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel();
+ //TString gAnalysisLevel = (fProtonAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel();
+ if(gAnalysisLevel == "ESD")
+ {
+ if (!fESD)
+ {
+ Printf("ERROR: fESD not available");
+ return;
+ }
+ fStatHist->Fill(0);
+ if(dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->IsEventTriggered(fESD,dynamic_cast<AliProtonAnalysisBase*>(fProtonAnalysis->GetProtonAnalysisBaseObject())->GetTriggerMode()))
+ {
+ fStatHist->Fill(1);
+ 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());
+ if(vertex)
+ {
+ fStatHist->Fill(2);
+ Printf("Proton ESD analysis task: There are %d tracks in this event", fESD->GetNumberOfTracks());
+ AliStack* stack1=0x0;
+ if(!fMC)
+ return;
+ stack1 = fMC->Stack();
+ if(!stack1)
+ return;
+ fStatHist->Fill(3);
+ fProtonAnalysis->Analyze(fESD,vertex,stack1);
+ fProtonAnalysis->Analyze(stack1);
+
+ }//reconstructed vertex
+ }//triggered event
+ }//ESD analysis
+
+ else if(gAnalysisLevel == "AOD")
+ {
+ if (!fAOD)
+ {
+ Printf("ERROR: fAOD not available");
+ return;
+ }
+ Printf("Proton AOD analysis task: There are %d tracks in this event", fAOD->GetNumberOfTracks());
+ fProtonAnalysis->Analyze(fAOD);
+ }//AOD analysis
+
+
+ // Post output data.
+ PostData(0, fList);
+}
+//__________________________________________________________________________________________
+void AliProtonFeedDownAnalysisTask::Terminate(Option_t *)
+{
+
+}
+
+