]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
1) Bugfix for correlation function calculation (when averaging over several centralit...
authormiweber <miweber@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Aug 2013 10:08:19 +0000 (10:08 +0000)
committermiweber <miweber@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Aug 2013 10:08:19 +0000 (10:08 +0000)
2) Additional option in AddTask: define invariant mass for conversion cut

PWGCF/EBYE/BalanceFunctions/AliBalancePsi.cxx
PWGCF/EBYE/BalanceFunctions/AliBalancePsi.h
PWGCF/EBYE/macros/AddTaskBalancePsiCentralityTrain.C
PWGCF/EBYE/macros/configBalanceFunctionPsiAnalysis.C
PWGCF/EBYE/macros/drawCorrelationFunctionPsi.C

index cf0cbca2606d5fb84eabe937479888f9dfbf332e..b7039119c0858b0010eb748300a1c2621b24c49b 100644 (file)
@@ -77,6 +77,7 @@ AliBalancePsi::AliBalancePsi() :
   fResonancesCut(kFALSE),
   fHBTCut(kFALSE),
   fConversionCut(kFALSE),
+  fInvMassCutConversion(0.04),
   fQCut(kFALSE),
   fDeltaPtMin(0.0),
   fVertexBinning(kFALSE),
@@ -114,6 +115,7 @@ AliBalancePsi::AliBalancePsi(const AliBalancePsi& balance):
   fResonancesCut(balance.fResonancesCut),
   fHBTCut(balance.fHBTCut),
   fConversionCut(balance.fConversionCut),
+  fInvMassCutConversion(balance.fInvMassCutConversion),
   fQCut(balance.fQCut),
   fDeltaPtMin(balance.fDeltaPtMin),
   fVertexBinning(balance.fVertexBinning),
@@ -659,7 +661,7 @@ void AliBalancePsi::CalculateBalance(Double_t gReactionPlane,
          
          Float_t masssqu = 2 * m0 * m0 + 2 * ( TMath::Sqrt(e1squ * e2squ) - ( firstPt * secondPt[j] * ( TMath::Cos(phi1rad - phi2rad) + 1.0 / tantheta1 / tantheta2 ) ) );
          
-         if (masssqu < 0.04*0.04){
+         if (masssqu < fInvMassCutConversion*fInvMassCutConversion){
            //AliInfo(Form("Conversion: Removed track pair %d %d with [[%f %f] %f %f] %d %d <- %f %f  %f %f   %f %f ", i, j, deta, dphi, masssqu, charge1, charge2,eta1,eta2,phi1,phi2,pt1,pt2));
            continue;
          }
@@ -1803,7 +1805,11 @@ TH2D *AliBalancePsi::GetCorrelationFunction(TString type,
        
        // NEW averaging:
        // average over number of triggers in each sub-bin
-       Double_t NTrigSubBin = (Double_t)(fHistP->Project(0,1)->GetEntries());
+       Double_t NTrigSubBin = 0;
+       if(type=="PN" || type=="PP")
+         NTrigSubBin = (Double_t)(fHistP->Project(0,1)->GetEntries());
+       else if(type=="NP" || type=="NN")
+         NTrigSubBin = (Double_t)(fHistN->Project(0,1)->GetEntries());
        fSame->Scale(NTrigSubBin);
        
        // for the first: clone
@@ -1826,10 +1832,19 @@ TH2D *AliBalancePsi::GetCorrelationFunction(TString type,
     // NEW averaging:
     // average over number of triggers in each sub-bin
     // first set to full range and then obtain number of all triggers 
-    fHistP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax-0.00001); 
-    fHistP->GetGrid(0)->GetGrid()->GetAxis(2)->SetRangeUser(vertexZMin,vertexZMax-0.00001); 
-    fHistP->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax-0.00001);
-    Double_t NTrigAll = (Double_t)(fHistP->Project(0,1)->GetEntries());
+    Double_t NTrigAll = 0;
+    if(type=="PN" || type=="PP"){
+      fHistP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax-0.00001); 
+      fHistP->GetGrid(0)->GetGrid()->GetAxis(2)->SetRangeUser(vertexZMin,vertexZMax-0.00001); 
+      fHistP->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax-0.00001);
+      NTrigAll = (Double_t)(fHistP->Project(0,1)->GetEntries());
+    }
+    else if(type=="NP" || type=="NN"){
+      fHistN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax-0.00001); 
+      fHistN->GetGrid(0)->GetGrid()->GetAxis(2)->SetRangeUser(vertexZMin,vertexZMax-0.00001); 
+      fHistN->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax-0.00001);
+      NTrigAll = (Double_t)(fHistN->Project(0,1)->GetEntries());
+    }
     gHist->Scale(1./NTrigAll);
     
   }
