//
// Origin: Panos Christakoglou, Nikhef, Panos.Christakoglou@cern.ch
//-------------------------------------------------------------------------
-
+// test
#include <vector>
#include <TObject.h>
#include "TString.h"
class TH2D;
class TH3D;
-const Int_t kTrackVariablesSingle = 2; // track variables in histogram (centrality, phi-Psi2, eta, phi, pTtrig)
-const Int_t kTrackVariablesPair = 5; // track variables in histogram (centrality, phi-Psi2, dEta, dPhi, pTtrig, ptAssociated)
+const Int_t kTrackVariablesSingle = 3; // track variables in histogram (event class, pTtrig, vertexZ)
+const Int_t kTrackVariablesPair = 6; // track variables in histogram (event class, dEta, dPhi, pTtrig, ptAssociated, vertexZ)
const TString gBFPsiAnalysisType[ANALYSIS_TYPES] = {"y","eta","qlong","qout","qside","qinv","phi"};
class AliBalancePsi : public TObject {
fAnalysisLevel = analysisLevel;}
void SetShuffle(Bool_t shuffle) {fShuffle = shuffle;}
void SetCentralityInterval(Double_t cStart, Double_t cStop) { fCentStart = cStart; fCentStop = cStop;};
+ void SetEventClass(TString receivedEventClass){ fEventClass = receivedEventClass; }
+ void SetDeltaEtaMax(Double_t receivedDeltaEtaMax){ fDeltaEtaMax = receivedDeltaEtaMax; }
+ void SetVertexZBinning(Bool_t receivedVertexBinning=kTRUE){ fVertexBinning = receivedVertexBinning; }
+ void SetCustomBinning(TString receivedCustomBinning) { fCustomBinning = receivedCustomBinning; }
void InitHistograms(void);
void CalculateBalance(Double_t gReactionPlane,
TObjArray* particles,
TObjArray* particlesMixed,
- Float_t bSign);
+ Float_t bSign,
+ Double_t kMultorCent = -100,
+ Double_t vertexZ = 0);
+ TH2D *GetCorrelationFunction(TString type,
+ Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1,
+ AliBalancePsi *bMixed=NULL);
TH2D *GetCorrelationFunctionPN(Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
Double_t ptTriggerMin=-1.,
Double_t ptTriggerMax=-1.,
Double_t ptAssociatedMin=-1.,
- Double_t ptAssociatedMax=-1,
- Bool_t normToTrig=kTRUE);
+ Double_t ptAssociatedMax=-1);
TH2D *GetCorrelationFunctionNP(Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
Double_t ptTriggerMin=-1.,
Double_t ptTriggerMax=-1.,
Double_t ptAssociatedMin=-1.,
- Double_t ptAssociatedMax=-1,
- Bool_t normToTrig=kTRUE);
+ Double_t ptAssociatedMax=-1);
TH2D *GetCorrelationFunctionPP(Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
Double_t ptTriggerMin=-1.,
Double_t ptTriggerMax=-1.,
Double_t ptAssociatedMin=-1.,
- Double_t ptAssociatedMax=-1,
- Bool_t normToTrig=kTRUE);
+ Double_t ptAssociatedMax=-1);
TH2D *GetCorrelationFunctionNN(Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
Double_t ptTriggerMin=-1.,
Double_t ptTriggerMax=-1.,
Double_t ptAssociatedMin=-1.,
- Double_t ptAssociatedMax=-1,
- Bool_t normToTrig=kTRUE);
+ Double_t ptAssociatedMax=-1);
+ TH2D *GetCorrelationFunctionChargeIndependent(Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1);
AliTHn *GetHistNp() {return fHistP;}
AliTHn *GetHistNn() {return fHistN;}
TH1D *GetBalanceFunctionHistogram(Int_t iVariableSingle,
Int_t iVariablePair,
Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
Double_t ptTriggerMin=-1.,
Double_t ptTriggerMax=-1.,
Double_t ptAssociatedMin=-1.,
- Double_t ptAssociatedMax=-1);
+ Double_t ptAssociatedMax=-1); //
TH1D *GetBalanceFunctionHistogram2pMethod(Int_t iVariableSingle,
- Int_t iVariablePair,
- Double_t psiMin, Double_t psiMax,
- Double_t ptTriggerMin=-1.,
- Double_t ptTriggerMax=-1.,
- Double_t ptAssociatedMin=-1.,
- Double_t ptAssociatedMax=-1,
- AliBalancePsi *bfMix=NULL);
+ Int_t iVariablePair,
+ Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1,
+ AliBalancePsi *bfMix=NULL);
TH2D *GetBalanceFunctionDeltaEtaDeltaPhi(Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
Double_t ptTriggerMin=-1.,
Double_t ptTriggerMax=-1.,
Double_t ptAssociatedMin=-1.,
- Double_t ptAssociatedMax=-1);
+ Double_t ptAssociatedMax=-1);
TH2D *GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
Double_t ptTriggerMin=-1.,
Double_t ptTriggerMax=-1.,
Double_t ptAssociatedMin=-1.,
Double_t ptAssociatedMax=-1.,
AliBalancePsi *bfMix=NULL);
+
+ TH1D *GetBalanceFunction1DFrom2D2pMethod(Bool_t bPhi,
+ Double_t psiMin, Double_t psiMax,
+ Double_t vertexZMin=-1,
+ Double_t vertexZMax=-1,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1.,
+ AliBalancePsi *bfMix=NULL);
+
+ Bool_t GetMomentsAnalytical(Int_t fVariable, TH1D* gHist, Bool_t kUseZYAM,
+ Double_t &mean, Double_t &meanError,
+ Double_t &sigma, Double_t &sigmaError,
+ Double_t &skewness, Double_t &skewnessError,
+ Double_t &kurtosis, Double_t &kurtosisError);
TH2D *GetQAHistHBTbefore() {return fHistHBTbefore;}
TH2D *GetQAHistHBTafter() {return fHistHBTafter;}
- TH2D *GetQAHistConversionbefore() {return fHistConversionbefore;}
- TH2D *GetQAHistConversionafter() {return fHistConversionafter;}
+ TH3D *GetQAHistConversionbefore() {return fHistConversionbefore;}
+ TH3D *GetQAHistConversionafter() {return fHistConversionafter;}
TH2D *GetQAHistPsiMinusPhi() {return fHistPsiMinusPhi;}
-
- void UseHBTCut() {fHBTCut = kTRUE;}
- void UseConversionCut() {fConversionCut = kTRUE;}
+ TH3D *GetQAHistResonancesBefore() {return fHistResonancesBefore;}
+ TH3D *GetQAHistResonancesRho() {return fHistResonancesRho;}
+ TH3D *GetQAHistResonancesK0() {return fHistResonancesK0;}
+ TH3D *GetQAHistResonancesLambda() {return fHistResonancesLambda;}
+ TH3D *GetQAHistQbefore() {return fHistQbefore;}
+ TH3D *GetQAHistQafter() {return fHistQafter;}
+
+ void UseResonancesCut() {fResonancesCut = kTRUE;}
+ void UseHBTCut(Double_t setHBTCutValue = 0.02) {
+ fHBTCut = kTRUE; fHBTCutValue = setHBTCutValue;}
+ void UseConversionCut(Double_t setInvMassCutConversion = 0.04) {
+ fConversionCut = kTRUE; fInvMassCutConversion = setInvMassCutConversion; }
+ void UseMomentumDifferenceCut(Double_t gDeltaPtCutMin) {
+ fQCut = kTRUE; fDeltaPtMin = gDeltaPtCutMin;}
+
+ // related to customized binning of output AliTHn
+ Bool_t IsUseVertexBinning() { return fVertexBinning; }
+ TString GetBinningString() { return fBinningString; }
+ Double_t* GetBinning(const char* configuration, const char* tag, Int_t& nBins);
private:
- Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign);
+ Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign);
Bool_t fShuffle; //shuffled balance function object
TString fAnalysisLevel; //ESD, AOD or MC
//QA histograms
TH2D *fHistHBTbefore; // Delta Eta vs. Delta Phi before HBT inspired cuts
TH2D *fHistHBTafter; // Delta Eta vs. Delta Phi after HBT inspired cuts
- TH2D *fHistConversionbefore; // Delta Eta vs. Delta Phi before Conversion cuts
- TH2D *fHistConversionafter; // Delta Eta vs. Delta Phi before Conversion cuts
- TH2D *fHistPsiMinusPhi;//
+ TH3D *fHistConversionbefore; // 3D histogram (Deta,Dphi,Invmass) before Conversion cuts
+ TH3D *fHistConversionafter; // 3D histogram (Deta,Dphi,Invmass) before Conversion cuts
+ TH2D *fHistPsiMinusPhi;// psi - phi QA histogram
+ TH3D *fHistResonancesBefore; // 3D histogram (Deta,Dphi,Invmass) before resonance cuts
+ TH3D *fHistResonancesRho; // 3D histogram (Deta,Dphi,Invmass) after removing rho
+ TH3D *fHistResonancesK0; // 3D histogram (Deta,Dphi,Invmass) after removing rho, K0
+ TH3D *fHistResonancesLambda; // 3D histogram (Deta,Dphi,Invmass) after removing rho, K0, and Lambda
+ TH3D *fHistQbefore; // Delta Eta vs. Delta Phi before cut on momentum difference
+ TH3D *fHistQafter; // Delta Eta vs. Delta Phi after cut on momentum difference
Double_t fPsiInterval;// interval in Psi-phi1
+ Double_t fDeltaEtaMax;// maximum delta eta for output THnSparse
- Bool_t fHBTCut;//HBT cut
+ Bool_t fResonancesCut;//resonances cut
+ Bool_t fHBTCut;//cut for two-track efficiency (like HBT group)
+ Double_t fHBTCutValue;// value for two-track efficiency cut (default = 0.02 from dphicorrelations)
Bool_t fConversionCut;//conversion cut
+ Double_t fInvMassCutConversion;//invariant mass for conversion cut
+ Bool_t fQCut;//cut on momentum difference to suppress femtoscopic effect correlations
+ Double_t fDeltaPtMin;//delta pt cut: minimum value
+ Bool_t fVertexBinning;//use vertex z binning in AliTHn
+ TString fCustomBinning;//for setting customized binning
+ TString fBinningString;//final binning string
+
+ TString fEventClass;
AliBalancePsi & operator=(const AliBalancePsi & ) {return *this;}
- ClassDef(AliBalancePsi, 1)
+ ClassDef(AliBalancePsi, 2)
};
#endif