]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckCascadepp276.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Cascades / AliAnalysisTaskCheckCascadepp276.cxx
index 18adc0e02063a51df64bff59563eacc88d79b41d..f65912302586ccb2531ac937a144471fcccc8fb0 100644 (file)
@@ -52,7 +52,6 @@
 //             Adapted to pPb 5.02 TeV analysis: D. Colella, domenico.colella@ba.infn.it
 //               Aug-Sep 2014
 //               - Added the parameter fCollidingSystem, to distingish between pp and pPb procedures
-//               - 
 //
 //
 //
@@ -905,12 +904,12 @@ void AliAnalysisTaskCheckCascadepp276::UserCreateOutputObjects() {
    const Int_t  lNbVariables  =  19 ;
      //Array for the number of bins in each dimension :
    Int_t lNbBinsPerVar[lNbVariables] = {0};
-   lNbBinsPerVar[0]  = 25;     //DcaCascDaughters             :  [0.0,2.4,3.0]       -> Rec.Cut = 2.0;
+   lNbBinsPerVar[0]  = 25;     //DcaCascDaughters             :  [0.0,2.5]           -> Rec.Cut = 2.0;
    lNbBinsPerVar[1]  = 25;     //DcaBachToPrimVertex          :  [0.0,0.24,100.0]    -> Rec.Cut = 0.01; 
-   lNbBinsPerVar[2]  = 60;     //CascCosineOfPointingAngle    :  [0.94,1.0]          -> Rec.Cut = 0.95;
+   lNbBinsPerVar[2]  = 61;     //CascCosineOfPointingAngle    :  [0.94,1.001]        -> Rec.Cut = 0.95;
    lNbBinsPerVar[3]  = 40;     //CascRadius                   :  [0.0,3.9,1000.0]    -> Rec.Cut = 0.2;
    lNbBinsPerVar[4]  = 30;     //InvMassLambdaAsCascDghter    :  [1.1,1.3]           -> Rec.Cut = 0.008;
-   lNbBinsPerVar[5]  = 20;     //DcaV0Daughters               :  [0.0,2.0]           -> Rec.Cut = 1.5;
+   lNbBinsPerVar[5]  = 21;     //DcaV0Daughters               :  [0.0,2.0]           -> Rec.Cut = 1.5;
    lNbBinsPerVar[6]  = 201;    //V0CosineOfPointingAngleToXi  :  [0.89,1.0]          -> No Rec.Cut;
    lNbBinsPerVar[7]  = 40;     //V0Radius                     :  [0.0,3.9,1000.0]    -> Rec.Cut = 0.2;
    lNbBinsPerVar[8]  = 40;     //DcaV0ToPrimVertex            :  [0.0,0.39,110.0]    -> Rec.Cut = 0.01;  
@@ -942,11 +941,12 @@ void AliAnalysisTaskCheckCascadepp276::UserCreateOutputObjects() {
    }
      //Setting the bin limits 
      //0 -  DcaXiDaughters
-   Double_t *lBinLim0  = new Double_t[ lNbBinsPerVar[0] + 1 ];
-        for(Int_t i=0; i< lNbBinsPerVar[0]; i++) lBinLim0[i] = (Double_t)0.0 + (2.4 - 0.0)/(lNbBinsPerVar[0] - 1) * (Double_t)i;
-        lBinLim0[ lNbBinsPerVar[0] ] = 3.0;
-   fCFContCascadeCuts -> SetBinLimits(0, lBinLim0);  
-   delete [] lBinLim0;
+   //Double_t *lBinLim0  = new Double_t[ lNbBinsPerVar[0] + 1 ];
+   //     for(Int_t i=0; i< lNbBinsPerVar[0]; i++) lBinLim0[i] = (Double_t)0.0 + (2.4 - 0.0)/(lNbBinsPerVar[0] - 1) * (Double_t)i;
+   //     lBinLim0[ lNbBinsPerVar[0] ] = 3.0;
+   //fCFContCascadeCuts -> SetBinLimits(0, lBinLim0);  
+   //delete [] lBinLim0;
+   fCFContCascadeCuts->SetBinLimits(0,0.0,2.5);
      //1 - DcaToPrimVertexXi
    Double_t *lBinLim1  = new Double_t[ lNbBinsPerVar[1] + 1 ];
         for(Int_t i=0; i<lNbBinsPerVar[1]; i++) lBinLim1[i] = (Double_t)0.0 + (0.24  - 0.0)/(lNbBinsPerVar[1] - 1) * (Double_t)i;
@@ -954,7 +954,7 @@ void AliAnalysisTaskCheckCascadepp276::UserCreateOutputObjects() {
    fCFContCascadeCuts -> SetBinLimits(1, lBinLim1);  
    delete [] lBinLim1;    
      //2 - CascCosineOfPointingAngle 
-   fCFContCascadeCuts->SetBinLimits(2, 0.94, 1.);
+   fCFContCascadeCuts->SetBinLimits(2, 0.94, 1.001);
      //3 - CascRadius
    Double_t *lBinLim3  = new Double_t[ lNbBinsPerVar[3]+1 ];
         for(Int_t i=0; i< lNbBinsPerVar[3]; i++)   lBinLim3[i]  = (Double_t)0.0   + (3.9  - 0.0 )/(lNbBinsPerVar[3] - 1)  * (Double_t)i ;
@@ -964,7 +964,7 @@ void AliAnalysisTaskCheckCascadepp276::UserCreateOutputObjects() {
      //4 - InvMassLambdaAsCascDghter
    fCFContCascadeCuts->SetBinLimits(4, 1.1, 1.13);
      //5 - DcaV0Daughters
-   fCFContCascadeCuts -> SetBinLimits(5, 0., 2.);
+   fCFContCascadeCuts -> SetBinLimits(5, 0., 2.1);
      //6 - V0CosineOfPointingAngle
    fCFContCascadeCuts -> SetBinLimits(6, 0.8, 1.001);
      //7 - V0Radius
@@ -1022,7 +1022,8 @@ void AliAnalysisTaskCheckCascadepp276::UserCreateOutputObjects() {
    fCFContCascadeCuts->SetVarTitle(3,  "R_{2d}(cascade decay) (cm)");
    fCFContCascadeCuts->SetVarTitle(4,  "M_{#Lambda}(as casc dghter) (GeV/c^{2})");
    fCFContCascadeCuts->SetVarTitle(5,  "Dca(V0 daughters) in Xi (cm)");
-   fCFContCascadeCuts->SetVarTitle(6,  "cos(V0 PA) to cascade vtx");
+   if (fCollidingSystem == "pp")       fCFContCascadeCuts->SetVarTitle(6,  "cos(V0 PA) to cascade vtx");
+   else if (fCollidingSystem == "pPb") fCFContCascadeCuts->SetVarTitle(6,  "cos(V0 PA) to primary vtx");
    fCFContCascadeCuts->SetVarTitle(7,  "R_{2d}(V0 decay) (cm)");
    fCFContCascadeCuts->SetVarTitle(8,  "ImpactParamToPV(V0) (cm)");
    fCFContCascadeCuts->SetVarTitle(9,  "ImpactParamToPV(Pos) (cm)");
@@ -1322,16 +1323,25 @@ void AliAnalysisTaskCheckCascadepp276::UserExec(Option_t *) {
           if (vertex->GetNContributors() < 1) {
               vertex = lESDevent->GetPrimaryVertexSPD();
               if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
-              else fHasVertex = kTRUE;
+              else                                fHasVertex = kTRUE;
               TString vtxTyp = vertex->GetTitle();
               Double_t cov[6]={0};
               vertex->GetCovarianceMatrix(cov);
               Double_t zRes = TMath::Sqrt(cov[5]);
               if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
+          } else fHasVertex = kTRUE;
+          if (fHasVertex == kFALSE) {
+              AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
+              PostData(1, fListHistCascade);
+              PostData(2, fCFContCascadePIDXiMinus);
+              PostData(3, fCFContCascadePIDXiPlus);
+              PostData(4, fCFContCascadePIDOmegaMinus);
+              PostData(5, fCFContCascadePIDOmegaPlus);
+              PostData(6, fCFContCascadeCuts);
+              return;
           }
-          else fHasVertex = kTRUE;
           if (fUtils->IsFirstEventInChunk(lESDevent)) { //Is First event in chunk rejection: Still present!
-              AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
+              AliWarning("Pb / This is the first event in the chunk! ... return !");
               PostData(1, fListHistCascade);
               PostData(2, fCFContCascadePIDXiMinus);
               PostData(3, fCFContCascadePIDXiPlus);
@@ -1349,15 +1359,14 @@ void AliAnalysisTaskCheckCascadepp276::UserExec(Option_t *) {
           if (vertex->GetNContributors() < 1) {
               vertex = lAODevent->GetPrimaryVertexSPD();
               if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
-              else fHasVertex = kTRUE;
+              else                                fHasVertex = kTRUE;
               TString vtxTyp = vertex->GetTitle();
               Double_t cov[6]={0};
               vertex->GetCovarianceMatrix(cov);
               Double_t zRes = TMath::Sqrt(cov[5]);
               if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
-          }  
-          else fHasVertex = kTRUE;
-          if (fHasVertex == kFALSE) { //Is First event in chunk rejection: Still present!  //FIXME
+          } else fHasVertex = kTRUE;
+          if (fHasVertex == kFALSE) {
               AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
               PostData(1, fListHistCascade);
               PostData(2, fCFContCascadePIDXiMinus);
@@ -1366,6 +1375,16 @@ void AliAnalysisTaskCheckCascadepp276::UserExec(Option_t *) {
               PostData(5, fCFContCascadePIDOmegaPlus);
               PostData(6, fCFContCascadeCuts);
               return;
+          }
+          if (fHasVertex == kFALSE) { //Is First event in chunk rejection: Still present!  //FIXME
+              AliWarning("Pb / This is the first event in the chunk! ... return !");
+              PostData(1, fListHistCascade);
+              PostData(2, fCFContCascadePIDXiMinus);
+              PostData(3, fCFContCascadePIDXiPlus);
+              PostData(4, fCFContCascadePIDOmegaMinus);
+              PostData(5, fCFContCascadePIDOmegaPlus);
+              PostData(6, fCFContCascadeCuts);
+              return;
           }  
           // - Take the number of cascades and tracks after TPConly selection
           ncascadesForSelEvtNoTPCOnly = lAODevent->GetNumberOfCascades();
@@ -1719,23 +1738,21 @@ void AliAnalysisTaskCheckCascadepp276::UserExec(Option_t *) {
            //-----------------------------------------
           // - Extra-selection for cascade candidates
            if (fkExtraSelections) { //in AliCascadeVertexer
-               if (lDcaXiDaughters > 0.3) continue;  
-               if (lXiCosineOfPointingAngle < 0.999 ) continue; 
-               if (lDcaV0ToPrimVertexXi < 0.05) continue; 
-               if (lDcaBachToPrimVertexXi < 0.03) continue; 
-               //if (TMath::Abs(lInvMassLambdaAsCascDghter-1.11568) > 0.006 ) continue;   
-               if (lDcaV0DaughtersXi > 1.) continue;  
-               if (lV0CosineOfPointingAngleXi < 0.998) continue; 
-               if (lDcaPosToPrimVertexXi < 0.1) continue; 
-               if (lDcaNegToPrimVertexXi < 0.1) continue; 
-              if (lXiRadius < .9) continue; 
-               //if (lXiRadius > 100) continue; 
-              if (lV0RadiusXi < 0.9) continue;   
-               //if (lV0RadiusXi > 100) continue; 
+                if (lDcaXiDaughters > 0.3) continue;                                              // in AliCascadeVertexer
+                if (lXiCosineOfPointingAngle < 0.999 ) continue;                                  // in AliCascadeVertexer
+                if (lDcaV0ToPrimVertexXi < 0.05) continue;                                        // in AliCascadeVertexer
+                if (lDcaBachToPrimVertexXi < 0.03) continue;                                      // in AliCascadeVertexer
+                if (lDcaV0DaughtersXi > 1.) continue;                                             // in AliV0vertexer
+                if ((fCollidingSystem == "pp") && (lV0toXiCosineOfPointingAngle < 0.998)) continue; // in AliV0vertexer
+                if ((fCollidingSystem == "pPb") && (lV0CosineOfPointingAngleXi < 0.998)) continue;  // in AliV0vertexer
+                if (lDcaPosToPrimVertexXi < 0.1) continue;                                        // in AliV0vertexer
+                if (lDcaNegToPrimVertexXi < 0.1) continue;                                        // in AliV0vertexer
+                if (lXiRadius < .9) continue;                                                     // in AliCascadeVertexer
+                if (lV0RadiusXi < 0.9) continue;                                                  // in AliV0vertexer
            }
 
-           //----------------------------------------------------------------------------------------------------      
-           // - Around effective masses. Change mass hypotheses to cover all the possibilities:  Xi-/+, Omega -/+
+           //---------------------------------------------------------------------------------------------------       
+           // - Around effective masses. Change mass hypotheses to cover all the possibilities:  Xi-/+, Omega-/+
            if ( bachTrackXi->Charge() < 0 )    {
                 //Calculate the effective mass of the Xi- candidate: Xi- hyp. (pdg code 3312)
                 lV0quality = 0.;
@@ -2217,7 +2234,8 @@ void AliAnalysisTaskCheckCascadepp276::UserExec(Option_t *) {
     lContainerCutVars[3]  = lXiRadius;
     lContainerCutVars[4]  = lInvMassLambdaAsCascDghter;
     lContainerCutVars[5]  = lDcaV0DaughtersXi;
-    lContainerCutVars[6]  = lV0toXiCosineOfPointingAngle;
+    if (fCollidingSystem == "pp")       lContainerCutVars[6]  = lV0toXiCosineOfPointingAngle;
+    else if (fCollidingSystem == "pPb") lContainerCutVars[6]  = lV0CosineOfPointingAngleXi;
     lContainerCutVars[7]  = lV0RadiusXi;
     lContainerCutVars[8]  = lDcaV0ToPrimVertexXi;      
     lContainerCutVars[9]  = lDcaPosToPrimVertexXi;