]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding the example on how to access the kine tree with tha TaskRL
authorpanos <panos@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Mar 2007 16:17:32 +0000 (16:17 +0000)
committerpanos <panos@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Mar 2007 16:17:32 +0000 (16:17 +0000)
PWG2/AnalysisMacros/Kine/AliAnalysisTaskRLPt.cxx [new file with mode: 0644]
PWG2/AnalysisMacros/Kine/AliAnalysisTaskRLPt.h [new file with mode: 0644]
PWG2/AnalysisMacros/Kine/demoLocal.C [new file with mode: 0644]
PWG2/AnalysisMacros/Kine/runProcess.C [new file with mode: 0644]

diff --git a/PWG2/AnalysisMacros/Kine/AliAnalysisTaskRLPt.cxx b/PWG2/AnalysisMacros/Kine/AliAnalysisTaskRLPt.cxx
new file mode 100644 (file)
index 0000000..159f09c
--- /dev/null
@@ -0,0 +1,95 @@
+#define AliAnalysisTaskRLPt_cxx
+
+#include "TChain.h"
+#include "TH1.h"
+#include "TCanvas.h"
+#include "TSystem.h"
+#include "TROOT.h"
+#include "TParticle.h"
+
+#include "AliESD.h"
+#include "AliLog.h"
+#include "AliStack.h"
+
+#include "AliAnalysisTaskRL.h"
+#include "AliAnalysisTaskRLPt.h"
+
+ClassImp(AliAnalysisTaskRLPt)
+
+//________________________________________________________________________
+AliAnalysisTaskRLPt::AliAnalysisTaskRLPt(const char *name) :AliAnalysisTaskRL(name,""), fESD(0), fHistPt(0) {
+  // Constructor.
+  // Input slot #0 works with an Ntuple
+  DefineInput(0, TChain::Class());
+  // Output slot #0 writes into a TH1 container
+  DefineOutput(0, TH1F::Class());
+}
+
+//___________________________________________________________________________
+void AliAnalysisTaskRLPt::ConnectInputData(Option_t *) {
+  // Initialize branches.
+  printf("   ConnectInputData of task %s\n", GetName());
+  if (!fESD) {
+    char ** address = (char **)GetBranchAddress(0, "ESD");
+    if (address) fESD = (AliESD*)(*address);
+    if (!fESD) {
+      fESD = new AliESD();
+      SetBranchAddress(0, "ESD", &fESD);
+    }
+  }
+}
+
+//___________________________________________________________________________
+void AliAnalysisTaskRLPt::CreateOutputObjects() {
+  printf("   CreateOutputObjects of task %s\n", GetName());
+  if (!fHistPt) {
+    fHistPt = new TH1F("fHistPt","This is the Pt distribution",15,0.1,3.1);
+    fHistPt->SetStats(kTRUE);
+    fHistPt->GetXaxis()->SetTitle("P_{T} [GeV]");
+    fHistPt->GetYaxis()->SetTitle("#frac{dN}{dP_{T}}");
+    fHistPt->GetXaxis()->SetTitleColor(1);
+    fHistPt->SetMarkerStyle(kFullCircle);
+  }
+}
+
+//________________________________________________________________________
+void AliAnalysisTaskRLPt::Exec(Option_t *) {
+  // Task making a pt distribution.
+  // Get input data
+  TTree *tinput = (TTree*)GetInputData(0);
+  Long64_t ientry = tinput->GetReadEntry();
+  if (AliAnalysisTaskRL::GetEntry(ientry) == kFALSE) {
+    printf("Couldn't get event from the runLoader\n");
+    return;
+  }  
+  if (!fESD) return;
+
+  AliStack* stack = GetStack();
+  if (!stack) {
+  AliDebug(AliLog::kError, "Stack not available");
+    //return kFALSE;
+  }
+  // loop over mc particles
+  Int_t nPrim = stack->GetNprimary();
+  printf("Particles: %d - Tracks: %d \n",nPrim,fESD->GetNumberOfTracks());
+  for(Int_t i = 0; i < nPrim; i++) {
+    TParticle * particle = stack->Particle(i); 
+    if(TMath::Abs(particle->Eta()) > 1.0) continue;
+    fHistPt->Fill(particle->Pt());
+  }
+
+  // Post final data. It will be written to a file with option "RECREATE"
+  PostData(0, fHistPt);
+}      
+
+//________________________________________________________________________
+void AliAnalysisTaskRLPt::Terminate(Option_t *) {
+  // Draw some histogram at the end.
+  if (!gROOT->IsBatch()) {
+    TCanvas *c1 = new TCanvas("c1","Pt",10,10,310,310);
+    c1->SetFillColor(10); c1->SetHighLightColor(10);
+    c1->cd(1)->SetLeftMargin(0.15); c1->cd(1)->SetBottomMargin(0.15);  
+    c1->cd(1)->SetLogy();
+    fHistPt->DrawCopy("E");
+  }
+}
diff --git a/PWG2/AnalysisMacros/Kine/AliAnalysisTaskRLPt.h b/PWG2/AnalysisMacros/Kine/AliAnalysisTaskRLPt.h
new file mode 100644 (file)
index 0000000..3f7d18c
--- /dev/null
@@ -0,0 +1,23 @@
+#include "TH1.h"
+
+#include "AliESD.h"
+
+#include "AliAnalysisTaskRL.h"
+
+class AliAnalysisTaskRLPt : public AliAnalysisTaskRL {
+ public:
+  AliAnalysisTaskRLPt(const char *name);
+  virtual ~AliAnalysisTaskRLPt() {}
+  
+  virtual void   ConnectInputData(Option_t *);
+  virtual void   CreateOutputObjects();
+  virtual void   Exec(Option_t *option);
+  virtual void   Terminate(Option_t *);
+  
+ private:
+  AliESD *fESD; //ESD object
+  TH1F   *fHistPt; //Pt spectrum
+   
+  ClassDef(AliAnalysisTaskRLPt, 0); // example of analysis
+};
+
diff --git a/PWG2/AnalysisMacros/Kine/demoLocal.C b/PWG2/AnalysisMacros/Kine/demoLocal.C
new file mode 100644 (file)
index 0000000..a9bc223
--- /dev/null
@@ -0,0 +1,28 @@
+//________________________________________________________________________
+void demoLocal() {
+  TChain* chain = new TChain("esdTree");
+  chain->Add("data/001/AliESDs.root");
+  chain->Add("data/002/AliESDs.root");
+
+  //____________________________________________//
+  // Make the analysis manager
+  AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
+  //____________________________________________//
+  // 1st Pt task
+  AliAnalysisTaskRLPt *task1 = new AliAnalysisTaskRLPt("TaskRLPt");
+  mgr->AddTask(task1);
+  // Create containers for input/output
+  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist1", TH1::Class(),AliAnalysisManager::kOutputContainer,"Pt.ESD.root");
+  
+  //____________________________________________//
+  mgr->ConnectInput(task1,0,cinput1);
+  mgr->ConnectOutput(task1,0,coutput1);
+  cinput1->SetData(chain);
+  
+  if(mgr->InitAnalysis()) {
+    mgr->PrintStatus();
+    mgr->StartAnalysis("local",chain);
+  }
+}                         
+                      
diff --git a/PWG2/AnalysisMacros/Kine/runProcess.C b/PWG2/AnalysisMacros/Kine/runProcess.C
new file mode 100644 (file)
index 0000000..6cd3d74
--- /dev/null
@@ -0,0 +1,16 @@
+void runProcess() {
+  TStopwatch timer;
+  timer.Start();
+  gSystem->AddIncludePath("-I\"$ALICE_ROOT/include\"");
+  gSystem->Load("libANALYSIS.so");
+  gSystem->Load("libANALYSISRL.so");
+
+  gROOT->LoadMacro("AliAnalysisTaskRLPt.cxx+");
+  gROOT->LoadMacro("demoLocal.C");
+  demoLocal();
+
+  timer.Stop();
+  timer.Print();
+}
+
+