]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Add class storing a global binning setup shared between the steering task and the...
authormfasel <mfasel@lbl.gov>
Sun, 7 Dec 2014 17:37:29 +0000 (09:37 -0800)
committermfasel <mfasel@lbl.gov>
Fri, 12 Dec 2014 01:12:31 +0000 (17:12 -0800)
PWGJE/CMakelibPWGJEEMCALJetTasks.pkg
PWGJE/EMCALJetTasks/UserTasks/AliEMCalTriggerBinningComponent.cxx [new file with mode: 0644]
PWGJE/EMCALJetTasks/UserTasks/AliEMCalTriggerBinningComponent.h [new file with mode: 0644]
PWGJE/PWGJEEMCALJetTasksLinkDef.h

index cab037f28fbda02d12087929c72d9492cf7d83b1..df0e758031d50649b103559ff49a54b5fb23e9ef 100644 (file)
@@ -106,6 +106,7 @@ set ( SRCS
  EMCALJetTasks/UserTasks/AliEMCalTriggerEventSelection.cxx
  EMCALJetTasks/UserTasks/AliEMCalTriggerTaskGroup.cxx
  EMCALJetTasks/UserTasks/AliEMCalTriggerTracksAnalysisComponent.cxx
+ EMCALJetTasks/UserTasks/AliEMCalTriggerBinningComponent.cxx
  EMCALJetTasks/UserTasks/AliAnalysisTaskPtEMCalTriggerV1.cxx
  EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalTriggerTreeWriter.cxx
 )
