#include "TArrayF.h"
#include "TF1.h"
#include "TRandom.h"
+#include "TROOT.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
fPtMin(0.3),
fPtMax(1.5),
fEtaMin(-0.8),
- fEtaMax(-0.8),
+ fEtaMax(0.8),
fPhiMin(0.),
fPhiMax(360.),
fDCAxyCut(-1),
if(centbins) delete [] centbins;
if(multbins) delete [] multbins;
if(vtxbins) delete [] vtxbins;
+ if(psibins) delete [] psibins;
// check pool manager
if(!fPoolMgr){
return;
}
// get the reaction plane
- if(fEventClass != "Multiplicity") {
+ if(fEventClass != "Multiplicity" && gAnalysisLevel!="AODnano") {
gReactionPlane = GetEventPlane(eventMain);
fHistEventPlane->Fill(gReactionPlane,lMultiplicityVar);
if(gReactionPlane < 0){
Double_t AliAnalysisTaskBFPsi::GetRefMultiOrCentrality(AliVEvent *event){
// Checks the Event cuts
// Fills Event statistics histograms
-
+
Float_t gCentrality = -1.;
Double_t gMultiplicity = -1.;
TString gAnalysisLevel = fBalance->GetAnalysisLevel();
}//AOD header
}//AOD
+
+ // calculate centrality always (not only in centrality mode)
+ else if(gAnalysisLevel == "AODnano" ) { //centrality via JF workaround
+
+ AliAODHeader *header = (AliAODHeader*) event->GetHeader();
+ if(header){
+ gCentrality = (Float_t) gROOT->ProcessLine(Form("100.0 + 100.0 * ((AliNanoAODHeader*) %p)->GetCentrality(\"%s\")", header,fCentralityEstimator.Data())) / 100 - 1.0;
+
+ // QA histogram
+ fHistCentStatsUsed->Fill(0.,gCentrality);
+
+ }//AOD header
+ }//AODnano
else if(gAnalysisLevel == "ESD" || gAnalysisLevel == "MCESD"){ // centrality class for ESDs or MC-ESDs
AliCentrality *centrality = event->GetCentrality();
}//track loop
}// AOD analysis
+
+ // nano AODs
+ else if(gAnalysisLevel == "AODnano") { // not fully supported yet (PID missing)
+ // Loop over tracks in event
+
+ for (Int_t iTracks = 0; iTracks < event->GetNumberOfTracks(); iTracks++) {
+ AliVTrack* aodTrack = dynamic_cast<AliVTrack *>(event->GetTrack(iTracks));
+ if (!aodTrack) {
+ AliError(Form("Could not receive track %d", iTracks));
+ continue;
+ }
+
+ // AOD track cuts (not needed)
+ //if(!aodTrack->TestFilterBit(fnAODtrackCutBit)) continue;
+
+ vCharge = aodTrack->Charge();
+ vEta = aodTrack->Eta();
+ vY = -999.;
+ vPhi = aodTrack->Phi();// * TMath::RadToDeg();
+ vPt = aodTrack->Pt();
+
+
+ // Kinematics cuts from ESD track cuts
+ if( vPt < fPtMin || vPt > fPtMax) continue;
+ if( vEta < fEtaMin || vEta > fEtaMax) continue;
+
+
+ // fill QA histograms
+ fHistPt->Fill(vPt,gCentrality);
+ fHistEta->Fill(vEta,gCentrality);
+ fHistRapidity->Fill(vY,gCentrality);
+ if(vCharge > 0) fHistPhiPos->Fill(vPhi,gCentrality);
+ else if(vCharge < 0) fHistPhiNeg->Fill(vPhi,gCentrality);
+ fHistPhi->Fill(vPhi,gCentrality);
+ if(vCharge > 0) fHistEtaPhiPos->Fill(vEta,vPhi,gCentrality);
+ else if(vCharge < 0) fHistEtaPhiNeg->Fill(vEta,vPhi,gCentrality);
+
+ //=======================================correction
+ Double_t correction = GetTrackbyTrackCorrectionMatrix(vEta, vPhi, vPt, vCharge, gCentrality);
+ //Printf("CORRECTIONminus: %.2f | Centrality %lf",correction,gCentrality);
+
+ // add the track to the TObjArray
+ tracksAccepted->Add(new AliBFBasicParticle(vEta, vPhi, vPt, vCharge, correction));
+ }//track loop
+ }// AOD nano analysis
+
+
//==============================================================================================================
else if(gAnalysisLevel == "MCAOD") {