Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions PWGLF/Tasks/Strangeness/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
# granted to it by virtue of its status as an Intergovernmental Organization
# or submit itself to any jurisdiction.

o2physics_add_dpl_workflow(hyperon-reco-test

Check failure on line 12 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name hyperon-reco-test does not match its file name hyperon-reco-test.cxx. (Matches hyperonRecoTest.cxx.)
SOURCES hyperon-reco-test.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)
Expand All @@ -19,7 +19,7 @@
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::MLCore O2Physics::AnalysisCCDB
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(lambdakzeroanalysis-mc

Check failure on line 22 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name lambdakzeroanalysis-mc does not match its file name lambdakzeroanalysisMC.cxx. (Matches lambdakzeroanalysisMc.cxx.)
SOURCES lambdakzeroanalysisMC.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)
Expand All @@ -29,7 +29,7 @@
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(cascadeanalysismc

Check failure on line 32 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name cascadeanalysismc does not match its file name cascadeanalysisMC.cxx. (Matches cascadeanalysismc.cxx.)
SOURCES cascadeanalysisMC.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)
Expand All @@ -49,17 +49,17 @@
PUBLIC_LINK_LIBRARIES O2::Framework O2::ReconstructionDataFormats O2Physics::AnalysisCore O2::DetectorsBase O2::DetectorsVertexing O2Physics::EventFilteringUtils
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(k0mixedevents

Check failure on line 52 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name k0mixedevents does not match its file name k0_mixed_events.cxx. (Matches k0mixedevents.cxx.)
SOURCES k0_mixed_events.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(xi-lambda-corr-task

Check failure on line 57 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name xi-lambda-corr-task does not match its file name xiLambdaCorr.cxx. (Matches xiLambdaCorrTask.cxx.)
SOURCES xiLambdaCorr.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(vzero-cascade-absorption

Check failure on line 62 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name vzero-cascade-absorption does not match its file name vzero_cascade_absorption.cxx. (Matches vzeroCascadeAbsorption.cxx.)
SOURCES vzero_cascade_absorption.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)
Expand All @@ -74,7 +74,7 @@
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(hstrangecorrelation

Check failure on line 77 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name hstrangecorrelation does not match its file name hStrangeCorrelation.cxx. (Matches hstrangecorrelation.cxx.)
SOURCES hStrangeCorrelation.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::EventFilteringUtils
COMPONENT_NAME Analysis)
Expand Down Expand Up @@ -146,7 +146,7 @@
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::EventFilteringUtils
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(lambdajetpolarization

Check failure on line 149 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name lambdajetpolarization does not match its file name lambdaJetpolarization.cxx. (Matches lambdajetpolarization.cxx.)
SOURCES lambdaJetpolarization.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGJECore FastJet::FastJet FastJet::Contrib O2Physics::EventFilteringUtils
COMPONENT_NAME Analysis)
Expand All @@ -161,12 +161,17 @@
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2Physics::EventFilteringUtils
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(lambdatwopartpolarization

Check failure on line 164 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name lambdatwopartpolarization does not match its file name lambdaTwoPartPolarization.cxx. (Matches lambdatwopartpolarization.cxx.)
SOURCES lambdaTwoPartPolarization.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(cascadeanalysislightions

Check failure on line 169 in PWGLF/Tasks/Strangeness/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name cascadeanalysislightions does not match its file name cascadeAnalysisLightIonsDerivedData.cxx. (Matches cascadeanalysislightions.cxx.)
SOURCES cascadeAnalysisLightIonsDerivedData.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(strangecasctrack
SOURCES strangecasctrack.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::EventFilteringUtils
COMPONENT_NAME myo2)
171 changes: 171 additions & 0 deletions PWGLF/Tasks/Strangeness/strangecasctrack.cxx
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
//
/// \file strangecasctrack.cxx
/// \brief Analysis of strangeness tracking efficiency via primary production of Omega and Xi in Run 3
/// \author Yakiv Paroviak (yakiv.paroviak@cern.ch)

#include "PWGLF/DataModel/LFStrangenessTables.h"

#include "Common/DataModel/Centrality.h"
#include "Common/DataModel/EventSelection.h"
#include "Common/DataModel/Multiplicity.h"

#include "Framework/ASoAHelpers.h"
#include "Framework/AnalysisDataModel.h"
#include "Framework/AnalysisTask.h"
#include "Framework/runDataProcessing.h"

using namespace o2;
using namespace o2::framework;
using namespace o2::framework::expressions;
using namespace o2::constants::math;

struct StrangeCascTrack {

using TraCascDatas = soa::Join<aod::TraCascIndices, aod::TraCascCores>;
using CascDatas = soa::Join<aod::CascIndices, aod::CascBBs, aod::CascCores>;

HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};

Configurable<bool> doProcessPP{"doProcessPP", true, "true for pp, false for PbPb and OO"};
Configurable<bool> doProcessPbPb{"doProcessPbPb", false, "true for PbPb, false for pp and OO"};
Configurable<bool> doProcessOO{"doProcessOO", false, "true for OO, false for pp and PbPb"};

Configurable<bool> doProcessMC{"doProcessMC", false, "true for MC, false for data"};

Configurable<bool> doRequireFT0{"doRequireFT0", false, "true for offline trigger for Run 3"};
Configurable<bool> doApplyPID{"doApplyPID", false, "true for offline trigger for Run 3"};
Configurable<bool> doApplyCuts{"doApplyCuts", true, "true for offline trigger for Run 3"};

ConfigurableAxis axisPt{"axisPt", {VARIABLE_WIDTH, 0.0, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 10.0}, "p_{T} (GeV/c)"};
ConfigurableAxis axisMult{"axisMult", {VARIABLE_WIDTH, 0.0f, 0.01f, 1.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 70.0f, 100.0f}, "Multiplicity"};
ConfigurableAxis axisOmegaMass{"axisOmegaMass", {2000, 1.6, 1.8}, "#Omega M_{inv} (GeV/c^{2})"};
ConfigurableAxis axisXiMass{"axisXiMass", {2000, 1.2, 1.4}, "#Xi M_{inv} (GeV/c^{2})"};

Configurable<double> CutDCAtoPVxy{"CutDCAtoPVxy", 0.02f, "max cascade dca to PV in xy"};
Configurable<double> CutDCAtoPVz{"CutDCAtoPVz", 0.02f, "max cascade dca to PV in z"};

void init(InitContext const&)
{
histos.add("Events/EvCounter", "Event Counter", kTH1F, {{1, 0, 1}});
histos.add("Events/PVx", "PV x position", kTH1F, {{200, -0.1, 0.1}});
histos.add("Events/PVy", "PV y position", kTH1F, {{200, -0.1, 0.1}});
histos.add("Events/PVz", "PV z position", kTH1F, {{100, -20, 20}});
histos.add("Events/Mult", "Multiplicity", kTH1F, {axisMult});

histos.add("Tracked/Phi", "Phi", kTH1F, {{100, 0., 2 * M_PI}});
histos.add("Tracked/Eta", "Eta", kTH1F, {{102, -2.01, 2.01}});
histos.add("Tracked/DCAxy", "DCA to xy", kTH1F, {{500, 0., 0.5}});
histos.add("Tracked/DCAz", "DCA to z", kTH1F, {{500, 0., 0.5}});
histos.add("Tracked/EvMult", "Multiplicity of events with >=1 cascade", kTH1F, {axisMult});
histos.add("Tracked/MassOmega", "Invariant mass hypothesis", kTH1F, {axisOmegaMass});
histos.add("Tracked/MassXi", "Invariant mass hypothesis", kTH1F, {axisXiMass});
histos.add("Tracked/Omega", "", kTHnD, {axisOmegaMass, axisPt, axisMult});
histos.add("Tracked/Xi", "", kTHnD, {axisXiMass, axisPt, axisMult});

histos.add("All/Phi", "Phi", kTH1F, {{100, 0., 2 * M_PI}});
histos.add("All/Eta", "Eta", kTH1F, {{102, -2.01, 2.01}});
histos.add("All/DCAxy", "DCA to xy", kTH1F, {{1000, 0, 1.}});
histos.add("All/DCAz", "DCA to z", kTH1F, {{1000, 0, 1.}});
histos.add("All/EvMult", "Multiplicity of events with >=1 cascade", kTH1F, {axisMult});
histos.add("All/MassOmega", "Invariant mass hypothesis", kTH1F, {axisOmegaMass});
histos.add("All/MassXi", "Invariant mass hypothesis", kTH1F, {axisXiMass});
histos.add("All/Omega", "", kTHnD, {axisOmegaMass, axisPt, axisMult});
histos.add("All/Xi", "", kTHnD, {axisXiMass, axisPt, axisMult});
}

void processTracked(soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs, aod::PVMults>::iterator const& collision,
aod::TraCascDatas const& tracascades)
{
double mult = doProcessPP ? collision.centFT0M() : collision.centFT0C();
int64_t casccollid = 0;
for (auto const& cascade : tracascades) {

double dcaxy = cascade.dcaXYCascToPV();
double dcaz = cascade.dcaZCascToPV();
if (doApplyCuts && ((dcaxy > CutDCAtoPVxy) || (dcaz > CutDCAtoPVz)))
continue; // DCA check

if (collision.index() != casccollid) {
histos.fill(HIST("Tracked/EvMult"), mult); // count and list mult of events with at least one cascade
casccollid = collision.index();
}

double pt = cascade.pt();
double phi = cascade.phi();
double eta = cascade.eta();
double massXi = cascade.mXi();
double massOmega = cascade.mOmega();

histos.fill(HIST("Tracked/DCAxy"), dcaxy);
histos.fill(HIST("Tracked/DCAz"), dcaz);
histos.fill(HIST("Tracked/Phi"), phi);
histos.fill(HIST("Tracked/Eta"), eta);
histos.fill(HIST("Tracked/MassXi"), massXi);
histos.fill(HIST("Tracked/MassOmega"), massOmega);
histos.fill(HIST("Tracked/Xi"), massXi, pt, mult);
histos.fill(HIST("Tracked/Omega"), massOmega, pt, mult);
}
}

void processAll(soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs, aod::PVMults>::iterator const& collision,
aod::CascDatas const& cascades)
{
histos.fill(HIST("Events/EvCounter"), 0.5);
double mult = doProcessPP ? collision.centFT0M() : collision.centFT0C();
histos.fill(HIST("Events/Mult"), mult);
double pvx = collision.posX();
double pvy = collision.posY();
double pvz = collision.posZ();
histos.fill(HIST("Events/PVx"), pvx);
histos.fill(HIST("Events/PVy"), pvy);
histos.fill(HIST("Events/PVz"), pvz);

int64_t casccollid = 0;
for (auto const& cascade : cascades) {

double dcaxy = cascade.dcaXYCascToPV();
double dcaz = cascade.dcaZCascToPV();
if (doApplyCuts && ((dcaxy > CutDCAtoPVxy) || (dcaz > CutDCAtoPVz)))
continue; // DCA check

if (collision.index() != casccollid) {
histos.fill(HIST("All/EvMult"), mult); // count and list mult of events with at least one cascade
casccollid = collision.index();
}

double pt = cascade.pt();
double phi = cascade.phi();
double eta = cascade.eta();
double massXi = cascade.mXi();
double massOmega = cascade.mOmega();

histos.fill(HIST("All/DCAxy"), dcaxy);
histos.fill(HIST("All/DCAz"), dcaz);
histos.fill(HIST("All/Phi"), phi);
histos.fill(HIST("All/Eta"), eta);
histos.fill(HIST("All/MassXi"), massXi);
histos.fill(HIST("All/MassOmega"), massOmega);
histos.fill(HIST("All/Xi"), massXi, pt, mult);
histos.fill(HIST("All/Omega"), massOmega, pt, mult);
}
}
PROCESS_SWITCH(StrangeCascTrack, processTracked, "process tracked cascades", true);
PROCESS_SWITCH(StrangeCascTrack, processAll, "process all cascades", true);
};

WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
{
return WorkflowSpec{
adaptAnalysisTask<StrangeCascTrack>(cfgc),
};
}
Loading