]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Add base class
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 May 2012 02:22:36 +0000 (02:22 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 May 2012 02:22:36 +0000 (02:22 +0000)
PWGGA/EMCALJetTasks/AliAnalysisTaskRhoBase.cxx [new file with mode: 0644]
PWGGA/EMCALJetTasks/AliAnalysisTaskRhoBase.h [new file with mode: 0644]

diff --git a/PWGGA/EMCALJetTasks/AliAnalysisTaskRhoBase.cxx b/PWGGA/EMCALJetTasks/AliAnalysisTaskRhoBase.cxx
new file mode 100644 (file)
index 0000000..c13ac87
--- /dev/null
@@ -0,0 +1,97 @@
+// $Id$
+//
+// Base class for rho calculation
+//
+// Author: A.Saiola
+
+#include <TF1.h>
+
+#include "AliLog.h"
+#include "AliAnalysisManager.h"
+#include "AliVEventHandler.h"
+#include "AliCentrality.h"
+#include "AliEmcalJet.h"
+#include "AliVCluster.h"
+
+#include "AliAnalysisTaskRhoBase.h"
+
+ClassImp(AliAnalysisTaskRhoBase)
+
+//________________________________________________________________________
+AliAnalysisTaskRhoBase::AliAnalysisTaskRhoBase() : 
+  AliAnalysisTaskSE(),
+  fRhoName("Rho"),
+  fRhoFunction(0x0),
+  fCent(-1),
+  fRho(0)
+{
+  // Constructor.
+}
+
+//________________________________________________________________________
+AliAnalysisTaskRhoBase::AliAnalysisTaskRhoBase(const char *name) :
+  AliAnalysisTaskSE(name),
+  fRhoName("Rho"),
+  fRhoFunction(0x0),
+  fCent(-1),
+  fRho(0)
+{
+  // Constructor.
+}
+
+//________________________________________________________________________
+void AliAnalysisTaskRhoBase::UserCreateOutputObjects()
+{
+  // Run at beginning of task.
+
+  AliVEventHandler* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
+  if (!handler) {
+    AliError("Input handler not available!");
+    return;
+  }
+
+  fRho = new TParameter<Double_t>(fRhoName, 0);
+}
+
+//________________________________________________________________________
+Double_t AliAnalysisTaskRhoBase::GetRhoFactor(Double_t cent)
+{
+  // Return rho per centrality.
+
+  Double_t rho = -1;
+  if (fRhoFunction)
+    rho = fRhoFunction->Eval(cent);
+  return rho;
+}
+
+//________________________________________________________________________
+void AliAnalysisTaskRhoBase::UserExec(Option_t *) 
+{
+  // Main loop, called for each event.
+
+  // add rho to event if not yet there
+  if (!(InputEvent()->FindListObject(fRhoName))) {
+    new(fRho) TParameter<Double_t>(fRhoName, 0);
+    InputEvent()->AddObject(fRho);
+  }
+
+  // get centrality 
+  AliCentrality *centrality = InputEvent()->GetCentrality() ;
+  if (centrality)
+    fCent = centrality->GetCentralityPercentile("V0M");
+  else
+    fCent = 99; // probably pp data
+  if (fCent < 0) {
+    AliError(Form("Centrality negative: %f", fCent));
+    return;
+  }
+
+  Double_t rhochem = GetRhoFactor(fCent);
+  fRho->SetVal(rhochem);
+}      
+
+//________________________________________________________________________
+void AliAnalysisTaskRhoBase::Terminate(Option_t *) 
+{
+  // Run at the end of the task.
+}
diff --git a/PWGGA/EMCALJetTasks/AliAnalysisTaskRhoBase.h b/PWGGA/EMCALJetTasks/AliAnalysisTaskRhoBase.h
new file mode 100644 (file)
index 0000000..f99366a
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef ALIANALYSISTASKRHOBASE_cxx
+#define ALIANALYSISTASKRHOBASE_cxx
+
+// $Id$
+
+class TString;
+class TF1;
+
+#include <TParameter.h>
+
+#include "AliAnalysisTaskSE.h"
+
+class AliAnalysisTaskRhoBase : public AliAnalysisTaskSE {
+
+ public:
+  AliAnalysisTaskRhoBase();
+  AliAnalysisTaskRhoBase(const char *name);
+  virtual ~AliAnalysisTaskRhoBase() {}
+  
+  virtual void          UserCreateOutputObjects();
+  virtual void          UserExec(Option_t*);
+  virtual void          Terminate(Option_t*);
+
+  void                  SetRhoFunction(TF1* rf)                               { fRhoFunction   = rf   ; }
+  void                  SetRhoName(const char *name)                          { fRhoName       = name ; }
+  
+ protected:
+  virtual Double_t       GetRhoFactor(Double_t cent);
+
+  TString                fRhoName;                       // name of rho
+  TF1                   *fRhoFunction;                   // pre-computed rho as a function of centrality
+  Double_t               fCent;                          //!event centrality
+  TParameter<Double_t>  *fRho;                           //!per event calculated rho
+
+  AliAnalysisTaskRhoBase(const AliAnalysisTaskRhoBase&);             // not implemented
+  AliAnalysisTaskRhoBase& operator=(const AliAnalysisTaskRhoBase&);  // not implemented
+  
+  ClassDef(AliAnalysisTaskRhoBase, 1); // Rho base task
+};
+#endif