// cout << "ok" << endl;
}
- else if(fUseMultRange) {
+ else if(fUseMultRange) {
if(!trackCuts){
AliFatal("Track cuts object is invalid");
}
if (fCentrBin == -1 && !fUseMultRange) return kTRUE;
if (ntracks < fMultMin) return kFALSE;
if (ntracks > fMultMax) return kFALSE;
- } else {
+ }
+ else if(fUsePercentile) {
+ AliCentrality *centrality = (AliCentrality*) aEsd->GetCentrality();
+ return centrality->IsEventInCentralityClass(fMultMin, fMultMax, fCentrEstimator.Data()) ;
+
+ }
+
+ else {
- AliCentrality *centrality = (AliCentrality*) aEsd->GetCentrality(); // FIXME: change to alicentrality?
+ AliCentrality *centrality = (AliCentrality*) aEsd->GetCentrality();
if(!centrality && !fUseMultRange) {
AliFatal("Centrality object not available");
}
{
public:
- AliAnalysisCentralitySelector() : fIsMC (0), fCentrEstimator(""), fCentrBin(-1), fMultMin(0), fMultMax(1000000), fUseMultRange(kFALSE), fUseV0CutRange(kFALSE), fUseSPDOuterRange(kFALSE) {;}
+ 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
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; }
+ void SetCentralityBin(Int_t bin) { fCentrBin = bin; } // uses 10% percentiles
+ void SetCentralityBin(Float_t min, Float_t max) { fMultMin = min; fMultMax = max; fUsePercentile=kTRUE;}
virtual void Print(Option_t* option = "") const ;
virtual Long64_t Merge(TCollection* list){list->GetEntries();return 0;}
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)