index 8d2e47bf1d8b9820cc7e6f1445db741866c6df59..8a3304e3fbef5975c021aaea33f6d7ef0926c758 100644 (file)
@@ -205,7 +205,8 @@ class AliBalancePsi : public TObject {
 
   void UseResonancesCut() {fResonancesCut = kTRUE;}
   void UseHBTCut() {fHBTCut = kTRUE;}
-  void UseConversionCut() {fConversionCut = kTRUE;}
+  void UseConversionCut(Double_t setInvMassCutConversion = 0.04) {
+    fConversionCut = kTRUE; fInvMassCutConversion = setInvMassCutConversion; }
   void UseMomentumDifferenceCut(Double_t gDeltaPtCutMin) {
     fQCut = kTRUE; fDeltaPtMin = gDeltaPtCutMin;}
 
@@ -247,6 +248,7 @@ class AliBalancePsi : public TObject {
   Bool_t fResonancesCut;//resonances cut
   Bool_t fHBTCut;//cut for two-track efficiency (like HBT group)
   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
@@ -255,7 +257,7 @@ class AliBalancePsi : public TObject {
 
   AliBalancePsi & operator=(const AliBalancePsi & ) {return *this;}
 
-  ClassDef(AliBalancePsi, 1)
+  ClassDef(AliBalancePsi, 2)
 };
 
 #endif
index 8e813853766ddd79c1c435390ffc3286b5004bb8..fad5f82b8cbea0f10500ab02f844833211e2dbfb 100644 (file)
@@ -34,6 +34,7 @@ AliAnalysisTaskBFPsi *AddTaskBalancePsiCentralityTrain(Double_t centrMin=0.,
                                                       Bool_t bResonancesCut = kTRUE,\r
                                                       Bool_t bHBTcut = kTRUE,\r
                                                       Bool_t bConversionCut = kTRUE,\r
+                                                      Double_t invMassForConversionCut = 0.04,\r
                                                       Bool_t bMomentumDifferenceCut = kTRUE,\r
                                                       Double_t fQCutMin = 0.0,\r
                                                       Int_t AODfilterBit = 128,\r
@@ -85,29 +86,29 @@ 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,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
+    bf  = GetBalanceFunctionObject("ESD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunShuffling) bfs = GetBalanceFunctionObject("ESD",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunMixing)    bfm = GetBalanceFunctionObject("ESD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
   }\r
   else if (analysisType=="AOD"){\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
+    bf  = GetBalanceFunctionObject("AOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunShuffling) bfs = GetBalanceFunctionObject("AOD",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunMixing)    bfm = GetBalanceFunctionObject("AOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
   }\r
   else if (analysisType=="MC"){\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
+    bf  = GetBalanceFunctionObject("MC",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunShuffling) bfs = GetBalanceFunctionObject("MC",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunMixing)    bfm = GetBalanceFunctionObject("MC",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
   }\r
   else if (analysisType=="MCAOD"){\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
+    bf  = GetBalanceFunctionObject("MCAOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunShuffling) bfs = GetBalanceFunctionObject("MCAOD",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunMixing)    bfm = GetBalanceFunctionObject("MCAOD",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
   }\r
   else if (analysisType=="MCAODrec"){\r
-    bf  = GetBalanceFunctionObject("MCAODrec",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
-    if(gRunShuffling) bfs = GetBalanceFunctionObject("MCAODrec",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
-    if(gRunMixing)    bfm = GetBalanceFunctionObject("MCAODrec",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    bf  = GetBalanceFunctionObject("MCAODrec",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunShuffling) bfs = GetBalanceFunctionObject("MCAODrec",centralityEstimator,centrMin,centrMax,kTRUE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
+    if(gRunMixing)    bfm = GetBalanceFunctionObject("MCAODrec",centralityEstimator,centrMin,centrMax,kFALSE,bResonancesCut,bHBTcut,bConversionCut,invMassForConversionCut,bMomentumDifferenceCut,fQCutMin,fArgEventClass,deltaEtaMax,bVertexBinning);\r
   }\r
   else{\r
     ::Error("AddTaskBF", "analysis type NOT known.");\r
index 7c3d5a8f0038adeb3d726d06d9e3026c813fbf2e..41bd8c80a06212eaf881af6b4433012bd60c005f 100644 (file)
@@ -7,6 +7,7 @@ AliBalancePsi *GetBalanceFunctionObject(const char* analysisLevel = "MCAOD",   /
                                        Bool_t bResonancesCut = kFALSE,\r
                                        Bool_t bHBTCut = kFALSE,\r
                                        Bool_t bConversionCut = kFALSE,\r
+                                       Double_t invMassForConversionCut = 0.04,\r
                                        Bool_t bMomentumDifferenceCut = kFALSE,\r
                                        Double_t fQCutMin = 0.0,\r
                                        TString fArgEventClass = "EventPlane",\r
@@ -18,7 +19,7 @@ AliBalancePsi *GetBalanceFunctionObject(const char* analysisLevel = "MCAOD",   /
   gBalance->SetShuffle(bShuffle);\r
   if(bResonancesCut) gBalance->UseResonancesCut();\r
   if(bHBTCut) gBalance->UseHBTCut();\r
-  if(bConversionCut) gBalance->UseConversionCut();\r
+  if(bConversionCut) gBalance->UseConversionCut(invMassForConversionCut);\r
   if(bMomentumDifferenceCut) gBalance->UseMomentumDifferenceCut(fQCutMin);\r
   if(centralityName) gBalance->SetCentralityIdentifier(centralityName);\r
   if(bVertexBinning) gBalance->SetVertexZBinning();\r
index 0582d63a8c9e078500795159dfc75510a4a9e3e4..a8a876c9fddca65f3a3cf1d43c7cb91511ada4b0 100644 (file)
@@ -79,10 +79,12 @@ void drawCorrelationFunctionPsi(const char* filename = "AnalysisResultsPsi_train
       listQAName += "_Bit"; listQAName += gBit; }
     if(gCentralityEstimator) {
       listQAName += "_"; listQAName += gCentralityEstimator;}
+    listQAName += listNameAdd;
+  
 
     listQA = (TList*)dir->Get(Form("%s",listQAName.Data()));
     if(!listQA) {
-      Printf("TList QA not found!!!");
+      Printf("TList %s not found!!!",listQAName.Data());
     }
   }