Min pt cut on cascade daughter tracks added (parameter); control histos for the cut...
authordelia <delia@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 19 Jul 2012 09:17:05 +0000 (09:17 +0000)
committerdelia <delia@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 19 Jul 2012 09:17:05 +0000 (09:17 +0000)
PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckCascadePbPb.cxx
PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckCascadePbPb.h
PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckPerformanceCascadePbPb.cxx
PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckPerformanceCascadePbPb.h
PWGLF/STRANGENESS/Cascades/macros/AddTaskCheckCascadePbPb.C
PWGLF/STRANGENESS/Cascades/macros/AddTaskCheckPerformanceCascadePbPb.C
PWGLF/STRANGENESS/Cascades/macros/runGridCascadePbPb.C
PWGLF/STRANGENESS/Cascades/macros/runProofCascadePbPb.C

index 5ff22b2..83df738 100644 (file)
@@ -40,6 +40,8 @@
 //                - AOD analysis part completed 
 //               March2012
 //                - min number of TPC clusters for track selection as a parameter      
+//               July2012
+//                - cut on min pt for daughter tracks as a parameter
 //-----------------------------------------------------------------
 
 class TTree;
@@ -108,6 +110,7 @@ AliAnalysisTaskCheckCascadePbPb::AliAnalysisTaskCheckCascadePbPb()
     fCentrEstimator             (0),
     fkUseCleaning               (0),
     fVtxRange                   (0),
+    fMinPtCutOnDaughterTracks   (0),
 
 
        // - Cascade part initialisation
@@ -144,6 +147,7 @@ AliAnalysisTaskCheckCascadePbPb::AliAnalysisTaskCheckCascadePbPb()
 
     fHistXiTransvMom(0),    fHistXiTotMom(0),
     fHistBachTransvMomXi(0),   fHistBachTotMomXi(0),
+    fHistPosTransvMomXi(0), fHistNegTransvMomXi(0),
 
     fHistChargeXi(0),
     fHistV0toXiCosineOfPointingAngle(0),
@@ -199,6 +203,7 @@ AliAnalysisTaskCheckCascadePbPb::AliAnalysisTaskCheckCascadePbPb(const char *nam
     fCentrEstimator             (0),
     fkUseCleaning               (0),
     fVtxRange                   (0),
+    fMinPtCutOnDaughterTracks   (0),
      
        // - Cascade part initialisation
     fListHistCascade(0),
@@ -233,6 +238,7 @@ AliAnalysisTaskCheckCascadePbPb::AliAnalysisTaskCheckCascadePbPb(const char *nam
 
     fHistXiTransvMom(0),    fHistXiTotMom(0),
     fHistBachTransvMomXi(0),   fHistBachTotMomXi(0),
+    fHistPosTransvMomXi(0), fHistNegTransvMomXi(0),
 
     fHistChargeXi(0),
     fHistV0toXiCosineOfPointingAngle(0),
@@ -292,6 +298,12 @@ AliAnalysisTaskCheckCascadePbPb::AliAnalysisTaskCheckCascadePbPb(const char *nam
 
   // Output slot #0 writes into a TList container (Cascade)
   DefineOutput(1, TList::Class());
+  DefineOutput(2, AliCFContainer::Class());
+  DefineOutput(3, AliCFContainer::Class());
+  DefineOutput(4, AliCFContainer::Class());
+  DefineOutput(5, AliCFContainer::Class());
+  DefineOutput(6, AliCFContainer::Class());
+
   /*DefineOutput(2, TPaveText::Class());*/
   AliLog::SetClassDebugLevel("AliAnalysisTaskCheckCascadePbPb",1); // MN this should (?) enable only AliFatal
 }
@@ -307,6 +319,12 @@ AliAnalysisTaskCheckCascadePbPb::~AliAnalysisTaskCheckCascadePbPb() {
   // Because of TList::SetOwner() ...
         
   if (fListHistCascade && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())         { delete fListHistCascade;     fListHistCascade = 0x0;    }
+    if (fCFContCascadePIDXiMinus && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDXiMinus;     fCFContCascadePIDXiMinus = 0x0;  }
+  if (fCFContCascadePIDXiPlus && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDXiPlus;     fCFContCascadePIDXiPlus = 0x0;  }
+  if (fCFContCascadePIDOmegaMinus && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDOmegaMinus;     fCFContCascadePIDOmegaMinus = 0x0;  }
+  if (fCFContCascadePIDOmegaPlus && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDOmegaPlus;     fCFContCascadePIDOmegaPlus = 0x0;  }
+  if (fCFContCascadeCuts && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDOmegaPlus;     fCFContCascadeCuts = 0x0;  }
+
   if (fESDtrackCuts)         { delete fESDtrackCuts;        fESDtrackCuts = 0x0; }
   //if (fPaveTextBookKeeping)     { delete fPaveTextBookKeeping; fPaveTextBookKeeping = 0x0;} // fPaveTextBookKeeping is not strored in the TList
 }
@@ -720,6 +738,17 @@ if(! fHistBachTotMomXi ){
        fListHistCascade->Add(fHistBachTotMomXi);
 }
 
+if(! fHistPosTransvMomXi ){
+        fHistPosTransvMomXi  = new TH1F( "fHistPosTransvMomXi" , "#Xi Bach. transverse momentum (cand. around the mass peak) ; p_{t}(Bach.) (GeV/c); Counts", 100, 0.0, 5.0);
+        fListHistCascade->Add(fHistPosTransvMomXi);
+}
+  
+if(! fHistNegTransvMomXi ){
+        fHistNegTransvMomXi  = new TH1F( "fHistNegTransvMomXi" , "#Xi Bach. transverse momentum (cand. around the mass peak) ; p_{t}(Bach.) (GeV/c); Counts", 100, 0.0, 5.0);
+        fListHistCascade->Add(fHistNegTransvMomXi);
+}
+
+
 
 if(! fHistChargeXi ){
        fHistChargeXi  = new TH1F( "fHistChargeXi" , "Charge of casc. candidates ; Sign ; Counts", 5, -2.0, 3.0);
@@ -854,9 +883,6 @@ if(!fCFContCascadePIDXiMinus)  {
   fCFContCascadePIDXiMinus->SetVarTitle(1, "M( #Lambda , #pi^{-} ) (GeV/c^{2})");
   fCFContCascadePIDXiMinus->SetVarTitle(2, "Y_{#Xi}");
   fCFContCascadePIDXiMinus->SetVarTitle(3, "Centrality");
-  
-  fListHistCascade->Add(fCFContCascadePIDXiMinus);
-  
 }
 
 if (!fCFContCascadePIDXiPlus) {
@@ -898,9 +924,6 @@ if (!fCFContCascadePIDXiPlus) {
   fCFContCascadePIDXiPlus->SetVarTitle(1, "M( #Lambda , #pi^{+} ) (GeV/c^{2})");
   fCFContCascadePIDXiPlus->SetVarTitle(2, "Y_{#Xi}");
   fCFContCascadePIDXiPlus->SetVarTitle(3, "Centrality");
-  
-  fListHistCascade->Add(fCFContCascadePIDXiPlus);
-  
 }
 
 
@@ -943,9 +966,6 @@ if(!fCFContCascadePIDOmegaMinus)  {
   fCFContCascadePIDOmegaMinus->SetVarTitle(1, "M( #Lambda , K^{-} ) (GeV/c^{2})");
   fCFContCascadePIDOmegaMinus->SetVarTitle(2, "Y_{#Omega}");
   fCFContCascadePIDOmegaMinus->SetVarTitle(3, "Centrality"); 
-  
-  fListHistCascade->Add(fCFContCascadePIDOmegaMinus);
-  
 }
 
 if(!fCFContCascadePIDOmegaPlus)  {
@@ -988,9 +1008,6 @@ if(!fCFContCascadePIDOmegaPlus)  {
   fCFContCascadePIDOmegaPlus->SetVarTitle(1, "M( #Lambda , K^{+} ) (GeV/c^{2})");
   fCFContCascadePIDOmegaPlus->SetVarTitle(2, "Y_{#Omega}");
   fCFContCascadePIDOmegaPlus->SetVarTitle(3, "SPD tracklets Multiplicity"); 
-  
-  fListHistCascade->Add(fCFContCascadePIDOmegaPlus);
-  
 }
 
 
@@ -1146,7 +1163,6 @@ if(! fCFContCascadeCuts) {
   fCFContCascadeCuts->SetVarTitle(20, "Proper time V0");
   fCFContCascadeCuts->SetVarTitle(21, "Distance V0-Xi in transverse plane");
   
-  fListHistCascade->Add(fCFContCascadeCuts);
 }
 
   fV0Ampl = new TH1F("fV0Ampl","",500,0.,30000);
@@ -1167,6 +1183,12 @@ if(! fCFContCascadeCuts) {
         fListHistCascade->Add(fHistDcaV0ToPrimVertexXivsInvMass);
 
 PostData(1, fListHistCascade);
+PostData(2, fCFContCascadePIDXiMinus);
+PostData(3, fCFContCascadePIDXiPlus);
+PostData(4, fCFContCascadePIDOmegaMinus);
+PostData(5, fCFContCascadePIDOmegaPlus);
+PostData(6, fCFContCascadeCuts);
+
 /* PostData(2, fPaveTextBookKeeping);*/
 }// end UserCreateOutputObjects
 
@@ -1299,11 +1321,23 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
     lcentrality = centrality->GetCentralityPercentileUnchecked(fCentrEstimator.Data());
     if (centrality->GetQuality()>1) {
       PostData(1, fListHistCascade);
+      PostData(2, fCFContCascadePIDXiMinus);
+      PostData(3, fCFContCascadePIDXiPlus);
+      PostData(4, fCFContCascadePIDOmegaMinus);
+      PostData(5, fCFContCascadePIDOmegaPlus);
+      PostData(6, fCFContCascadeCuts);
+
       return;
     }
   }
   if (lcentrality<fCentrLowLim||lcentrality>=fCentrUpLim) { 
     PostData(1, fListHistCascade);
+    PostData(2, fCFContCascadePIDXiMinus);
+    PostData(3, fCFContCascadePIDXiPlus);
+    PostData(4, fCFContCascadePIDOmegaMinus);
+    PostData(5, fCFContCascadePIDOmegaPlus);
+    PostData(6, fCFContCascadeCuts);
+
     return;
   }
 
@@ -1341,6 +1375,12 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
       if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtx->GetStatus() ){
         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;
       }
     }
@@ -1362,6 +1402,12 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
     if (!lPrimaryBestAODVtx){
         AliWarning("No prim. vertex in AOD... return!");
         PostData(1, fListHistCascade);
+        PostData(2, fCFContCascadePIDXiMinus);
+        PostData(3, fCFContCascadePIDXiPlus);
+        PostData(4, fCFContCascadePIDOmegaMinus);
+        PostData(5, fCFContCascadePIDOmegaPlus);
+        PostData(6, fCFContCascadeCuts);
+
         return;
     }
        
@@ -1382,6 +1428,12 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
     if (TMath::Abs(lBestPrimaryVtxPos[2]) > fVtxRange ) {
       AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
       PostData(1, fListHistCascade);
+      PostData(2, fCFContCascadePIDXiMinus);
+      PostData(3, fCFContCascadePIDXiPlus);
+      PostData(4, fCFContCascadePIDOmegaMinus);
+      PostData(5, fCFContCascadePIDOmegaPlus);
+      PostData(6, fCFContCascadeCuts);
+
       return;
     }
   }
@@ -1486,6 +1538,9 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
     Double_t lBachMomX       = 0., lBachMomY  = 0., lBachMomZ   = 0.;
     Double_t lBachTransvMom  = 0.;
     Double_t lBachTotMom     = 0.;
+
+    Double_t lpTrackTransvMom  = 0.;
+    Double_t lnTrackTransvMom  = 0.;
        
     Short_t  lChargeXi = -2;
        
@@ -1755,6 +1810,10 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
       lBachTransvMom  = TMath::Sqrt( lBachMomX*lBachMomX   + lBachMomY*lBachMomY );
       lBachTotMom      = TMath::Sqrt( lBachMomX*lBachMomX   + lBachMomY*lBachMomY  +  lBachMomZ*lBachMomZ  );
 
+      lnTrackTransvMom = TMath::Sqrt( lV0NMomX*lV0NMomX   + lV0NMomY*lV0NMomY );
+      lpTrackTransvMom = TMath::Sqrt( lV0PMomX*lV0PMomX   + lV0PMomY*lV0PMomY );
+
+
       lChargeXi = xi->Charge();
 
       lV0toXiCosineOfPointingAngle = xi->GetV0CosineOfPointingAngle( lPosXi[0], lPosXi[1], lPosXi[2] );
@@ -1961,6 +2020,13 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
       lBachTransvMom  = TMath::Sqrt( lBachMomX*lBachMomX   + lBachMomY*lBachMomY );
       lBachTotMom      = TMath::Sqrt( lBachMomX*lBachMomX   + lBachMomY*lBachMomY  +  lBachMomZ*lBachMomZ  );
 
+      lV0NMomX = xi->MomNegX();
+      lV0NMomY = xi->MomNegY();
+      lV0PMomX = xi->MomPosX();
+      lV0PMomY = xi->MomPosY(); 
+
+      lnTrackTransvMom = TMath::Sqrt( lV0NMomX*lV0NMomX   + lV0NMomY*lV0NMomY );
+      lpTrackTransvMom = TMath::Sqrt( lV0PMomX*lV0PMomX   + lV0PMomY*lV0PMomY );
        
       lV0toXiCosineOfPointingAngle = xi->CosPointingAngle( xi->GetDecayVertexXi() );
 
@@ -1977,6 +2043,11 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
        
     }// end of AOD treatment
 
