#include "AliAnalysisDataContainer.h"
#include "AliSpectraBothEventCuts.h"
#include "AliSpectraBothTrackCuts.h"
-#include "AliAnalysisUtils.h"
+#include "AliAnalysisUtils.h"
+#include "AliPPVsMultUtils.h"
//#include "AliSpectraBothHistoManager.h"
#include <iostream>
AliSpectraBothEventCuts::AliSpectraBothEventCuts(const char *name) : TNamed(name, "AOD Event Cuts"), fAOD(0),fAODEvent(AliSpectraBothTrackCuts::kAODobject), fTrackBits(0),fIsMC(0),fCentEstimator(""), fUseCentPatchAOD049(0), fUseSDDPatchforLHC11a(kDoNotCheckforSDD),fTriggerSettings(AliVEvent::kMB),fTrackCuts(0),
fIsSelected(0), fCentralityCutMin(0), fCentralityCutMax(0), fQVectorCutMin(0), fQVectorCutMax(0), fVertexCutMin(0), fVertexCutMax(0), fMultiplicityCutMin(0), fMultiplicityCutMax(0),fMaxChi2perNDFforVertex(0),
-fMinRun(0),fMaxRun(0),fetarangeofmultiplicitycut(0.0),
+fMinRun(0),fMaxRun(0),fetarangeofmultiplicitycut(0.0),fUseAliPPVsMultUtils(false),
fHistoCuts(0),fHistoVtxBefSel(0),fHistoVtxAftSel(0),fHistoEtaBefSel(0),fHistoEtaAftSel(0),fHistoNChAftSel(0),fHistoQVector(0)
,fHistoEP(0),fHistoVtxAftSelwithoutZvertexCut(0),fHistoVtxalltriggerEventswithMCz(0),fHistoVtxAftSelwithoutZvertexCutusingMCz(0),fHistoRunNumbers(0),
-fHistoCentrality(0),fHistoMultiplicty(0),fAnalysisUtils(0)
+fHistoCentrality(0),fHistoMultiplicty(0),fAnalysisUtils(0),fAliPPVsMultUtils(0)
{
// Constructori
delete fHistoMultiplicty;
if(fAnalysisUtils)
delete fAnalysisUtils;
+ if(fAliPPVsMultUtils)
+ delete fAliPPVsMultUtils;
}
//______________________________________________________
fHistoCentrality = new TH2F("fHistoCentrality", "centrality",2,0,2,100,0.0,100);
if(!fHistoMultiplicty)
- fHistoMultiplicty= new TH2F("fHistoMultiplicty", "multiplicty estimator",2,0,2,100,0.0,100);
+ fHistoMultiplicty= new TH2F("fHistoMultiplicty", "multiplicty estimator",2,0,2,155,-4.5,150.5);
TH1::AddDirectory(oldStatus);
}
if(vertex)
fHistoVtxBefSel->Fill(vertex->GetZ());
fIsSelected =kFALSE;
- if(CheckVtx() && CheckCentralityCut() && CheckMultiplicityCut())
- { //selection on vertex and Centrality
+ if(CheckVtx())
+ { //selection on vertex
fIsSelected=kTRUE;
}
if(fIsSelected&&vertex)
- {
- fHistoVtxAftSelwithoutZvertexCut->Fill(vertex->GetZ());
- if(isMC)
- fHistoVtxAftSelwithoutZvertexCutusingMCz->Fill(mcZ);
- if (vertex->GetZ() > fVertexCutMin && vertex->GetZ() < fVertexCutMax)
- {
+ {
+ fHistoVtxAftSelwithoutZvertexCut->Fill(vertex->GetZ());
+ if(isMC)
+ fHistoVtxAftSelwithoutZvertexCutusingMCz->Fill(mcZ);
+ if (vertex->GetZ() > fVertexCutMin && vertex->GetZ() < fVertexCutMax)
+ {
fHistoCuts->Fill(kAcceptedEvents);
fIsSelected=kTRUE;
fHistoVtxAftSel->Fill(vertex->GetZ());
- }
- else
- {
+ }
+ else
+ {
fIsSelected=kFALSE;
- }
+ }
}
-
if(fIsSelected)
- fIsSelected=CheckQVectorCut();
+ {
+ if( CheckCentralityCut() && CheckMultiplicityCut() && CheckQVectorCut())
+ fIsSelected=kTRUE;
+ }
Int_t Nch=0;
- for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) {
- AliVTrack* track =dynamic_cast<AliVTrack*>(fAOD->GetTrack(iTracks));
+ for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++)
+ {
+ AliVTrack* track =dynamic_cast<AliVTrack*>(fAOD->GetTrack(iTracks));
/* if(fAODEvent==AliSpectraBothTrackCuts::kESDobject)
track=dynamic_cast<AliVTrack*>(esdevent->GetTrack(iTracks));
else if (fAODEvent==AliSpectraBothTrackCuts::kAODobject)
track=dynamic_cast<AliVTrack*>(aodevent->GetTrack(iTracks));
else return false;*/
- if (!fTrackCuts->IsSelected(track,kFALSE)) continue;
- fHistoEtaBefSel->Fill(track->Eta());
- if(fIsSelected){
- fHistoEtaAftSel->Fill(track->Eta());
- Nch++;
- }
+ if (!fTrackCuts->IsSelected(track,kFALSE))
+ continue;
+ fHistoEtaBefSel->Fill(track->Eta());
+ if(fIsSelected)
+ {
+ fHistoEtaAftSel->Fill(track->Eta());
+ Nch++;
+ }
}
if(fIsSelected)
fHistoNChAftSel->Fill(Nch);
Bool_t AliSpectraBothEventCuts::CheckCentralityCut()
{
// Check centrality cut
- if ( fCentralityCutMax<0.0 && fCentralityCutMin<0.0 ) return kTRUE;
- Double_t cent=0;
- if(!fUseCentPatchAOD049)cent=fAOD->GetCentrality()->GetCentralityPercentile(fCentEstimator.Data());
- else cent=ApplyCentralityPatchAOD049();
+ if ( fCentralityCutMax<0.0 && fCentralityCutMin<0.0 )
+ return kTRUE;
+ Double_t cent=0;
+ if(fUseAliPPVsMultUtils)
+ {
+ if(!fAliPPVsMultUtils)
+ fAliPPVsMultUtils=new AliPPVsMultUtils();
+ cent=fAliPPVsMultUtils->GetMultiplicityPercentile(fAOD,fCentEstimator.Data());
+ }
+ else
+ {
+ if(!fUseCentPatchAOD049)
+ cent=fAOD->GetCentrality()->GetCentralityPercentile(fCentEstimator.Data());
+ else
+ cent=ApplyCentralityPatchAOD049();
+ }
fHistoCentrality->Fill(0.5,cent);
if ( (cent <= fCentralityCutMax) && (cent >= fCentralityCutMin) )
{
#include "TNamed.h"
#include "AliSpectraBothTrackCuts.h"
#include "AliAnalysisUtils.h"
+#include "AliPPVsMultUtils.h"
class AliSpectraBothEventCuts : public TNamed
{
// Constructors
AliSpectraBothEventCuts() : TNamed(), fAOD(0),fAODEvent(AliSpectraBothTrackCuts::kAODobject),fTrackBits(0), fIsMC(0), fCentEstimator(""), fUseCentPatchAOD049(0),fUseSDDPatchforLHC11a(kDoNotCheckforSDD),fTriggerSettings(AliVEvent::kMB),fTrackCuts(0),
fIsSelected(0), fCentralityCutMin(0), fCentralityCutMax(0), fQVectorCutMin(0), fQVectorCutMax(0), fVertexCutMin(0),
-fVertexCutMax(0), fMultiplicityCutMin(0), fMultiplicityCutMax(0), fMaxChi2perNDFforVertex(0),fMinRun(0),fMaxRun(0),fetarangeofmultiplicitycut(0.0),
+fVertexCutMax(0), fMultiplicityCutMin(0), fMultiplicityCutMax(0), fMaxChi2perNDFforVertex(0),fMinRun(0),fMaxRun(0),fetarangeofmultiplicitycut(0.0),fUseAliPPVsMultUtils(false),
fHistoCuts(0),fHistoVtxBefSel(0),fHistoVtxAftSel(0),fHistoEtaBefSel(0),fHistoEtaAftSel(0),
-fHistoNChAftSel(0),fHistoQVector(0),fHistoEP(0), fHistoVtxAftSelwithoutZvertexCut(0),fHistoVtxalltriggerEventswithMCz(0),fHistoVtxAftSelwithoutZvertexCutusingMCz(0),fHistoRunNumbers(0),fHistoCentrality(0),fHistoMultiplicty(0),fAnalysisUtils(0)
+fHistoNChAftSel(0),fHistoQVector(0),fHistoEP(0), fHistoVtxAftSelwithoutZvertexCut(0),fHistoVtxalltriggerEventswithMCz(0),fHistoVtxAftSelwithoutZvertexCutusingMCz(0),fHistoRunNumbers(0),fHistoCentrality(0),fHistoMultiplicty(0),fAnalysisUtils(0),fAliPPVsMultUtils(0)
{}
AliSpectraBothEventCuts(const char *name);
void SetRunNumberRange(Int_t min,Int_t max);
void SetEtaRangeforMultiplictyCut(Float_t eta) {fetarangeofmultiplicitycut=eta;}
void SetAnalysisUtils(AliAnalysisUtils* inAnalysisUtils){fAnalysisUtils=inAnalysisUtils;}
-
+ void SetUseAliPPVsMultUtils(Bool_t flag){fUseAliPPVsMultUtils=flag;}
+
UInt_t GetTrackType() const { return fTrackBits;}
TH1I * GetHistoCuts() { return fHistoCuts; }
TH1F * GetHistoVtxBefSel() { return fHistoVtxBefSel; }
Float_t GetMultiplicityCutMax() const { return fMultiplicityCutMax; }
Float_t GetMaxChi2perNDFforVertex() const {return fMaxChi2perNDFforVertex;}
AliAnalysisUtils* GetAnalysisUtils() const {return fAnalysisUtils; }
-
+Bool_t GetUseAliPPVsMultUtils() const {return fUseAliPPVsMultUtils;}
void InitHisto();
void PrintCuts();
Float_t fMaxChi2perNDFforVertex; // maximum value of Chi2perNDF of vertex
Int_t fMinRun; //minmum run number
Int_t fMaxRun; //maximum run number
- Float_t fetarangeofmultiplicitycut; // eta range fot multipilicty cut
+ Float_t fetarangeofmultiplicitycut; // eta range fot multipilicty cut
+ Bool_t fUseAliPPVsMultUtils; // use AliPPVsMultUtils for centrailty
TH1I *fHistoCuts; // Cuts statistics
TH1F *fHistoVtxBefSel; // Vtx distr before event selection
TH1F *fHistoVtxAftSel; // Vtx distr after event selection
TH2F *fHistoCentrality; // centrality histogram
TH2F *fHistoMultiplicty; // multiplicty histogram
AliAnalysisUtils *fAnalysisUtils;// Analysis Utils which have pile-up cut
-
+ AliPPVsMultUtils *fAliPPVsMultUtils; //AliPPVsMultUtils class for centrailty
AliSpectraBothEventCuts(const AliSpectraBothEventCuts&);
AliSpectraBothEventCuts& operator=(const AliSpectraBothEventCuts&);
- ClassDef(AliSpectraBothEventCuts, 10);
+ ClassDef(AliSpectraBothEventCuts, 11);
};
#endif