fHistCascadeMultiplicityBeforeAnySel(0),
fHistCascadeMultiplicityAfterSDDSel(0),
fHistCascadeMultiplicityAfterPhysicsSel(0),
- fHistCascadeMultiplicityAfterVertexCutSel(0),
fHistCascadeMultiplicityForSelEvtNoTPCOnly(0),
fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup(0),
+ fHistCascadeMultiplicityAfterVertexCutSel(0),
// Tracks multiplicity plots
fHistTrackMultiplicityBeforeAnySel(0),
fHistTrackMultiplicityAfterSDDSel(0),
fHistTrackMultiplicityAfterPhysicsSel(0),
- fHistTrackMultiplicityAfterVertexCutSel(0),
fHistTrackMultiplicityForSelEvtNoTPCOnly(0),
fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup(0),
+ fHistTrackMultiplicityAfterVertexCutSel(0),
// Vertex position plots (BestVertex)
fHistPVx(0), fHistPVy(0), fHistPVz(0),
fHistPVxAnalysis(0), fHistPVyAnalysis(0), fHistPVzAnalysis(0),
fHistCascadeMultiplicityBeforeAnySel(0),
fHistCascadeMultiplicityAfterSDDSel(0),
fHistCascadeMultiplicityAfterPhysicsSel(0),
- fHistCascadeMultiplicityAfterVertexCutSel(0),
fHistCascadeMultiplicityForSelEvtNoTPCOnly(0),
fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup(0),
+ fHistCascadeMultiplicityAfterVertexCutSel(0),
// Tracks multiplicity plots
fHistTrackMultiplicityBeforeAnySel(0),
fHistTrackMultiplicityAfterSDDSel(0),
fHistTrackMultiplicityAfterPhysicsSel(0),
- fHistTrackMultiplicityAfterVertexCutSel(0),
fHistTrackMultiplicityForSelEvtNoTPCOnly(0),
fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup(0),
+ fHistTrackMultiplicityAfterVertexCutSel(0),
// Vertex position plots (BestVertex)
fHistPVx(0), fHistPVy(0), fHistPVz(0),
fHistPVxAnalysis(0), fHistPVyAnalysis(0), fHistPVzAnalysis(0),
50, 0, 50);
fListHistCascade->Add(fHistCascadeMultiplicityAfterPhysicsSel);
}
- if(! fHistCascadeMultiplicityAfterVertexCutSel) {
- fHistCascadeMultiplicityAfterVertexCutSel = new TH1F("fHistCascadeMultiplicityAfterVertexCutSel",
- "Cascades per event (after vertex cut selection);Nbr of Cascades/Evt;Events",
- 50, 0, 50);
- fListHistCascade->Add(fHistCascadeMultiplicityAfterVertexCutSel);
- }
if(! fHistCascadeMultiplicityForSelEvtNoTPCOnly) {
fHistCascadeMultiplicityForSelEvtNoTPCOnly = new TH1F("fHistCascadeMultiplicityForSelEvtNoTPCOnly",
"Cascades per event (for selected events with well-established PV);Nbr of Cascades/Evt;Events",
50, 0, 50);
fListHistCascade->Add(fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup);
}
+ if(! fHistCascadeMultiplicityAfterVertexCutSel) {
+ fHistCascadeMultiplicityAfterVertexCutSel = new TH1F("fHistCascadeMultiplicityAfterVertexCutSel",
+ "Cascades per event (after vertex cut selection);Nbr of Cascades/Evt;Events",
+ 50, 0, 50);
+ fListHistCascade->Add(fHistCascadeMultiplicityAfterVertexCutSel);
+ }
// - Tracks multiplicity plots
if(! fHistTrackMultiplicityBeforeAnySel) {
fHistTrackMultiplicityBeforeAnySel = new TH1F("fHistTrackMultiplicityBeforeAnySel",
200, 0, 200);
fListHistCascade->Add(fHistTrackMultiplicityAfterPhysicsSel);
}
- if(! fHistTrackMultiplicityAfterVertexCutSel) {
- fHistTrackMultiplicityAfterVertexCutSel = new TH1F("fHistTrackMultiplicityAfterVertexCutSel",
- "Tracks per event (after vertex cut selection);Nbr of Cascades/Evt;Events",
- 200, 0, 200);
- fListHistCascade->Add(fHistTrackMultiplicityAfterVertexCutSel);
- }
if(! fHistTrackMultiplicityForSelEvtNoTPCOnly) {
fHistTrackMultiplicityForSelEvtNoTPCOnly = new TH1F("fHistTrackMultiplicityForSelEvtNoTPCOnly",
"Tracks per event (for selected events with well-established PV);Nbr of Cascades/Evt;Events",
200, 0, 200);
fListHistCascade->Add(fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup);
}
+ if(! fHistTrackMultiplicityAfterVertexCutSel) {
+ fHistTrackMultiplicityAfterVertexCutSel = new TH1F("fHistTrackMultiplicityAfterVertexCutSel",
+ "Tracks per event (after vertex cut selection);Nbr of Cascades/Evt;Events",
+ 200, 0, 200);
+ fListHistCascade->Add(fHistTrackMultiplicityAfterVertexCutSel);
+ }
// - Vertex position plots
if(! fHistPVx ){
fHistPVx = new TH1F("fHistPVx", "Best PV position in x; x (cm); Events", 2000, -0.5, 0.5);
lNbBinsPerVar[0] = 100;
lNbBinsPerVar[1] = 800;
lNbBinsPerVar[2] = 22;
- fCFContCascadePIDXiMinus = new AliCFContainer("fCFContCascadePIDXiMinus","Pt_{cascade} Vs M_{#Xi^{-} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ 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 );
//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;
- fCFContCascadePIDXiPlus = new AliCFContainer("fCFContCascadePIDXiPlus","Pt_{cascade} Vs M_{#Xi^{+} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ 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 );
//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;
- fCFContCascadePIDOmegaMinus = new AliCFContainer("fCFContCascadePIDOmegaMinus","Pt_{cascade} Vs M_{#Omega^{-} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ 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 );
//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;
- fCFContCascadePIDOmegaPlus = new AliCFContainer("fCFContCascadePIDOmegaPlus","Pt_{cascade} Vs M_{#Omega^{+} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ 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 );
//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
- fCFContCascadeCuts = new AliCFContainer("fCFContCascadeCuts","Container for Cascade cuts", lNbSteps, lNbVariables, lNbBinsPerVar);
+ 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);
//Setting the bin limits
//0 - DcaXiDaughters
Double_t *lBinLim0 = new Double_t[ lNbBinsPerVar[0] + 1 ];
///////////////////
// EVENT SELECTIONS
- ///////////////////
-
+ ///////////////////
+ // In order:
+ // 1) SDD selection
+ // 2) Physics selection
+ // 3) Select only looking at events with well-established PV
+ // 4) Pileup selection
+ // 5) |Z| < 10 cm
+
//----------------------
// Before any selections
//----------------------
// - Fill the plots
fHistCascadeMultiplicityAfterPhysicsSel->Fill(ncascadesAfterPhysicsSel);
fHistTrackMultiplicityAfterPhysicsSel->Fill(nTrackMultiplicityAfterPhysicsSel);
-
+
+ //------------------------------
+ // 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() ){
+ 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
+ }
+ // - Fill the plots
+ fHistCascadeMultiplicityForSelEvtNoTPCOnly->Fill(ncascadesForSelEvtNoTPCOnly);
+ fHistTrackMultiplicityForSelEvtNoTPCOnly->Fill(nTrackMultiplicityForSelEvtNoTPCOnly);
+
+ //----------------
+ // Pilup selection
+ //----------------
+ // - Define variables
+ Int_t ncascadesForSelEvtNoTPCOnlyNoPileup = 0;
+ Int_t nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = 0;
+ // - Selection for ESD and AOD
+ if (fAnalysisType == "ESD") {
+ if (fkQualityCutPileup) {
+ if(lESDevent->IsPileupFromSPD()){
+ AliWarning("Pb / Pile-up event ... 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 Pileup selection
+ ncascadesForSelEvtNoTPCOnlyNoPileup = lESDevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
+ } else if (fAnalysisType == "AOD") {
+ if (fkQualityCutPileup) {
+ if(lAODevent->IsPileupFromSPD()){
+ AliWarning("Pb / Pile-up event ... 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 Pileup selection
+ ncascadesForSelEvtNoTPCOnlyNoPileup = lAODevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = -100; //FIXME: I can't find the equivalent method for the AOD
+ }
+ fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup->Fill(ncascadesForSelEvtNoTPCOnlyNoPileup);
+ fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup->Fill(nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup);
+
//----------------------------------------------------
// Vertex Z position selection (+ magnetic field info)
//----------------------------------------------------
fHistCascadeMultiplicityAfterVertexCutSel->Fill(ncascadesAfterVertexSel);
fHistTrackMultiplicityAfterVertexCutSel->Fill(nTrackMultiplicityAfterVertexSel);
- //------------------------------
- // 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() ){
- 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
- }
- // - Fill the plots
- fHistCascadeMultiplicityForSelEvtNoTPCOnly->Fill(ncascadesForSelEvtNoTPCOnly);
- fHistTrackMultiplicityForSelEvtNoTPCOnly->Fill(nTrackMultiplicityForSelEvtNoTPCOnly);
-
- //----------------
- // Pilup selection
- //----------------
- // - Define variables
- Int_t ncascadesForSelEvtNoTPCOnlyNoPileup = 0;
- Int_t nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = 0;
+ // - Vertex position plots: after any event selections
tPrimaryVtxPosition[0] = -100.0;
tPrimaryVtxPosition[1] = -100.0;
tPrimaryVtxPosition[2] = -100.0;
- // - Selection for ESD and AOD
if (fAnalysisType == "ESD") {
- if (fkQualityCutPileup) {
- if(lESDevent->IsPileupFromSPD()){
- AliWarning("Pb / Pile-up event ... 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 Pileup selection
- ncascadesForSelEvtNoTPCOnlyNoPileup = lESDevent->GetNumberOfCascades();
- nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
- // - Take the vertex position after all selections
- const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
- tPrimaryVtxPosition[0] = primaryVtx->GetX();
- tPrimaryVtxPosition[1] = primaryVtx->GetY();
- tPrimaryVtxPosition[2] = primaryVtx->GetZ();
+ const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
+ tPrimaryVtxPosition[0] = primaryVtx->GetX();
+ tPrimaryVtxPosition[1] = primaryVtx->GetY();
+ tPrimaryVtxPosition[2] = primaryVtx->GetZ();
} else if (fAnalysisType == "AOD") {
- if (fkQualityCutPileup) {
- if(lAODevent->IsPileupFromSPD()){
- AliWarning("Pb / Pile-up event ... 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 Pileup selection
- ncascadesForSelEvtNoTPCOnlyNoPileup = lAODevent->GetNumberOfCascades();
- nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = -100; //FIXME: I can't find the equivalent method for the AOD
- // - Take the vertex position after all selections
- const AliVVertex *primaryVtx = lAODevent->GetPrimaryVertex();
- tPrimaryVtxPosition[0] = primaryVtx->GetX();
- tPrimaryVtxPosition[1] = primaryVtx->GetY();
- tPrimaryVtxPosition[2] = primaryVtx->GetZ();
+ const AliVVertex *primaryVtx = lAODevent->GetPrimaryVertex();
+ tPrimaryVtxPosition[0] = primaryVtx->GetX();
+ tPrimaryVtxPosition[1] = primaryVtx->GetY();
+ tPrimaryVtxPosition[2] = primaryVtx->GetZ();
}
- // - Fill the plots
fHistPVxAnalysis->Fill( tPrimaryVtxPosition[0] );
fHistPVyAnalysis->Fill( tPrimaryVtxPosition[1] );
fHistPVzAnalysis->Fill( tPrimaryVtxPosition[2] );
- fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup->Fill(ncascadesForSelEvtNoTPCOnlyNoPileup);
- fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup->Fill(nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup);
+
//////////////////////////////
Double_t lBachMomZ = 0.;
Double_t lBachTransvMom = 0.;
Double_t lBachTotMom = 0.;
+ Double_t lpTrackTransvMom = 0.;
+ Double_t lnTrackTransvMom = 0.;
Short_t lChargeXi = -2;
Double_t lV0toXiCosineOfPointingAngle = 0.;
Double_t lRapXi = -20.0, lRapOmega = -20.0, lEta = -20.0, lTheta = 360., lPhi = 720.;
xi->GetBPxPyPz( lBachMomX, lBachMomY, lBachMomZ );
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] );
lRapXi = xi->RapXi();
lBachMomZ = xi->MomBachZ();
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() );
lRapXi = xi->RapXi();
lRapOmega = xi->RapOmega();
} // end of AOD treatment
+ // Cut on pt of the three daughter tracks
+ if (lBachTransvMom<fMinPtCutOnDaughterTracks) continue;
+ if (lpTrackTransvMom<fMinPtCutOnDaughterTracks) continue;
+ if (lnTrackTransvMom<fMinPtCutOnDaughterTracks) continue;
+
+ // Cut on pseudorapidity of the three daughter tracks
+ if (TMath::Abs(etaBach)>fEtaCutOnDaughterTracks) continue;
+ if (TMath::Abs(etaPos)>fEtaCutOnDaughterTracks) continue;
+ if (TMath::Abs(etaNeg)>fEtaCutOnDaughterTracks) continue;
+
+
//----------------------------------
// Calculate proper lenght for cascade
Double_t cascadeMass = 0.;
// Origin: AliAnalysisTaskESDCheckV0 by Boris Hippolyte Nov2007, hippolyt@in2p3.fr
// 2. Prepare the plots which stand as raw material for yield extraction (wi/wo PID)
// 3. Supply an AliCFContainer meant to define the optimised topological selections
-// 4. Rough azimuthal correlation study (Eta, Phi)
// Adapted to Cascade : A.Maire Mar2008, antonin.maire@ires.in2p3.fr
// Modified : A.Maire Mar2010, antonin.maire@ires.in2p3.fr
// Modified for PbPb analysis: M. Nicassio Feb 2011, maria.nicassio@ba.infn.it
-// Modified for pp2.76 analysis: D. Colella Feb2012, domenico.colella@ba.infn.it
+// Modified for pp@2.76 analysis: D. Colella Feb2012, domenico.colella@ba.infn.it
//-----------------------------------------------------------------
class TList;
virtual void UserCreateOutputObjects();
virtual void UserExec(Option_t *option);
- /*void DoAngularCorrelation(const Char_t *lCascType,
- Double_t lInvMassCascade,
- const Int_t *lArrTrackID,
- TVector3 &lTVect3MomXi,
- Double_t lEtaXi);*/
virtual Int_t DoESDTrackWithTPCrefitMultiplicity(const AliESDEvent *lESDevent);
//virtual Int_t Tracks2V0vertices(AliESDEvent *event);
//virtual Int_t V0sTracks2CascadeVertices(AliESDEvent *event);
//virtual Double_t PropagateToDCA(AliESDv0 *vtx,AliExternalTrackParam *trk,Double_t b);
virtual void Terminate(Option_t *);
- void SetAnalysisType (const char* analysisType = "ESD") { fAnalysisType = analysisType; }
- void SetRelaunchV0CascVertexers (Bool_t rerunV0CascVertexers = 0 ) { fkRerunV0CascVertexers = rerunV0CascVertexers; }
- void SetSDDSelection (Bool_t sddOnSelection = kTRUE) { fkSDDSelectionOn = sddOnSelection; }
- void SetQualityCutZprimVtxPos (Bool_t qualityCutZprimVtxPos = kTRUE) { fkQualityCutZprimVtxPos = qualityCutZprimVtxPos; }
- 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 SetQualityCutPileup (Bool_t qualityCutPileup = kTRUE) { fkQualityCutPileup = qualityCutPileup; }
- void SetWithSDDOn (Bool_t withsddOn = kTRUE) { fwithSDD = withsddOn; }
- void SetQualityCutMinnTPCcls (Int_t minnTPCcls = 70 ) { fMinnTPCcls = minnTPCcls; }
- void SetExtraSelections (Bool_t extraSelections = 0 ) { fkExtraSelections = extraSelections; }
- void SetVertexRange (Float_t vtxrange = 0. ) { fVtxRange = vtxrange; }
- void SetVertexRangeMin (Float_t vtxrangemin = 0. ) { fVtxRangeMin = vtxrangemin; }
- void SetMinptCutOnDaughterTracks (Float_t minptdaughtrks = 0. ) { fMinPtCutOnDaughterTracks = minptdaughtrks; }
- void SetEtaCutOnDaughterTracks (Float_t etadaughtrks = 0. ) { fEtaCutOnDaughterTracks = etadaughtrks; }
+ void SetAnalysisType (const char* analysisType = "ESD" ) { fAnalysisType = analysisType; }
+ void SetRelaunchV0CascVertexers (Bool_t rerunV0CascVertexers = kFALSE ) { fkRerunV0CascVertexers = rerunV0CascVertexers; }
+ void SetSDDSelection (Bool_t sddOnSelection = kTRUE ) { fkSDDSelectionOn = sddOnSelection; }
+ void SetQualityCutZprimVtxPos (Bool_t qualityCutZprimVtxPos = kTRUE ) { fkQualityCutZprimVtxPos = qualityCutZprimVtxPos; }
+ 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 SetQualityCutPileup (Bool_t qualityCutPileup = kTRUE ) { fkQualityCutPileup = qualityCutPileup; }
+ void SetWithSDDOn (Bool_t withsddOn = kTRUE ) { fwithSDD = withsddOn; }
+ void SetQualityCutMinnTPCcls (Int_t minnTPCcls = 70 ) { fMinnTPCcls = minnTPCcls; }
+ void SetExtraSelections (Bool_t extraSelections = kFALSE ) { fkExtraSelections = extraSelections; }
+ void SetVertexRange (Float_t vtxrange = 10.0 ) { fVtxRange = vtxrange; }
+ void SetVertexRangeMin (Float_t vtxrangemin = 0.0 ) { fVtxRangeMin = vtxrangemin; }
+ void SetMinptCutOnDaughterTracks (Float_t minptdaughtrks = 0.0 ) { fMinPtCutOnDaughterTracks = minptdaughtrks; }
+ void SetEtaCutOnDaughterTracks (Float_t etadaughtrks = 0.8 ) { fEtaCutOnDaughterTracks = etadaughtrks; }
private:
// Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
TH1F *fHistCascadeMultiplicityBeforeAnySel; //! Cascade multiplicity distribution before any evnt selection
TH1F *fHistCascadeMultiplicityAfterSDDSel; //! Cascade multiplicity distribution after evnt selection on the SDD
TH1F *fHistCascadeMultiplicityAfterPhysicsSel; //! Cascade multiplicity distribution after evnt Physics Selection
- TH1F *fHistCascadeMultiplicityAfterVertexCutSel; //! Cascade multiplicity distribution after evnt selection on the Z vertex position cut
TH1F *fHistCascadeMultiplicityForSelEvtNoTPCOnly; //! Cascade multiplicity distribution after evnt noTPCOnly selection
TH1F *fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup; //! Cascade multiplicity distribution after evnt PileUp selection
+ TH1F *fHistCascadeMultiplicityAfterVertexCutSel; //! Cascade multiplicity distribution after evnt selection on the Z vertex position cut
// Tracks multiplicity plots
TH1F *fHistTrackMultiplicityBeforeAnySel; //! Track multiplicity distribution before any evnt selection
TH1F *fHistTrackMultiplicityAfterSDDSel; //! Track multiplicity distribution after evnt selection on the SDD
TH1F *fHistTrackMultiplicityAfterPhysicsSel; //! Track multiplicity distribution after evnt Physics Selection
- TH1F *fHistTrackMultiplicityAfterVertexCutSel; //! Track multiplicity distribution after evnt selection on the Z vertex position cut
TH1F *fHistTrackMultiplicityForSelEvtNoTPCOnly; //! Track multiplicity distribution after evnt noTPCOnly selection
TH1F *fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup; //! Track multiplicity distributionafter evnt PileUp selection
+ TH1F *fHistTrackMultiplicityAfterVertexCutSel; //! Track multiplicity distribution after evnt selection on the Z vertex position cut
// Vertex position plots (BestVertex)
TH1F *fHistPVx; //! Best primary vertex X position distribution after all evnt selection
TH1F *fHistPVy; //! Best primary vertex Y position distribution after all evnt selection
TH2F *f2dHistDcaV0DaughtersXivsInvMass; //! cut variables vs inv. mass
TH2F *f2dHistDcaV0ToPrimVertexXivsInvMass; //! cut variables vs inv. mass
// Containers for cuts study
- AliCFContainer *fCFContCascadePIDXiMinus; //! for Xi- : Container to store any 3D histos with the different PID flavours
- AliCFContainer *fCFContCascadePIDXiPlus; //! for Xi+ : Container to store any 3D histos with the different PID flavours
- AliCFContainer *fCFContCascadePIDOmegaMinus; //! for Omega-: Container to store any 3D histos with the different PID flavours
- AliCFContainer *fCFContCascadePIDOmegaPlus; //! for Omega+: Container to store any 3D histos with the different PID flavours
- AliCFContainer *fCFContCascadeCuts; //! Container meant to store all the relevant distributions corresponding to the cut variables
+ AliCFContainer *fCFContCascadePIDXiMinus; //! for Xi- : Container to store any 3D histos with the different PID flavours
+ AliCFContainer *fCFContCascadePIDXiPlus; //! for Xi+ : Container to store any 3D histos with the different PID flavours
+ AliCFContainer *fCFContCascadePIDOmegaMinus; //! for Omega-: Container to store any 3D histos with the different PID flavours
+ AliCFContainer *fCFContCascadePIDOmegaPlus; //! for Omega+: Container to store any 3D histos with the different PID flavours
+ AliCFContainer *fCFContCascadeCuts; //! Container meant to store all the relevant distributions corresponding to the cut variables
AliAnalysisTaskCheckCascadepp276(const AliAnalysisTaskCheckCascadepp276&); // not implemented
fHistCascadeMultiplicityBeforeAnySel(0),
fHistCascadeMultiplicityAfterSDDSel(0),
fHistCascadeMultiplicityAfterPhysicsSel(0),
- fHistCascadeMultiplicityAfterVertexCutSel(0),
fHistCascadeMultiplicityForSelEvtNoTPCOnly(0),
fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup(0),
+ fHistCascadeMultiplicityAfterVertexCutSel(0),
fHistnXiPlusPerEvTot(0), // After any event selections, in all the eta and pt range
fHistnXiMinusPerEvTot(0), // After any event selections, in all the eta and pt range
fHistnOmegaPlusPerEvTot(0), // After any event selections, in all the eta and pt range
fHistTrackMultiplicityBeforeAnySel(0),
fHistTrackMultiplicityAfterSDDSel(0),
fHistTrackMultiplicityAfterPhysicsSel(0),
- fHistTrackMultiplicityAfterVertexCutSel(0),
fHistTrackMultiplicityForSelEvtNoTPCOnly(0),
fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup(0),
+ fHistTrackMultiplicityAfterVertexCutSel(0),
// Vertex position plots (BestVertex)
- fHistPVx(0), // After SDD and Physics event selectione but before any other event selections
- fHistPVy(0), // After SDD and Physics event selectione but before any other event selections
- fHistPVz(0), // After SDD and Physics event selectione but before any other event selections
- fHistPVxAnalysis(0), // After any event selections
+ fHistPVx(0), // After any selections but before |Z| < 10 cm
+ fHistPVy(0), // After any selections but before |Z| < 10 cm
+ fHistPVz(0), // After any selections but before |Z| < 10 cm
+ fHistPVxAnalysis(0), // After any event selections
fHistPVyAnalysis(0), // After any event selections
fHistPVzAnalysis(0), // After any event selections
// - Plots before Physics Selection
fHistCascadeMultiplicityBeforeAnySel(0),
fHistCascadeMultiplicityAfterSDDSel(0),
fHistCascadeMultiplicityAfterPhysicsSel(0),
- fHistCascadeMultiplicityAfterVertexCutSel(0),
fHistCascadeMultiplicityForSelEvtNoTPCOnly(0),
fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup(0),
+ fHistCascadeMultiplicityAfterVertexCutSel(0),
fHistnXiPlusPerEvTot(0), // After any event selections, in all the eta and pt range
fHistnXiMinusPerEvTot(0), // After any event selections, in all the eta and pt range
fHistnOmegaPlusPerEvTot(0), // After any event selections, in all the eta and pt range
fHistTrackMultiplicityBeforeAnySel(0),
fHistTrackMultiplicityAfterSDDSel(0),
fHistTrackMultiplicityAfterPhysicsSel(0),
- fHistTrackMultiplicityAfterVertexCutSel(0),
fHistTrackMultiplicityForSelEvtNoTPCOnly(0),
fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup(0),
+ fHistTrackMultiplicityAfterVertexCutSel(0),
// Vertex position plots (BestVertex)
- fHistPVx(0), // After SDD and Physics event selectione but before any other event selections
- fHistPVy(0), // After SDD and Physics event selectione but before any other event selections
- fHistPVz(0), // After SDD and Physics event selectione but before any other event selections
- fHistPVxAnalysis(0), // After any event selections
+ fHistPVx(0), // After any selections but before |Z| < 10 cm
+ fHistPVy(0), // After any selections but before |Z| < 10 cm
+ fHistPVz(0), // After any selections but before |Z| < 10 cm
+ fHistPVxAnalysis(0), // After any event selections
fHistPVyAnalysis(0), // After any event selections
fHistPVzAnalysis(0), // After any event selections
// - Plots before Physics Selection
- f3dHistGenPtVsGenYvsNtracksXiMinus(0), // After the SDD event selection (For efficinecy calculation)
- f3dHistGenPtVsGenctauvsYXiMinus(0), // After the SDD event selection (For efficinecy calculation)
- f3dHistGenPtVsGenYvsNtracksXiPlus(0), // After the SDD event selection (For efficinecy calculation)
- f3dHistGenPtVsGenctauvsYXiPlus(0), // After the SDD event selection (For efficinecy calculation)
- f3dHistGenPtVsGenYvsNtracksOmegaMinus(0), // After the SDD event selection (For efficinecy calculation)
- f3dHistGenPtVsGenctauvsYOmegaMinus(0), // After the SDD event selection (For efficinecy calculation)
- f3dHistGenPtVsGenYvsNtracksOmegaPlus(0), // After the SDD event selection (For efficinecy calculation)
- f3dHistGenPtVsGenctauvsYOmegaPlus(0), // After the SDD event selection (For efficinecy calculation)
+ f3dHistGenPtVsGenYvsNtracksXiMinus(0), // After the SDD event selection (For efficiency calculation)
+ f3dHistGenPtVsGenctauvsYXiMinus(0), // After the SDD event selection (For efficiency calculation)
+ f3dHistGenPtVsGenYvsNtracksXiPlus(0), // After the SDD event selection (For efficiency calculation)
+ f3dHistGenPtVsGenctauvsYXiPlus(0), // After the SDD event selection (For efficiency calculation)
+ f3dHistGenPtVsGenYvsNtracksOmegaMinus(0), // After the SDD event selection (For efficiency calculation)
+ f3dHistGenPtVsGenctauvsYOmegaMinus(0), // After the SDD event selection (For efficiency calculation)
+ f3dHistGenPtVsGenYvsNtracksOmegaPlus(0), // After the SDD event selection (For efficiency calculation)
+ f3dHistGenPtVsGenctauvsYOmegaPlus(0), // After the SDD event selection (For efficiency calculation)
// - Generated cascade plots
// After all the event selections
//Xi-
"Cascades per event (after physics selection);Nbr of Cascades/Evt;Events", 50, 0, 50);
fListHistCascade->Add(fHistCascadeMultiplicityAfterPhysicsSel);
}
- if(! fHistCascadeMultiplicityAfterVertexCutSel) {
- fHistCascadeMultiplicityAfterVertexCutSel = new TH1F("fHistCascadeMultiplicityAfterVertexCutSel",
- "Cascades per event (after vertex cut selection);Nbr of Cascades/Evt;Events", 50, 0, 50);
- fListHistCascade->Add(fHistCascadeMultiplicityAfterVertexCutSel);
- }
if(! fHistCascadeMultiplicityForSelEvtNoTPCOnly) {
fHistCascadeMultiplicityForSelEvtNoTPCOnly = new TH1F("fHistCascadeMultiplicityForSelEvtNoTPCOnly",
"Cascades per event (for selected events with well-established PV);Nbr of Cascades/Evt;Events", 50, 0, 50);
"Cascades per event (for selected events with well-establisched PV and no pile-up);Nbr of Cascades/Evt;Events", 50, 0, 50);
fListHistCascade->Add(fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup);
}
+ if(! fHistCascadeMultiplicityAfterVertexCutSel) {
+ fHistCascadeMultiplicityAfterVertexCutSel = new TH1F("fHistCascadeMultiplicityAfterVertexCutSel",
+ "Cascades per event (after vertex cut selection);Nbr of Cascades/Evt;Events", 50, 0, 50);
+ fListHistCascade->Add(fHistCascadeMultiplicityAfterVertexCutSel);
+ }
// - Tracks multiplicity plots
if(! fHistTrackMultiplicityBeforeAnySel) {
fHistTrackMultiplicityBeforeAnySel = new TH1F("fHistTrackMultiplicityBeforeAnySel",
"Tracks per event (after physics selection);Nbr of Tracks/Evt;Events", 200, 0, 200);
fListHistCascade->Add(fHistTrackMultiplicityAfterPhysicsSel);
}
- if(! fHistTrackMultiplicityAfterVertexCutSel) {
- fHistTrackMultiplicityAfterVertexCutSel = new TH1F("fHistTrackMultiplicityAfterVertexCutSel",
- "Tracks per event (after vertex cut selection);Nbr of Tracks/Evt;Events", 200, 0, 200);
- fListHistCascade->Add(fHistTrackMultiplicityAfterVertexCutSel);
- }
if(! fHistTrackMultiplicityForSelEvtNoTPCOnly) {
fHistTrackMultiplicityForSelEvtNoTPCOnly = new TH1F("fHistTrackMultiplicityForSelEvtNoTPCOnly",
"Tracks per event (for selected events with well-established PV);Nbr of Tracks/Evt;Events", 200, 0, 200);
"Tracks per event (for selected events with well-establisched PV and no pile-up);Nbr of Tracks/Evt;Events", 200, 0, 200);
fListHistCascade->Add(fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup);
}
+ if(! fHistTrackMultiplicityAfterVertexCutSel) {
+ fHistTrackMultiplicityAfterVertexCutSel = new TH1F("fHistTrackMultiplicityAfterVertexCutSel",
+ "Tracks per event (after vertex cut selection);Nbr of Tracks/Evt;Events", 200, 0, 200);
+ fListHistCascade->Add(fHistTrackMultiplicityAfterVertexCutSel);
+ }
// - Vertex position plots
if(! fHistPVx ){
fHistPVx = new TH1F("fHistPVx", "Best PV position in x; x (cm); Events", 2000, -0.5, 0.5);
lNbBinsPerVar[0] = 100;
lNbBinsPerVar[1] = 800;
lNbBinsPerVar[2] = 22;
- fCFContCascadePIDAsXiMinus = new AliCFContainer("fCFContCascadePIDAsXiMinus","Pt_{cascade} Vs M_{#Xi^{-} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ fCFContCascadePIDAsXiMinus = new AliCFContainer(Form("fCFContCascadePIDAsXiMinus_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
fCFContCascadePIDAsXiMinus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDAsXiMinus->SetBinLimits(1, 1.2 , 2.0 ); // Xi Effective mass
lNbBinsPerVar[0] = 100;
lNbBinsPerVar[1] = 800;
lNbBinsPerVar[2] = 22;
- fCFContCascadePIDAsXiPlus = new AliCFContainer("fCFContCascadePIDAsXiPlus","Pt_{cascade} Vs M_{#Xi^{+} candidates} Vs Y_{#Xi}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ fCFContCascadePIDAsXiPlus = new AliCFContainer(Form("fCFContCascadePIDAsXiPlus_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 (valid for v4-18-10-AN)
fCFContCascadePIDAsXiPlus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDAsXiPlus->SetBinLimits(1, 1.2 , 2.0 ); // Xi Effective mass
lNbBinsPerVar[0] = 100;
lNbBinsPerVar[1] = 1000;
lNbBinsPerVar[2] = 22;
- fCFContCascadePIDAsOmegaMinus = new AliCFContainer("fCFContCascadePIDAsOmegaMinus","Pt_{cascade} Vs M_{#Omega^{-} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ fCFContCascadePIDAsOmegaMinus = new AliCFContainer(Form("fCFContCascadePIDAsOmegaMinus_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
fCFContCascadePIDAsOmegaMinus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDAsOmegaMinus->SetBinLimits(1, 1.5 , 2.5 ); // Omega Effective mass
lNbBinsPerVar[0] = 100;
lNbBinsPerVar[1] = 1000;
lNbBinsPerVar[2] = 22;
- fCFContCascadePIDAsOmegaPlus = new AliCFContainer("fCFContCascadePIDAsOmegaPlus","Pt_{cascade} Vs M_{#Omega^{+} candidates} Vs Y_{#Omega}", lNbSteps, lNbVariables, lNbBinsPerVar );
+ fCFContCascadePIDAsOmegaPlus = new AliCFContainer(Form("fCFContCascadePIDAsOmegaPlus_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
fCFContCascadePIDAsOmegaPlus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDAsOmegaPlus->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 the transverse plane
- fCFContAsCascadeCuts = new AliCFContainer("fCFContAsCascadeCuts","Cut Container for Asso. Cascades", lNbSteps, lNbVariables, lNbBinsPerVar );
+ fCFContAsCascadeCuts = new AliCFContainer(Form("fCFContAsCascadeCuts_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",fMinnTPCcls,fVtxRange,fVtxRangeMin,fMinPtCutOnDaughterTracks,fEtaCutOnDaughterTracks),"Cut Container for Asso. Cascades", lNbSteps, lNbVariables, lNbBinsPerVar );
//Setting the bin limits
//0 - DcaCascDaughters
Double_t *lBinLim0 = new Double_t[ lNbBinsPerVar[0]+1 ];
//////////////////
// Event selection
- //////////////////
-
+ //////////////////
+ // In order:
+ // 1) SDD selection
+ // 2) Physics selection
+ // 3) Select only looking at events with well-established PV
+ // 4) Pileup selection
+ // 5) |Z| < 10 cm
+
//---------------------------------------------------------
// Load the InputEvent and check it (for the ESD and AOD)
if (fAnalysisType == "ESD") {
return;
}
-
//------------------------------
// - Plots Before any selections
//------------------------------
fHistCascadeMultiplicityAfterPhysicsSel->Fill(ncascadesAfterPhysicsSel);
fHistTrackMultiplicityAfterPhysicsSel->Fill(nTrackMultiplicityAfterPhysicsSel);
+ //-------------------------------------------------------
+ // 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;
+ }
+ }
+ // - 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
+ }
+ fHistCascadeMultiplicityForSelEvtNoTPCOnly->Fill(ncascadesForSelEvtNoTPCOnly);
+ fHistTrackMultiplicityForSelEvtNoTPCOnly->Fill(nTrackMultiplicityForSelEvtNoTPCOnly);
+
+ //-----------------
+ // Pileup selection
+ //-----------------
+ 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(lESDevent->IsPileupFromSPD()){
+ AliWarning("Pb / Pile-up event ... 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 Pileup selection
+ ncascadesForSelEvtNoTPCOnlyNoPileup = lESDevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
+ } else if (fAnalysisType == "AOD") {
+ // - Selection for pile up
+ if (fkRejectEventPileUp) {
+ if(lAODevent->IsPileupFromSPD()){
+ AliWarning("Pb / Pile-up event ... 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 Pileup selection
+ ncascadesForSelEvtNoTPCOnlyNoPileup = lAODevent->GetNumberOfCascades();
+ nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = -100;
+ }
+ fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup->Fill(ncascadesForSelEvtNoTPCOnlyNoPileup);
+ fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup->Fill(nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup);
+
//-------------------
// - Vertex selection
//-------------------
fHistCascadeMultiplicityAfterVertexCutSel->Fill(ncascadesAfterVertexSel);
fHistTrackMultiplicityAfterVertexCutSel->Fill(nTrackMultiplicityAfterVertexSel);
- //-------------------------------------------------------
- // 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;
- }
- }
- // - 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
- }
- fHistCascadeMultiplicityForSelEvtNoTPCOnly->Fill(ncascadesForSelEvtNoTPCOnly);
- fHistTrackMultiplicityForSelEvtNoTPCOnly->Fill(nTrackMultiplicityForSelEvtNoTPCOnly);
-
- //-----------------
- // Pileup selection
- //-----------------
- Int_t ncascadesForSelEvtNoTPCOnlyNoPileup = -1; //number of cascades after the NoPileup selection
- Int_t nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = -1; //number of tracks after the Pileup selection
+ // - Vertex position plots: after any event selections
tPrimaryVtxPosition[0] = 0;
tPrimaryVtxPosition[1] = 0;
tPrimaryVtxPosition[2] = 0;
if (fAnalysisType == "ESD" ) {
- // - Selection for pile up
- if (fkRejectEventPileUp) {
- if(lESDevent->IsPileupFromSPD()){
- AliWarning("Pb / Pile-up event ... 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 Pileup selection
- ncascadesForSelEvtNoTPCOnlyNoPileup = lESDevent->GetNumberOfCascades();
- nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = fESDtrackCuts->GetReferenceMultiplicity(lESDevent,AliESDtrackCuts::kTrackletsITSTPC,0.5);
- // - Take the vertex position before any event selection on vertex position
const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
- tPrimaryVtxPosition[0] = primaryVtx->GetX();
+ tPrimaryVtxPosition[0] = primaryVtx->GetX();
tPrimaryVtxPosition[1] = primaryVtx->GetY();
tPrimaryVtxPosition[2] = primaryVtx->GetZ();
} else if (fAnalysisType == "AOD") {
- // - Selection for pile up
- if (fkRejectEventPileUp) {
- if(lAODevent->IsPileupFromSPD()){
- AliWarning("Pb / Pile-up event ... 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 Pileup selection
- ncascadesForSelEvtNoTPCOnlyNoPileup = lAODevent->GetNumberOfCascades();
- nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup = -100;
- // - Take the vertex position before any event selection on vertex position
const AliVVertex *primaryVtx = lAODevent->GetPrimaryVertex();
tPrimaryVtxPosition[0] = primaryVtx->GetX();
tPrimaryVtxPosition[1] = primaryVtx->GetY();
tPrimaryVtxPosition[2] = primaryVtx->GetZ();
}
- // - Take the vertex position and fill the plot after the cut on z position
fHistPVxAnalysis->Fill( tPrimaryVtxPosition[0] );
fHistPVyAnalysis->Fill( tPrimaryVtxPosition[1] );
fHistPVzAnalysis->Fill( tPrimaryVtxPosition[2] );
- fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup->Fill(ncascadesForSelEvtNoTPCOnlyNoPileup);
- fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup->Fill(nTrackMultiplicityForSelEvtNoTPCOnlyNoPileup);
-
+
//----------------------------------------------------------------------
// - Loop over the different types of GENERATED cascades (Xi-+, Omega-+)
Double_t lrecoPt = -100.;
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.;
Bool_t lAssoXiPlus = kFALSE;
Bool_t lAssoOmegaMinus = kFALSE;
Bool_t lAssoOmegaPlus = kFALSE;
+
+ Float_t etaBach = 0.;
+ Float_t etaPos = 0.;
+ Float_t etaNeg = 0.;
if ( fAnalysisType == "ESD" ) {
Double_t pV0mom[3] = {0. ,0. ,0. };
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" ) {
// - Load the cascade
Double_t lV0momY = xiAOD->MomV0Y();
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;
+
+ // - Cut on pseudorapidity of the three daughter tracks
+ if (TMath::Abs(etaBach)>fEtaCutOnDaughterTracks) continue;
+ if (TMath::Abs(etaPos)>fEtaCutOnDaughterTracks) continue;
+ if (TMath::Abs(etaNeg)>fEtaCutOnDaughterTracks) continue;
+
// - Extra-selection for cascade candidates
if (fkExtraSelections) {
if (lDcaXiDaughters > 0.3) continue; // in AliCascadeVertexer
// // AliAnalysisTaskCheckPerformanceCascadePbPb class
// // This task is for a performance study of cascade identification.
// // It works with MC info and ESD and AOD tree
-// // Origin : A.Maire Jan2010, antonin.maire@ires.in2p3.fr
+// // Origin : A.Maire Jan2010, antonin.maire@ires.in2p3.fr
// // Modified : M.Nicassio Feb2011, maria.nicassio@ba.infn.it
-// // Modified : D. Colella Feb2012, domenico.colella@ba.infn.it
+// // Modified : D.Colella Feb2012, domenico.colella@ba.infn.it
// //-----------------------------------------------------------------
class TList;
TH1F *fHistCascadeMultiplicityBeforeAnySel;
TH1F *fHistCascadeMultiplicityAfterSDDSel;
TH1F *fHistCascadeMultiplicityAfterPhysicsSel;
- TH1F *fHistCascadeMultiplicityAfterVertexCutSel;
TH1F *fHistCascadeMultiplicityForSelEvtNoTPCOnly;
TH1F *fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup;
+ TH1F *fHistCascadeMultiplicityAfterVertexCutSel;
TH1F *fHistnXiPlusPerEvTot; // After any event selections, in all the eta and pt range
TH1F *fHistnXiMinusPerEvTot; // After any event selections, in all the eta and pt range
TH1F *fHistnOmegaPlusPerEvTot; // After any event selections, in all the eta and pt range
// Tracks multiplicity plots
TH1F *fHistTrackMultiplicityBeforeAnySel;
TH1F *fHistTrackMultiplicityAfterSDDSel;
- TH1F * fHistTrackMultiplicityAfterPhysicsSel;
- TH1F *fHistTrackMultiplicityAfterVertexCutSel;
+ TH1F *fHistTrackMultiplicityAfterPhysicsSel;
TH1F *fHistTrackMultiplicityForSelEvtNoTPCOnly;
TH1F *fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup;
+ TH1F *fHistTrackMultiplicityAfterVertexCutSel;
// Vertex position plots (BestVertex)
- TH1F *fHistPVx; // After SDD and Physics event selectione but before any other event selections
- TH1F *fHistPVy; // After SDD and Physics event selectione but before any other event selections
- TH1F *fHistPVz; // After SDD and Physics event selectione but before any other event selections
+ TH1F *fHistPVx; // After any selections but before |Z| < 10 cm
+ TH1F *fHistPVy; // After any selections but before |Z| < 10 cm
+ TH1F *fHistPVz; // After any selections but before |Z| < 10 cm
TH1F *fHistPVxAnalysis; // After any event selections
TH1F *fHistPVyAnalysis; // After any event selections
TH1F *fHistPVzAnalysis; // After any event selections
AliAnalysisTaskCheckCascadepp276 *AddTaskCheckCascadepp276( Int_t minnTPCcls = 70,
- Float_t vtxlim = 10.,
- Float_t vtxlimmin = 0.,
+ Float_t vtxlim = 10.0,
+ Float_t vtxlimmin = 0.0,
Bool_t fwithsdd = kFALSE,
Bool_t kextrasel = kFALSE,
Bool_t krelaunchvertexers = kFALSE,
Bool_t ksddonselection = kTRUE,
- Float_t minptondaughtertracks = 0.,
- Float_t etacutondaughtertracks = .8,
- Bool_t standardAnalysis = kTRUE ) {
+ Float_t minptondaughtertracks = 0.0,
+ Float_t etacutondaughtertracks = 0.8) {
// 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("AddTaskCheckCascadeipp276", "No analysis manager to connect to.");
+ ::Error("AddTaskCheckCascadepp276", "No analysis manager to connect to.");
return NULL;
}
TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
// Create and configure the task
- AliAnalysisTaskCheckCascadepp276 *taskcheckcascadepp276 = new AliAnalysisTaskCheckCascadepp276(Form("TaskCheckCascadepp276_vtxlim%2.1f-%2.1f",vtxlim,vtxlimmin));
-
- taskcheckcascadepp276->SetAnalysisType (type);
- taskcheckcascadepp276->SetRelaunchV0CascVertexers (krelaunchvertexers);
- taskcheckcascadepp276->SetSDDSelection (fwithsdd); // if TRUE apply the sdd selection
- taskcheckcascadepp276->SetQualityCutZprimVtxPos (kTRUE); // selects vertices in +-10cm
- taskcheckcascadepp276->SetQualityCutNoTPConlyPrimVtx (kTRUE); // retains only events with tracking + SPD vertex
- taskcheckcascadepp276->SetQualityCutTPCrefit (kTRUE); // requires TPC refit flag to be true to select a track
- taskcheckcascadepp276->SetQualityCutnTPCcls (kTRUE); // rejects tracks that have less than n clusters in the TPC
- taskcheckcascadepp276->SetQualityCutPileup (kTRUE);
- taskcheckcascadepp276->SetWithSDDOn (ksddonselection); // selects events with SDD on
- taskcheckcascadepp276->SetQualityCutMinnTPCcls (minnTPCcls); // minimum number of TPC clusters to accept daughter tracks
- taskcheckcascadepp276->SetExtraSelections (kextrasel); // used to add other selection cuts
- taskcheckcascadepp276->SetVertexRange (vtxlim);
- taskcheckcascadepp276->SetVertexRangeMin (vtxlimmin);
- taskcheckcascadepp276->SetMinptCutOnDaughterTracks (minptondaughtertracks);
- taskcheckcascadepp276->SetEtaCutOnDaughterTracks (etacutondaughtertracks);
+ //==============================================================================
+ TString taskname = Form("TaskCheckCascadepp276_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",minnTPCcls,vtxlim,vtxlimmin,minptondaughtertracks,etacutondaughtertracks);
+ if(fwithsdd) {
+ if (ksddonselection) taskname += "_wSDDon";
+ else if (!ksddonselection) taskname += "_wSDDoff";
+ } else if (!fwithsdd) taskname += "_woSDD";
+ AliAnalysisTaskCheckCascadepp276 *taskcheckcascadepp276 = new AliAnalysisTaskCheckCascadepp276(taskname);
+ taskcheckcascadepp276->SetAnalysisType (type); // "ESD" or "AOD"
+ taskcheckcascadepp276->SetRelaunchV0CascVertexers (krelaunchvertexers); // choose if reconstruct the vertex of V0 in the cascades
+ taskcheckcascadepp276->SetSDDSelection (fwithsdd); // choose if apply SDD event selection
+ taskcheckcascadepp276->SetQualityCutZprimVtxPos (kTRUE); // choose if apply Z vtx PV position event selection
+ taskcheckcascadepp276->SetQualityCutNoTPConlyPrimVtx (kTRUE); // choose if apply no TPC only event selection
+ taskcheckcascadepp276->SetQualityCutTPCrefit (kTRUE); // choose if apply TPC refit on daughter tracks
+ taskcheckcascadepp276->SetQualityCutnTPCcls (kTRUE); // choose if apply n TPC cluster selection on daughter tracks
+ taskcheckcascadepp276->SetQualityCutPileup (kTRUE); // choose if apply no Pileup event selection
+ taskcheckcascadepp276->SetWithSDDOn (ksddonselection); // which SDD selection do you want apply? [if kTRUE select SDDon events]
+ taskcheckcascadepp276->SetQualityCutMinnTPCcls (minnTPCcls); // which value do you want apply for the minTPCcls cut?
+ taskcheckcascadepp276->SetExtraSelections (kextrasel); // choose if apply the extra selection of cascade reco.
+ taskcheckcascadepp276->SetVertexRange (vtxlim); // which higher value do you want apply for vtx Z cut?
+ taskcheckcascadepp276->SetVertexRangeMin (vtxlimmin); // which lower value do you want apply for vtx Z cut?
+ taskcheckcascadepp276->SetMinptCutOnDaughterTracks (minptondaughtertracks); // which value do you want apply for cut on min pt daughter track?
+ taskcheckcascadepp276->SetEtaCutOnDaughterTracks (etacutondaughtertracks); // which value do you want apply for cut on eta daughter track?
mgr->AddTask(taskcheckcascadepp276);
// Create ONLY the output containers for the data produced by the task.
// Get and connect other common input/output containers via the manager as below
//==============================================================================
+ // Directory name
+ TString outputFileName = Form("%s:PWGLFStrangeness.outputCheckCascadepp276", AliAnalysisManager::GetCommonFileName());
+ // Objects name
+ TString outputlistname = Form("clistCasc_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",minnTPCcls,vtxlim,vtxlimmin,minptondaughtertracks,etacutondaughtertracks);
+ if(fwithsdd) {
+ if (ksddonselection) outputlistname += "_wSDDon";
+ else if (!ksddonselection) outputlistname += "_wSDDoff";
+ } else if (!fwithsdd) outputlistname += "_woSDD";
- // User file name (if need be)
-
- TString outputFileName = AliAnalysisManager::GetCommonFileName();
- if (standardAnalysis) outputFileName += ":PWGLFStrangeness.outputCheckCascadepp276";
- else outputFileName += Form(":PWGLFStrangeness.outputCheckCascadepp276_vtxlim%2.1f-%2.1f",vtxlim,vtxlimmin);
-
- Printf("AddTaskCheckCascade - Set OutputFileName : \n %s\n", outputFileName.Data() );
-
- AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clistCasc",
+ //Save objects into the train common file
+ AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(outputlistname,
TList::Class(),
AliAnalysisManager::kOutputContainer,
outputFileName );
-
- AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("cfcontPIDXiM",
+ AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("cfcontPIDAsXiM",
AliCFContainer::Class(),
AliAnalysisManager::kOutputContainer,
outputFileName );
-
- AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("cfcontPIDXiP",
+ AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("cfcontPIDAsXiP",
AliCFContainer::Class(),
AliAnalysisManager::kOutputContainer,
outputFileName );
-
- AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("cfcontPIDOmegaM",
+ AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("cfcontPIDAsOmegaM",
AliCFContainer::Class(),
AliAnalysisManager::kOutputContainer,
outputFileName );
-
- AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("cfcontPIDOmegaP",
+ AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("cfcontPIDAsOmegaP",
AliCFContainer::Class(),
AliAnalysisManager::kOutputContainer,
outputFileName );
-
- AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("cfcontCuts",
+ AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("cfcontAsCuts",
AliCFContainer::Class(),
AliAnalysisManager::kOutputContainer,
outputFileName );
-
mgr->ConnectInput( taskcheckcascadepp276, 0, mgr->GetCommonInputContainer());
mgr->ConnectOutput(taskcheckcascadepp276, 1, coutput1);
mgr->ConnectOutput(taskcheckcascadepp276, 2, coutput2);
Bool_t kacccut = kFALSE,
Bool_t krelaunchvertexers = kFALSE,
Bool_t ksddonselection = kFALSE,
- Float_t minptondaughtertracks = 0.,
- Float_t etacutondaughtertracks = .8,
- Bool_t standardAnalysis = kTRUE ) {
-// Creates, configures and attaches to the train a cascades check task.
+ Float_t minptondaughtertracks = 0.0,
+ Float_t etacutondaughtertracks = 0.8) {
+
+ // 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();
TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
// Create and configure the task
- AliAnalysisTaskCheckPerformanceCascadepp276 *taskCheckPerfCascadepp276 = new AliAnalysisTaskCheckPerformanceCascadepp276(Form("TaskCheckPerformanceCascadepp276_vtxlim%2.1f-%2.1f",vtxlim,vtxlimmin));
-
- taskCheckPerfCascadepp276->SetAnalysisType (type);
- taskCheckPerfCascadepp276->SetRelaunchV0CascVertexers (krelaunchvertexers);
- taskCheckPerfCascadepp276->SetSDDSelection (fwithsdd);
- taskCheckPerfCascadepp276->SetQualityCutZprimVtxPos (kTRUE);
- taskCheckPerfCascadepp276->SetRejectEventPileUp (kFALSE);
- taskCheckPerfCascadepp276->SetQualityCutNoTPConlyPrimVtx (kTRUE);
- taskCheckPerfCascadepp276->SetQualityCutTPCrefit (kTRUE);
- taskCheckPerfCascadepp276->SetQualityCutnTPCcls (kTRUE);
- taskCheckPerfCascadepp276->SetWithSDDOn (ksddonselection);
- taskCheckPerfCascadepp276->SetQualityCutMinnTPCcls (minnTPCcls);
- taskCheckPerfCascadepp276->SetExtraSelections (kextrasel);
- taskCheckPerfCascadepp276->SetApplyAccCut (kacccut);
- taskCheckPerfCascadepp276->SetVertexRange (vtxlim);
- taskCheckPerfCascadepp276->SetVertexRangeMin (vtxlimmin);
- taskCheckPerfCascadepp276->SetMinptCutOnDaughterTracks (minptondaughtertracks);
- taskCheckPerfCascadepp276->SetEtaCutOnDaughterTracks (etacutondaughtertracks);
-
+ //==============================================================================
+ TString tasknameperf = "TaskCheckPerformanceCascadepp276";
+ tasknameperf += Form("_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",minnTPCcls,vtxlim,vtxlimmin,minptondaughtertracks,etacutondaughtertracks);
+ AliAnalysisTaskCheckPerformanceCascadepp276 *taskCheckPerfCascadepp276 = new AliAnalysisTaskCheckPerformanceCascadepp276(tasknameperf);
+ taskCheckPerfCascadepp276->SetAnalysisType (type); // "ESD" or "AOD"
+ taskCheckPerfCascadepp276->SetRelaunchV0CascVertexers (krelaunchvertexers); // choose if reconstruct the vertex of V0 in the cascades
+ taskCheckPerfCascadepp276->SetSDDSelection (fwithsdd); // choose if apply SDD event selection
+ taskCheckPerfCascadepp276->SetQualityCutZprimVtxPos (kTRUE); // choose if apply Z vtx PV position event selection
+ taskCheckPerfCascadepp276->SetRejectEventPileUp (kFALSE); // choose if apply no Pileup event selection
+ taskCheckPerfCascadepp276->SetQualityCutNoTPConlyPrimVtx (kTRUE); // choose if apply no TPC only event selection
+ taskCheckPerfCascadepp276->SetQualityCutTPCrefit (kTRUE); // choose if apply TPC refit on daughter tracks
+ taskCheckPerfCascadepp276->SetQualityCutnTPCcls (kTRUE); // choose if apply n TPC cluster selection on daughter tracks
+ taskCheckPerfCascadepp276->SetWithSDDOn (ksddonselection); // which SDD selection do you want apply? [if kTRUE select SDDon events]
+ taskCheckPerfCascadepp276->SetQualityCutMinnTPCcls (minnTPCcls); // which value do you want apply for the minTPCcls cut?
+ taskCheckPerfCascadepp276->SetExtraSelections (kextrasel); // choose if apply the extra selection of cascade reco.
+ taskCheckPerfCascadepp276->SetApplyAccCut (kacccut); // choose if apply acceptance cut
+ taskCheckPerfCascadepp276->SetVertexRange (vtxlim); // which higher value do you want apply for vtx Z cut?
+ taskCheckPerfCascadepp276->SetVertexRangeMin (vtxlimmin); // which lower value do you want apply for vtx Z cut?
+ taskCheckPerfCascadepp276->SetMinptCutOnDaughterTracks (minptondaughtertracks); // which value do you want apply for cut on min pt daughter track?
+ taskCheckPerfCascadepp276->SetEtaCutOnDaughterTracks (etacutondaughtertracks); // which value do you want apply for cut on eta daughter track?
+
mgr->AddTask(taskCheckPerfCascadepp276);
// Create ONLY the output containers for the data produced by the task.
// Get and connect other common input/output containers via the manager as below
//==============================================================================
+ // Directory name
+ TString outputFileNamePerf = Form("%s:PWGLFStrangeness.outputCheckPerformanceCascadepp276", AliAnalysisManager::GetCommonFileName());
+ // Objects name
+ TString outputnameperf1 = Form("clistCascPerf_minnTPCcls%i_vtxlim%.1f-%.1f_minptdghtrk%.1f_etacutdghtrk%.1f",minnTPCcls,vtxlim,vtxlimmin,minptondaughtertracks,etacutondaughtertracks);
- // User file name (if need be)
-
- TString outputFileName = AliAnalysisManager::GetCommonFileName();
- if (standardAnalysis) outputFileName += ":PWGLFStrangeness.outputCheckPerformanceCascadepp276";
- else outputFileName += Form(":PWGLFStrangeness.outputCheckPerformanceCascadepp276_vtxlim%2.1f-%2.1f",vtxlim,vtxlimmin);
- Printf("AddTaskCheckPerformanceCascadepp276 - Set OutputFileName : \n %s\n", outputFileName.Data() );
-
- AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clistCascPerf",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- outputFileName );
-
- AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("cfcontPIDAsXiM",
- AliCFContainer::Class(),
- AliAnalysisManager::kOutputContainer,
- outputFileName );
-
- AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("cfcontPIDAsXiP",
- AliCFContainer::Class(),
- AliAnalysisManager::kOutputContainer,
- outputFileName );
-
- AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("cfcontPIDAsOmegaM",
- AliCFContainer::Class(),
- AliAnalysisManager::kOutputContainer,
- outputFileName );
-
- AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("cfcontPIDAsOmegaP",
- AliCFContainer::Class(),
- AliAnalysisManager::kOutputContainer,
- outputFileName );
-
- AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("cfcontAsCuts",
- AliCFContainer::Class(),
- AliAnalysisManager::kOutputContainer,
- outputFileName );
-
-
+ //Save objects into the train common file
+ AliAnalysisDataContainer *coutputperf1 = mgr->CreateContainer(outputnameperf1,
+ TList::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outputFileNamePerf );
+ AliAnalysisDataContainer *coutputperf2 = mgr->CreateContainer("cfcontPIDAsXiM",
+ AliCFContainer::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outputFileNamePerf );
+ AliAnalysisDataContainer *coutputperf3 = mgr->CreateContainer("cfcontPIDAsXiP",
+ AliCFContainer::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outputFileNamePerf );
+ AliAnalysisDataContainer *coutputperf4 = mgr->CreateContainer("cfcontPIDAsOmegaM",
+ AliCFContainer::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outputFileNamePerf );
+ AliAnalysisDataContainer *coutputperf5 = mgr->CreateContainer("cfcontPIDAsOmegaP",
+ AliCFContainer::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outputFileNamePerf );
+ AliAnalysisDataContainer *coutputperf6 = mgr->CreateContainer("cfcontAsCuts",
+ AliCFContainer::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outputFileNamePerf );
mgr->ConnectInput( taskCheckPerfCascadepp276, 0, mgr->GetCommonInputContainer());
- mgr->ConnectOutput(taskCheckPerfCascadepp276, 1, coutput1);
- mgr->ConnectOutput(taskCheckPerfCascadepp276, 2, coutput2);
- mgr->ConnectOutput(taskCheckPerfCascadepp276, 3, coutput3);
- mgr->ConnectOutput(taskCheckPerfCascadepp276, 4, coutput4);
- mgr->ConnectOutput(taskCheckPerfCascadepp276, 5, coutput5);
- mgr->ConnectOutput(taskCheckPerfCascadepp276, 6, coutput6);
+ mgr->ConnectOutput(taskCheckPerfCascadepp276, 1, coutputperf1);
+ mgr->ConnectOutput(taskCheckPerfCascadepp276, 2, coutputperf2);
+ mgr->ConnectOutput(taskCheckPerfCascadepp276, 3, coutputperf3);
+ mgr->ConnectOutput(taskCheckPerfCascadepp276, 4, coutputperf4);
+ mgr->ConnectOutput(taskCheckPerfCascadepp276, 5, coutputperf5);
+ mgr->ConnectOutput(taskCheckPerfCascadepp276, 6, coutputperf6);
return taskCheckPerfCascadepp276;
}