diff --git a/PWGJE/EMCALJetTasks/UserTasks/AliEMCalTriggerBinningComponent.cxx b/PWGJE/EMCALJetTasks/UserTasks/AliEMCalTriggerBinningComponent.cxx
new file mode 100644 (file)
index 0000000..e6a2dbc
--- /dev/null
@@ -0,0 +1,111 @@
+/**************************************************************************
+ * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+/*
+ * Global binning definition for the charged particle pt analysis
+ *
+ *   Author: Markus Fasel
+ */
+#include <TObjArray.h>
+#include "AliEMCalTriggerBinningComponent.h"
+
+ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerBinningDimension)
+ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerBinningComponent)
+
+namespace EMCalTriggerPtAnalysis {
+
+  //______________________________________________________________________________
+AliEMCalTriggerBinningComponent::AliEMCalTriggerBinningComponent() :
+  TObject(),
+  fDimensions(NULL)
+{
+  /*
+   * Main constructor
+   */
+  fDimensions = new TObjArray;
+  fDimensions->SetOwner();
+}
+
+//______________________________________________________________________________
+AliEMCalTriggerBinningComponent::AliEMCalTriggerBinningComponent(const AliEMCalTriggerBinningComponent& ref) :
+  TObject(ref),
+  fDimensions(NULL)
+{
+  /*
+   * Copy constructor, creating a deep copy
+   */
+  fDimensions = new TObjArray;
+  fDimensions->SetOwner();
+  TIter dimIter(ref.fDimensions);
+  AliEMCalTriggerBinningDimension *dim(NULL);
+  while((dim = dynamic_cast<AliEMCalTriggerBinningDimension *>(dimIter())))
+    fDimensions->Add(new AliEMCalTriggerBinningDimension(*dim));
+}
+
+//______________________________________________________________________________
+AliEMCalTriggerBinningComponent& AliEMCalTriggerBinningComponent::operator=(const AliEMCalTriggerBinningComponent& ref) {
+  /*
+   * Assignment operator, doing a deep copy
+   */
+  TObject::operator=(ref);
+  if(&ref != this){
+    this->~AliEMCalTriggerBinningComponent();
+
+    fDimensions = new TObjArray;
+    fDimensions->SetOwner();
+    TIter dimIter(ref.fDimensions);
+    AliEMCalTriggerBinningDimension *dim(NULL);
+    while((dim = dynamic_cast<AliEMCalTriggerBinningDimension *>(dimIter())))
+      fDimensions->Add(new AliEMCalTriggerBinningDimension(*dim));
+  }
+  return *this;
+}
+
+//______________________________________________________________________________
+AliEMCalTriggerBinningComponent::~AliEMCalTriggerBinningComponent() {
+  /*
+   * Destructor
+   */
+  delete fDimensions;
+}
+
+//______________________________________________________________________________
+AliEMCalTriggerBinningDimension* AliEMCalTriggerBinningComponent::GetBinning(const char* name) {
+  /*
+   * Get binning information for a given axis. Return nullpointer if axis is not yet defined
+   *
+   * @param name: axis name
+   * @return: the axis information
+   */
+  return dynamic_cast<AliEMCalTriggerBinningDimension *>(fDimensions->FindObject(name));
+}
+
+//______________________________________________________________________________
+void AliEMCalTriggerBinningComponent::SetBinning(const char* dimname, int nbins, double* binning) {
+  /*
+   * Set binning for dimension. If not yet existing, create it
+   *
+   * @param dimname: axis name
+   * @param nbins: Number of bins
+   * @param binning: array of bin limits (size nbins+1)
+   */
+  AliEMCalTriggerBinningDimension *dim = GetBinning(dimname);
+  if(dim) dim->Set(nbins, binning);
+  else {
+    dim = new AliEMCalTriggerBinningDimension(dimname, nbins, binning);
+    fDimensions->Add(dim);
+  }
+}
+
+} /* namespace EMCalTriggerPtAnalysis */
diff --git a/PWGJE/EMCALJetTasks/UserTasks/AliEMCalTriggerBinningComponent.h b/PWGJE/EMCALJetTasks/UserTasks/AliEMCalTriggerBinningComponent.h
new file mode 100644 (file)
index 0000000..1ffdb1d
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef ALIEMCALTRIGGERBINNINGCOMPONENT_H
+#define ALIEMCALTRIGGERBINNINGCOMPONENT_H
+/* Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+// Author: Markus Fasel
+#include <TArrayD.h>
+#include <TNamed.h>
+
+class TObjArray;
+
+namespace EMCalTriggerPtAnalysis {
+
+class AliEMCalTriggerBinningDimension : public TNamed{
+public:
+  AliEMCalTriggerBinningDimension():
+    TNamed(),
+    fBinning()
+  {}
+  AliEMCalTriggerBinningDimension(const char *name):
+    TNamed(name, ""),
+    fBinning()
+  {}
+  AliEMCalTriggerBinningDimension(const char *name, int nbins, double *binning):
+    TNamed(name, ""),
+    fBinning(nbins+1, binning)
+  {}
+  ~AliEMCalTriggerBinningDimension() {}
+
+  void Set(int nbins, double *binning) { fBinning.Set(nbins+1, binning); }
+  void Set(const TArrayD &binning) { fBinning = binning; }
+  const double *GetBinLimits() const { return fBinning.GetArray(); }
+  int GetNumberOfBins() const { return fBinning.GetSize(); }
+
+private:
+  TArrayD fBinning;             // Bin limits
+
+  ClassDef(AliEMCalTriggerBinningDimension, 1);
+};
+
+class AliEMCalTriggerBinningComponent: public TObject {
+public:
+  AliEMCalTriggerBinningComponent();
+  AliEMCalTriggerBinningComponent(const AliEMCalTriggerBinningComponent &ref);
+  AliEMCalTriggerBinningComponent &operator=(const AliEMCalTriggerBinningComponent &ref);
+  virtual ~AliEMCalTriggerBinningComponent();
+
+  AliEMCalTriggerBinningDimension *GetBinning(const char *name);
+  void SetBinning(const char *dimname, int nbins, double *binning);
+
+private:
+  TObjArray       *fDimensions;           // List of binnings (dimensions)
+
+  ClassDef(AliEMCalTriggerBinningComponent, 1);
+};
+
+} /* namespace EMCalTriggerPtAnalysis */
+
+#endif /* ALIEMCALTRIGGERBINNINGCOMPONENT_H */
index 17f9f5cde62cfc1371c3855bbf1d0e0c38f953f7..35e9e8cbde2ca5481b34aa73dc3dedd482e38c22 100644 (file)
@@ -96,6 +96,8 @@
 #pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerEventSelection+;
 #pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup+;
 #pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerTracksAnalysisComponent+;
+#pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerBinningDimension+;
+#pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerBinningComponent+;
 #pragma link C++ class AliAnalysisTaskEmcalTriggerTreeWriter+;
 
 #ifdef HAVE_FASTJET