]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding an AnalysisTask for the femto analysis
authorakisiel <akisiel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Feb 2008 16:49:22 +0000 (16:49 +0000)
committerakisiel <akisiel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Feb 2008 16:49:22 +0000 (16:49 +0000)
The task is AOD and ESD aware

PWG2/FEMTOSCOPY/macros/AliAnalysisTaskFemto.cxx [new file with mode: 0644]
PWG2/FEMTOSCOPY/macros/AliAnalysisTaskFemto.h [new file with mode: 0644]

diff --git a/PWG2/FEMTOSCOPY/macros/AliAnalysisTaskFemto.cxx b/PWG2/FEMTOSCOPY/macros/AliAnalysisTaskFemto.cxx
new file mode 100644 (file)
index 0000000..869aa66
--- /dev/null
@@ -0,0 +1,135 @@
+#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
diff --git a/PWG2/FEMTOSCOPY/macros/AliAnalysisTaskFemto.h b/PWG2/FEMTOSCOPY/macros/AliAnalysisTaskFemto.h
new file mode 100644 (file)
index 0000000..8b2e7ed
--- /dev/null
@@ -0,0 +1,34 @@
+#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
+};