]>
Commit | Line | Data |
---|---|---|
e886738f | 1 | // AliAnalysisMultPbCentralitySelector |
2 | // Interface class to centrality estimators for the PbPb | |
3 | // track-multiplicity analysis | |
4 | // Michele Floris, CERN | |
5 | ||
6 | #include "AliAnalysisCentralitySelector.h" | |
7 | #include "AliESDtrackCuts.h" | |
8 | #include "AliCentrality.h" | |
9 | #include "AliESDEvent.h" | |
10 | #include "AliLog.h" | |
11 | #include "AliESDVZERO.h" | |
12 | #include <iostream> | |
13 | #include "AliMultiplicity.h" | |
14 | ||
15 | using namespace std; | |
16 | ||
17 | ||
18 | ||
19 | ClassImp(AliAnalysisCentralitySelector) | |
20 | ||
21 | Bool_t AliAnalysisCentralitySelector::IsCentralityBinSelected(AliESDEvent* aEsd, AliESDtrackCuts * trackCuts) { | |
22 | ||
23 | // Centrality selection | |
24 | // On MC cuts on the number of good tracks, | |
25 | // On data cuts using AliESDCentrality and the cut requested in ntracks | |
26 | ||
27 | // cout << "Tracks " << trackCuts->CountAcceptedTracks(aEsd) << endl; | |
28 | /// cout << "CENTRALITY " << fUseV0CutRange << " " << fUseMultRange << " " << fMultMin << " " << fMultMax << endl; | |
29 | ||
30 | if (fUseMultRange && fUseV0CutRange && fUseSPDOuterRange) { | |
31 | AliFatal(Form("Cannot use multiple estimators at once: fUseMultRange [%d], fUseV0CutRange[%d], fUseSPDOuterRange[%d]!!", | |
32 | fUseMultRange , fUseV0CutRange , fUseSPDOuterRange)); | |
33 | } | |
34 | ||
35 | if (fUseV0CutRange) { | |
36 | ||
37 | Float_t multV0=0; | |
8797f8b6 | 38 | AliESDVZERO* esdV0 = aEsd->GetVZEROData(); |
e886738f | 39 | Float_t multV0A=esdV0->GetMTotV0A(); |
40 | Float_t multV0C=esdV0->GetMTotV0C(); | |
41 | multV0 = multV0A+multV0C; | |
42 | ||
e886738f | 43 | if (multV0 < fMultMin) return kFALSE; |
44 | if (multV0 > fMultMax) return kFALSE; | |
45 | // cout << "ok" << endl; | |
46 | ||
47 | } | |
48 | else if (fUseSPDOuterRange) { | |
49 | ||
50 | const AliMultiplicity * mult = aEsd->GetMultiplicity(); | |
51 | Float_t outerLayerSPD = mult->GetNumberOfITSClusters(1); | |
52 | ||
53 | if (outerLayerSPD < fMultMin) return kFALSE; | |
54 | if (outerLayerSPD > fMultMax) return kFALSE; | |
55 | // cout << "ok" << endl; | |
56 | ||
57 | } | |
5c808fa6 | 58 | else if(fUseMultRange) { |
e886738f | 59 | if(!trackCuts){ |
60 | AliFatal("Track cuts object is invalid"); | |
61 | } | |
62 | Float_t ntracks = trackCuts->CountAcceptedTracks(aEsd); | |
63 | // cout << "Hey! " << fCentrBin << " " << ntracks << " " << fMultMin <<" - " << fMultMax << endl; | |
64 | ||
65 | if (fCentrBin == -1 && !fUseMultRange) return kTRUE; | |
66 | if (ntracks < fMultMin) return kFALSE; | |
67 | if (ntracks > fMultMax) return kFALSE; | |
5c808fa6 | 68 | } |
69 | else if(fUsePercentile) { | |
70 | AliCentrality *centrality = (AliCentrality*) aEsd->GetCentrality(); | |
8797f8b6 | 71 | return centrality->IsEventInCentralityClass(fMultMin, fMultMax, fCentrEstimator.Data()) ; |
5c808fa6 | 72 | } |
73 | ||
74 | else { | |
e886738f | 75 | |
5c808fa6 | 76 | AliCentrality *centrality = (AliCentrality*) aEsd->GetCentrality(); |
e886738f | 77 | if(!centrality && !fUseMultRange) { |
78 | AliFatal("Centrality object not available"); | |
79 | } | |
80 | else { | |
81 | Int_t centrBin = centrality->GetCentralityClass5(fCentrEstimator.Data()) ; | |
82 | if (centrBin != fCentrBin && fCentrBin != -1 && !fUseMultRange) return kFALSE; | |
83 | } | |
84 | } | |
85 | ||
86 | // cout << "Selected" << endl; | |
87 | ||
88 | ||
89 | return kTRUE; | |
90 | ||
91 | } | |
92 | ||
93 | void AliAnalysisCentralitySelector::Print(Option_t* option ) const { | |
94 | // Print some information | |
95 | ||
96 | Printf("AliAnalysisCentralitySelector [%s]", option); | |
97 | Printf(" - Centrality estimator [%s]",fCentrEstimator.Data()); | |
98 | Printf(" - Centrality bin [%d]",fCentrBin); | |
99 | if ( fUseMultRange ) { | |
100 | Printf ("Using multiplicity range [%1.1f - %1.1f]",fMultMin,fMultMax); | |
101 | } | |
102 | if ( fUseV0CutRange ) { | |
103 | Printf ("Using V0 range [%1.1f - %1.1f]",fMultMin,fMultMax); | |
104 | } | |
105 | if ( fIsMC ) { | |
106 | Printf("Running on Monte Carlo, actual cut was on tracks multiplicity [%1.1f - %1.1f]",fMultMin,fMultMax); | |
107 | } | |
108 | ||
109 | } |