Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
ade3d5e
Add untested version oft the X to Jpsi track track
ginnocen Feb 2, 2021
f642bbd
This commit adds the Xtask to O2
rspijkers Feb 8, 2021
aa51f5a
removed the filter on aod::BigTracks
rspijkers Feb 13, 2021
8e78d24
Fixed clang indentation errors (hopefully)
rspijkers Feb 15, 2021
f230837
previous commit still had clang issues, this should resolve it (inden…
rspijkers Feb 15, 2021
18a9e71
temporary commit, please ignore
rspijkers Feb 19, 2021
8a0c487
Disables TPC in J/psi selector;
rspijkers Feb 23, 2021
45370a6
Fixes the duplicate track check
rspijkers Feb 23, 2021
2270d95
Clean up X task
rspijkers Feb 24, 2021
4ca94e1
Added author and fixed variable names
rspijkers Mar 1, 2021
c3b190a
Fixed clang-format
rspijkers Mar 1, 2021
ec7cb67
Various fixes:
rspijkers Mar 1, 2021
17c4f27
hf-task-add-collisionId --> hf-task-x-add-collisionId
rspijkers Mar 1, 2021
07d2cd8
Create separate workflow for AddCollisionId
rspijkers Mar 2, 2021
0da95d1
Minor fixes, commit for troubleshooting
rspijkers Mar 3, 2021
1d4f1fc
Integrates collisionId into HFCandidateCreators
rspijkers Mar 4, 2021
792177a
minor fixes:
rspijkers Mar 5, 2021
caad6df
jpsi candidate selector:
rspijkers Mar 8, 2021
f54533c
move runDataProcessing.h below customize
rspijkers Mar 9, 2021
140b8b2
Add collision ID check for testing purposes
rspijkers Mar 10, 2021
bfc75d5
remove the collision ID check, add Y cut
rspijkers Mar 10, 2021
769dda9
Pion track loops more efficient
rspijkers Mar 15, 2021
8e88ba0
Update HFJpsiToEECandidateSelector.cxx
ginnocen Mar 17, 2021
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
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ DECLARE_SOA_TABLE(HfCutStatusProng3, "AOD", "HFCUTSTATUSP3",
// general decay properties
namespace hf_cand
{
// collision properties
DECLARE_SOA_INDEX_COLUMN(Collision, collision);
// secondary vertex
DECLARE_SOA_COLUMN(XSecondaryVertex, xSecondaryVertex, float);
DECLARE_SOA_COLUMN(YSecondaryVertex, ySecondaryVertex, float);
Expand Down Expand Up @@ -235,7 +237,8 @@ auto InvMassJpsiToEE(const T& candidate)

// general columns
#define HFCAND_COLUMNS \
collision::PosX, collision::PosY, collision::PosZ, \
hf_cand::CollisionId, \
collision::PosX, collision::PosY, collision::PosZ, \
hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, \
hf_cand::ErrorDecayLength, hf_cand::ErrorDecayLengthXY, \
hf_cand::Chi2PCA, \
Expand Down
9 changes: 7 additions & 2 deletions 9 Analysis/Tasks/PWGHF/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ o2_add_dpl_workflow(hf-lc-candidate-selector
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
COMPONENT_NAME Analysis)

o2_add_dpl_workflow(hf-jpsi-toee-candidate-selector
o2_add_dpl_workflow(hf-jpsi-toee-candidate-selector
SOURCES HFJpsiToEECandidateSelector.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
COMPONENT_NAME Analysis)
Expand All @@ -88,7 +88,7 @@ o2_add_dpl_workflow(hf-task-lc
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
COMPONENT_NAME Analysis)

o2_add_dpl_workflow(hf-task-jpsi
o2_add_dpl_workflow(hf-task-jpsi
SOURCES taskJpsi.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
COMPONENT_NAME Analysis)
Expand All @@ -103,6 +103,11 @@ o2_add_dpl_workflow(hf-task-xic
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
COMPONENT_NAME Analysis)

o2_add_dpl_workflow(hf-task-x
SOURCES taskX.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
COMPONENT_NAME Analysis)

o2_add_dpl_workflow(hf-mc-validation
SOURCES HFMCValidation.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
Expand Down
3 changes: 2 additions & 1 deletion 3 Analysis/Tasks/PWGHF/HFCandidateCreator2Prong.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ struct HFCandidateCreator2Prong {
auto errorDecayLengthXY = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.));

// fill candidate table rows
rowCandidateBase(collision.posX(), collision.posY(), collision.posZ(),
rowCandidateBase(collision.globalIndex(),
collision.posX(), collision.posY(), collision.posZ(),
secondaryVertex[0], secondaryVertex[1], secondaryVertex[2],
errorDecayLength, errorDecayLengthXY,
chi2PCA,
Expand Down
3 changes: 2 additions & 1 deletion 3 Analysis/Tasks/PWGHF/HFCandidateCreator3Prong.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,8 @@ struct HFCandidateCreator3Prong {
auto errorDecayLengthXY = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.));

// fill candidate table rows
rowCandidateBase(collision.posX(), collision.posY(), collision.posZ(),
rowCandidateBase(collision.globalIndex(),
collision.posX(), collision.posY(), collision.posZ(),
secondaryVertex[0], secondaryVertex[1], secondaryVertex[2],
errorDecayLength, errorDecayLengthXY,
chi2PCA,
Expand Down
7 changes: 3 additions & 4 deletions 7 Analysis/Tasks/PWGHF/HFJpsiToEECandidateSelector.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,6 @@ struct HFJpsiToEECandidateSelector {
template <typename T>
bool daughterSelection(const T& track)
{
if (track.sign() == 0) {
return false;
}
/*if (track.tpcNClsFound() == 0) {
return false; //is it clusters findable or found - need to check
}*/
Expand Down Expand Up @@ -141,9 +138,11 @@ struct HFJpsiToEECandidateSelector {
template <typename T>
bool selectionPIDTPC(const T& track, int nSigmaCut)
{
if (nSigmaCut > 999.) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need this check?

return true;
}
return track.tpcNSigmaEl() < nSigmaCut;
}

/// PID selection on daughter track
/// \param track is the daughter track
/// \return 1 if successful PID match, 0 if successful PID rejection, -1 if no PID info
Expand Down
21 changes: 1 addition & 20 deletions 21 Analysis/Tasks/PWGHF/taskBPlus.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -33,24 +33,6 @@ void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)

#include "Framework/runDataProcessing.h"

namespace o2::aod
{
namespace extra
{
DECLARE_SOA_INDEX_COLUMN(Collision, collision);
}
DECLARE_SOA_TABLE(Colls, "AOD", "COLLSID", o2::aod::extra::CollisionId);
} // namespace o2::aod
struct AddCollisionId {
Produces<o2::aod::Colls> colls;
void process(aod::HfCandProng2 const& candidates, aod::Tracks const&)
{
for (auto& candidate : candidates) {
colls(candidate.index0_as<aod::Tracks>().collisionId());
}
}
};

/// B+ analysis task
struct TaskBplus {
HistogramRegistry registry{
Expand All @@ -65,7 +47,7 @@ struct TaskBplus {
Filter filterSelectCandidates = (aod::hf_selcandidate_d0::isSelD0 >= d_selectionFlagD0 || aod::hf_selcandidate_d0::isSelD0bar >= d_selectionFlagD0bar);
Partition<aod::BigTracks> positiveTracks = aod::track::signed1Pt >= 0.f;

void process(aod::Collision const&, aod::BigTracks const&, soa::Filtered<soa::Join<aod::HfCandProng2, aod::HFSelD0Candidate, aod::Colls>> const& candidates)
void process(aod::Collision const&, aod::BigTracks const&, soa::Filtered<soa::Join<aod::HfCandProng2, aod::HFSelD0Candidate>> const& candidates)
rspijkers marked this conversation as resolved.
Show resolved Hide resolved
{
for (auto& candidate : candidates) {
if (!(candidate.hfflag() & 1 << D0ToPiK)) {
Expand All @@ -92,7 +74,6 @@ struct TaskBplus {
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
{
WorkflowSpec workflow{
adaptAnalysisTask<AddCollisionId>(cfgc, TaskName{"hf-task-add-collisionId"}),
adaptAnalysisTask<TaskBplus>(cfgc, TaskName{"hf-task-bplus"})};
return workflow;
}
95 changes: 95 additions & 0 deletions 95 Analysis/Tasks/PWGHF/taskX.cxx
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
// Copyright CERN and copyright holders of ALICE O2. This software is
// distributed under the terms of the GNU General Public License v3 (GPL
// Version 3), copied verbatim in the file "COPYING".
//
// See http://alice-o2.web.cern.ch/license for full licensing information.
//
// 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 taskX.cxx
/// \brief X(3872) analysis task
///
/// \author Gian Michele Innocenti <gian.michele.innocenti@cern.ch>, CERN
/// \author Rik Spijkers <r.spijkers@students.uu.nl>, Utrecht University

#include "Framework/AnalysisTask.h"
#include "Framework/HistogramRegistry.h"
#include "AnalysisDataModel/HFSecondaryVertex.h"
#include "AnalysisDataModel/HFCandidateSelectionTables.h"

using namespace o2;
using namespace o2::framework;
using namespace o2::aod::hf_cand_prong2;
using namespace o2::framework::expressions;

void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
{
ConfigParamSpec optionDoMC{"doMC", VariantType::Bool, false, {"Fill MC histograms."}};
workflowOptions.push_back(optionDoMC);
}

#include "Framework/runDataProcessing.h"

/// X(3872) analysis task
struct TaskX {
HistogramRegistry registry{
"registry",
{{"hMassJpsi", "2-prong candidates;inv. mass (e+ e-) (GeV/#it{c}^{2});entries", {HistType::kTH1F, {{500, 0., 5.}}}},
{"hPtCand", "X candidates;candidate #it{p}_{T} (GeV/#it{c});entries", {HistType::kTH1F, {{100, 0., 10.}}}}}};

Configurable<int> selectionFlagJpsi{"selectionFlagJpsi", 1, "Selection Flag for Jpsi"};
Configurable<double> cutYCandMax{"cutYCandMax", -1., "max. cand. rapidity"};

Filter filterSelectCandidates = (aod::hf_selcandidate_jpsi::isSelJpsiToEE >= selectionFlagJpsi);

/// aod::BigTracks is not soa::Filtered, should be added when filters are added
void process(aod::Collision const&, aod::BigTracks const& tracks, soa::Filtered<soa::Join<aod::HfCandProng2, aod::HFSelJpsiToEECandidate>> const& candidates)
{
for (auto& candidate : candidates) {
if (!(candidate.hfflag() & 1 << JpsiToEE)) {
continue;
}
if (cutYCandMax >= 0. && std::abs(YJpsi(candidate)) > cutYCandMax) {
continue;
}
registry.fill(HIST("hMassJpsi"), InvMassJpsiToEE(candidate));

int index0jpsi = candidate.index0Id();
int index1jpsi = candidate.index1Id();
for (auto& track1 : tracks) {
int signTrack1 = track1.sign();
int indexTrack1 = track1.globalIndex();
if (signTrack1 > 0) {
if (indexTrack1 == index0jpsi) {
continue;
}
} else if (indexTrack1 == index1jpsi) {
continue;
}
for (auto track2 = track1 + 1; track2 != tracks.end(); ++track2) {
if (signTrack1 == track2.sign()) {
continue;
}
int indexTrack2 = track2.globalIndex();
if (signTrack1 > 0) {
if (indexTrack2 == index1jpsi) {
continue;
}
} else if (indexTrack2 == index0jpsi) {
continue;
}
registry.fill(HIST("hPtCand"), candidate.pt() + track1.pt() + track2.pt());
} // track2 loop (pion)
} // track1 loop (pion)
} // Jpsi loop
} // process
}; // struct

WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
{
WorkflowSpec workflow{
adaptAnalysisTask<TaskX>(cfgc, TaskName{"hf-task-x"})};
return workflow;
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.