]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding the array for the corrections
authorpchrista <pchrista@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 May 2013 12:52:25 +0000 (12:52 +0000)
committerpchrista <pchrista@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 May 2013 12:52:25 +0000 (12:52 +0000)
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBFPsi.cxx
PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBFPsi.h
PWGCF/EBYE/BalanceFunctions/AliBalancePsi.cxx
PWGCF/EBYE/BalanceFunctions/AliBalancePsi.h
PWGCF/EBYE/macros/AddTaskBalancePsiCentralityTrain.C
PWGCF/EBYE/macros/configBalanceFunctionPsiAnalysis.C

index cc29c675f1d92f7273460c5ea8e3c7a7de877dd7..27e0d67a670989867f9b64cbe9543188284c0019 100755 (executable)
@@ -103,6 +103,7 @@ AliAnalysisTaskBFPsi::AliAnalysisTaskBFPsi(const char *name)
   fHistProbTPCTOFvsPtafterPID(NULL),\r
   fHistNSigmaTPCvsPtafterPID(NULL), \r
   fHistNSigmaTOFvsPtafterPID(NULL),  \r
+  fCentralityArrayBinsForCorrections(kCENTRALITY),\r
   fPIDResponse(0x0),\r
   fPIDCombined(0x0),\r
   fParticleOfInterest(kPion),\r
@@ -163,6 +164,7 @@ AliAnalysisTaskBFPsi::AliAnalysisTaskBFPsi(const char *name)
   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
@@ -523,12 +525,12 @@ void AliAnalysisTaskBFPsi::SetInputCorrection(TString filename,
   }\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
@@ -536,9 +538,7 @@ void AliAnalysisTaskBFPsi::SetInputCorrection(TString filename,
     }\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
@@ -1032,8 +1032,8 @@ Double_t AliAnalysisTaskBFPsi::GetTrackbyTrackCorrectionMatrix( Double_t vEta,
   }\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
index 8603284454bca1dbeac03960d71309eb20542bd4..4c8b6afa859378a93283d5616f59e954bc570e42 100755 (executable)
@@ -24,9 +24,9 @@ class AliEventPoolManager;
 #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
@@ -40,7 +40,12 @@ class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {
   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
@@ -153,7 +158,11 @@ class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {
   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
@@ -215,8 +224,10 @@ class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {
   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
index 626c4aa74ebf3d48525556b177a74f483013eb90..0316352c762532be0ee1c1fb755d70048a64af0a 100644 (file)
@@ -78,6 +78,7 @@ AliBalancePsi::AliBalancePsi() :
   fHBTCut(kFALSE),
   fConversionCut(kFALSE),
   fQCut(kFALSE),
+  fDeltaPtMin(0.0),
   fVertexBinning(kFALSE),
   fEventClass("EventPlane"){
   // Default constructor
@@ -114,6 +115,7 @@ AliBalancePsi::AliBalancePsi(const AliBalancePsi& balance):
   fHBTCut(balance.fHBTCut),
   fConversionCut(balance.fConversionCut),
   fQCut(balance.fQCut),
+  fDeltaPtMin(balance.fDeltaPtMin),
   fVertexBinning(balance.fVertexBinning),
   fEventClass("EventPlane"){
   //copy constructor
@@ -668,11 +670,11 @@ void AliBalancePsi::CalculateBalance(Double_t gReactionPlane,
       // momentum difference cut - suppress femtoscopic effects
       if(fQCut){ 
 
-       Double_t ptMin        = 0.1; //const for the time being (should be changeable later on)
+       //Double_t ptMin        = 0.1; //const for the time being (should be changeable later on)
        Double_t ptDifference = TMath::Abs( firstPt - secondPt[j]);
 
        fHistQbefore->Fill(trackVariablesPair[1],trackVariablesPair[2],ptDifference);
-       if(ptDifference < ptMin) continue;
+       if(ptDifference < fDeltaPtMin) continue;
        fHistQafter->Fill(trackVariablesPair[1],trackVariablesPair[2],ptDifference);
 
       }
index d8fae6d3553dc0d63e8bb7e52e8c0fa472818d34..7e323f7bb8a3b5f33dca981f8cac355ff819cb5d 100644 (file)
@@ -206,7 +206,8 @@ class AliBalancePsi : public TObject {
   void UseResonancesCut() {fResonancesCut = kTRUE;}
   void UseHBTCut() {fHBTCut = kTRUE;}
   void UseConversionCut() {fConversionCut = kTRUE;}
-  void UseMomentumDifferenceCut() {fQCut = kTRUE;}
+  void UseMomentumDifferenceCut(Double_t gDeltaPtCutMin) {
+    fQCut = kTRUE; fDeltaPtMin = gDeltaPtCutMin;}
 
  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); 
@@ -247,6 +248,7 @@ class AliBalancePsi : public TObject {
   Bool_t fHBTCut;//cut for two-track efficiency (like HBT group)
   Bool_t fConversionCut;//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 fEventClass;
index 737a0eadca96f83bb81d38439cd8fe1b2242673a..a8ceeeae71572c2dda6f943068f58e3a06ec7769 100644 (file)
@@ -35,13 +35,16 @@ AliAnalysisTaskBFPsi *AddTaskBalancePsiCentralityTrain(Double_t centrMin=0.,
                                                       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
@@ -80,24 +83,24 @@ AliAnalysisTaskBFPsi *AddTaskBalancePsiCentralityTrain(Double_t centrMin=0.,
   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
@@ -114,7 +117,10 @@ AliAnalysisTaskBFPsi *AddTaskBalancePsiCentralityTrain(Double_t centrMin=0.,
   //++++++++++++++++++++++\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
index 5479820b672277a1c9d765d13bc47f2259a0a03a..ea3343ff573f0943d509f5b05f1f3a4114e6ae93 100644 (file)
@@ -8,6 +8,7 @@ AliBalancePsi *GetBalanceFunctionObject(const char* analysisLevel = "AOD",
                                        Bool_t bHBTCut = kFALSE,\r
                                        Bool_t bConversionCut = kFALSE,\r
                                        Bool_t bMomentumDifferenceCut = kFALSE,\r
+                                       Double_t fQCutMin = 0.0,\r
                                        TString fArgEventClass = "EventPlane",\r
                                        Double_t deltaEtaMax = 2.0,\r
                                        Bool_t bVertexBinning = kFALSE) {\r
@@ -18,7 +19,7 @@ AliBalancePsi *GetBalanceFunctionObject(const char* analysisLevel = "AOD",
   if(bResonancesCut) gBalance->UseResonancesCut();\r
   if(bHBTCut) gBalance->UseHBTCut();\r
   if(bConversionCut) gBalance->UseConversionCut();\r
-  if(bMomentumDifferenceCut) gBalance->UseMomentumDifferenceCut();\r
+  if(bMomentumDifferenceCut) gBalance->UseMomentumDifferenceCut(fQCutMin);\r
   if(centralityName) gBalance->SetCentralityIdentifier(centralityName);\r
   if(bVertexBinning) gBalance->SetVertexZBinning();\r
   gBalance->SetCentralityInterval(centrMin,centrMax);\r