+    // Cut on pt of the three daughter tracks
+    if (lBachTransvMom<fMinPtCutOnDaughterTracks) continue;
+    if (lpTrackTransvMom<fMinPtCutOnDaughterTracks) continue;
+    if (lnTrackTransvMom<fMinPtCutOnDaughterTracks) continue;
+
 
     // Calculate proper time for cascade
 
@@ -2110,6 +2181,8 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
         fHistXiTotMom           ->Fill( lXiTotMom      );
         
         fHistBachTransvMomXi    ->Fill( lBachTransvMom );
+        fHistPosTransvMomXi    ->Fill( lpTrackTransvMom );
+        fHistNegTransvMomXi    ->Fill( lnTrackTransvMom );
         fHistBachTotMomXi       ->Fill( lBachTotMom    );
         
         fHistRapXi              ->Fill( lRapXi         );
@@ -2381,6 +2454,11 @@ void AliAnalysisTaskCheckCascadePbPb::UserExec(Option_t *) {
   
   // Post output data.
  PostData(1, fListHistCascade);
+ PostData(2, fCFContCascadePIDXiMinus);
+ PostData(3, fCFContCascadePIDXiPlus);
+ PostData(4, fCFContCascadePIDOmegaMinus);
+ PostData(5, fCFContCascadePIDOmegaPlus);   
+ PostData(6, fCFContCascadeCuts); 
 }
 
 //________________________________________________________________________
