fHistProbTPCTOFvsPtafterPID(NULL),\r
fHistNSigmaTPCvsPtafterPID(NULL), \r
fHistNSigmaTOFvsPtafterPID(NULL), \r
+ fCentralityArrayBinsForCorrections(kCENTRALITY),\r
fPIDResponse(0x0),\r
fPIDCombined(0x0),\r
fParticleOfInterest(kPion),\r
for (Int_t i=0; i<kCENTRALITY; i++){\r
fHistCorrectionPlus[i] = NULL; \r
fHistCorrectionMinus[i] = NULL; \r
+ fCentralityArrayForCorrections[i] = -1.;\r
}\r
//=====================================================correction\r
\r
}\r
\r
//TString listEffName = "";\r
- for (Int_t iCent = 0; iCent < kCENTRALITY; iCent++) {\r
+ for (Int_t iCent = 0; iCent < fCentralityArrayBinsForCorrections-1; iCent++) {\r
\r
//Printf("iCent %d:",iCent);\r
\r
TString histoName = "fHistCorrectionPlus";\r
- histoName += centralityArrayForPbPb_string[iCent];\r
+ histoName += Form("%d-%d",(Int_t)(fCentralityArrayForCorrections[iCent]),(Int_t)(fCentralityArrayForCorrections[iCent+1]));\r
fHistCorrectionPlus[iCent]= dynamic_cast<TH3D *>(f->Get(histoName.Data()));\r
if(!fHistCorrectionPlus[iCent]) {\r
Printf("fHist not found!!!");\r
}\r
\r
histoName = "fHistCorrectionMinus";\r
- histoName += centralityArrayForPbPb_string[iCent];\r
- //histoName += (TString)((Int_t)(centralityArrayForPbPb[iCent])); //histoName += "-";\r
- //histoName += (TString)((Int_t)(centralityArrayForPbPb[iCent+1]));\r
+ histoName += Form("%d-%d",(Int_t)(fCentralityArrayForCorrections[iCent]),(Int_t)(fCentralityArrayForCorrections[iCent+1]));\r
fHistCorrectionMinus[iCent] = dynamic_cast<TH3D *>(f->Get(histoName.Data())); \r
if(!fHistCorrectionMinus[iCent]) {\r
Printf("fHist not found!!!");\r
}\r
\r
Int_t gCentralityInt = 1;\r
- for (Int_t i=0; i<kCENTRALITY; i++){\r
- if((centralityArrayForPbPb[i] <= gCentrality)&&(gCentrality <= centralityArrayForPbPb[i+1])){\r
+ for (Int_t i=0; i<fCentralityArrayBinsForCorrections-1; i++){\r
+ if((fCentralityArrayForCorrections[i] <= gCentrality)&&(gCentrality <= fCentralityArrayForCorrections[i+1])){\r
gCentralityInt = i;\r
break;\r
}\r
#include "AliPIDCombined.h"\r
\r
//================================correction\r
-#define kCENTRALITY 9 \r
-const Double_t centralityArrayForPbPb[kCENTRALITY+1] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.};\r
-const TString centralityArrayForPbPb_string[kCENTRALITY] = {"0-5","5-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80"};\r
+#define kCENTRALITY 101 \r
+//const Double_t centralityArrayForPbPb[kCENTRALITY+1] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.};\r
+//const TString centralityArrayForPbPb_string[kCENTRALITY] = {"0-5","5-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80"};\r
//================================correction\r
\r
class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {\r
virtual void Terminate(Option_t *);\r
\r
//========================correction\r
- virtual void SetInputCorrection(TString filename, TString gCollSystem);//{\r
+ virtual void SetInputCorrection(TString filename, TString gCollSystem);\r
+ virtual void SetCentralityArrayForCorrections(Int_t nCentralityBins, Double_t *centralityArrayForCorrections) {\r
+ fCentralityArrayBinsForCorrections = nCentralityBins;\r
+ for (Int_t i=0; i<nCentralityBins; i++){\r
+ fCentralityArrayForCorrections[i] = centralityArrayForCorrections[i];}\r
+ }\r
//========================correction\r
\r
void SetAnalysisObject(AliBalancePsi *const analysis) {\r
Double_t GetRefMultiOrCentrality(AliVEvent* event);\r
Double_t GetEventPlane(AliVEvent* event);\r
//===============================correction\r
- Double_t GetTrackbyTrackCorrectionMatrix(Double_t vEta, Double_t vPhi, Double_t vPt, Short_t vCharge, Double_t gCentrality);\r
+ Double_t GetTrackbyTrackCorrectionMatrix(Double_t vEta, \r
+ Double_t vPhi, \r
+ Double_t vPt, \r
+ Short_t vCharge, \r
+ Double_t gCentrality);\r
//===============================correction\r
TObjArray* GetAcceptedTracks(AliVEvent* event, Double_t gCentrality, Double_t gReactionPlane);\r
TObjArray* GetShuffledTracks(TObjArray* tracks, Double_t gCentrality);\r
TH2D *fHistNSigmaTPCvsPtafterPID;//TPC nsigma vs pT after PID cuts (QA histogram)\r
TH2D *fHistNSigmaTOFvsPtafterPID;//TOF nsigma vs pT after PID cuts (QA histogram)\r
\r
- TH3D *fHistCorrectionPlus[kCENTRALITY]; //======================================================correction\r
- TH3D *fHistCorrectionMinus[kCENTRALITY]; //=====================================================correction\r
+ TH3D *fHistCorrectionPlus[kCENTRALITY]; //====correction\r
+ TH3D *fHistCorrectionMinus[kCENTRALITY]; //===correction\r
+ Double_t fCentralityArrayForCorrections[kCENTRALITY];\r
+ Int_t fCentralityArrayBinsForCorrections;\r
\r
AliPIDResponse *fPIDResponse; //! PID response object\r
AliPIDCombined *fPIDCombined; //! combined PID object\r
Bool_t bHBTcut = kTRUE,\r
Bool_t bConversionCut = kTRUE,\r
Bool_t bMomentumDifferenceCut = kTRUE,\r
+ Double_t fQCutMin = 0.0,\r
Int_t AODfilterBit = 128,\r
Bool_t bCentralTrigger = kFALSE,\r
TString fileNameBase="AnalysisResults",\r
TString fArgEventClass="Centrality",\r
TString analysisTypeUser="AOD",\r
Bool_t bVertexBinning=kTRUE,\r
- TString correctionFileName = "$ALICE_ROOT/PWGCF/EBYE/BalanceFunctions/Corrections/CorrectionMaps.root") {\r
+ TString correctionFileName = "",\r
+ Int_t nCentralityArrayBinsForCorrection,\r
+ Double_t *gCentralityArrayForCorrections) {\r
// Creates a balance function analysis task and adds it to the analysis manager.\r
// Get the pointer to the existing analysis manager via the static access method.\r
TString outputFileName(fileNameBase);\r
Double_t deltaEtaMax=TMath::Abs(etaMax-etaMin);\r
\r
if (analysisType=="ESD"){\r
- bf = GetBalanceFunctionObject("ESD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
- if(gRunShuffling) bfs = GetBalanceFunctionObject("ESD",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
- if(gRunMixing) bfm = GetBalanceFunctionObject("ESD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ bf = GetBalanceFunctionObject("ESD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ if(gRunShuffling) bfs = GetBalanceFunctionObject("ESD",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ if(gRunMixing) bfm = GetBalanceFunctionObject("ESD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
}\r
else if (analysisType=="AOD"){\r
- bf = GetBalanceFunctionObject("AOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
- if(gRunShuffling) bfs = GetBalanceFunctionObject("AOD",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
- if(gRunMixing) bfm = GetBalanceFunctionObject("AOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ bf = GetBalanceFunctionObject("AOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ if(gRunShuffling) bfs = GetBalanceFunctionObject("AOD",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ if(gRunMixing) bfm = GetBalanceFunctionObject("AOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
}\r
else if (analysisType=="MC"){\r
- bf = GetBalanceFunctionObject("MC",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
- if(gRunShuffling) bfs = GetBalanceFunctionObject("MC",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
- if(gRunMixing) bfm = GetBalanceFunctionObject("MC",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ bf = GetBalanceFunctionObject("MC",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ if(gRunShuffling) bfs = GetBalanceFunctionObject("MC",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ if(gRunMixing) bfm = GetBalanceFunctionObject("MC",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
}\r
else if (analysisType=="MCAOD"){\r
- bf = GetBalanceFunctionObject("MCAOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
- if(gRunShuffling) bfs = GetBalanceFunctionObject("MCAOD",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
- if(gRunMixing) bfm = GetBalanceFunctionObject("MCAOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ bf = GetBalanceFunctionObject("MCAOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ if(gRunShuffling) bfs = GetBalanceFunctionObject("MCAOD",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+ if(gRunMixing) bfm = GetBalanceFunctionObject("MCAOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
}\r
else{\r
::Error("AddTaskBF", "analysis type NOT known.");\r
//++++++++++++++++++++++\r
// Efficiency + Contamination corrections\r
// If correctionFileName = "", do not use corrections\r
- taskBF->SetInputCorrection(correctionFileName.Data(),"");\r
+ if(correctionFileName != "") {\r
+ taskBF->SetInputCorrection(correctionFileName.Data(),"");\r
+ taskBF->SetCentralityArrayForCorrections(nCentralityArrayBinsForCorrection,gCentralityArrayForCorrections);\r
+ }\r
//+++++++++++++++++++++\r
\r
taskBF->SetAnalysisObject(bf);\r