ROOT logo
#ifndef ALIANALYSISCENTRALITYSELECTOR_H
#define ALIANALYSISCENTRALITYSELECTOR_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//-------------------------------------------------------------------------
//                    AliAnalysisCentralitySelector
// 
// This class selects collision candidates from data runs, applying selection cuts on triggers 
// and background rejection based on the content of the ESD
//
// Author: Michele Floris, CERN
//-------------------------------------------------------------------------

#include <AliAnalysisCuts.h>
#include <AliLog.h>

#define VERBOSE_STAT

class AliESDEvent;
class TH2F;
class TH1F;
class TCollection;
class AliTriggerAnalysis;
class AliAnalysisTaskSE;
class AliESDtrackCuts;

class AliAnalysisCentralitySelector : public AliAnalysisCuts
{
public:

  AliAnalysisCentralitySelector() : AliAnalysisCuts("CentralityCuts", "Centrality Cuts"), fIsMC (0), fCentrEstimator(""), fCentrBin(-1), fMultMin(0), fMultMax(1000000), fUseMultRange(kFALSE), fUseV0CutRange(kFALSE), fUseSPDOuterRange(kFALSE), fUsePercentile(kFALSE) {;}
  virtual ~AliAnalysisCentralitySelector(){}
    
  // AliAnalysisCuts interface
  virtual UInt_t GetSelectionMask(const TObject* obj) { return (UInt_t) IsCentralityBinSelected((AliESDEvent*) obj, NULL); }
  virtual Bool_t IsSelected(TList*) { AliFatal("Not implemented"); return kFALSE; }
  virtual Bool_t IsSelected(TObject* obj)  {return (UInt_t) IsCentralityBinSelected ( (AliESDEvent*) obj, NULL);}
      
   Bool_t IsCentralityBinSelected(AliESDEvent* aEsd, AliESDtrackCuts * trackCuts);
    
  void SetIsMC(Bool_t flag = kTRUE, Int_t multMin = 0, Int_t multMax=10000) { fIsMC = flag; fMultMin = multMin; fMultMax = multMax; }
  void SetMultRange(Int_t multMin = 0, Int_t multMax=10000) { fMultMin = multMin; fMultMax = multMax; }
  void SetUseMultRange(Bool_t flag = kTRUE) {fUseMultRange = flag;}
  void SetUseV0Range(Bool_t flag = kTRUE) {fUseV0CutRange = flag;}
  void SetUseSPDOuterRange(Bool_t flag = kTRUE) {fUseSPDOuterRange = flag;}
  void SetCentralityEstimator(const char * estimator) { fCentrEstimator = estimator; }
  void SetCentralityBin(Int_t bin) { fCentrBin = bin; } // uses 10% percentiles
  void SetCentralityBin(Float_t min, Float_t max) { fMultMin = min; fMultMax = max; fUsePercentile=kTRUE;}//  maybe don't need this
//  void SetPercentile(Bool_t flag = kTRUE){fUsePercentile = flag;}
  virtual void Print(Option_t* option = "") const ;
  virtual Long64_t Merge(TCollection* list){list->GetEntries();return 0;}
  
protected:
  Bool_t fIsMC;             // flag if MC is analyzed
  TString fCentrEstimator;  // Centrality estimator for AliCentrality
  Int_t   fCentrBin; // centrality bin to be selected
  Float_t fMultMin ; // Minimum multiplicity, because on MC we cut on tracks rather than on the estimator . Also used for other estimators
  Float_t fMultMax ; // Maximum multiplicity, because on MC we cut on tracks rather than on the estimator . Also used for other estimators
  Bool_t fUseMultRange; // if true, use track bins rather than multiplicity estimator
  Bool_t fUseV0CutRange; // if true, use v0 range rather than multiplicity estimator
  Bool_t fUseSPDOuterRange; // if true, use SPD outer cluster range rather than multiplicity estimator
  Bool_t fUsePercentile; // if true, use the specified centrality percentile