index 0467dbc..e819e2f 100644 (file)
@@ -62,6 +62,7 @@ class AliAnalysisTaskCheckCascadePbPb : public AliAnalysisTaskSE {
   void SetCentralityEst              (TString   centrest                = "V0M") { fCentrEstimator              = centrest;                   }
   void SetUseCleaning                (Bool_t   usecleaning              = kTRUE) { fkUseCleaning                = usecleaning;                }
   void SetVertexRange                (Float_t vtxrange                  = 0.   ) { fVtxRange                    = vtxrange;                   }
+  void SetMinptCutOnDaughterTracks   (Float_t minptdaughtrks            = 0.   ) { fMinPtCutOnDaughterTracks    = minptdaughtrks;             }
 
  private:
         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
@@ -86,7 +87,7 @@ class AliAnalysisTaskCheckCascadePbPb : public AliAnalysisTaskSE {
         TString         fCentrEstimator;                // string for the centrality estimator
         Bool_t          fkUseCleaning;                  // Boolean : kTRUE = uses all the cleaning criteria of centrality selections (vertex cut + outliers) otherwise only outliers
         Float_t         fVtxRange;                      // to select events with |zvtx|<fVtxRange cm
-
+        Float_t         fMinPtCutOnDaughterTracks;      // minimum pt cut on daughter tracks
        
         Double_t        fV0Sels[7];                     // Array to store the 7 values for the different selections V0 related (if fkRerunV0CascVertexers)
         Double_t        fCascSels[8];                   // Array to store the 8 values for the different selections Casc. related (if fkRerunV0CascVertexers)
@@ -94,8 +95,8 @@ class AliAnalysisTaskCheckCascadePbPb : public AliAnalysisTaskSE {
         TList      *fListHistCascade;                   //! List of Cascade histograms
         
         // - General histos (filled before the trigger selection)
-        TH2F    *fHistEvtsInCentralityBinsvsNtracks;  //! Events in centrality bins vs N ESDtracks
-        TH1F    *fHistCascadeMultiplicityBeforeEvSel; //! Cascade multiplicity distribution
+        TH2F    *fHistEvtsInCentralityBinsvsNtracks;    //! Events in centrality bins vs N ESDtracks
+        TH1F    *fHistCascadeMultiplicityBeforeEvSel;   //! Cascade multiplicity distribution
          
         // - General histos (filled for any triggered event)
         TH1F    *fHistCascadeMultiplicityForCentrEvt;              //! Cascade multiplicity distribution
@@ -174,6 +175,8 @@ class AliAnalysisTaskCheckCascadePbPb : public AliAnalysisTaskSE {
        
        TH1F    *fHistBachTransvMomXi;                  //! bachelor transverse momentum, for cand. around the mass peak of Xi-/+
        TH1F    *fHistBachTotMomXi;                     //! bachelor momentum norm, for cand. around the mass peak of Xi-/+
+        TH1F    *fHistPosTransvMomXi;                   //! positive daughter transverse momentum, for cand. around the mass peak of Xi-/+
+        TH1F    *fHistNegTransvMomXi;                   //! negative daughter transverse momentum, for cand. around the mass peak of Xi-/+
 
        TH1F    *fHistChargeXi;                         //! Charge sign of the cascade candidate
        TH1F    *fHistV0toXiCosineOfPointingAngle;      //! Cos. of Pointing angle between the V0 mom and the Xi-V0 vtx line
@@ -238,7 +241,7 @@ class AliAnalysisTaskCheckCascadePbPb : public AliAnalysisTaskSE {
   AliAnalysisTaskCheckCascadePbPb(const AliAnalysisTaskCheckCascadePbPb&);            // not implemented
   AliAnalysisTaskCheckCascadePbPb& operator=(const AliAnalysisTaskCheckCascadePbPb&); // not implemented
   
-  ClassDef(AliAnalysisTaskCheckCascadePbPb, 5);
+  ClassDef(AliAnalysisTaskCheckCascadePbPb, 6);
 };
 
 #endif
index ce8707e..1016dce 100644 (file)
@@ -32,6 +32,8 @@
 //                        - cos of PA V0 wrt Xi vertex and not primary vertex  
 //                        - distance xi-V0 added in the container
 //                        - AOD analysis developed (January 2012)
+//                        - cut on TPC clusters as a parameter
+//                        - cut on min pt of daughter tracks added (parameter)  
 //-----------------------------------------------------------------
 
 
@@ -98,7 +100,7 @@ AliAnalysisTaskCheckPerformanceCascadePbPb::AliAnalysisTaskCheckPerformanceCasca
     fCentrLowLim(0),    fCentrUpLim(0), fCentrEstimator(0), fkUseCleaning(0),
     fVtxRange                      (0),
     fApplyAccCut                   (0),
-
+    fMinPtCutOnDaughterTracks      (0),
     
        // - Cascade part initialisation
     fListHistCascade(0),
@@ -157,7 +159,10 @@ AliAnalysisTaskCheckPerformanceCascadePbPb::AliAnalysisTaskCheckPerformanceCasca
     fHistPtMesDghterXiMinus(0),
     fHistPtBarDghterXiMinus(0),
    
-   
+    fHistPtRecBachXiMinus(0),
+    fHistPtRecMesDghterXiMinus(0),
+    fHistPtRecBarDghterXiMinus(0),
+
    // Xi+
    fHistEtaGenCascXiPlus(0),
    f3dHistGenPtVsGenYvsCentXiPlusNat(0),
@@ -180,7 +185,7 @@ AliAnalysisTaskCheckPerformanceCascadePbPb::AliAnalysisTaskCheckPerformanceCasca
     fHistPtBachXiPlus(0),
     fHistPtMesDghterXiPlus(0),
     fHistPtBarDghterXiPlus(0),
-   
+  
    // Omega-
    fHistEtaGenCascOmegaMinus(0),
    f3dHistGenPtVsGenYvsCentOmegaMinusNat(0),
@@ -204,7 +209,6 @@ AliAnalysisTaskCheckPerformanceCascadePbPb::AliAnalysisTaskCheckPerformanceCasca
     fHistPtMesDghterOmegaMinus(0),
     fHistPtBarDghterOmegaMinus(0),
    
-   
    // Omega+
    fHistEtaGenCascOmegaPlus(0),
    f3dHistGenPtVsGenYvsCentOmegaPlusNat(0),
@@ -334,7 +338,7 @@ AliAnalysisTaskCheckPerformanceCascadePbPb::AliAnalysisTaskCheckPerformanceCasca
     fCentrLowLim(0), fCentrUpLim(0), fCentrEstimator(0), fkUseCleaning(0),
     fVtxRange                      (0),
     fApplyAccCut                   (0),
-
+    fMinPtCutOnDaughterTracks      (0),
       
        // - Cascade part initialisation
     fListHistCascade(0),
@@ -392,7 +396,10 @@ AliAnalysisTaskCheckPerformanceCascadePbPb::AliAnalysisTaskCheckPerformanceCasca
     fHistPtMesDghterXiMinus(0),
     fHistPtBarDghterXiMinus(0),
    
-   
+    fHistPtRecBachXiMinus(0),
+    fHistPtRecMesDghterXiMinus(0),
+    fHistPtRecBarDghterXiMinus(0),
    // Xi+
    fHistEtaGenCascXiPlus(0),
   f3dHistGenPtVsGenYvsCentXiPlusNat(0),
@@ -439,7 +446,6 @@ AliAnalysisTaskCheckPerformanceCascadePbPb::AliAnalysisTaskCheckPerformanceCasca
     fHistPtMesDghterOmegaMinus(0),
     fHistPtBarDghterOmegaMinus(0),
    
-   
    // Omega+
    fHistEtaGenCascOmegaPlus(0),
    f3dHistGenPtVsGenYvsCentOmegaPlusNat(0),
@@ -572,7 +578,12 @@ AliAnalysisTaskCheckPerformanceCascadePbPb::AliAnalysisTaskCheckPerformanceCasca
         
         
   DefineOutput(1, TList::Class());
+  DefineOutput(2, AliCFContainer::Class());
+  DefineOutput(3, AliCFContainer::Class());
+  DefineOutput(4, AliCFContainer::Class());
+  DefineOutput(5, AliCFContainer::Class());
+  DefineOutput(6, AliCFContainer::Class()); 
+
 }
 
 
@@ -587,6 +598,12 @@ AliAnalysisTaskCheckPerformanceCascadePbPb::~AliAnalysisTaskCheckPerformanceCasc
   // Because of TList::SetOwner()
 
   if (fListHistCascade && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())      { delete fListHistCascade;     fListHistCascade = 0x0;  }  
+  if (fCFContCascadePIDAsXiMinus && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDAsXiMinus;     fCFContCascadePIDAsXiMinus = 0x0;  }
+  if (fCFContCascadePIDAsXiPlus && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDAsXiPlus;     fCFContCascadePIDAsXiPlus = 0x0;  }
+  if (fCFContCascadePIDAsOmegaMinus && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDAsOmegaMinus;     fCFContCascadePIDAsOmegaMinus = 0x0;  }
+  if (fCFContCascadePIDAsOmegaPlus && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDAsOmegaPlus;     fCFContCascadePIDAsOmegaPlus = 0x0;  }
+  if (fCFContAsCascadeCuts && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) { delete fCFContCascadePIDAsOmegaPlus;     fCFContAsCascadeCuts = 0x0;  }
+
   if (fESDtrackCuts)         { delete fESDtrackCuts;        fESDtrackCuts = 0x0; }
   /*if (fPaveTextBookKeeping)  { delete fPaveTextBookKeeping; fPaveTextBookKeeping = 0x0; } // fPaveTextBookKeeping is not stored into the TList*/
 }
@@ -846,7 +863,24 @@ if( !fPaveTextBookKeeping){
      fListHistCascade->Add(fHistPtBarDghterXiMinus);
   }
   
-  
+  if (!fHistPtRecBachXiMinus) {
+     fHistPtRecBachXiMinus = new TH1F("fHistPtRecBachXiMinus", "p_{t} of Bach.;pt_{Bach};Number of Bach.", 200, 0, 10);
+     fListHistCascade->Add(fHistPtRecBachXiMinus);
+  }
+
+  if (!fHistPtRecMesDghterXiMinus) {
+     fHistPtRecMesDghterXiMinus = new TH1F("fHistPtRecMesDghterXiMinus", "p_{t} of Meson #Lambda dghter;pt_{MesDght};Number of Mes.", 200, 0, 10);
+     fListHistCascade->Add(fHistPtRecMesDghterXiMinus);
+  }
+
+  if (!fHistPtRecBarDghterXiMinus) {
+     fHistPtRecBarDghterXiMinus = new TH1F("fHistPtRecBarDghterXiMinus", "p_{t} of Baryon #Lambda dghter;pt_{BarDght};Number of Bar.", 200, 0, 10);
+     fListHistCascade->Add(fHistPtRecBarDghterXiMinus);
+  }
+
+
   
   //--------
   // II - Xi+ 
@@ -1437,9 +1471,6 @@ if(! fCFContCascadePIDAsXiMinus)  {
   fCFContCascadePIDAsXiMinus->SetVarTitle(1, "M( #Lambda , #pi^{-} ) (GeV/c^{2})");
   fCFContCascadePIDAsXiMinus->SetVarTitle(2, "Y_{#Xi}");
   fCFContCascadePIDAsXiMinus->SetVarTitle(3, "Centrality");
-
-  fListHistCascade->Add(fCFContCascadePIDAsXiMinus);
-  
 }
 
 if(! fCFContCascadePIDAsXiPlus)  {
@@ -1481,9 +1512,6 @@ if(! fCFContCascadePIDAsXiPlus)  {
   fCFContCascadePIDAsXiPlus->SetVarTitle(1, "M( #Lambda , #pi^{+} ) (GeV/c^{2})");
   fCFContCascadePIDAsXiPlus->SetVarTitle(2, "Y_{#Xi}");
   fCFContCascadePIDAsXiPlus->SetVarTitle(3, "Centrality");
-  
-  fListHistCascade->Add(fCFContCascadePIDAsXiPlus);
-  
 }
 
 
@@ -1526,9 +1554,6 @@ if(! fCFContCascadePIDAsOmegaMinus)  {
   fCFContCascadePIDAsOmegaMinus->SetVarTitle(1, "M( #Lambda , K^{-} ) (GeV/c^{2})");
   fCFContCascadePIDAsOmegaMinus->SetVarTitle(2, "Y_{#Omega}");
   fCFContCascadePIDAsOmegaMinus->SetVarTitle(3, "Centrality");
-  
-  fListHistCascade->Add(fCFContCascadePIDAsOmegaMinus);
-  
 }
 
 if(! fCFContCascadePIDAsOmegaPlus)  {
@@ -1571,7 +1596,7 @@ if(! fCFContCascadePIDAsOmegaPlus)  {
   fCFContCascadePIDAsOmegaPlus->SetVarTitle(2, "Y_{#Omega}");
   fCFContCascadePIDAsOmegaPlus->SetVarTitle(3, "Centrality");
   
-  fListHistCascade->Add(fCFContCascadePIDAsOmegaPlus);
+//  fListHistCascade->Add(fCFContCascadePIDAsOmegaPlus);
   
 }
 
@@ -1722,8 +1747,6 @@ if(! fCFContAsCascadeCuts){
   fCFContAsCascadeCuts->SetVarTitle(19, "Proper time cascade");
   fCFContAsCascadeCuts->SetVarTitle(20, "Proper time V0"); 
   fCFContAsCascadeCuts->SetVarTitle(21, "Distance V0-Xi in the transverse plane");
-
-  fListHistCascade->Add(fCFContAsCascadeCuts);
 }
 
   fV0Ampl = new TH1F("fV0Ampl","",500,0.,30000);
@@ -1731,6 +1754,12 @@ if(! fCFContAsCascadeCuts){
 
 
 PostData(1, fListHistCascade); 
+PostData(2, fCFContCascadePIDAsXiMinus);
+PostData(3, fCFContCascadePIDAsXiPlus);
+PostData(4, fCFContCascadePIDAsOmegaMinus);
+PostData(5, fCFContCascadePIDAsOmegaPlus);
+PostData(6, fCFContAsCascadeCuts);
+
 }// end CreateOutputObjects
 
 
@@ -1849,7 +1878,13 @@ void AliAnalysisTaskCheckPerformanceCascadePbPb::UserExec(Option_t *) {
           if (fkRejectEventPileUp) {
             if (lESDevent->IsPileupFromSPD() ) {// minContributors=3, minZdist=0.8, nSigmaZdist=3., nSigmaDiamXY=2., nSigmaDiamZ=5.  -> see http://alisoft.cern.ch/viewvc/trunk/STEER/AliESDEvent.h?root=AliRoot&r1=41914&r2=42199&pathrev=42199
               AliWarning("Pb / Event tagged as pile-up by SPD... return !"); 
-              PostData(1, fListHistCascade); 
+              PostData(1, fListHistCascade);
+              PostData(2, fCFContCascadePIDAsXiMinus);
+              PostData(3, fCFContCascadePIDAsXiPlus);
+              PostData(4, fCFContCascadePIDAsOmegaMinus);
+              PostData(5, fCFContCascadePIDAsOmegaPlus);
+              PostData(6, fCFContAsCascadeCuts);
               return; 
             }
           }
@@ -1858,6 +1893,12 @@ void AliAnalysisTaskCheckPerformanceCascadePbPb::UserExec(Option_t *) {
             if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingVtx->GetStatus() ){
               AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
               PostData(1, fListHistCascade); 
+              PostData(2, fCFContCascadePIDAsXiMinus);
+              PostData(3, fCFContCascadePIDAsXiPlus);
+              PostData(4, fCFContCascadePIDAsOmegaMinus);
+              PostData(5, fCFContCascadePIDAsOmegaPlus);
+              PostData(6, fCFContAsCascadeCuts);
+   
               return;
             }
           }
@@ -1886,6 +1927,12 @@ void AliAnalysisTaskCheckPerformanceCascadePbPb::UserExec(Option_t *) {
           if (!lPrimaryBestAODVtx) {
             AliWarning("No prim. vertex in AOD... return!");
             PostData(1, fListHistCascade);
+            PostData(2, fCFContCascadePIDAsXiMinus);
+            PostData(3, fCFContCascadePIDAsXiPlus);
+            PostData(4, fCFContCascadePIDAsOmegaMinus);
+            PostData(5, fCFContCascadePIDAsOmegaPlus);
+            PostData(6, fCFContAsCascadeCuts);
             return;
           }
 
@@ -1919,6 +1966,12 @@ void AliAnalysisTaskCheckPerformanceCascadePbPb::UserExec(Option_t *) {
           if (TMath::Abs(lBestPrimaryVtxPos[2]) > fVtxRange ) {
             AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
             PostData(1, fListHistCascade);
+            PostData(2, fCFContCascadePIDAsXiMinus);
+            PostData(3, fCFContCascadePIDAsXiPlus);
+            PostData(4, fCFContCascadePIDAsOmegaMinus);
+            PostData(5, fCFContCascadePIDAsOmegaPlus);
+            PostData(6, fCFContAsCascadeCuts);
+
             return;
           }
         }
@@ -1934,6 +1987,12 @@ void AliAnalysisTaskCheckPerformanceCascadePbPb::UserExec(Option_t *) {
           lcentrality = centrality->GetCentralityPercentileUnchecked(fCentrEstimator.Data());
           if (centrality->GetQuality()>1) {
             PostData(1, fListHistCascade);
+            PostData(2, fCFContCascadePIDAsXiMinus);
+            PostData(3, fCFContCascadePIDAsXiPlus);
+            PostData(4, fCFContCascadePIDAsOmegaMinus);
+            PostData(5, fCFContCascadePIDAsOmegaPlus);
+            PostData(6, fCFContAsCascadeCuts);
+
             return;
           } 
         }
@@ -1944,6 +2003,12 @@ void AliAnalysisTaskCheckPerformanceCascadePbPb::UserExec(Option_t *) {
 
         if (nNumberOfMCPrimaries < 1) {
           PostData(1, fListHistCascade);
+          PostData(2, fCFContCascadePIDAsXiMinus);
+          PostData(3, fCFContCascadePIDAsXiPlus);
+          PostData(4, fCFContCascadePIDAsOmegaMinus);
+          PostData(5, fCFContCascadePIDAsOmegaPlus);
+          PostData(6, fCFContAsCascadeCuts);
+  
           return; // should be useless because we require vertex and centrality selection 
         }
 
@@ -2617,6 +2682,11 @@ Double_t lrecoTransvRadius = -1000.;
 
 Double_t lDeltaPhiMcReco = -1.;
 
+
+Double_t lBachTransvMom = 0.;
+Double_t lpTrackTransvMom  = 0.;
+Double_t lnTrackTransvMom  = 0.;
+
 Double_t lmcPtPosV0Dghter = -100.;
 Double_t lmcPtNegV0Dghter = -100.;
 Double_t lrecoP = -100.;
@@ -3135,7 +3205,15 @@ for (Int_t iXi = 0; iXi < ncascades; iXi++) {// This is the begining of the Casc
         xiESD->GetNPxPyPz(nV0mom[0],nV0mom[1],nV0mom[2]);    
         xiESD->GetPPxPyPz(pV0mom[0],pV0mom[1],pV0mom[2]);
 
-        lV0mom = TMath::Sqrt(TMath::Power(nV0mom[0]+pV0mom[0],2)+TMath::Power(nV0mom[1]+pV0mom[1],2)+TMath::Power(nV0mom[2]+pV0mom[2],2)); 
+        lV0mom = TMath::Sqrt(TMath::Power(nV0mom[0]+pV0mom[0],2)+TMath::Power(nV0mom[1]+pV0mom[1],2)+TMath::Power(nV0mom[2]+pV0mom[2],2));
+
+        Double_t lBachMomX = 0.; Double_t lBachMomY = 0.; Double_t lBachMomZ = 0.;
+        xiESD->GetBPxPyPz(  lBachMomX,  lBachMomY,  lBachMomZ );
+        lBachTransvMom   = TMath::Sqrt( lBachMomX*lBachMomX   + lBachMomY*lBachMomY );
+
+        lnTrackTransvMom = TMath::Sqrt( nV0mom[0]*nV0mom[0] + nV0mom[1]*nV0mom[1] );
+        lpTrackTransvMom = TMath::Sqrt( pV0mom[0]*pV0mom[0] + pV0mom[1]*pV0mom[1] );
 
       } else if ( fAnalysisType == "AOD" ) {
 
@@ -3453,11 +3531,32 @@ for (Int_t iXi = 0; iXi < ncascades; iXi++) {// This is the begining of the Casc
         Double_t lV0momZ = xiAOD->MomV0Z();
         lV0mom = TMath::Sqrt(TMath::Power(lV0momX,2)+TMath::Power(lV0momY,2)+TMath::Power(lV0momZ,2));
 
+
+        Double_t lBachMomX = xiAOD->MomBachX();
+        Double_t lBachMomY = xiAOD->MomBachY();
+        lBachTransvMom  = TMath::Sqrt( lBachMomX*lBachMomX   + lBachMomY*lBachMomY );
+  
+        Double_t lV0NMomX = xiAOD->MomNegX();
+        Double_t lV0NMomY = xiAOD->MomNegY();
+        Double_t lV0PMomX = xiAOD->MomPosX();
+        Double_t lV0PMomY = xiAOD->MomPosY();
+
+        lnTrackTransvMom = TMath::Sqrt( lV0NMomX*lV0NMomX   + lV0NMomY*lV0NMomY );
+        lpTrackTransvMom = TMath::Sqrt( lV0PMomX*lV0PMomX   + lV0PMomY*lV0PMomY );
+
+
       }
 
       lXiRadius                       = TMath::Sqrt( lPosXi[0]*lPosXi[0]  +  lPosXi[1]*lPosXi[1] );
       lV0RadiusXi                     = TMath::Sqrt( lPosV0Xi[0]*lPosV0Xi[0]  +  lPosV0Xi[1]*lPosV0Xi[1] ); 
 
+
+      // Cut on pt of the three daughter tracks
+      if (lBachTransvMom<fMinPtCutOnDaughterTracks) continue;
+      if (lpTrackTransvMom<fMinPtCutOnDaughterTracks) continue;
+      if (lnTrackTransvMom<fMinPtCutOnDaughterTracks) continue;
+
+
       // Extra-selection for cascade candidates
                 // Towards optimisation of AA selection
       if (fkExtraSelections) {
@@ -3508,7 +3607,14 @@ for (Int_t iXi = 0; iXi < ncascades; iXi++) {// This is the begining of the Casc
 
 
       if(!lAssoXiMinus && !lAssoXiPlus && !lAssoOmegaMinus && !lAssoOmegaPlus) continue; // no association, skip the rest of the code
-         
+        
+      // - Fill pt histos. xim only!!
+      if (lAssoXiMinus) {
+        fHistPtRecBachXiMinus->Fill(lBachTransvMom);
+        fHistPtRecMesDghterXiMinus->Fill(lpTrackTransvMom);
+        fHistPtRecBarDghterXiMinus->Fill(lnTrackTransvMom);
+      }
         // Calculate proper time for cascade (reconstructed)
          
         Double_t lctau =  TMath::Sqrt(TMath::Power((lPosXi[0]-lBestPrimaryVtxPos[0]),2)+TMath::Power((lPosXi[1]-lBestPrimaryVtxPos[1]),2)+TMath::Power((lPosXi[2]-lBestPrimaryVtxPos[2]),2));
@@ -3805,6 +3911,12 @@ fHistnAssoOmegaPlus->Fill(nAssoOmegaPlus);
  
   // Post output data.
  PostData(1, fListHistCascade);
+ PostData(2, fCFContCascadePIDAsXiMinus);
+ PostData(3, fCFContCascadePIDAsXiPlus);
+ PostData(4, fCFContCascadePIDAsOmegaMinus);
+ PostData(5, fCFContCascadePIDAsOmegaPlus);
+ PostData(6, fCFContAsCascadeCuts);
+
 }      
 
 
@@ -3827,7 +3939,7 @@ void AliAnalysisTaskCheckPerformanceCascadePbPb::Terminate(Option_t *) {
   }
   
    
-  TCanvas *canCheckPerformanceCascade = new TCanvas("AliAnalysisTaskCheckPerformanceCascadePbPb","Multiplicity",10,10,510,510);
+  TCanvas *canCheckPerformanceCascade = new TCanvas("CheckPerformanceCascadePbPb","Multiplicity",10,10,510,510);
   canCheckPerformanceCascade->cd(1)->SetLogy();
 
   fHistMCTrackMultiplicity->SetMarkerStyle(22);
index 34a6c95..b34b3ac 100644 (file)
@@ -35,20 +35,21 @@ class AliAnalysisTaskCheckPerformanceCascadePbPb : public AliAnalysisTaskSE {
   
   void SetAnalysisType     (const char* analysisType    = "ESD") { fAnalysisType     = analysisType;}
   
-  void SetRelaunchV0CascVertexers    (Bool_t rerunV0CascVertexers       = 0    ) { fkRerunV0CascVertexers         =  rerunV0CascVertexers;      }
-  void SetQualityCutZprimVtxPos      (Bool_t qualityCutZprimVtxPos      = kTRUE) { fkQualityCutZprimVtxPos        =  qualityCutZprimVtxPos;     }
-  void SetRejectEventPileUp          (Bool_t rejectPileUp               = kTRUE) { fkRejectEventPileUp            =  rejectPileUp;              }
-  void SetQualityCutNoTPConlyPrimVtx (Bool_t qualityCutNoTPConlyPrimVtx = kTRUE) { fkQualityCutNoTPConlyPrimVtx   =  qualityCutNoTPConlyPrimVtx;}
-  void SetQualityCutTPCrefit         (Bool_t qualityCutTPCrefit         = kTRUE) { fkQualityCutTPCrefit           =  qualityCutTPCrefit;        }
-  void SetQualityCutnTPCcls          (Bool_t qualityCutnTPCcls          = kTRUE) { fkQualityCutnTPCcls            = qualityCutnTPCcls;          }
-  void SetQualityCutMinnTPCcls       (Int_t minnTPCcls                  = 70   ) { fMinnTPCcls                    = minnTPCcls;                 }
-  void SetExtraSelections            (Bool_t extraSelections            = 0    ) { fkExtraSelections              =  extraSelections;           }
-  void SetCentralityLowLim           (Float_t centrlowlim               = 0.   ) { fCentrLowLim                   = centrlowlim;                }
-  void SetCentralityUpLim            (Float_t centruplim                = 100. ) { fCentrUpLim                    = centruplim;                 }
-  void SetCentralityEst              (TString centrest                  = "V0M") { fCentrEstimator                = centrest;                   }  
-  void SetUseCleaning                (Bool_t   usecleaning              = kTRUE) { fkUseCleaning                = usecleaning;                }
-  void SetVertexRange                (Float_t vtxrange                  = 0.   ) { fVtxRange                      = vtxrange;                   }
-  void SetApplyAccCut                (Bool_t acccut                     = kFALSE){ fApplyAccCut                   = acccut;                     }    
+  void SetRelaunchV0CascVertexers    (Bool_t rerunV0CascVertexers       = 0    ) { fkRerunV0CascVertexers         = rerunV0CascVertexers;      }
+  void SetQualityCutZprimVtxPos      (Bool_t qualityCutZprimVtxPos      = kTRUE) { fkQualityCutZprimVtxPos        = qualityCutZprimVtxPos;     }
+  void SetRejectEventPileUp          (Bool_t rejectPileUp               = kTRUE) { fkRejectEventPileUp            = rejectPileUp;              }
+  void SetQualityCutNoTPConlyPrimVtx (Bool_t qualityCutNoTPConlyPrimVtx = kTRUE) { fkQualityCutNoTPConlyPrimVtx   = qualityCutNoTPConlyPrimVtx;}
+  void SetQualityCutTPCrefit         (Bool_t qualityCutTPCrefit         = kTRUE) { fkQualityCutTPCrefit           = qualityCutTPCrefit;        }
+  void SetQualityCutnTPCcls          (Bool_t qualityCutnTPCcls          = kTRUE) { fkQualityCutnTPCcls            = qualityCutnTPCcls;         }
+  void SetQualityCutMinnTPCcls       (Int_t minnTPCcls                  = 70   ) { fMinnTPCcls                    = minnTPCcls;                }
+  void SetExtraSelections            (Bool_t extraSelections            = 0    ) { fkExtraSelections              = extraSelections;           }
+  void SetCentralityLowLim           (Float_t centrlowlim               = 0.   ) { fCentrLowLim                   = centrlowlim;               }
+  void SetCentralityUpLim            (Float_t centruplim                = 100. ) { fCentrUpLim                    = centruplim;                }
+  void SetCentralityEst              (TString centrest                  = "V0M") { fCentrEstimator                = centrest;                  }  
+  void SetUseCleaning                (Bool_t   usecleaning              = kTRUE) { fkUseCleaning                  = usecleaning;               }
+  void SetVertexRange                (Float_t vtxrange                  = 0.   ) { fVtxRange                      = vtxrange;                  }
+  void SetApplyAccCut                (Bool_t acccut                     = kFALSE){ fApplyAccCut                   = acccut;                    }    
+  void SetMinptCutOnDaughterTracks   (Float_t minptdaughtrks            = 0.   ) { fMinPtCutOnDaughterTracks      = minptdaughtrks;            }
 
  private:
         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
@@ -74,7 +75,8 @@ class AliAnalysisTaskCheckPerformanceCascadePbPb : public AliAnalysisTaskSE {
         Bool_t          fkUseCleaning;                  // Boolean : kTRUE = uses all the cleaning criteria of centrality selections (vertex cut + outliers) otherwise only outliers
         Float_t         fVtxRange;                      // to select events with |zvtx|<fVtxRange cm
         Bool_t          fApplyAccCut;                   // flag to apply acceptance cuts to MC cascades        
-        
+        Float_t         fMinPtCutOnDaughterTracks;      // minimum pt to cut daughter tracks    
+
         Double_t        fV0Sels[7];                     // Array to store the 7 values for the different selections V0 related (if fkRerunV0CascVertexers)
         Double_t        fCascSels[8];                   // Array to store the 8 values for the different selections Casc. related (if fkRerunV0CascVertexers)
        
@@ -137,6 +139,9 @@ class AliAnalysisTaskCheckPerformanceCascadePbPb : public AliAnalysisTaskSE {
        TH1F    *fHistPtMesDghterXiMinus;               //! MC Pt of the meson daughter of the 'Lambda0', pi-   (Control Plot)
        TH1F    *fHistPtBarDghterXiMinus;               //! MC Pt of the baryon daughter of the 'Lambda0', p+   (Control Plot)
        
+        TH1F    *fHistPtRecBachXiMinus;                 //! Rec Pt of the Bachelor (for Xi-)                    (Control Plot)
+        TH1F    *fHistPtRecMesDghterXiMinus;            //! Rec Pt of the meson daughter of the 'Lambda0', pi-   (Control Plot)
+        TH1F    *fHistPtRecBarDghterXiMinus;            //! Rec Pt of the baryon daughter of the 'Lambda0', p+   (Control Plot)
        
        
        //--------------
@@ -312,7 +317,7 @@ class AliAnalysisTaskCheckPerformanceCascadePbPb : public AliAnalysisTaskSE {
   AliAnalysisTaskCheckPerformanceCascadePbPb(const AliAnalysisTaskCheckPerformanceCascadePbPb&);            // not implemented
   AliAnalysisTaskCheckPerformanceCascadePbPb& operator=(const AliAnalysisTaskCheckPerformanceCascadePbPb&); // not implemented
   
-  ClassDef(AliAnalysisTaskCheckPerformanceCascadePbPb, 5);
+  ClassDef(AliAnalysisTaskCheckPerformanceCascadePbPb, 6);
 };
 
 #endif
index d867afe..7f1b2b3 100644 (file)
@@ -5,7 +5,9 @@ AliAnalysisTaskCheckCascadePbPb *AddTaskCheckCascadePbPb( Int_t    minnTPCcls
                                                           Bool_t   kusecleaning        = kTRUE, 
                                                           Float_t  vtxlim              = 10.,
                                                           Bool_t   kextrasel           = kFALSE,
-                                                          Bool_t   krelaunchvertexers  = kFALSE) {
+                                                          Bool_t   krelaunchvertexers  = kFALSE,
+                                                          Float_t  minptondaughtertracks = 1.) {
+
    // Creates, configures and attaches to the train a cascades check task.
    // Get the pointer to the existing analysis manager via the static access method.
    //==============================================================================
@@ -39,7 +41,7 @@ AliAnalysisTaskCheckCascadePbPb *AddTaskCheckCascadePbPb( Int_t    minnTPCcls
    taskcheckcascadepbpb->SetCentralityEst              (centrest);
    taskcheckcascadepbpb->SetUseCleaning                (kusecleaning);
    taskcheckcascadepbpb->SetVertexRange                (vtxlim);
-
+   taskcheckcascadepbpb->SetMinptCutOnDaughterTracks   (minptondaughtertracks);  
    taskcheckcascadepbpb->SelectCollisionCandidates();
 
    mgr->AddTask(taskcheckcascadepbpb);
@@ -61,9 +63,40 @@ AliAnalysisTaskCheckCascadePbPb *AddTaskCheckCascadePbPb( Int_t    minnTPCcls
                                                             AliAnalysisManager::kOutputContainer,
                                                             outputFileName );
    
+   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("cfcontPIDXiM",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
+   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("cfcontPIDXiP",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
+   AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("cfcontPIDOmegaM",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
+   AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("cfcontPIDOmegaP",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
+   AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("cfcontCuts",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
    
    mgr->ConnectInput( taskcheckcascadepbpb, 0, mgr->GetCommonInputContainer());
    mgr->ConnectOutput(taskcheckcascadepbpb, 1, coutput1);
+   mgr->ConnectOutput(taskcheckcascadepbpb, 1, coutput1);
+   mgr->ConnectOutput(taskcheckcascadepbpb, 2, coutput2);
+   mgr->ConnectOutput(taskcheckcascadepbpb, 3, coutput3);
+   mgr->ConnectOutput(taskcheckcascadepbpb, 4, coutput4);
+   mgr->ConnectOutput(taskcheckcascadepbpb, 5, coutput5);
+   mgr->ConnectOutput(taskcheckcascadepbpb, 6, coutput6);
    
    return taskcheckcascadepbpb;
 }   
index 05781fb..f7d73f1 100644 (file)
@@ -1,18 +1,19 @@
-AliAnalysisTaskCheckPerformanceCascadePbPb *AddTaskCheckPerformanceCascadePbPb( Int_t    minnTPCcls          = 80,
-                                                                                Float_t  centrlowlim         = 0.,
-                                                                                Float_t  centruplim          = 90.,
-                                                                                TString  centrest            = "V0M",
-                                                                                Bool_t   kusecleaning        = kTRUE,
-                                                                                Float_t  vtxlim              = 10.,
-                                                                                Bool_t   kextrasel           = kFALSE,
-                                                                                Bool_t   kacccut             = kFALSE,
-                                                                                Bool_t   krelaunchvertexers  = kFALSE) {
+AliAnalysisTaskCheckPerformanceCascadePbPb *AddTaskCheckPerformanceCascadePbPb( Int_t    minnTPCcls           = 80,
+                                                                                Float_t  centrlowlim          = 0.,
+                                                                                Float_t  centruplim           = 90.,
+                                                                                TString  centrest             = "V0M",
+                                                                                Bool_t   kusecleaning         = kTRUE,
+                                                                                Float_t  vtxlim               = 10.,
+                                                                                Bool_t   kextrasel            = kFALSE,
+                                                                                Bool_t   kacccut              = kFALSE,
+                                                                                Bool_t   krelaunchvertexers   = kFALSE,
+                                                                                Float_t   minptondaughtertracks= 0.     ) {
 // Creates, configures and attaches to the train a cascades check task.
    // Get the pointer to the existing analysis manager via the static access method.
    //==============================================================================
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    if (!mgr) {
-      ::Error("AddTaskCheckPerformanceCascade", "No analysis manager to connect to.");
+      ::Error("AddCheckPerformanceCascade", "No analysis manager to connect to.");
       return NULL;
    }   
 
@@ -25,7 +26,7 @@ AliAnalysisTaskCheckPerformanceCascadePbPb *AddTaskCheckPerformanceCascadePbPb(
    TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
 
    // Create and configure the task
-        AliAnalysisTaskCheckPerformanceCascadePbPb *taskCheckPerfCascadePbPb = new AliAnalysisTaskCheckPerformanceCascadePbPb("TaskCheckPerfCascadePbPb");
+   AliAnalysisTaskCheckPerformanceCascadePbPb *taskCheckPerfCascadePbPb = new AliAnalysisTaskCheckPerformanceCascadePbPb("TaskCheckPerfCascadePbPb");
 
    taskCheckPerfCascadePbPb-> SetAnalysisType                (type);
    taskCheckPerfCascadePbPb-> SetRelaunchV0CascVertexers    (krelaunchvertexers);     
@@ -42,8 +43,8 @@ AliAnalysisTaskCheckPerformanceCascadePbPb *AddTaskCheckPerformanceCascadePbPb(
    taskCheckPerfCascadePbPb-> SetCentralityEst              (centrest);
    taskCheckPerfCascadePbPb-> SetUseCleaning                (kusecleaning);
    taskCheckPerfCascadePbPb-> SetVertexRange                (vtxlim);
-   taskCheckPerfCascadePbPb->SelectCollisionCandidates();   
+   taskCheckPerfCascadePbPb-> SetMinptCutOnDaughterTracks   (minptondaughtertracks); 
+   taskCheckPerfCascadePbPb-> SelectCollisionCandidates();   
  
    mgr->AddTask(taskCheckPerfCascadePbPb);
 
@@ -63,8 +64,40 @@ AliAnalysisTaskCheckPerformanceCascadePbPb *AddTaskCheckPerformanceCascadePbPb(
                                                             AliAnalysisManager::kOutputContainer,
                                                             outputFileName );
 
+   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("cfcontPIDXiM",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
+   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("cfcontPIDXiP",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
+   AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("cfcontPIDOmegaM",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
+   AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("cfcontPIDOmegaP",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
+   AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("cfcontCuts",
+                                                             AliCFContainer::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             outputFileName );
+
+
+
    mgr->ConnectInput( taskCheckPerfCascadePbPb, 0, mgr->GetCommonInputContainer());
    mgr->ConnectOutput(taskCheckPerfCascadePbPb, 1, coutput1);
+   mgr->ConnectOutput(taskCheckPerfCascadePbPb, 2, coutput2);
+   mgr->ConnectOutput(taskCheckPerfCascadePbPb, 3, coutput3);
+   mgr->ConnectOutput(taskCheckPerfCascadePbPb, 4, coutput4);
+   mgr->ConnectOutput(taskCheckPerfCascadePbPb, 5, coutput5);
+   mgr->ConnectOutput(taskCheckPerfCascadePbPb, 6, coutput6);
    
    return taskCheckPerfCascadePbPb;
 }   
index 24f7bd0..833d1ab 100644 (file)
@@ -1,5 +1,6 @@
 /// **** to run the macro: ***********
 // alien-token-init username
+// source /tmp/gclient_env_XXX
 // root -l runGrid.C
 
 class AliAnalysisGrid;
@@ -15,6 +16,7 @@ void runGridCascadePbPb( Bool_t   useMC               = kTRUE,  // kTRUE if anal
                          Bool_t   kextrasel           = kFALSE,
                          Bool_t   kacccut              = kFALSE,
                          Bool_t   krelaunchvertexers  = kFALSE,
+                         Float_t  minptondaughtertracks = 0.,
                          TString  anatype             = "AOD",//"ESD",
                          TString  gridoutputdir       = "LHC10h_AOD086",
                          //the following are used for the Cascade task only
@@ -48,7 +50,6 @@ void runGridCascadePbPb( Bool_t   useMC               = kTRUE,  // kTRUE if anal
   
   //__________________________________________________________________________
   // Create and configure the alien handler plugin
-//  gROOT->LoadMacro("CreateAlienHandler.C");
   AliAnalysisGrid *alienHandler = CreateAlienHandler(plugin_mode, runperformancetask, useMC, anatype, gridoutputdir, datadir, datapattern);
   if (!alienHandler) return;
  
@@ -92,26 +93,15 @@ void runGridCascadePbPb( Bool_t   useMC               = kTRUE,  // kTRUE if anal
   if (runperformancetask) {
     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckPerformanceCascadePbPb.cxx++g");
     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/macros/AddTaskCheckPerformanceCascadePbPb.C");
-    AliAnalysisTaskCheckPerformanceCascadePbPb *task = AddTaskCheckPerformanceCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim,kextrasel ,kacccut ,krelaunchvertexers);
+    AliAnalysisTaskCheckPerformanceCascadePbPb *task = AddTaskCheckPerformanceCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim,kextrasel ,kacccut ,krelaunchvertexers,minptondaughtertracks);
 
   } else {
     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckCascadePbPb.cxx++g");
     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/macros/AddTaskCheckCascadePbPb.C");
-    AliAnalysisTaskCheckCascadePbPb *task = AddTaskCheckCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim, kextrasel ,krelaunchvertexers);
+    AliAnalysisTaskCheckCascadePbPb *task = AddTaskCheckCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim, kextrasel ,krelaunchvertexers,minptondaughtertracks);
 
   }
-
 
-  //Create containers for input/output
-  AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
-  if (runperformancetask) AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist", TList::Class(), AliAnalysisManager::kOutputContainer, "CascadePerformance.root");
-  else AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist", TList::Class(), AliAnalysisManager::kOutputContainer, "Cascades.root");
-  //__________________________________________________________________________
-  // Connect input/output
-  mgr->ConnectInput(task, 0, cinput);
-  mgr->ConnectOutput(task, 1, coutput1);
-  
   //__________________________________________________________________________
   // Disbale debug printouts
   mgr->SetDebugLevel(3);
@@ -145,8 +135,8 @@ AliAnalysisGrid* CreateAlienHandler(const char *plugin_mode, Bool_t runperforman
 
   //__________________________________________________________________________
   // On GRID - current
-  plugin->SetROOTVersion("v5-30-06-1");
-  plugin->SetAliROOTVersion("v5-03-03-AN"); 
+  plugin->SetROOTVersion("v5-33-02b");
+  plugin->SetAliROOTVersion("v5-03-32-AN"); 
 
   //__________________________________________________________________________
   // Declare input data to be processed.
index cd80f55..a6952b9 100644 (file)
@@ -1,7 +1,7 @@
 void runProofCascadePbPb(
                      TString  proofCluster      = "mnicassi@alice-caf.cern.ch",//kiaf.sdfarm.kr", //skaf.saske.sk"
-                     TString  alirootVer        = "VO_ALICE@AliRoot::v5-30-01-AN",
-                     TString  rootVer           = "VO_ALICE@ROOT::v5-30-06-1", 
+                     TString  alirootVer        = "VO_ALICE@AliRoot::v5-03-32-AN",
+                     TString  rootVer           = "VO_ALICE@ROOT::v5-33-02b", 
                      TString  dataset           = "/alice/sim/LHC11f5_000139514", 
                      TString  outFileMC         = "CascadePerformance.root",
                      TString  outFileData       = "CascadeAna.root",
@@ -14,6 +14,7 @@ void runProofCascadePbPb(
                      Bool_t   kusecleaning      = kTRUE,
                      Float_t  vtxlim            = 10., 
                      Int_t    minnTPCcls        = 70,     
+                     Float_t  minptondaughtertracks = 0.,
                      Bool_t   kextrasel         = kFALSE,
                      Bool_t   kacccut            = kFALSE,
                      Bool_t   krelaunchvertexers= kFALSE,
@@ -26,7 +27,7 @@ void runProofCascadePbPb(
   TString extraLibs;
   TList *list = new TList();
   alirootMode="ALIROOT";
-  extraLibs+= "ANALYSIS:OADB:ANALYSISalice:CORRFW";  
+  extraLibs+= "ANALYSIS:OADB:ANALYSISalice:CORRFW";//:PWGLFSTRANGENESS";  
   // sets $ALIROOT_MODE on each worker to let proof to know to run in special mode
   list->Add(new TNamed("ALIROOT_MODE", alirootMode.Data()));
   list->Add(new TNamed("ALIROOT_EXTRA_LIBS", extraLibs.Data()));
@@ -52,7 +53,7 @@ void runProofCascadePbPb(
            useMC, nEvents, nEventsSkip,
            minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning,
            vtxlim, kextrasel,
-           runperformancetask, kacccut, krelaunchvertexers);
+           runperformancetask, kacccut, krelaunchvertexers, minptondaughtertracks);
 
 }
 
@@ -61,7 +62,7 @@ void Analysis(TString dataset, TString outFileMC, TString outFileData,
               Bool_t useMC, Int_t nEvents, Int_t nEventsSkip, 
               Int_t minnTPCcls, Float_t centrlowlim, Float_t centruplim, TString centrest, Bool_t kusecleaning,
               Float_t vtxlim, 
-              Bool_t kextrasel, Bool_t runperformancetask, Bool_t kacccut, Bool_t krelaunchvertexers) {
+              Bool_t kextrasel, Bool_t runperformancetask, Bool_t kacccut, Bool_t krelaunchvertexers, Float_t  minptondaughtertracks) {
 
 
   TString format = GetFormatFromDataSet(dataset);
@@ -73,10 +74,6 @@ void Analysis(TString dataset, TString outFileMC, TString outFileData,
 
   InputHandlerSetup(format,runperformancetask);
 
-  // compile analysis task
-  if (runperformancetask) gProof->Load("AliAnalysisTaskCheckPerformanceCascadePbPb.cxx++");
-  else gProof->Load("AliAnalysisTaskCheckCascadePbPb.cxx++");
-
   cout<<"Format"<<format.Data()<<endl;
   
   if (!format.CompareTo("ESD")) {
@@ -100,28 +97,19 @@ void Analysis(TString dataset, TString outFileMC, TString outFileData,
 
   // create task
   if (runperformancetask) {
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckPerformanceCascadePbPb.cxx++g");
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/macros/AddTaskCheckPerformanceCascadePbPb.C");
-    AliAnalysisTaskCheckPerformanceCascadePbPb *task = AddTaskCheckPerformanceCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim,kextrasel ,kacccut ,krelaunchvertexers);
+//    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckPerformanceCascadePbPb.cxx++g");
+//    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/macros/AddTaskCheckPerformanceCascadePbPb.C");
+    gProof->Load("AliAnalysisTaskCheckPerformanceCascadePbPb.cxx++");
+    gProof->Load("AddTaskCheckPerformanceCascadePbPb.C");
+    AliAnalysisTaskCheckPerformanceCascadePbPb *task = AddTaskCheckPerformanceCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim,kextrasel ,kacccut ,krelaunchvertexers,minptondaughtertracks);
   
   } else {
     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckCascadePbPb.cxx++g");
     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/macros/AddTaskCheckCascadePbPb.C");
-    AliAnalysisTaskCheckCascadePbPb *task = AddTaskCheckCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim,kextrasel ,krelaunchvertexers);
+    AliAnalysisTaskCheckCascadePbPb *task = AddTaskCheckCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim,kextrasel ,krelaunchvertexers,minptondaughtertracks);
 
   }
 
-  // create output container
-  if (runperformancetask) AliAnalysisDataContainer *output = mgr->CreateContainer("clist", TList::Class(), AliAnalysisManager::kOutputContainer, outFileMC);
-  else       AliAnalysisDataContainer *output = mgr->CreateContainer("clist", TList::Class(), AliAnalysisManager::kOutputContainer, outFileData);
-
-  // add task to the manager
-  mgr->AddTask(task);
-
-  // connect input and output
-  mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
-  mgr->ConnectOutput(task, 1, output);
-
   // run analysis
   mgr->InitAnalysis();
   // process dataset