]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/multPbPb/AliAnalysisMultPbCentralitySelector.cxx
AliAnalysisMultPbCentralitySelector
[u/mrichter/AliRoot.git] / PWG0 / multPbPb / AliAnalysisMultPbCentralitySelector.cxx
CommitLineData
52d405b5 1// AliAnalysisMultPbCentralitySelector
2// Interface class to centrality estimators for the PbPb
3// track-multiplicity analysis
4// Michele Floris, CERN
5
a23f7c97 6#include "AliAnalysisMultPbCentralitySelector.h"
e0376287 7#include "AliESDtrackCuts.h"
8#include "AliESDCentrality.h"
9#include "AliESDEvent.h"
10#include "AliLog.h"
3b8cbf2d 11#include "AliESDVZERO.h"
2bbfd8c6 12#include <iostream>
a23f7c97 13
2bbfd8c6 14using namespace std;
52d405b5 15
16
52d405b5 17
a23f7c97 18ClassImp(AliAnalysisMultPbCentralitySelector)
19
e0376287 20Bool_t AliAnalysisMultPbCentralitySelector::IsCentralityBinSelected(AliESDEvent* aEsd, AliESDtrackCuts * trackCuts) {
21
22 // Centrality selection
23 // On MC cuts on the number of good tracks,
24 // On data cuts using AliESDCentrality and the cut requested in ntracks
2bbfd8c6 25
26 // cout << "Tracks " << trackCuts->CountAcceptedTracks(aEsd) << endl;
3b8cbf2d 27 /// cout << "CENTRALITY " << fUseV0CutRange << " " << fUseMultRange << " " << fMultMin << " " << fMultMax << endl;
2bbfd8c6 28
29
3b8cbf2d 30 if (fUseV0CutRange) {
31
32 AliESDVZERO* esdV0 = aEsd->GetVZEROData();
33 Float_t multV0A=esdV0->GetMTotV0A();
34 Float_t multV0C=esdV0->GetMTotV0C();
35 Float_t multV0 = multV0A+multV0C;
36 // cout << "V0 Mult: " << multV0 << " " << fMultMin << " " << fMultMax << endl;
37
38 if (multV0 < fMultMin) return kFALSE;
39 if (multV0 > fMultMax) return kFALSE;
40 // cout << "ok" << endl;
41
42 }
43 else if(fIsMC || fUseMultRange) {
e0376287 44 if(!trackCuts){
45 AliFatal("Track cuts object is invalid");
46 }
eef42d18 47 // cout << "Hey! " << fCentrBin << " " << fMultMin <<" - " << fMultMax << endl;
2bbfd8c6 48
49 if (fCentrBin == -1) return kTRUE;
e0376287 50 if (trackCuts->CountAcceptedTracks(aEsd) < fMultMin) return kFALSE;
51 if (trackCuts->CountAcceptedTracks(aEsd) > fMultMax) return kFALSE;
eef42d18 52 } else {
e0376287 53
eef42d18 54 AliESDCentrality *centrality = aEsd->GetCentrality();
55 if(!centrality && !fUseMultRange) {
56 AliFatal("Centrality object not available");
57 }
58 else {
59 Int_t centrBin = centrality->GetCentralityClass5(fCentrEstimator.Data()) ;
60 if (centrBin != fCentrBin && fCentrBin != -1 && !fUseMultRange) return kFALSE;
61 }
e0376287 62 }
63
2bbfd8c6 64 // cout << "Selected" << endl;
65
66
e0376287 67 return kTRUE;
68
69}
70
71void AliAnalysisMultPbCentralitySelector::Print(Option_t* option ) const {
72 // Print some information
73
2bbfd8c6 74 Printf("AliAnalysisMultPbCentralitySelector [%s]", option);
e0376287 75 Printf(" - Centrality estimator [%s]",fCentrEstimator.Data());
2bbfd8c6 76 Printf(" - Centrality bin [%d]",fCentrBin);
77 Printf(" - File1 used for centrality estimate: [%s]", fFile1.Data());
78 Printf(" - File2 used for centrality estimate: [%s]", fFile2.Data());
79 if ( fUseMultRange ) {
3b8cbf2d 80 Printf ("Using multiplicity range [%1.1f - %1.1f]",fMultMin,fMultMax);
81 }
82 if ( fUseV0CutRange ) {
83 Printf ("Using V0 range [%1.1f - %1.1f]",fMultMin,fMultMax);
2bbfd8c6 84 }
e0376287 85 if ( fIsMC ) {
3b8cbf2d 86 Printf("Running on Monte Carlo, actual cut was on tracks multiplicity [%1.1f - %1.1f]",fMultMin,fMultMax);
e0376287 87 }
88
89}