#ifndef ALIANALYSISTASKBF_H
#define ALIANALYSISTASKBF_H
class TList;
class TH1F;
class TH2F;
class TH2D;
class TF1;
class AliBalance;
class AliESDtrackCuts;
#include "AliAnalysisTaskSE.h"
#include "AliBalance.h"
#include "AliPID.h"
#include "AliPIDResponse.h"
#include "AliPIDCombined.h"
class AliAnalysisTaskBF : public AliAnalysisTaskSE {
public:
AliAnalysisTaskBF(const char *name = "AliAnalysisTaskBF");
virtual ~AliAnalysisTaskBF();
virtual void UserCreateOutputObjects();
virtual void UserExec(Option_t *option);
virtual void FinishTaskOutput();
virtual void Terminate(Option_t *);
void SetAnalysisObject(AliBalance *const analysis) {
fBalance = analysis;
}
void SetShufflingObject(AliBalance *const analysisShuffled) {
fRunShuffling = kTRUE;
fShuffledBalance = analysisShuffled;
}
void SetAnalysisCutObject(AliESDtrackCuts *const trackCuts) {
fESDtrackCuts = trackCuts;}
void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {
fVxMax = vx;
fVyMax = vy;
fVzMax = vz;
}
void SetAODtrackCutBit(Int_t bit){
fAODtrackCutBit = bit;
}
void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax){
fPtMin = ptmin; fPtMax = ptmax;
fEtaMin = etamin; fEtaMax = etamax;
}
void SetExtraDCACutsAOD(Double_t DCAxy, Double_t DCAz){
fDCAxyCut = DCAxy;
fDCAzCut = DCAz;
}
void SetExtraTPCCutsAOD(Double_t maxTPCchi2, Int_t minNClustersTPC){
fTPCchi2Cut = maxTPCchi2;
fNClustersTPCCut = minNClustersTPC;
}
void SetKinematicsCutsMC(Double_t ptmin, Double_t ptmax,Double_t etamin, Double_t etamax){
fPtMin = ptmin; fPtMax = ptmax;
fEtaMin = etamin; fEtaMax = etamax;
}
void UseFlowAfterBurner(TF1 *gDifferentialV2) {
fDifferentialV2 = gDifferentialV2;
fUseFlowAfterBurner = kTRUE;
}
void ExcludeResonancesInMC() {fExcludeResonancesInMC = kTRUE;}
void SetPDGCode(Int_t gPdgCode) {
fUseMCPdgCode = kTRUE;
fPDGCodeToBeAnalyzed = gPdgCode;
}
void SetCentralityEstimator(const char* centralityEstimator) {fCentralityEstimator = centralityEstimator;}
const char* GetCentralityEstimator (void) const {return fCentralityEstimator;}
void SetCentralityPercentileRange(Double_t min, Double_t max) {
fUseCentrality = kTRUE;
fCentralityPercentileMin=min;
fCentralityPercentileMax=max;
}
void SetImpactParameterRange(Double_t min, Double_t max) {
fUseCentrality = kTRUE;
fImpactParameterMin=min;
fImpactParameterMax=max;
}
void SetMultiplicityRange(Int_t min, Int_t max) {
fUseMultiplicity = kTRUE;
fNumberOfAcceptedTracksMin = min;
fNumberOfAcceptedTracksMax = max;}
void UseOfflineTrigger() {fUseOfflineTrigger = kTRUE;}
void SetAcceptanceParameterization(TF1 *parameterization) {
fAcceptanceParameterization = parameterization;}
enum kDetectorUsedForPID { kTPCpid, kTOFpid, kTPCTOF };
enum kParticleOfInterest { kElectron, kMuon, kPion, kKaon, kProton, kPhoton, kPi0, kNeutron, kKaon0, kEleCon, kDeuteron, kTriton, kHe3, kAlpha, kUnknown};
void SetUseBayesianPID(Double_t gMinProbabilityValue) {
fUsePID = kTRUE; fUsePIDnSigma = kFALSE; fUsePIDPropabilities = kTRUE;
fMinAcceptedPIDProbability = gMinProbabilityValue; }
void SetUseNSigmaPID(Double_t gMaxNSigma) {
fUsePID = kTRUE; fUsePIDPropabilities = kFALSE; fUsePIDnSigma = kTRUE;
fPIDNSigma = gMaxNSigma; }
void SetParticleOfInterest(kParticleOfInterest poi) {
fParticleOfInterest = poi;}
void SetDetectorUsedForPID(kDetectorUsedForPID detConfig) {
fPidDetectorConfig = detConfig;}
private:
AliBalance *fBalance;
Bool_t fRunShuffling;
AliBalance *fShuffledBalance;
TList *fList;
TList *fListBF;
TList *fListBFS;
TList *fHistListPIDQA;
TH2D *fHistEventStats;
TH2F *fHistCentStats;
TH1F *fHistTriggerStats;
TH1F *fHistTrackStats;
TH1F *fHistVx;
TH1F *fHistVy;
TH1F *fHistVz;
TH2F *fHistClus;
TH2F *fHistDCA;
TH1F *fHistChi2;
TH1F *fHistPt;
TH1F *fHistEta;
TH1F *fHistRapidity;
TH1F *fHistPhi;
TH1F *fHistPhiBefore;
TH1F *fHistPhiAfter;
TH1F *fHistPhiPos;
TH1F *fHistPhiNeg;
TH2F *fHistV0M;
TH2F *fHistRefTracks;
TH2D *fHistdEdxVsPTPCbeforePID;
TH2D *fHistBetavsPTOFbeforePID;
TH2D *fHistProbTPCvsPtbeforePID;
TH2D *fHistProbTOFvsPtbeforePID;
TH2D *fHistProbTPCTOFvsPtbeforePID;
TH2D *fHistNSigmaTPCvsPtbeforePID;
TH2D *fHistNSigmaTOFvsPtbeforePID;
TH2D *fHistdEdxVsPTPCafterPID;
TH2D *fHistBetavsPTOFafterPID;
TH2D *fHistProbTPCvsPtafterPID;
TH2D *fHistProbTOFvsPtafterPID;
TH2D *fHistProbTPCTOFvsPtafterPID;
TH2D *fHistNSigmaTPCvsPtafterPID;
TH2D *fHistNSigmaTOFvsPtafterPID;
AliPIDResponse *fPIDResponse;
AliPIDCombined *fPIDCombined;
kParticleOfInterest fParticleOfInterest;
kDetectorUsedForPID fPidDetectorConfig;
Bool_t fUsePID;
Bool_t fUsePIDnSigma;
Bool_t fUsePIDPropabilities;
Double_t fPIDNSigma;
Double_t fMinAcceptedPIDProbability;
AliESDtrackCuts *fESDtrackCuts;
TString fCentralityEstimator;
Bool_t fUseCentrality;
Double_t fCentralityPercentileMin;
Double_t fCentralityPercentileMax;
Double_t fImpactParameterMin;
Double_t fImpactParameterMax;
Bool_t fUseMultiplicity;
Int_t fNumberOfAcceptedTracksMin;
Int_t fNumberOfAcceptedTracksMax;
TH2D *fHistNumberOfAcceptedTracks;
Bool_t fUseOfflineTrigger;
Double_t fVxMax;
Double_t fVyMax;
Double_t fVzMax;
Int_t fAODtrackCutBit;
Double_t fPtMin;
Double_t fPtMax;
Double_t fEtaMin;
Double_t fEtaMax;
Double_t fDCAxyCut;
Double_t fDCAzCut;
Double_t fTPCchi2Cut;
Int_t fNClustersTPCCut;
TF1 *fAcceptanceParameterization;
TF1 *fDifferentialV2;
Bool_t fUseFlowAfterBurner;
Bool_t fExcludeResonancesInMC;
Bool_t fUseMCPdgCode;
Int_t fPDGCodeToBeAnalyzed;
AliAnalysisTaskBF(const AliAnalysisTaskBF&);
AliAnalysisTaskBF& operator=(const AliAnalysisTaskBF&);
ClassDef(AliAnalysisTaskBF, 5);
};
#endif