]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/EBYE/BalanceFunctions/AliBalancePsi.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliBalancePsi.h
index 09943711c501cc5401fac4051ffea7ea656167d1..f81b5e42db9978572ec25d0641209203d23380bc 100644 (file)
@@ -11,7 +11,7 @@
 //
 //    Origin: Panos Christakoglou, Nikhef, Panos.Christakoglou@cern.ch
 //-------------------------------------------------------------------------
-
+// test
 #include <vector>
 #include <TObject.h>
 #include "TString.h"
@@ -29,8 +29,8 @@ class TH1D;
 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 {
@@ -56,6 +56,10 @@ 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);
 
@@ -65,28 +69,54 @@ class AliBalancePsi : public TObject {
   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);
   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);
   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);
   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);
+                                  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;}
@@ -111,44 +141,84 @@ class AliBalancePsi : public TObject {
   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
@@ -169,18 +239,35 @@ class AliBalancePsi : public TObject {
   //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