--- /dev/null
+#define AliAnalysisTaskFemto_cxx\r
+#include "TROOT.h"\r
+#include "TChain.h"\r
+#include "TH1.h"\r
+#include "TCanvas.h"\r
+#include "TSystem.h"\r
+#include "TFile.h"\r
+\r
+#include "AliAnalysisTask.h"\r
+\r
+#include "AliESDEvent.h"\r
+\r
+#include "AliAnalysisTaskFemto.h"\r
+\r
+ClassImp(AliAnalysisTaskFemto)\r
+\r
+//________________________________________________________________________\r
+ AliAnalysisTaskFemto::AliAnalysisTaskFemto(const char *name) :AliAnalysisTask(name,""), fESD(0), fHistPt(0) {\r
+ // Constructor.\r
+ // Input slot #0 works with an Ntuple\r
+ DefineInput(0, TChain::Class());\r
+ // DefineInput(1, TChain::Class());\r
+ // Output slot #0 writes into a TH1 container\r
+ DefineOutput(0, TH1F::Class());\r
+}\r
+\r
+//________________________________________________________________________\r
+void AliAnalysisTaskFemto::ConnectInputData(Option_t *) {\r
+ printf(" ConnectInputData %s\n", GetName());\r
+\r
+// char ** address = (char **)GetBranchAddress(0, "ESD");\r
+// cout << "Got tree address " << address << endl;\r
+// if (address) {\r
+// fESD = (AliESDEvent*)(*address);\r
+// }\r
+// else {\r
+// fESD = new AliESDEvent();\r
+// fESD->\r
+// // SetBranchAddress(0, "ESD", &fESD);\r
+// }\r
+ TChain *inpchain = (TChain *) GetInputData(0);\r
+ fESD = new AliESDEvent();\r
+ fESD->ReadFromTree(inpchain);\r
+ \r
+ \r
+\r
+// char ** addressfriend = (char **)GetBranchAddress(1, "ESDfriend");\r
+// cout << "Got friend address " << addressfriend << endl;\r
+// if (addressfriend) {\r
+// fESDfriend = (AliESDfriend*)(*address);\r
+// }\r
+// else {\r
+// fESDfriend = new AliESDfriend();\r
+// SetBranchAddress(1, "ESDfriend", &fESDfriend);\r
+// }\r
+\r
+\r
+// TString fileName(chain->GetCurrentFile()->GetName());\r
+// fileName.ReplaceAll("AliESDs", "AliESDfriends");\r
+// cout << "Reading friend " << fileName.Data() << endl;;\r
+// chain->AddFriend("esdFriendTree",fileName.Data());\r
+// SetBranchAddress(0, "ESDfriend",&fESDfriend);\r
+\r
+}\r
+\r
+//________________________________________________________________________\r
+void AliAnalysisTaskFemto::CreateOutputObjects() {\r
+ if (!fHistPt) {\r
+ fHistPt = new TH1F("fHistPt","This is the Pt distribution",15,0.1,3.1);\r
+ fHistPt->SetStats(kTRUE);\r
+ fHistPt->GetXaxis()->SetTitle("P_{T} [GeV]");\r
+ fHistPt->GetYaxis()->SetTitle("#frac{dN}{dP_{T}}");\r
+ fHistPt->GetXaxis()->SetTitleColor(1);\r
+ fHistPt->SetMarkerStyle(kFullCircle);\r
+ }\r
+}\r
+\r
+//________________________________________________________________________\r
+void AliAnalysisTaskFemto::Exec(Option_t *) {\r
+ // Task making a pt distribution.\r
+ // Get input data\r
+ TChain *chain = (TChain*)GetInputData(0);\r
+ Long64_t ientry = chain->GetReadEntry();\r
+ if (!fESD) return;\r
+ // if (!chain->GetCurrentFile())\r
+ // return 0;\r
+ \r
+ printf("Tracks: %d \n",fESD->GetNumberOfTracks());\r
+ \r
+ if (fESD->GetNumberOfTracks() > 0) {\r
+ cout << "Chain has " << chain->GetListOfFriends() << " friends" << endl;\r
+ cout << "First track is " << fESD->GetTrack(0)->Get1P() << " momentum" << endl;\r
+ \r
+ fReader->SetESDSource(fESD);\r
+ // fReader->SetESDfriendSource(*fESDfriend);\r
+ \r
+ fManager->ProcessEvent();\r
+ \r
+ // Post final data. It will be written to a file with option "RECREATE"\r
+ PostData(0, fHistPt);\r
+ }\r
+} \r
+\r
+//________________________________________________________________________\r
+void AliAnalysisTaskFemto::Terminate(Option_t *) {\r
+ // Draw some histogram at the end.\r
+// if (!gROOT->IsBatch()) {\r
+// TCanvas *c1 = new TCanvas("c1","Pt",10,10,310,310);\r
+// c1->SetFillColor(10);\r
+// c1->SetHighLightColor(10);\r
+ \r
+// c1->cd(1)->SetLeftMargin(0.15);\r
+// c1->cd(1)->SetBottomMargin(0.15); \r
+// c1->cd(1)->SetLogy();\r
+// //fHistPt = (TH1F*)GetOutputData(0);\r
+// if (fHistPt) fHistPt->DrawCopy("E");\r
+// }\r
+ \r
+}\r
+//________________________________________________________________________\r
+void AliAnalysisTaskFemto::SetFemtoReader(AliFemtoEventReaderESDChain *aReader)\r
+{\r
+ fReader = aReader;\r
+}\r
+//________________________________________________________________________\r
+void AliAnalysisTaskFemto::SetFemtoManager(AliFemtoManager *aManager)\r
+{\r
+ fManager = aManager;\r
+}\r
+//________________________________________________________________________\r
+// void AliAnalysisTaskFemto::SetFriendAddress(AliESDfriend **aFriendAddress)\r
+// {\r
+// fESDfriend = aFriendAddress;\r
+// }\r
+\r
--- /dev/null
+#include "TH1.h"
+
+#include "AliESDEvent.h"
+
+#include "AliAnalysisTask.h"
+#include "AliAnalysisManager.h"
+#include "AliAnalysisDataContainer.h"
+
+#include "AliFemtoEventReaderESDChain.h"
+#include "AliFemtoManager.h"
+
+class AliAnalysisTaskFemto : public AliAnalysisTask {
+ public:
+ AliAnalysisTaskFemto() : AliAnalysisTask(), fESD(0), fHistPt(0) {}
+ AliAnalysisTaskFemto(const char *name);
+ virtual ~AliAnalysisTaskFemto() {}
+
+ virtual void ConnectInputData(Option_t *);
+ virtual void CreateOutputObjects();
+ virtual void Exec(Option_t *option);
+ virtual void Terminate(Option_t *);
+
+ void SetFemtoReader(AliFemtoEventReaderESDChain *aReader);
+ void SetFemtoManager(AliFemtoManager *aManager);
+ // void SetFriendAddress(AliESDfriend **aFriendAddress);
+
+ private:
+ AliESDEvent *fESD; // ESD object
+ TH1F *fHistPt; // Pt spectrum
+ AliFemtoEventReaderESDChain *fReader; // AliFemto reader for ESD given by the chain
+ AliFemtoManager *fManager; // AliFemto top-level manager
+
+ ClassDef(AliAnalysisTaskFemto, 1); // example of analysis
+};