Added Centrality cut to event mixing.
authormvala <mvala@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Mar 2011 08:31:13 +0000 (08:31 +0000)
committermvala <mvala@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Mar 2011 08:31:13 +0000 (08:31 +0000)
ANALYSIS/CMakelibEventMixing.pkg
ANALYSIS/EventMixing/AliMixEventCutObj.cxx
ANALYSIS/EventMixing/AliMixEventCutObj.h

index 453c5be..5022eb6 100644 (file)
@@ -30,7 +30,8 @@ set ( SRCS EventMixing/AliMixEventCutObj.cxx
   EventMixing/AliMixInfo.cxx
   EventMixing/AliMixInputHandlerInfo.cxx
   EventMixing/AliMixInputEventHandler.cxx
-  EventMixing/AliAnalysisTaskMixInfo.cxx)
+  EventMixing/AliAnalysisTaskMixInfo.cxx
+)
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
 
index aa76dad..09cbc76 100644 (file)
@@ -18,8 +18,9 @@
 ClassImp(AliMixEventCutObj)
 
 //_________________________________________________________________________________________________
-AliMixEventCutObj::AliMixEventCutObj(EEPAxis_t type, Float_t min, Float_t max, Float_t step) : TObject(),
+AliMixEventCutObj::AliMixEventCutObj(AliMixEventCutObj::EEPAxis_t type, Float_t min, Float_t max, Float_t step, const char* opt) : TObject(),
    fCutType((Int_t)type),
+   fCutOpt(opt),
    fCutMin(min),
    fCutMax(max),
    fCutStep(step),
@@ -37,6 +38,7 @@ AliMixEventCutObj::AliMixEventCutObj(EEPAxis_t type, Float_t min, Float_t max, F
 //_________________________________________________________________________________________________
 AliMixEventCutObj::AliMixEventCutObj(const AliMixEventCutObj &obj) : TObject(obj),
    fCutType(obj.fCutType),
+   fCutOpt(obj.fCutOpt),
    fCutMin(obj.fCutMin),
    fCutMax(obj.fCutMax),
    fCutStep(obj.fCutStep),
@@ -59,6 +61,7 @@ AliMixEventCutObj& AliMixEventCutObj::operator=(const AliMixEventCutObj& obj)
    if (&obj != this) {
       TObject::operator=(obj);
       fCutType = obj.fCutType;
+      fCutOpt = obj.fCutOpt;
       fCutMin = obj.fCutMin;
       fCutMax = obj.fCutMax;
       fCutStep = obj.fCutStep;
@@ -174,6 +177,8 @@ Double_t AliMixEventCutObj::GetValue(AliESDEvent* ev)
    // Returns value from esd event
    //
 
+   const AliMultiplicity *multESD = 0;
+
    switch (fCutType) {
       case kMultiplicity:
          return (Double_t)ev->GetNumberOfTracks();
@@ -182,11 +187,19 @@ Double_t AliMixEventCutObj::GetValue(AliESDEvent* ev)
       case kNumberV0s:
          return ev->GetNumberOfV0s();
       case kNumberTracklets:
-         const AliMultiplicity *multESD = ev->GetMultiplicity();
-         return multESD->GetNumberOfTracklets();
+         multESD = ev->GetMultiplicity();
+         if (multESD) return multESD->GetNumberOfTracklets();
+         else AliFatal("esd->GetMultiplicity() is null");
+         break;
+      case kCentrality:
+         AliCentrality *c = ev->GetCentrality();
+         if (!c) AliFatal("esd->GetCentrality() is null");
+         if (fCutOpt.IsNull()) AliFatal("fCutOpt is null");
+         return c->GetCentralityPercentile(fCutOpt.Data());
+
    }
 
-   AliFatal("Mixing Cut TYPE is not supported");
+   AliFatal("Mixing Cut TYPE is not supported for ESD");
    return -99999;
 
 }
@@ -204,9 +217,15 @@ Double_t AliMixEventCutObj::GetValue(AliAODEvent* ev)
          return ev->GetVertex(0)->GetZ();
       case kNumberV0s:
          return ev->GetNumberOfV0s();
+      case kCentrality:
+         AliCentrality *c = ev->GetCentrality();
+         if (!c) AliFatal("aod->GetCentrality() is null");
+         if (fCutOpt.IsNull()) AliFatal("fCutOpt is null");
+         return c->GetCentralityPercentile(fCutOpt.Data());
+
    }
 
-   AliFatal("Mixing Cut TYPE is not supported");
+   AliFatal("Mixing Cut TYPE is not supported for AOD");
    return -99999;
 }
 
@@ -227,6 +246,8 @@ const char *AliMixEventCutObj::GetCutName(Int_t index) const
          return "NumberV0s";
       case kNumberTracklets:
          return "NumberTracklets";
+      case kCentrality:
+         return Form("kCentrality[%s]", fCutOpt.Data());
    }
    return "";
 }
index 0c04b85..a7fc35d 100644 (file)
 #define ALIMIXEVENTCUTOBJ_H
 
 #include <TObject.h>
+#include <TString.h>
+
 class AliVEvent;
 class AliAODEvent;
 class AliESDEvent;
 class AliMixEventCutObj : public TObject {
 public:
-   enum EEPAxis_t {kMultiplicity = 0, kZVertex = 1, kNumberV0s = 2, kNumberTracklets = 3, kAllEventAxis = 4};
+   enum EEPAxis_t {kMultiplicity = 0, kZVertex = 1, kNumberV0s = 2, kNumberTracklets = 3, kCentrality = 4, kAllEventAxis = 5};
 
-   AliMixEventCutObj(EEPAxis_t type = kMultiplicity, Float_t min = 0.0, Float_t max = 0.0, Float_t step = 1.0);
+   AliMixEventCutObj(AliMixEventCutObj::EEPAxis_t type = kMultiplicity, Float_t min = 0.0, Float_t max = 0.0, Float_t step = 1.0, const char* opt = "");
    AliMixEventCutObj(const AliMixEventCutObj &obj);
    AliMixEventCutObj &operator=(const AliMixEventCutObj &obj);
 
@@ -48,6 +50,7 @@ public:
 
 private:
    Int_t       fCutType;       // cut type
+   TString     fCutOpt;        // cut option string
    Float_t     fCutMin;        // cut min
    Float_t     fCutMax;        // cut max
    Float_t     fCutStep;       // cut step
@@ -55,7 +58,7 @@ private:
 
    Float_t     fCurrentVal;    // current value
 
-   ClassDef(AliMixEventCutObj, 1)
+   ClassDef(AliMixEventCutObj, 2)
 };
 
 #endif