  ClassDef(AliAnalysisCentralitySelector, 2)
    
  private:
  AliAnalysisCentralitySelector(const AliAnalysisCentralitySelector&); // not implemented
  AliAnalysisCentralitySelector& operator=(const AliAnalysisCentralitySelector&); // not implemented
};

#endif
 AliAnalysisCentralitySelector.h:1
 AliAnalysisCentralitySelector.h:2
 AliAnalysisCentralitySelector.h:3
 AliAnalysisCentralitySelector.h:4
 AliAnalysisCentralitySelector.h:5
 AliAnalysisCentralitySelector.h:6
 AliAnalysisCentralitySelector.h:7
 AliAnalysisCentralitySelector.h:8
 AliAnalysisCentralitySelector.h:9
 AliAnalysisCentralitySelector.h:10
 AliAnalysisCentralitySelector.h:11
 AliAnalysisCentralitySelector.h:12
 AliAnalysisCentralitySelector.h:13
 AliAnalysisCentralitySelector.h:14
 AliAnalysisCentralitySelector.h:15
 AliAnalysisCentralitySelector.h:16
 AliAnalysisCentralitySelector.h:17
 AliAnalysisCentralitySelector.h:18
 AliAnalysisCentralitySelector.h:19
 AliAnalysisCentralitySelector.h:20
 AliAnalysisCentralitySelector.h:21
 AliAnalysisCentralitySelector.h:22
 AliAnalysisCentralitySelector.h:23
 AliAnalysisCentralitySelector.h:24
 AliAnalysisCentralitySelector.h:25
 AliAnalysisCentralitySelector.h:26
 AliAnalysisCentralitySelector.h:27
 AliAnalysisCentralitySelector.h:28
 AliAnalysisCentralitySelector.h:29
 AliAnalysisCentralitySelector.h:30
 AliAnalysisCentralitySelector.h:31
 AliAnalysisCentralitySelector.h:32
 AliAnalysisCentralitySelector.h:33
 AliAnalysisCentralitySelector.h:34
 AliAnalysisCentralitySelector.h:35
 AliAnalysisCentralitySelector.h:36
 AliAnalysisCentralitySelector.h:37
 AliAnalysisCentralitySelector.h:38
 AliAnalysisCentralitySelector.h:39
 AliAnalysisCentralitySelector.h:40
 AliAnalysisCentralitySelector.h:41
 AliAnalysisCentralitySelector.h:42
 AliAnalysisCentralitySelector.h:43
 AliAnalysisCentralitySelector.h:44
 AliAnalysisCentralitySelector.h:45
 AliAnalysisCentralitySelector.h:46
 AliAnalysisCentralitySelector.h:47
 AliAnalysisCentralitySelector.h:48
 AliAnalysisCentralitySelector.h:49
 AliAnalysisCentralitySelector.h:50
 AliAnalysisCentralitySelector.h:51
 AliAnalysisCentralitySelector.h:52
 AliAnalysisCentralitySelector.h:53
 AliAnalysisCentralitySelector.h:54
 AliAnalysisCentralitySelector.h:55
 AliAnalysisCentralitySelector.h:56
 AliAnalysisCentralitySelector.h:57
 AliAnalysisCentralitySelector.h:58
 AliAnalysisCentralitySelector.h:59
 AliAnalysisCentralitySelector.h:60
 AliAnalysisCentralitySelector.h:61
 AliAnalysisCentralitySelector.h:62
 AliAnalysisCentralitySelector.h:63
 AliAnalysisCentralitySelector.h:64
 AliAnalysisCentralitySelector.h:65
 AliAnalysisCentralitySelector.h:66
 AliAnalysisCentralitySelector.h:67
 AliAnalysisCentralitySelector.h:68
 AliAnalysisCentralitySelector.h:69
 AliAnalysisCentralitySelector.h:70
 AliAnalysisCentralitySelector.h:71
 AliAnalysisCentralitySelector.h:72
 AliAnalysisCentralitySelector.h:73