Skip to content

Commit d560825

Browse files
committed
Update
1 parent 0d595bb commit d560825

File tree

2 files changed

+22
-23
lines changed

2 files changed

+22
-23
lines changed

PWGJE/TableProducer/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,13 @@ o2physics_add_dpl_workflow(jet-skimmer
3131
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore
3232
COMPONENT_NAME Analysis)
3333

34-
o2physics_add_dpl_workflow(jet-matching-hf
35-
SOURCES jetmatchinghf.cxx
34+
o2physics_add_dpl_workflow(jet-matching
35+
SOURCES jetmatching.cxx
3636
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore
3737
COMPONENT_NAME Analysis)
3838
endif()
3939

40+
4041
o2physics_add_dpl_workflow(emcal-correction-task
4142
SOURCES emcalCorrectionTask.cxx
4243
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::DetectorsBase O2::EMCALBase O2::EMCALReconstruction
Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
1111

12-
/// \file jetmatchinghf.cxx
13-
/// \brief Match jets containing the same D0s
12+
/// \file jetmatching.cxx
13+
/// \brief Unified implementation of jet matching based on different criteria
14+
/// expanding on previously separate implementations of geometric matching
15+
/// (by Raymond Ehlers) and heavy-flavour matching
1416
///
17+
/// \author Raymond Ehlers <raymond.ehlers@cern.ch>, ORNL
1518
/// \author Jochen Klein <jochen.klein@cern.ch>
1619

1720
#include "Framework/AnalysisTask.h"
@@ -39,8 +42,9 @@ struct JetMatchingHF {
3942
Produces<TagToBaseMatchingTable> jetsTagToBase;
4043

4144
// preslicing jet collections, only for MC-based collection
42-
// Preslice<BaseJetCollection> baseJetsPerCollision = aod::jet::mcCollisionId;
43-
Preslice<TagJetCollection> tagJetsPerCollision = aod::jet::mcCollisionId;
45+
46+
Preslice<BaseJetCollection> baseJetsPerCollision = []{ if constexpr (o2::soa::relatedByIndex<aod::McCollisions, BaseJetCollection>()) return aod::jet::mcCollisionId; else return aod::jet::collisionId; }();
47+
Preslice<TagJetCollection> tagJetsPerCollision = []{ if constexpr (o2::soa::relatedByIndex<aod::McCollisions, TagJetCollection>()) return aod::jet::mcCollisionId; else return aod::jet::collisionId; }();
4448

4549
using Collisions = soa::Join<aod::Collisions, aod::McCollisionLabels>;
4650
using Tracks = soa::Join<aod::Tracks, aod::McTrackLabels>;
@@ -55,25 +59,19 @@ struct JetMatchingHF {
5559
Tracks const& tracks, McParticles const& particlesMC,
5660
HfCandidates const& hfcandidates)
5761
{
58-
// slicing base jets, only for MC-based collection
59-
auto jetsBasePerColl = jetsBase;
60-
constexpr bool jetsBaseIsMC = o2::soa::is_binding_compatible_v<BaseJetCollection, std::decay_t<aod::McCollisions>>();
61-
if constexpr (jetsBaseIsMC) {
62-
LOGF(info, "slicing base jet collection by MC collision");
63-
} else {
64-
LOGF(info, "not slicing base jet collection by MC collision");
65-
}
66-
// jetsBasePerColl = jetsBase.sliceBy(baseJetsPerCollision, collision.mcCollisionId());
62+
constexpr bool jetsBaseIsMC = o2::soa::relatedByIndex<aod::McCollisions, BaseJetCollection>();
63+
constexpr bool jetsTagIsMC = o2::soa::relatedByIndex<aod::McCollisions, TagJetCollection>();
6764

68-
// slicing tag jets, only for MC-based collection
69-
constexpr bool jetsTagIsMC = o2::soa::is_binding_compatible_v<TagJetCollection, std::decay_t<aod::McCollisions>>();
65+
// slicing jets if MC collection
7066
// decltype(jetsTag.sliceBy(tagJetsPerCollision, collision.mcCollisionId())) jetsTagPerColl;
71-
if (jetsTagIsMC) {
72-
LOGF(info, "slicing tag jet collection by MC collision");
73-
} else {
74-
LOGF(info, "not slicing tag jet collection by MC collision");
75-
}
76-
const auto jetsTagPerColl = jetsTag.sliceBy(tagJetsPerCollision, collision.mcCollisionId());
67+
// std::remove_const<TagJetCollection>::type jetsTagPerColl;
68+
// const auto jetsTagPerColl = jetsTag;
69+
// auto jetsTagPerColl = [&] -> TagJetCollection const& { if (jetsTagIsMC) return jetsTag.sliceBy(tagJetsPerCollision, collision.mcCollisionId()); else return jetsTag; }();
70+
// if (jetsTagIsMC) jetsTagPerColl = jetsTag.sliceBy(tagJetsPerCollision, collision.mcCollisionId());
71+
// const auto jetsTagPerColl = jetsTagIsMC ? const jetsTag.sliceBy(tagJetsPerCollision, collision.mcCollisionId()) : jetsTag;
72+
73+
const auto jetsBasePerColl = jetsBase.sliceBy(baseJetsPerCollision, jetsBaseIsMC ? collision.mcCollisionId() : collision.globalIndex());
74+
const auto jetsTagPerColl = jetsTag.sliceBy(tagJetsPerCollision, jetsTagIsMC ? collision.mcCollisionId() : collision.globalIndex());
7775

7876
// geometric matching
7977
std::vector<double> jetsBasePhi(jetsBase.size());

0 commit comments

Comments
 (0)