// - AOD analysis part completed
//
//
-// Adapted to pp 2.76 analysis: D. Colella, domenico.colella@ba.infn.it
+// Adapted to pp 2.76 TeV analysis: D. Colella, domenico.colella@ba.infn.it
// Gen-now 2012
// - Physics selection re-moved here (mainly for normalization in the efficiency calcuation)
// - Centrality selection deleted
-// -
+//
+//
+// 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
+// -
+//
+//
//
//-----------------------------------------------------------------
#include "AliESDcascade.h"
#include "AliAODcascade.h"
#include "AliAODTrack.h"
+#include "AliAnalysisUtils.h"
#include "AliAnalysisTaskCheckCascadepp276.h"
: AliAnalysisTaskSE(),
fAnalysisType ("ESD"),
fESDtrackCuts (0),
+ fUtils (0),
+ fCollidingSystem ("pp"),
fPIDResponse (0),
fkRerunV0CascVertexers (0),
fkSDDSelectionOn (kTRUE),
: AliAnalysisTaskSE(name),
fAnalysisType ("ESD"),
fESDtrackCuts (0),
+ fUtils (0),
+ fCollidingSystem ("pp"),
fPIDResponse (0),
fkRerunV0CascVertexers (0),
fkSDDSelectionOn (kTRUE),
// Input slot #0 works with a TChain
// DefineInput(0, TChain::Class());
// Output slot #1 writes into a TList container (cascade)
- // default p-p values
- fV0Sels[0] = 33. ; // max allowed chi2
- fV0Sels[1] = 0.01; // min allowed impact parameter for the 1st daughter
- fV0Sels[2] = 0.01; // min allowed impact parameter for the 2nd daughter
- fV0Sels[3] = 1.5; // max allowed DCA between the daughter tracks
- fV0Sels[4] = 0.9; // min allowed cosine of V0's pointing angle - This is pT dependent
- fV0Sels[5] = 0.2; // min radius of the fiducial volume
- fV0Sels[6] = 200.; // max radius of the fiducial volume
-
- fCascSels[0] = 33.; // max allowed chi2 (same as PDC07)
- fCascSels[1] = 0.01; // min allowed V0 impact parameter
- fCascSels[2] = 0.008; // "window" around the Lambda mass
- fCascSels[3] = 0.01; // min allowed bachelor's impact parameter
- fCascSels[4] = 2.0; // max allowed DCA between the V0 and the bachelor
- fCascSels[5] = 0.95; // min allowed cosine of the cascade pointing angle
- fCascSels[6] = 0.2; // min radius of the fiducial volume
- fCascSels[7] = 100.; // max radius of the fiducial volume
-
+ if (fCollidingSystem == "pp") {
+ fV0Sels[0] = 33. ; // max allowed chi2
+ fV0Sels[1] = 0.01; // min allowed impact parameter for the 1st daughter
+ fV0Sels[2] = 0.01; // min allowed impact parameter for the 2nd daughter
+ fV0Sels[3] = 1.5; // max allowed DCA between the daughter tracks
+ fV0Sels[4] = 0.9; // min allowed cosine of V0's pointing angle - This is pT dependent
+ fV0Sels[5] = 0.2; // min radius of the fiducial volume
+ fV0Sels[6] = 200.; // max radius of the fiducial volume
+ fCascSels[0] = 33.; // max allowed chi2 (same as PDC07)
+ fCascSels[1] = 0.01; // min allowed V0 impact parameter
+ fCascSels[2] = 0.008; // "window" around the Lambda mass
+ fCascSels[3] = 0.01; // min allowed bachelor's impact parameter
+ fCascSels[4] = 2.0; // max allowed DCA between the V0 and the bachelor
+ fCascSels[5] = 0.95; // min allowed cosine of the cascade pointing angle
+ fCascSels[6] = 0.2; // min radius of the fiducial volume
+ fCascSels[7] = 100.; // max radius of the fiducial volume
+ } else if (fCollidingSystem == "pPb") {
+ fV0Sels[0] = 33. ; // max allowed chi2
+ fV0Sels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
+ fV0Sels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
+ fV0Sels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
+ fV0Sels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
+ fV0Sels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
+ fV0Sels[6] = 200. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
+ fCascSels[0] = 33. ; // max allowed chi2 (same as PDC07)
+ fCascSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
+ fCascSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
+ fCascSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
+ fCascSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
+ fCascSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
+ fCascSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
+ fCascSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
+ }
// Output slot #0 writes into a TList container (Cascade)
DefineOutput(1, TList::Class());
DefineOutput(2, AliCFContainer::Class());
AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
fPIDResponse = inputHandler->GetPIDResponse();
-
// Only used to get the number of primary reconstructed tracks
if (fAnalysisType == "ESD" && (! fESDtrackCuts )){
fESDtrackCuts = new AliESDtrackCuts();
// Initialize cuts to re-run V0 and cascade vertexers
//---------------------------------------------------
// Not validated; to be checked
- fV0Sels[0] = 33. ; // max allowed chi2
- fV0Sels[1] = 0.01; // min allowed impact parameter for the 1st daughter
- fV0Sels[2] = 0.01; // min allowed impact parameter for the 2nd daughter
- fV0Sels[3] = 1.5; // max allowed DCA between the daughter tracks
- fV0Sels[4] = 0.9; // min allowed cosine of V0's pointing angle
- fV0Sels[5] = 0.2; // min radius of the fiducial volume
- fV0Sels[6] = 200.; // max radius of the fiducial volume
-
- fCascSels[0] = 33.; // max allowed chi2 (same as PDC07)
- fCascSels[1] = 0.01; // min allowed V0 impact parameter
- fCascSels[2] = 0.008; // "window" around the Lambda mass
- fCascSels[3] = 0.01; // min allowed bachelor's impact parameter
- fCascSels[4] = 2.0; // max allowed DCA between the V0 and the bachelor
- fCascSels[5] = 0.95; // min allowed cosine of the cascade pointing angle
- fCascSels[6] = 0.2; // min radius of the fiducial volume
- fCascSels[7] = 100.; // max radius of the fiducial volume
+ if (fCollidingSystem == "pp") {
+ fV0Sels[0] = 33. ; // max allowed chi2
+ fV0Sels[1] = 0.01; // min allowed impact parameter for the 1st daughter
+ fV0Sels[2] = 0.01; // min allowed impact parameter for the 2nd daughter
+ fV0Sels[3] = 1.5; // max allowed DCA between the daughter tracks
+ fV0Sels[4] = 0.9; // min allowed cosine of V0's pointing angle
+ fV0Sels[5] = 0.2; // min radius of the fiducial volume
+ fV0Sels[6] = 200.; // max radius of the fiducial volume
+ fCascSels[0] = 33.; // max allowed chi2 (same as PDC07)
+ fCascSels[1] = 0.01; // min allowed V0 impact parameter
+ fCascSels[2] = 0.008; // "window" around the Lambda mass
+ fCascSels[3] = 0.01; // min allowed bachelor's impact parameter
+ fCascSels[4] = 2.0; // max allowed DCA between the V0 and the bachelor
+ fCascSels[5] = 0.95; // min allowed cosine of the cascade pointing angle
+ fCascSels[6] = 0.2; // min radius of the fiducial volume
+ fCascSels[7] = 100.; // max radius of the fiducial volume
+ } else if (fCollidingSystem == "pPb") {
+ fV0Sels[0] = 33. ; // max allowed chi2
+ fV0Sels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
+ fV0Sels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
+ fV0Sels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
+ fV0Sels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
+ fV0Sels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
+ fV0Sels[6] = 200. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
+ fCascSels[0] = 33. ; // max allowed chi2 (same as PDC07)
+ fCascSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
+ fCascSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
+ fCascSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
+ fCascSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
+ fCascSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
+ fCascSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
+ fCascSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
+ }
//----------------------
// Initialize the histos
lNbBinsPerVar[0] = 100;
lNbBinsPerVar[1] = 800;
lNbBinsPerVar[2] = 22;
- if (fkSDDSelectionOn) {
- if (fwithSDD) fCFContCascadePIDXiMinus = new AliCFContainer(Form("fCFContCascadePIDXiMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Xi^{-} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
- else if (!fwithSDD) fCFContCascadePIDXiMinus = new AliCFContainer(Form("fCFContCascadePIDXiMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Xi^{-} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
- } else if (!fkSDDSelectionOn) fCFContCascadePIDXiMinus = new AliCFContainer(Form("fCFContCascadePIDXiMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Xi^{-} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ if (fCollidingSystem == "pp" && fkSDDSelectionOn) {
+ if (fwithSDD) fCFContCascadePIDXiMinus = new AliCFContainer(Form("fCFContCascadePIDXiMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Xi^{-} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ else if (!fwithSDD) fCFContCascadePIDXiMinus = new AliCFContainer(Form("fCFContCascadePIDXiMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Xi^{-} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ } else if (fCollidingSystem == "pp" && !fkSDDSelectionOn) {
+ fCFContCascadePIDXiMinus = new AliCFContainer(Form("fCFContCascadePIDXiMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Xi^{-} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ } else if (fCollidingSystem == "pPb") {
+ fCFContCascadePIDXiMinus = new AliCFContainer(Form("fCFContCascadePIDXiMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Xi^{-} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ }
//Setting the bin limits
fCFContCascadePIDXiMinus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDXiMinus->SetBinLimits(1, 1.2 , 2.0 ); // Xi Effective mass
lNbBinsPerVar[0] = 100;
lNbBinsPerVar[1] = 800;
lNbBinsPerVar[2] = 22;
- if (fkSDDSelectionOn) {
- if (fwithSDD) fCFContCascadePIDXiPlus = new AliCFContainer(Form("fCFContCascadePIDXiPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Xi^{+} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
- else if (!fwithSDD) fCFContCascadePIDXiPlus = new AliCFContainer(Form("fCFContCascadePIDXiPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Xi^{+} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
- } else if (!fkSDDSelectionOn) fCFContCascadePIDXiPlus = new AliCFContainer(Form("fCFContCascadePIDXiPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Xi^{+} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ if (fCollidingSystem == "pp" && fkSDDSelectionOn) {
+ if (fwithSDD) fCFContCascadePIDXiPlus = new AliCFContainer(Form("fCFContCascadePIDXiPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Xi^{+} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar);
+ else if (!fwithSDD) fCFContCascadePIDXiPlus = new AliCFContainer(Form("fCFContCascadePIDXiPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Xi^{+} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar);
+ } else if (fCollidingSystem == "pp" && !fkSDDSelectionOn) {
+ fCFContCascadePIDXiPlus = new AliCFContainer(Form("fCFContCascadePIDXiPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Xi^{+} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar);
+ } else if (fCollidingSystem == "pPb") {
+ fCFContCascadePIDXiPlus = new AliCFContainer(Form("fCFContCascadePIDXiPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Xi^{+} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar);
+ }
//Setting the bin limits
fCFContCascadePIDXiPlus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDXiPlus->SetBinLimits(1, 1.2 , 2.0 ); // Xi Effective mass
lNbBinsPerVar[0] = 100;
lNbBinsPerVar[1] = 1000;
lNbBinsPerVar[2] = 22;
- if (fkSDDSelectionOn) {
- if (fwithSDD) fCFContCascadePIDOmegaMinus = new AliCFContainer(Form("fCFContCascadePIDOmegaMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Omega^{-} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
- else if (!fwithSDD) fCFContCascadePIDOmegaMinus = new AliCFContainer(Form("fCFContCascadePIDOmegaMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Omega^{-} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
- } else if (!fkSDDSelectionOn) fCFContCascadePIDOmegaMinus = new AliCFContainer(Form("fCFContCascadePIDOmegaMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Omega^{-} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ if (fCollidingSystem == "pp" && fkSDDSelectionOn) {
+ if (fwithSDD) fCFContCascadePIDOmegaMinus = new AliCFContainer(Form("fCFContCascadePIDOmegaMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Omega^{-} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ else if (!fwithSDD) fCFContCascadePIDOmegaMinus = new AliCFContainer(Form("fCFContCascadePIDOmegaMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Omega^{-} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ } else if (!fkSDDSelectionOn) {
+ fCFContCascadePIDOmegaMinus = new AliCFContainer(Form("fCFContCascadePIDOmegaMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Omega^{-} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ } else if (fCollidingSystem == "pPb") {
+ fCFContCascadePIDOmegaMinus = new AliCFContainer(Form("fCFContCascadePIDOmegaMinus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Omega^{-} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ }
//Setting the bin limits
fCFContCascadePIDOmegaMinus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDOmegaMinus->SetBinLimits(1, 1.5 , 2.5 ); // Omega Effective mass
lNbBinsPerVar[0] = 100;
lNbBinsPerVar[1] = 1000;
lNbBinsPerVar[2] = 22;
- if (fkSDDSelectionOn) {
- if (fwithSDD) fCFContCascadePIDOmegaPlus = new AliCFContainer(Form("fCFContCascadePIDOmegaPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Omega^{+} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
- else if (!fwithSDD) fCFContCascadePIDOmegaPlus = new AliCFContainer(Form("fCFContCascadePIDOmegaPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Omega^{+} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
- } else if (!fkSDDSelectionOn) fCFContCascadePIDOmegaPlus = new AliCFContainer(Form("fCFContCascadePIDOmegaPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Pt_{cascade} Vs M_{#Omega^{+} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ if (fCollidingSystem == "pp" && fkSDDSelectionOn) {
+ if (fwithSDD) fCFContCascadePIDOmegaPlus = new AliCFContainer(Form("fCFContCascadePIDOmegaPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Omega^{+} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ else if (!fwithSDD) fCFContCascadePIDOmegaPlus = new AliCFContainer(Form("fCFContCascadePIDOmegaPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Omega^{+} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ } else if (fCollidingSystem == "pp" && !fkSDDSelectionOn) {
+ fCFContCascadePIDOmegaPlus = new AliCFContainer(Form("fCFContCascadePIDOmegaPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Omega^{+} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ } else if (fCollidingSystem == "pPb") {
+ fCFContCascadePIDOmegaPlus = new AliCFContainer(Form("fCFContCascadePIDOmegaPlus_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Pt_{cascade} Vs M_{#Omega^{+} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ }
//Setting the bin limits
fCFContCascadePIDOmegaPlus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDOmegaPlus->SetBinLimits(1, 1.5 , 2.5 ); // Omega Effective mass
lNbBinsPerVar[16] = 112; //Proper lenght of cascade
lNbBinsPerVar[17] = 112; //Proper lenght of V0
lNbBinsPerVar[18] = 112; //Distance V0-Xi in transverse plane
- if (fkSDDSelectionOn) {
- if (fwithSDD) fCFContCascadeCuts = new AliCFContainer(Form("fCFContCascadeCuts_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Container for Cascade cuts", lNbSteps, lNbVariables, lNbBinsPerVar);
- else if (!fwithSDD) fCFContCascadeCuts = new AliCFContainer(Form("fCFContCascadeCuts_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Container for Cascade cuts", lNbSteps, lNbVariables, lNbBinsPerVar);
- } else if (!fkSDDSelectionOn) fCFContCascadeCuts = new AliCFContainer(Form("fCFContCascadeCuts_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Container for Cascade cuts", lNbSteps, lNbVariables, lNbBinsPerVar);
+ if (fCollidingSystem == "pp" && fkSDDSelectionOn) {
+ if (fwithSDD) fCFContCascadeCuts = new AliCFContainer(Form("fCFContCascadeCuts_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDon",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Container for Cascade cuts", lNbSteps, lNbVariables, lNbBinsPerVar);
+ else if (!fwithSDD) fCFContCascadeCuts = new AliCFContainer(Form("fCFContCascadeCuts_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_wSDDoff",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Container for Cascade cuts", lNbSteps, lNbVariables, lNbBinsPerVar);
+ } else if (fCollidingSystem == "pp" && !fkSDDSelectionOn) {
+ fCFContCascadeCuts = new AliCFContainer(Form("fCFContCascadeCuts_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f_woSDD",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Container for Cascade cuts", lNbSteps, lNbVariables, lNbBinsPerVar);
+ } else if (fCollidingSystem == "pPb") {
+ fCFContCascadeCuts = new AliCFContainer(Form("fCFContCascadeCuts_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",
+ fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),
+ "Container for Cascade cuts", lNbSteps, lNbVariables, lNbBinsPerVar);
+ }
//Setting the bin limits
//0 - DcaXiDaughters
Double_t *lBinLim0 = new Double_t[ lNbBinsPerVar[0] + 1 ];
AliESDEvent *lESDevent = 0x0;
AliAODEvent *lAODevent = 0x0;
+ //----------------------
+ // Check the PIDresponse
//---------------------
- //Check the PIDresponse
if(!fPIDResponse) {
AliError("Cannot get pid response");
return;
}
+ if(! fESDtrackCuts ){
+ fESDtrackCuts = new AliESDtrackCuts();
+ }
+ if(! fUtils ){
+ fUtils = new AliAnalysisUtils();
+ }
+
///////////////////
// EVENT SELECTIONS
// - Fill the plots
fHistCascadeMultiplicityBeforeAnySel->Fill(ncascadesBeforeAnySel);
fHistTrackMultiplicityBeforeAnySel->Fill(nTrackMultiplicityBeforeAnySel);
-
+
//--------------
// SDD selection
//--------------
Int_t nTrackMultiplicityAfterSDDSel = 0;
// - Selection for ESD and AOD
if (fAnalysisType == "ESD") {
- if (fkSDDSelectionOn) {
+ if (fkSDDSelectionOn && fCollidingSystem == "pp") {
TString trcl = lESDevent->GetFiredTriggerClasses();
//cout<<"Fired Trigger Classes: "<<trcl<<endl;
if (fwithSDD){
ncascadesAfterSDDSel = lESDevent->GetNumberOfCascades();
nTrackMultiplicityAfterSDDSel = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
} else if (fAnalysisType == "AOD") {
- if (fkSDDSelectionOn) {
+ if (fkSDDSelectionOn && fCollidingSystem == "pp") {
TString trcl = lAODevent->GetFiredTriggerClasses();
if (fwithSDD){
if(!(trcl.Contains("ALLNOTRD"))) {
fHistCascadeMultiplicityAfterSDDSel->Fill(ncascadesAfterSDDSel);
fHistTrackMultiplicityAfterSDDSel->Fill(nTrackMultiplicityAfterSDDSel);
- //----------------------------------------------
- // Physics selection (+ re-vertexer for the ESD)
- //----------------------------------------------
+ //-------------------------------------------
+ // Multiplicity estimators for pPb collisions //FIXME
+ //-------------------------------------------
+ //AliCentrality* centrality = 0;
+ //if (fAnalysisType == "ESD" && (fCollidingSystem == "pPb")) centrality = lESDevent->GetCentrality();
+ //else if (fAnalysisType == "AOD" && (fCollidingSystem == "pPb")) centrality = lAODevent->GetCentrality();
+ //Float_t lcentrality = 0.;
+ //if (fCollidingSystem == "pPb") {
+ // if (fkUseCleaning) lcentrality = centrality->GetCentralityPercentile(fCentrEstimator.Data());
+ // else {
+ // lcentrality = centrality->GetCentralityPercentileUnchecked(fCentrEstimator.Data());
+ // if (centrality->GetQuality()>1) {
+ // PostData(1, fCFContCascadeCuts);
+ // return;
+ // }
+ // }
+ // //if (lcentrality<fCentrLowLim||lcentrality>=fCentrUpLim) {
+ // // PostData(1, fCFContCascadeCuts);
+ // // return;
+ // //}
+ //} else if (fCollidingSystem == "pp") lcentrality = 0.;
+
+ //------------------
+ // Physics selection
+ //-----------------
// - Define the variables
Int_t ncascadesAfterPhysicsSel = 0;
Int_t nTrackMultiplicityAfterPhysicsSel = 0;
// - Selection for ESD and AOD
+ UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
+ Bool_t isSelected = 0;
+ if (fCollidingSystem == "pp" ) isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
+ else if (fCollidingSystem == "pPb") isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
+ if(! isSelected){
+ PostData(1, fListHistCascade);
+ PostData(2, fCFContCascadePIDXiMinus);
+ PostData(3, fCFContCascadePIDXiPlus);
+ PostData(4, fCFContCascadePIDOmegaMinus);
+ PostData(5, fCFContCascadePIDOmegaPlus);
+ PostData(6, fCFContCascadeCuts);
+ cout<<"We are selecting the events that past tha Physics Selection. This event does not pass the Physics Selection. => RETURN!! (Exclude it)..."<<endl;
+ return;
+ }
if (fAnalysisType == "ESD") {
- UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
- Bool_t isSelected = 0;
- isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
- if(! isSelected){
- PostData(1, fListHistCascade);
- PostData(2, fCFContCascadePIDXiMinus);
- PostData(3, fCFContCascadePIDXiPlus);
- PostData(4, fCFContCascadePIDOmegaMinus);
- PostData(5, fCFContCascadePIDOmegaPlus);
- PostData(6, fCFContCascadeCuts);
- cout<<"We are selecting the events that past tha Physics Selection. This event does not pass the Physics Selection. => RETURN!! (Exclude it)..."<<endl;
- return;
- }
// - Take the number of cascades and tracks after physics selection
ncascadesAfterPhysicsSel = lESDevent->GetNumberOfCascades();
nTrackMultiplicityAfterPhysicsSel = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
- // - Cascade vertexer (ESD)
- // Relaunch V0 and Cascade vertexers
- if (fkRerunV0CascVertexers) {
- lESDevent->ResetCascades();
- lESDevent->ResetV0s();
- AliV0vertexer *lV0vtxer = new AliV0vertexer();
- AliCascadeVertexer *lCascVtxer = new AliCascadeVertexer();
- //lV0vtxer->GetCuts(fV0Sels);
- //lCascVtxer->GetCuts(fCascSels);
- lV0vtxer->SetCuts(fV0Sels); // NB don't use SetDefaultCuts!! because it acts on static variables
- lCascVtxer->SetCuts(fCascSels);
- lV0vtxer->Tracks2V0vertices(lESDevent);
- lCascVtxer->V0sTracks2CascadeVertices(lESDevent);
- //delete lV0vtxer;
- //delete lCascVtxer;
- }
} else if (fAnalysisType == "AOD") {
- UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
- Bool_t isSelected = 0;
- isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
- if(! isSelected){
- PostData(1, fListHistCascade);
- PostData(2, fCFContCascadePIDXiMinus);
- PostData(3, fCFContCascadePIDXiPlus);
- PostData(4, fCFContCascadePIDOmegaMinus);
- PostData(5, fCFContCascadePIDOmegaPlus);
- PostData(6, fCFContCascadeCuts);
- cout<<"We are selecting the events that past tha Physics Selection. This event does not pass the Physics Selection. => RETURN!! (Exclude it)..."<<endl;
- return;
- }
// - Take the number of cascades and tracks after the physics selection
ncascadesAfterPhysicsSel = lAODevent->GetNumberOfCascades();
nTrackMultiplicityAfterPhysicsSel = -100; //FIXME: I can't find the equivalent method for the AOD
fHistCascadeMultiplicityAfterPhysicsSel->Fill(ncascadesAfterPhysicsSel);
fHistTrackMultiplicityAfterPhysicsSel->Fill(nTrackMultiplicityAfterPhysicsSel);
+ //---------------------------------------
+ // Re-run cascade vertexer (only for ESD)
+ //---------------------------------------
+ if (fAnalysisType == "ESD" && fkRerunV0CascVertexers) {
+ lESDevent->ResetCascades();
+ lESDevent->ResetV0s();
+ AliV0vertexer *lV0vtxer = new AliV0vertexer();
+ AliCascadeVertexer *lCascVtxer = new AliCascadeVertexer();
+ //lV0vtxer->GetCuts(fV0Sels);
+ //lCascVtxer->GetCuts(fCascSels);
+ lV0vtxer->SetCuts(fV0Sels); // NB don't use SetDefaultCuts!! because it acts on static variables
+ lCascVtxer->SetCuts(fCascSels);
+ lV0vtxer->Tracks2V0vertices(lESDevent);
+ lCascVtxer->V0sTracks2CascadeVertices(lESDevent);
+ //delete lV0vtxer;
+ //delete lCascVtxer;
+ }
+
//------------------------------
// Well-established PV selection
//------------------------------
// - Define variables
Int_t ncascadesForSelEvtNoTPCOnly = 0;
Int_t nTrackMultiplicityForSelEvtNoTPCOnly = 0;
- // - Selection for ESD and AOD
- if (fAnalysisType == "ESD") {
- // - Vertex coordinates: get the PVs stored in the ESD found with tracks and SPD
- const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
- const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
- // - Select only looking at events with well-established PV
- if (fkQualityCutNoTPConlyPrimVtx) {
- if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtx->GetStatus() ){
+ // - Selection for the two colliding systems
+ if (fCollidingSystem == "pp") {
+ // - Selection for ESD and AOD
+ if (fAnalysisType == "ESD") {
+ // - Vertex coordinates: get the PVs stored in the ESD found with tracks and SPD
+ const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
+ const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
+ // - Select only looking at events with well-established PV
+ if (fkQualityCutNoTPConlyPrimVtx) {
+ 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;
+ }
+ }
+ // - Take the number of cascades and tracks after TPConly selection
+ ncascadesForSelEvtNoTPCOnly = lESDevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnly = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
+ } else if (fAnalysisType == "AOD") {
+ // - Vertex coordinates: get the PVs stored in the AOD found with tracks and SPD
+ const AliAODVertex *lPrimarySPDVtx = lAODevent->GetPrimaryVertexSPD();
+ const AliAODVertex *lPrimaryTrackingAODVtx = lAODevent->GetPrimaryVertex();
+ // - Select only looking at events with well-established PV
+ if (fkQualityCutNoTPConlyPrimVtx) {
+ if (!lPrimarySPDVtx && !lPrimaryTrackingAODVtx) {
+ 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;
+ }
+ }
+ // - Take the number of cascades and tracks after TPConly selection
+ ncascadesForSelEvtNoTPCOnly = lAODevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnly = -100; //FIXME: I can't find the equivalent method for the AOD
+ }
+ } else if (fCollidingSystem == "pPb") {
+ if (fAnalysisType == "ESD") {
+ Bool_t fHasVertex = kFALSE;
+ const AliESDVertex *vertex = lESDevent->GetPrimaryVertexTracks();
+ if (vertex->GetNContributors() < 1) {
+ vertex = lESDevent->GetPrimaryVertexSPD();
+ if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
+ 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 (fUtils->IsFirstEventInChunk(lESDevent)) { //Is First event in chunk rejection: Still present!
AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
PostData(1, fListHistCascade);
PostData(2, fCFContCascadePIDXiMinus);
PostData(6, fCFContCascadeCuts);
return;
}
- }
- // - Take the number of cascades and tracks after TPConly selection
- ncascadesForSelEvtNoTPCOnly = lESDevent->GetNumberOfCascades();
- nTrackMultiplicityForSelEvtNoTPCOnly = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
- } else if (fAnalysisType == "AOD") {
- // - Vertex coordinates: get the PVs stored in the AOD found with tracks and SPD
- const AliAODVertex *lPrimarySPDVtx = lAODevent->GetPrimaryVertexSPD();
- const AliAODVertex *lPrimaryTrackingAODVtx = lAODevent->GetPrimaryVertex();
- // - Select only looking at events with well-established PV
- if (fkQualityCutNoTPConlyPrimVtx) {
- if (!lPrimarySPDVtx && !lPrimaryTrackingAODVtx) {
+ // - Take the number of cascades and tracks after TPConly selection
+ ncascadesForSelEvtNoTPCOnly = lESDevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnly = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
+ } else if (fAnalysisType == "AOD") {
+ Bool_t fHasVertex = kFALSE;
+ const AliAODVertex *vertex = lAODevent->GetPrimaryVertex();
+ if (vertex->GetNContributors() < 1) {
+ vertex = lAODevent->GetPrimaryVertexSPD();
+ if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
+ 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
AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
PostData(1, fListHistCascade);
PostData(2, fCFContCascadePIDXiMinus);
PostData(5, fCFContCascadePIDOmegaPlus);
PostData(6, fCFContCascadeCuts);
return;
- }
+ }
+ // - Take the number of cascades and tracks after TPConly selection
+ ncascadesForSelEvtNoTPCOnly = lAODevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnly = -100; //FIXME: I can't find the equivalent method for the AOD
}
- // - Take the number of cascades and tracks after TPConly selection
- ncascadesForSelEvtNoTPCOnly = lAODevent->GetNumberOfCascades();
- nTrackMultiplicityForSelEvtNoTPCOnly = -100; //FIXME: I can't find the equivalent method for the AOD
}
// - Fill the plots
fHistCascadeMultiplicityForSelEvtNoTPCOnly->Fill(ncascadesForSelEvtNoTPCOnly);
fHistTrackMultiplicityForSelEvtNoTPCOnly->Fill(nTrackMultiplicityForSelEvtNoTPCOnly);
-
+
+
//----------------
// Pilup selection
//----------------
Int_t ncascadesForSelEvtNoTPCOnlyNoPileup = 0;
Int_t nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = 0;
// - Selection for ESD and AOD
- if (fAnalysisType == "ESD") {
+ if (fAnalysisType == "ESD" && fCollidingSystem == "pp") {
if (fkQualityCutPileup) {
if(lESDevent->IsPileupFromSPD()){
AliWarning("Pb / Pile-up event ... return!");
// - Take the number of cascades and tracks after Pileup selection
ncascadesForSelEvtNoTPCOnlyNoPileup = lESDevent->GetNumberOfCascades();
nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
- } else if (fAnalysisType == "AOD") {
+ } else if (fAnalysisType == "AOD" && fCollidingSystem == "pp") {
if (fkQualityCutPileup) {
if(lAODevent->IsPileupFromSPD()){
AliWarning("Pb / Pile-up event ... return!");
// - cos of PA V0 wrt Xi vertex and not primary vertex
// - distance xi-V0 added in the container
// - AOD analysis developed (January 2012)
-//
-//
-//
-// Adapted to pp 2.76 analysis: D. Colella, domenico.colella@ba.infn.it (Nov. 2012):
+//
+// Adapted to pp 2.76 analysis: D. Colella, domenico.colella@ba.infn.it (Nov. 2012):
// - added new and removed other histograms
// - Physics selection moved here (mainly for normalization in the efficiency calcuation)
// - Centrality selection deleted
// - 3DHisto denominator moved before any event selection for Normalization
// - injected and natural part of MC selection removed
//
-//
+// Adapted to pPb 5.02 TeV analysis: D. Colella, domenico.colella@ba.infn.it (Sep. 2014)
+// - Added the parameter fCollidingSystem, to distingish between pp and pPb procedures
+//
//
//-----------------------------------------------------------------
#include "AliAODEvent.h"
#include "AliAODMCParticle.h"
#include "AliAnalysisTaskCheckPerformanceCascadepp276.h"
+#include "AliAnalysisUtils.h"
using std::cout;
using std::endl;
: AliAnalysisTaskSE(), // <- take care to AliAnalysisTask( empty )
fAnalysisType ("ESD"),
fESDtrackCuts (0),
+ fUtils (0),
+ fCollidingSystem ("pp"),
fPIDResponse (0),
fkRerunV0CascVertexers (0),
fkSDDselectionOn (kTRUE),
: AliAnalysisTaskSE(name),
fAnalysisType ("ESD"),
fESDtrackCuts (0),
+ fUtils (0),
+ fCollidingSystem ("pp"),
fPIDResponse (0),
fkRerunV0CascVertexers (0),
fkSDDselectionOn (kTRUE),
// Define input and output slots here
// Input slot #0 works with a TChain
// Output slot #1 writes into a TList container (cascade)
-
- // PbPb default cuts
- fV0Sels[0] = 33.; // max allowed chi2
- fV0Sels[1] = 0.1; // min allowed impact parameter for the 1st daughter
- fV0Sels[2] = 0.1; // min allowed impact parameter for the 2nd daughter
- fV0Sels[3] = 1.5 ; // max allowed DCA between the daughter tracks
- fV0Sels[4] = 0.9 ; // min allowed cosine of V0's pointing angle
- fV0Sels[5] = 0.2; // min radius of the fiducial volume
- fV0Sels[6] = 200. ; // max radius of the fiducial volume
- fCascSels[0] = 33.; // max allowed chi2
- fCascSels[1] = 0.01; // min allowed V0 impact parameter
- fCascSels[2] = 0.008; // "window" around the Lambda mass
- fCascSels[3] = 0.01; // min allowed bachelor's impact parameter
- fCascSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor
- fCascSels[5] = 0.95; // min allowed cosine of the cascade pointing angle
- fCascSels[6] = 0.2 ; // min radius of the fiducial volume
- fCascSels[7] = 100. ; // max radius of the fiducial volume
+ if (fCollidingSystem == "pp") {
+ fV0Sels[0] = 33. ; // max allowed chi2
+ fV0Sels[1] = 0.01; // min allowed impact parameter for the 1st daughter
+ fV0Sels[2] = 0.01; // min allowed impact parameter for the 2nd daughter
+ fV0Sels[3] = 1.5; // max allowed DCA between the daughter tracks
+ fV0Sels[4] = 0.9; // min allowed cosine of V0's pointing angle - This is pT dependent
+ fV0Sels[5] = 0.2; // min radius of the fiducial volume
+ fV0Sels[6] = 200.; // max radius of the fiducial volume
+ fCascSels[0] = 33.; // max allowed chi2 (same as PDC07)
+ fCascSels[1] = 0.01; // min allowed V0 impact parameter
+ fCascSels[2] = 0.008; // "window" around the Lambda mass
+ fCascSels[3] = 0.01; // min allowed bachelor's impact parameter
+ fCascSels[4] = 2.0; // max allowed DCA between the V0 and the bachelor
+ fCascSels[5] = 0.95; // min allowed cosine of the cascade pointing angle
+ fCascSels[6] = 0.2; // min radius of the fiducial volume
+ fCascSels[7] = 100.; // max radius of the fiducial volume
+ } else if (fCollidingSystem == "pPb") {
+ fV0Sels[0] = 33. ; // max allowed chi2
+ fV0Sels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
+ fV0Sels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
+ fV0Sels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
+ fV0Sels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
+ fV0Sels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
+ fV0Sels[6] = 200. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
+ fCascSels[0] = 33. ; // max allowed chi2 (same as PDC07)
+ fCascSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
+ fCascSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
+ fCascSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
+ fCascSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
+ fCascSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
+ fCascSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
+ fCascSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
+ }
- 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(1, TList::Class());
+ DefineOutput(2, AliCFContainer::Class());
+ DefineOutput(3, AliCFContainer::Class());
+ DefineOutput(4, AliCFContainer::Class());
+ DefineOutput(5, AliCFContainer::Class());
+ DefineOutput(6, AliCFContainer::Class());
}
//____Destructor____
if (! fESDtrackCuts ){
fESDtrackCuts = new AliESDtrackCuts();
}
+ if (! fUtils){
+ fUtils = new AliAnalysisUtils();
+ }
//----------------------
// Initialize the histos
cout << "Name of the file with pb :" << CurrentFileName() << endl;
return;
}
- // - Cascade vertexer (ESD)
- // Relaunch V0 and Cascade vertexer
- if (fkRerunV0CascVertexers) {
- lESDevent->ResetCascades();
- lESDevent->ResetV0s();
- AliV0vertexer *lV0vtxer = new AliV0vertexer();
- AliCascadeVertexer *lCascVtxer = new AliCascadeVertexer();
- //lV0vtxer->GetCuts(fV0Sels);
- //lCascVtxer->GetCuts(fCascSels);
- lV0vtxer->SetCuts(fV0Sels); // NB don't use SetDefaultCuts!! because it acts on static variables
- lCascVtxer->SetCuts(fCascSels);
- lV0vtxer->Tracks2V0vertices(lESDevent);
- lCascVtxer->V0sTracks2CascadeVertices(lESDevent);
- //delete lV0vtxer;
- //delete lCascVtxer;
- //---
- //lESDevent->ResetCascades();
- //lESDevent->ResetV0s();
- //AliV0vertexer lV0vtxer;
- //AliCascadeVertexer lCascVtxer;
- //lV0vtxer.SetCuts(fV0Sels);
- //lCascVtxer.SetCuts(fCascSels);
- //lV0vtxer.Tracks2V0vertices(lESDevent);
- //lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
- }
} else if (fAnalysisType == "AOD") {
lAODevent = dynamic_cast<AliAODEvent*>( InputEvent() );
if (!lAODevent) {
//Multiplicity
Int_t lMultiplicity = -100;
nTrackMultiplicityBeforeAnySel = lMultiplicity;
- ncascadesBeforeAnySel = lAODevent->GetNumberOfCascades();
+ ncascadesBeforeAnySel = lAODevent->GetNumberOfCascades();
}
fHistTrackMultiplicityBeforeAnySel->Fill(nTrackMultiplicityBeforeAnySel);
fHistCascadeMultiplicityBeforeAnySel->Fill(ncascadesBeforeAnySel);
// - Define variables
Int_t ncascadesAfterSDDSel = -1; //number of cascades after SDD selection
Int_t nTrackMultiplicityAfterSDDSel = -1; //number of tracks after SDD selection
- if (fkSDDselectionOn) {
+ if (fkSDDselectionOn && fCollidingSystem == "pp") {
TString trcl = " ";
trcl = lESDevent->GetFiredTriggerClasses();
if (fAnalysisType == "ESD") trcl = lESDevent->GetFiredTriggerClasses();
}
}
-
//--------------------
// - Physics selection
//--------------------
Int_t ncascadesAfterPhysicsSel = -1; //number of cascades after physics selection
Int_t nTrackMultiplicityAfterPhysicsSel = -1; //number of tracks after physics selection
// - Selection for ESD and AOD
+ UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
+ Bool_t isSelected = 0;
+ if (fCollidingSystem == "pp" ) isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
+ else if (fCollidingSystem == "pPb") isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
+ if(!isSelected){
+ PostData(1, fListHistCascade);
+ PostData(2, fCFContCascadePIDAsXiMinus);
+ PostData(3, fCFContCascadePIDAsXiPlus);
+ PostData(4, fCFContCascadePIDAsOmegaMinus);
+ PostData(5, fCFContCascadePIDAsOmegaPlus);
+ PostData(6, fCFContAsCascadeCuts);
+ return;
+ }
if (fAnalysisType == "ESD") {
- UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
- Bool_t isSelected = 0;
- isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
- if(!isSelected){
- PostData(1, fListHistCascade);
- PostData(2, fCFContCascadePIDAsXiMinus);
- PostData(3, fCFContCascadePIDAsXiPlus);
- PostData(4, fCFContCascadePIDAsOmegaMinus);
- PostData(5, fCFContCascadePIDAsOmegaPlus);
- PostData(6, fCFContAsCascadeCuts);
- return;
- }
// - Take the number of cascades and tracks after physics selection
ncascadesAfterPhysicsSel = lESDevent->GetNumberOfCascades();
nTrackMultiplicityAfterPhysicsSel = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC, 0.5);
} else if (fAnalysisType == "AOD") {
- UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
- Bool_t isSelected = 0;
- isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
- if(!isSelected){
- PostData(1, fListHistCascade);
- PostData(2, fCFContCascadePIDAsXiMinus);
- PostData(3, fCFContCascadePIDAsXiPlus);
- PostData(4, fCFContCascadePIDAsOmegaMinus);
- PostData(5, fCFContCascadePIDAsOmegaPlus);
- PostData(6, fCFContAsCascadeCuts);
- return;
- }
// - Take the number of cascades and tracks after physics selection
ncascadesAfterPhysicsSel = lAODevent->GetNumberOfCascades();
nTrackMultiplicityAfterPhysicsSel = -100;
fHistCascadeMultiplicityAfterPhysicsSel->Fill(ncascadesAfterPhysicsSel);
fHistTrackMultiplicityAfterPhysicsSel->Fill(nTrackMultiplicityAfterPhysicsSel);
+ //------------------------
+ // - Cascade vertexer (ESD)
+ //-------------------------
+ // Relaunch V0 and Cascade vertexer
+ if (fAnalysisType == "ESD" && fkRerunV0CascVertexers) {
+ lESDevent->ResetCascades();
+ lESDevent->ResetV0s();
+ AliV0vertexer *lV0vtxer = new AliV0vertexer();
+ AliCascadeVertexer *lCascVtxer = new AliCascadeVertexer();
+ //lV0vtxer->GetCuts(fV0Sels);
+ //lCascVtxer->GetCuts(fCascSels);
+ lV0vtxer->SetCuts(fV0Sels); // NB don't use SetDefaultCuts!! because it acts on static variables
+ lCascVtxer->SetCuts(fCascSels);
+ lV0vtxer->Tracks2V0vertices(lESDevent);
+ lCascVtxer->V0sTracks2CascadeVertices(lESDevent);
+ //delete lV0vtxer;
+ //delete lCascVtxer;
+ }
+
//-------------------------------------------------------
// Select only looking at events with well-established PV
//-------------------------------------------------------
Int_t ncascadesForSelEvtNoTPCOnly = -1; //number of cascades after the TPConly selection
Int_t nTrackMultiplicityForSelEvtNoTPCOnly = -1; //number of tracks after the TPConly selection
- if (fAnalysisType == "ESD" ) {
- // - Select only looking at events with well-established PV
- if (fkQualityCutNoTPConlyPrimVtx) {
- const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
- const AliESDVertex *lPrimaryTrackingVtx = lESDevent->GetPrimaryVertexTracks();
- 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;
+ // - Selection for the two colliding systems
+ if (fCollidingSystem == "pp") {
+ if (fAnalysisType == "ESD" ) {
+ // - Select only looking at events with well-established PV
+ if (fkQualityCutNoTPConlyPrimVtx) {
+ const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
+ const AliESDVertex *lPrimaryTrackingVtx = lESDevent->GetPrimaryVertexTracks();
+ 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;
+ }
}
- }
- // - Take the number of cascades and tracks after TPConly selection
- ncascadesForSelEvtNoTPCOnly = lESDevent->GetNumberOfCascades();
- nTrackMultiplicityForSelEvtNoTPCOnly = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
- } else if (fAnalysisType == "AOD") {
- // - Select only looking at events with well-established PV
- if (fkQualityCutNoTPConlyPrimVtx) {
- const AliAODVertex *lPrimarySPDVtx = lAODevent->GetPrimaryVertexSPD();
- const AliAODVertex *lPrimaryTrackingAODVtx = lAODevent->GetPrimaryVertex();
- if (!lPrimarySPDVtx && !lPrimaryTrackingAODVtx) {
- 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;
+ // - Take the number of cascades and tracks after TPConly selection
+ ncascadesForSelEvtNoTPCOnly = lESDevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnly = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
+ } else if (fAnalysisType == "AOD") {
+ // - Select only looking at events with well-established PV
+ if (fkQualityCutNoTPConlyPrimVtx) {
+ const AliAODVertex *lPrimarySPDVtx = lAODevent->GetPrimaryVertexSPD();
+ const AliAODVertex *lPrimaryTrackingAODVtx = lAODevent->GetPrimaryVertex();
+ if (!lPrimarySPDVtx && !lPrimaryTrackingAODVtx) {
+ 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;
+ }
}
+ // - Take the number of cascades and tracks after TPConly selection
+ ncascadesForSelEvtNoTPCOnly = lAODevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnly = -100; //FIXME
+ }
+ } else if (fCollidingSystem == "pPb") {
+ if (fAnalysisType == "ESD") {
+ Bool_t fHasVertex = kFALSE;
+ const AliESDVertex *vertex = lESDevent->GetPrimaryVertexTracks();
+ if (vertex->GetNContributors() < 1) {
+ vertex = lESDevent->GetPrimaryVertexSPD();
+ if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
+ 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 (fUtils->IsFirstEventInChunk(lESDevent)) { //Is First event in chunk rejection: Still present!
+ 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;
+ }
+ // - Take the number of cascades and tracks after TPConly selection
+ ncascadesForSelEvtNoTPCOnly = lESDevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnly = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
+ } else if (fAnalysisType == "AOD") {
+ Bool_t fHasVertex = kFALSE;
+ const AliAODVertex *vertex = lAODevent->GetPrimaryVertex();
+ if (vertex->GetNContributors() < 1) {
+ vertex = lAODevent->GetPrimaryVertexSPD();
+ if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
+ 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
+ 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;
+ }
+ // - Take the number of cascades and tracks after TPConly selection
+ ncascadesForSelEvtNoTPCOnly = lAODevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnly = -100; //FIXME: I can't find the equivalent method for the AOD
}
- // - Take the number of cascades and tracks after TPConly selection
- ncascadesForSelEvtNoTPCOnly = lAODevent->GetNumberOfCascades();
- nTrackMultiplicityForSelEvtNoTPCOnly = -100; //FIXME
}
+ // - Fill the plots
fHistCascadeMultiplicityForSelEvtNoTPCOnly->Fill(ncascadesForSelEvtNoTPCOnly);
fHistTrackMultiplicityForSelEvtNoTPCOnly->Fill(nTrackMultiplicityForSelEvtNoTPCOnly);
//-----------------
Int_t ncascadesForSelEvtNoTPCOnlyNoPileup = -1; //number of cascades after the NoPileup selection
Int_t nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = -1; //number of tracks after the Pileup selection
- if (fAnalysisType == "ESD" ) {
- // - Selection for pile up
- if (fkRejectEventPileUp) {
+ if (fkRejectEventPileUp && fCollidingSystem == "pp") {
+ if (fAnalysisType == "ESD") {
if(lESDevent->IsPileupFromSPD()){
AliWarning("Pb / Pile-up event ... return!");
PostData(1, fListHistCascade);
PostData(5, fCFContCascadePIDAsOmegaPlus);
PostData(6, fCFContAsCascadeCuts);
return;
- }
- }
- // - Take the number of cascades and tracks after Pileup selection
- ncascadesForSelEvtNoTPCOnlyNoPileup = lESDevent->GetNumberOfCascades();
- nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
- } else if (fAnalysisType == "AOD") {
- // - Selection for pile up
- if (fkRejectEventPileUp) {
+ }
+ } else if (fAnalysisType == "AOD") {
if(lAODevent->IsPileupFromSPD()){
AliWarning("Pb / Pile-up event ... return!");
PostData(1, fListHistCascade);
PostData(5, fCFContCascadePIDAsOmegaPlus);
PostData(6, fCFContAsCascadeCuts);
return;
- }
+ }
}
- // - Take the number of cascades and tracks after Pileup selection
+ }
+ // - Take the number of cascades and tracks after Pileup selection
+ if (fAnalysisType == "ESD") {
+ ncascadesForSelEvtNoTPCOnlyNoPileup = lESDevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
+ } else if (fAnalysisType == "AOD") {
ncascadesForSelEvtNoTPCOnlyNoPileup = lAODevent->GetNumberOfCascades();
nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = -100;
}