#include "AliMCEventHandler.h"
#include "AliVParticle.h"
#include "AliCFContainer.h"
+#include "AliEventplane.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
// track cuts
fTrackEtaCut(0.8),
fTrackEtaCutMin(-1.),
+fTrackPhiCutEvPlMin(0.),
+fTrackPhiCutEvPlMax(0.),
fOnlyOneEtaSide(0),
fPtMin(0.5),
fDCAXYCut(0),
fAnalyseUE->DefineESDCuts(fFilterBit);
fAnalyseUE->SetEventSelection(fSelectBit);
fAnalyseUE->SetHelperPID(fHelperPID);
+ if(fTrackPhiCutEvPlMax > 0.0001)
+ fAnalyseUE->SetParticlePhiCutEventPlane(fTrackPhiCutEvPlMin,fTrackPhiCutEvPlMax);
if ((fParticleSpeciesTrigger != -1 || fParticleSpeciesAssociated != -1) && !fHelperPID)
AliFatal("HelperPID object should be set in the steering macro");
//settingsTree->Branch("fCentralityMethod", fCentralityMethod.Data(),"CentralityMethod/C");
settingsTree->Branch("fTrackEtaCut", &fTrackEtaCut, "TrackEtaCut/D");
settingsTree->Branch("fTrackEtaCutMin", &fTrackEtaCutMin, "TrackEtaCutMin/D");
+ settingsTree->Branch("fTrackPhiCutEvPlMin", &fTrackPhiCutEvPlMin, "TrackPhiCutEvPlMin/D");
+ settingsTree->Branch("fTrackPhiCutEvPlMax", &fTrackPhiCutEvPlMax, "TrackPhiCutEvPlMax/D");
settingsTree->Branch("fOnlyOneEtaSide", &fOnlyOneEtaSide,"OnlyOneEtaSide/I");
settingsTree->Branch("fPtMin", &fPtMin, "PtMin/D");
settingsTree->Branch("fFilterBit", &fFilterBit,"FilterBit/I");
{
centrality = (Float_t) gROOT->ProcessLine(Form("100.0 + 100.0 * ((AliNanoAODHeader*) %p)->GetCentrality(\"%s\")", fAOD->GetHeader(), fCentralityMethod.Data())) / 100 - 1.0;
}
+ else if (fCentralityMethod == "PPVsMultUtils")
+ {
+ if(fAnalysisUtils)centrality=fAnalysisUtils->GetMultiplicityPercentile((fAOD)?(AliVEvent*)fAOD:(AliVEvent*)fESD);
+ else centrality = -1;
+ }
else
{
AliCentrality *centralityObj = 0;
if (fAOD)
- centralityObj = fAOD->GetHeader()->GetCentralityP();
+ centralityObj = ((AliVAODHeader*)fAOD->GetHeader())->GetCentralityP();
else if (fESD)
centralityObj = fESD->GetCentrality();
if (error != TInterpreter::kNoError)
centrality = -1;
}
- else
+ else if (fCentralityMethod == "PPVsMultUtils")
+ {
+ if(fAnalysisUtils)centrality=fAnalysisUtils->GetMultiplicityPercentile((fAOD)?(AliVEvent*)fAOD:(AliVEvent*)fESD);
+ else centrality = -1;
+ }
+ else
{
if (fAOD)
- centralityObj = fAOD->GetHeader()->GetCentralityP();
+ centralityObj = ((AliVAODHeader*)fAOD->GetHeader())->GetCentralityP();
else if (fESD)
centralityObj = fESD->GetCentrality();
return;
TObjArray* tracks = 0;
-
+
+ Double_t evtPlanePhi = -999.; //A value outside [-pi/2,pi/2] will be ignored
+ if(fTrackPhiCutEvPlMax > 0.0001) {
+ AliEventplane* evtPlane = inputEvent->GetEventplane();
+ Double_t qx = 0; Double_t qy = 0;
+ if(evtPlane) evtPlanePhi = evtPlane->CalculateVZEROEventPlane(inputEvent, 10, 2, qx, qy);
+ //Reject event if the plane is not available
+ else return;
+ }
+
if (fTriggersFromDetector == 0)
- tracks = fAnalyseUE->GetAcceptedParticles(inputEvent, 0, kTRUE, fParticleSpeciesTrigger, kTRUE);
+ tracks = fAnalyseUE->GetAcceptedParticles(inputEvent, 0, kTRUE, fParticleSpeciesTrigger, kTRUE, kTRUE, evtPlanePhi);
else if (fTriggersFromDetector <= 4)
tracks=GetParticlesFromDetector(inputEvent,fTriggersFromDetector);
else
// correlate particles with...
TObjArray* tracksCorrelate = 0;
if(fAssociatedFromDetector==0){
- if (fParticleSpeciesAssociated != fParticleSpeciesTrigger || fTriggersFromDetector > 0 )
+ if (fParticleSpeciesAssociated != fParticleSpeciesTrigger || fTriggersFromDetector > 0 || fTrackPhiCutEvPlMax > 0.0001)
tracksCorrelate = fAnalyseUE->GetAcceptedParticles(inputEvent, 0, kTRUE, fParticleSpeciesAssociated, kTRUE);
}
else if (fAssociatedFromDetector <= 4){
referenceMultiplicity = AliESDtrackCuts::GetReferenceMultiplicity(fESD);
else if (fAOD)
referenceMultiplicity = tracks->GetEntriesFast(); // TODO to be replaced by the estimator once available in the AOD
-// referenceMultiplicity = fAOD->GetHeader()->GetRefMultiplicityComb05();
+// referenceMultiplicity = ((AliVAODHeader*)fAOD->GetHeader())->GetRefMultiplicityComb05();
((TH2F*) fListOfHistos->FindObject("referenceMultiplicity"))->Fill(centrality, referenceMultiplicity);
{
if(!fAOD)
AliFatal("Muon selection only implemented on AOD");//FIXME to be implemented also for ESDs as in AliAnalyseLeadingTrackUE::GetAcceptedPArticles
- for (Int_t iTrack = 0; iTrack < fAOD->GetNTracks(); iTrack++) {
- AliAODTrack* track = fAOD->GetTrack(iTrack);
+ for (Int_t iTrack = 0; iTrack < fAOD->GetNumberOfTracks(); iTrack++) {
+ AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTrack));
+ if(!track) AliFatal("Not a standard AOD");
if (!track->IsMuonTrack()) continue;
//Float_t dca = track->DCA();
//Float_t chi2 = track->Chi2perNDF();
if(!fAOD)
AliFatal("Muon selection only implemented on AOD");//FIXME to be implemented also for ESDs as in AliAnalyseLeadingTrackUE::GetAcceptedPArticles
- for (Int_t iTrack = 0; iTrack < fAOD->GetNTracks(); iTrack++) {
- AliAODTrack* track = fAOD->GetTrack(iTrack);
+ for (Int_t iTrack = 0; iTrack < fAOD->GetNumberOfTracks(); iTrack++) {
+ AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTrack));
+ if(!track) AliFatal("Not a standard AOD");
if (!track->IsMuonTrack()) continue;
//Float_t dca = track->DCA();
//Float_t chi2 = track->Chi2perNDF();