Skip to content

Commit 62045ff

Browse files
nzardoshNima Zardoshti
andauthored
PWGJE: Adding radius dependence to substrucuture task (#3081)
Co-authored-by: Nima Zardoshti <nzardosh@alicecerno2.cern.ch>
1 parent b7b87ed commit 62045ff

5 files changed

Lines changed: 78 additions & 53 deletions

File tree

PWGJE/DataModel/JetSubstructure.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,21 @@ DECLARE_SOA_INDEX_COLUMN(McCollision, mcCollision); //!
4242
DECLARE_SOA_COLUMN(JetPt, jetPt, float); //!
4343
DECLARE_SOA_COLUMN(JetPhi, jetPhi, float); //!
4444
DECLARE_SOA_COLUMN(JetEta, jetEta, float); //!
45+
DECLARE_SOA_COLUMN(JetR, jetR, float); //!
4546
DECLARE_SOA_COLUMN(JetNConstituents, jetNConstituents, int); //!
4647

4748
} // namespace jetoutput
4849

4950
// Defines the jet substrcuture table definition
50-
#define JETSUBSTRUCTURE_TABLE_DEF(_collision_type_, _jet_type_, _cand_type_, _name_, _description_) \
51-
namespace _name_##substructure \
52-
{ \
53-
DECLARE_SOA_INDEX_COLUMN(_jet_type_, jet); \
54-
DECLARE_SOA_INDEX_COLUMN_FULL(Candidate, candidate, int, _cand_type_, "_0"); \
55-
DECLARE_SOA_DYNAMIC_COLUMN(Dummy##_jet_type_, dummy##_jet_type_, []() -> int { return 0; }); \
56-
} \
57-
DECLARE_SOA_TABLE(_jet_type_##Substructures, "AOD", _description_ "SS", jetsubstructure::Zg, jetsubstructure::Rg, jetsubstructure::Nsd, _name_##substructure::Dummy##_jet_type_<>); \
58-
DECLARE_SOA_TABLE(_jet_type_##Output, "AOD", _description_ "O", jetoutput::_collision_type_##Id, _name_##substructure::_jet_type_##Id, _name_##substructure::Candidate##Id, jetoutput::JetPt, jetoutput::JetPhi, jetoutput::JetEta, jetoutput::JetNConstituents); \
51+
#define JETSUBSTRUCTURE_TABLE_DEF(_collision_type_, _jet_type_, _cand_type_, _name_, _description_) \
52+
namespace _name_##substructure \
53+
{ \
54+
DECLARE_SOA_INDEX_COLUMN(_jet_type_, jet); \
55+
DECLARE_SOA_INDEX_COLUMN_FULL(Candidate, candidate, int, _cand_type_, "_0"); \
56+
DECLARE_SOA_DYNAMIC_COLUMN(Dummy##_jet_type_, dummy##_jet_type_, []() -> int { return 0; }); \
57+
} \
58+
DECLARE_SOA_TABLE(_jet_type_##Substructures, "AOD", _description_ "SS", jetsubstructure::Zg, jetsubstructure::Rg, jetsubstructure::Nsd, _name_##substructure::Dummy##_jet_type_<>); \
59+
DECLARE_SOA_TABLE(_jet_type_##Output, "AOD", _description_ "O", jetoutput::_collision_type_##Id, _name_##substructure::_jet_type_##Id, _name_##substructure::Candidate##Id, jetoutput::JetPt, jetoutput::JetPhi, jetoutput::JetEta, jetoutput::JetR, jetoutput::JetNConstituents); \
5960
DECLARE_SOA_TABLE(_jet_type_##SubstructureOutput, "AOD", _description_ "SSO", _name_##substructure::_jet_type_##Id, jetsubstructure::Zg, jetsubstructure::Rg, jetsubstructure::Nsd);
6061

6162
#define JETSUBSTRUCTURE_TABLES_DEF(_jet_type_, _cand_type_, _description_) \

PWGJE/Tasks/jetsubstructure.cxx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,8 @@ struct JetSubstructureTask {
4747
OutputObj<TH2F> hRg{"h_jet_rg_jet_pt"};
4848
OutputObj<TH2F> hNsd{"h_jet_nsd_jet_pt"};
4949

50-
Configurable<float> jetPtMin{"jetPtMin", 0.0, "minimum jet pT cut"};
5150
Configurable<float> zCut{"zCut", 0.1, "soft drop z cut"};
5251
Configurable<float> beta{"beta", 0.0, "soft drop beta"};
53-
Configurable<float> jetR{"jetR", 0.4, "jet resolution parameter"};
5452

5553
std::vector<fastjet::PseudoJet> jetConstituents;
5654
std::vector<fastjet::PseudoJet> jetReclustered;
@@ -64,12 +62,11 @@ struct JetSubstructureTask {
6462
10, 0.0, 0.5, 200, 0.0, 200.0));
6563
hNsd.setObject(new TH2F("h_jet_nsd_jet_pt", ";n_{SD}; #it{p}_{T,jet} (GeV/#it{c})",
6664
7, -0.5, 6.5, 200, 0.0, 200.0));
65+
6766
jetReclusterer.isReclustering = true;
6867
jetReclusterer.algorithm = fastjet::JetAlgorithm::cambridge_algorithm;
6968
}
7069

71-
Filter jetSelection = o2::aod::jet::r == nround(jetR.node() * 100.0f) && aod::jet::pt >= jetPtMin;
72-
7370
template <typename T>
7471
void jetReclustering(T const& jet)
7572
{
@@ -89,7 +86,7 @@ struct JetSubstructureTask {
8986
}
9087
auto z = parentSubJet2.perp() / (parentSubJet1.perp() + parentSubJet2.perp());
9188
auto theta = parentSubJet1.delta_R(parentSubJet2);
92-
if (z >= zCut * TMath::Power(theta / jetR, beta)) {
89+
if (z >= zCut * TMath::Power(theta / (jet.r() / 100.f), beta)) {
9390
if (!softDropped) {
9491
zg = z;
9592
rg = theta;
@@ -132,9 +129,9 @@ struct JetSubstructureTask {
132129
}
133130
PROCESS_SWITCH(JetSubstructureTask, processChargedJetsMCP, "charged jet substructure on MC particle level", false);
134131
};
135-
using JetSubstructureDataLevel = JetSubstructureTask<soa::Filtered<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>>, soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>>, o2::aod::ChargedJetSubstructures>;
136-
using JetSubstructureMCDetectorLevel = JetSubstructureTask<soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents>>, soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>>, o2::aod::ChargedMCDetectorLevelJetSubstructures>;
137-
using JetSubstructureMCParticleLevel = JetSubstructureTask<soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents>>, soa::Filtered<soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>>, o2::aod::ChargedMCParticleLevelJetSubstructures>;
132+
using JetSubstructureDataLevel = JetSubstructureTask<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>, soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>, o2::aod::ChargedJetSubstructures>;
133+
using JetSubstructureMCDetectorLevel = JetSubstructureTask<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents>, soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>, o2::aod::ChargedMCDetectorLevelJetSubstructures>;
134+
using JetSubstructureMCParticleLevel = JetSubstructureTask<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents>, soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>, o2::aod::ChargedMCParticleLevelJetSubstructures>;
138135

139136
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
140137
{

PWGJE/Tasks/jetsubstructurehf.cxx

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,8 @@ struct JetSubstructureHFTask {
5151
OutputObj<TH2F> hNsd{"h_jet_nsd_jet_pt"};
5252

5353
// Jet level configurables
54-
Configurable<float> jetPtMin{"jetPtMin", 0.0, "minimum jet pT cut"};
5554
Configurable<float> zCut{"zCut", 0.1, "soft drop z cut"};
5655
Configurable<float> beta{"beta", 0.0, "soft drop beta"};
57-
Configurable<float> jetR{"jetR", 0.4, "jet resolution parameter"};
5856

5957
Service<O2DatabasePDG> pdg;
6058
int candPDG;
@@ -71,22 +69,21 @@ struct JetSubstructureHFTask {
7169
10, 0.0, 0.5, 200, 0.0, 200.0));
7270
hNsd.setObject(new TH2F("h_jet_nsd_jet_pt", ";n_{SD}; #it{p}_{T,jet} (GeV/#it{c})",
7371
7, -0.5, 6.5, 200, 0.0, 200.0));
72+
7473
jetReclusterer.isReclustering = true;
7574
jetReclusterer.algorithm = fastjet::JetAlgorithm::cambridge_algorithm;
7675

77-
if constexpr (std::is_same_v<std::decay_t<JetTableMCP>, soa::Filtered<soa::Join<aod::D0ChargedMCParticleLevelJets, aod::D0ChargedMCParticleLevelJetConstituents>>>) {
76+
if constexpr (std::is_same_v<std::decay_t<JetTableMCP>, soa::Join<aod::D0ChargedMCParticleLevelJets, aod::D0ChargedMCParticleLevelJetConstituents>>) {
7877
candPDG = static_cast<int>(pdg::Code::kD0);
7978
}
80-
if constexpr (std::is_same_v<std::decay_t<JetTableMCP>, soa::Filtered<soa::Join<aod::BplusChargedMCParticleLevelJets, aod::BplusChargedMCParticleLevelJetConstituents>>>) {
79+
if constexpr (std::is_same_v<std::decay_t<JetTableMCP>, soa::Join<aod::BplusChargedMCParticleLevelJets, aod::BplusChargedMCParticleLevelJetConstituents>>) {
8180
candPDG = static_cast<int>(pdg::Code::kBPlus);
8281
}
83-
if constexpr (std::is_same_v<std::decay_t<JetTableMCP>, soa::Filtered<soa::Join<aod::LcChargedMCParticleLevelJets, aod::LcChargedMCParticleLevelJetConstituents>>>) {
82+
if constexpr (std::is_same_v<std::decay_t<JetTableMCP>, soa::Join<aod::LcChargedMCParticleLevelJets, aod::LcChargedMCParticleLevelJetConstituents>>) {
8483
candPDG = static_cast<int>(pdg::Code::kLambdaCPlus);
8584
}
8685
}
8786

88-
Filter jetSelection = o2::aod::jet::r == nround(jetR.node() * 100.0f) && aod::jet::pt >= jetPtMin;
89-
9087
template <typename T>
9188
void jetReclustering(T const& jet)
9289
{
@@ -106,7 +103,7 @@ struct JetSubstructureHFTask {
106103
}
107104
auto z = parentSubJet2.perp() / (parentSubJet1.perp() + parentSubJet2.perp());
108105
auto theta = parentSubJet1.delta_R(parentSubJet2);
109-
if (z >= zCut * TMath::Power(theta / jetR, beta)) {
106+
if (z >= zCut * TMath::Power(theta / (jet.r() / 100.f), beta)) {
110107
if (!softDropped) {
111108
zg = z;
112109
rg = theta;
@@ -167,17 +164,17 @@ struct JetSubstructureHFTask {
167164
}
168165
PROCESS_SWITCH(JetSubstructureHFTask, processChargedJetsHFMCP, "HF jet substructure on MC particle level", false);
169166
};
170-
using JetSubstructureD0 = JetSubstructureHFTask<soa::Filtered<soa::Join<aod::D0ChargedJets, aod::D0ChargedJetConstituents>>, soa::Join<aod::HfCand2Prong, aod::HfSelD0>, soa::Filtered<soa::Join<aod::D0ChargedMCParticleLevelJets, aod::D0ChargedMCParticleLevelJetConstituents>>, o2::aod::D0ChargedJetSubstructures>;
171-
// using MCDetectorLevelJetSubstructureD0 = JetSubstructureHFTask<soa::Filtered<soa::Join<aod::D0ChargedMCDetectorLevelJets, aod::D0ChargedMCDetectorLevelJetConstituents>>,soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfCand2ProngMcRec>,soa::Filtered<soa::Join<aod::D0ChargedMCParticleLevelJets, aod::D0ChargedMCParticleLevelJetConstituents>>,o2::aod::D0ChargedMCDetectorLevelJetSubstructures>;
172-
// using MCParticleLevelJetSubstructureD0 = JetSubstructureHFTask<soa::Filtered<soa::Join<aod::D0ChargedMCDetectorLevelJets, aod::D0ChargedMCDetectorLevelJetConstituents>>,soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfCand2ProngMcRec>,soa::Filtered<soa::Join<aod::D0ChargedMCParticleLevelJets, aod::D0ChargedMCParticleLevelJetConstituents>>,o2::aod::D0ChargedMCParticleLevelJetSubstructures>;
167+
using JetSubstructureD0 = JetSubstructureHFTask<soa::Join<aod::D0ChargedJets, aod::D0ChargedJetConstituents>, soa::Join<aod::HfCand2Prong, aod::HfSelD0>, soa::Join<aod::D0ChargedMCParticleLevelJets, aod::D0ChargedMCParticleLevelJetConstituents>, o2::aod::D0ChargedJetSubstructures>;
168+
// using MCDetectorLevelJetSubstructureD0 = JetSubstructureHFTask<soa::Join<aod::D0ChargedMCDetectorLevelJets, aod::D0ChargedMCDetectorLevelJetConstituents>,soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfCand2ProngMcRec>,soa::Join<aod::D0ChargedMCParticleLevelJets, aod::D0ChargedMCParticleLevelJetConstituents>,o2::aod::D0ChargedMCDetectorLevelJetSubstructures>;
169+
// using MCParticleLevelJetSubstructureD0 = JetSubstructureHFTask<soa::Join<aod::D0ChargedMCDetectorLevelJets, aod::D0ChargedMCDetectorLevelJetConstituents>,soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfCand2ProngMcRec>,soa::Join<aod::D0ChargedMCParticleLevelJets, aod::D0ChargedMCParticleLevelJetConstituents>,o2::aod::D0ChargedMCParticleLevelJetSubstructures>;
173170

174-
// using JetSubstructureBplus = JetSubstructureHFTask<soa::Filtered<soa::Join<aod::BplusChargedJets, aod::BplusChargedJetConstituents>>,soa::Join<aod::HfCandBplus, aod::HfSelBplusToD0Pi>,soa::Filtered<soa::Join<aod::BplusChargedMCParticleLevelJets, aod::BplusChargedMCParticleLevelJetConstituents>>,o2::aod::BplusChargedJetSubstructures>;
175-
// using MCDetectorLevelJetSubstructureBplus = JetSubstructureHFTask<soa::Filtered<soa::Join<aod::BplusChargedMCDetectorLevelJets, aod::BplusChargedMCDetectorLevelJetConstituents>>,soa::Join<aod::HfCandBplus, aod::HfSelBplusToD0Pi, aod::HfCandBplusMcRec>,soa::Filtered<soa::Join<aod::BplusChargedMCParticleLevelJets, aod::BplusChargedMCParticleLevelJetConstituents>>,o2::aod::BplusChargedMCDetectorLevelJetSubstructures>;
176-
// using MCParticleLevelJetSubstructureBplus = JetSubstructureHFTask<soa::Filtered<soa::Join<aod::BplusChargedMCDetectorLevelJets, aod::BplusChargedMCDetectorLevelJetConstituents>>,soa::Join<aod::HfCandBplus, aod::HfSelBplusToD0Pi, aod::HfCandBplusMcRec>,soa::Filtered<soa::Join<aod::BplusChargedMCParticleLevelJets, aod::BplusChargedMCParticleLevelJetConstituents>>,o2::aod::BplusChargedMCParticleLevelJetSubstructures>;
171+
// using JetSubstructureBplus = JetSubstructureHFTask<soa::Join<aod::BplusChargedJets, aod::BplusChargedJetConstituents>,soa::Join<aod::HfCandBplus, aod::HfSelBplusToD0Pi>,soa::Join<aod::BplusChargedMCParticleLevelJets, aod::BplusChargedMCParticleLevelJetConstituents>,o2::aod::BplusChargedJetSubstructures>;
172+
// using MCDetectorLevelJetSubstructureBplus = JetSubstructureHFTask<soa::Join<aod::BplusChargedMCDetectorLevelJets, aod::BplusChargedMCDetectorLevelJetConstituents>,soa::Join<aod::HfCandBplus, aod::HfSelBplusToD0Pi, aod::HfCandBplusMcRec>,soa::Join<aod::BplusChargedMCParticleLevelJets, aod::BplusChargedMCParticleLevelJetConstituents>,o2::aod::BplusChargedMCDetectorLevelJetSubstructures>;
173+
// using MCParticleLevelJetSubstructureBplus = JetSubstructureHFTask<soa::Join<aod::BplusChargedMCDetectorLevelJets, aod::BplusChargedMCDetectorLevelJetConstituents>,soa::Join<aod::HfCandBplus, aod::HfSelBplusToD0Pi, aod::HfCandBplusMcRec>,soa::Join<aod::BplusChargedMCParticleLevelJets, aod::BplusChargedMCParticleLevelJetConstituents>,o2::aod::BplusChargedMCParticleLevelJetSubstructures>;
177174

178-
using JetSubstructureLc = JetSubstructureHFTask<soa::Filtered<soa::Join<aod::LcChargedJets, aod::LcChargedJetConstituents>>, soa::Join<aod::HfCand3Prong, aod::HfSelLc>, soa::Filtered<soa::Join<aod::LcChargedMCParticleLevelJets, aod::LcChargedMCParticleLevelJetConstituents>>, o2::aod::LcChargedJetSubstructures>;
179-
// using MCDetectorLevelJetSubstructureLc = JetSubstructureHFTask<soa::Filtered<soa::Join<aod::LcChargedMCDetectorLevelJets, aod::LcChargedMCDetectorLevelJetConstituents>>,soa::Join<aod::HfCand3Prong, aod::HfSelLc, aod::HfCand3ProngMcRec>,soa::Filtered<soa::Join<aod::LcChargedMCParticleLevelJets, aod::LcChargedMCParticleLevelJetConstituents>>,o2::aod::LcChargedMCDetectorLevelJetSubstructures>;
180-
// using MCParticleLevelJetSubstructureLc = JetSubstructureHFTask<soa::Filtered<soa::Join<aod::LcChargedMCDetectorLevelJets, aod::LcChargedMCDetectorLevelJetConstituents>>,soa::Join<aod::HfCand3Prong, aod::HfSelLc, aod::HfCand3ProngMcRec>,soa::Filtered<soa::Join<aod::LcChargedMCParticleLevelJets, aod::LcChargedMCParticleLevelJetConstituents>>,o2::aod::LcChargedMCParticleLevelJetSubstructures>;
175+
using JetSubstructureLc = JetSubstructureHFTask<soa::Join<aod::LcChargedJets, aod::LcChargedJetConstituents>, soa::Join<aod::HfCand3Prong, aod::HfSelLc>, soa::Join<aod::LcChargedMCParticleLevelJets, aod::LcChargedMCParticleLevelJetConstituents>, o2::aod::LcChargedJetSubstructures>;
176+
// using MCDetectorLevelJetSubstructureLc = JetSubstructureHFTask<soa::Join<aod::LcChargedMCDetectorLevelJets, aod::LcChargedMCDetectorLevelJetConstituents>,soa::Join<aod::HfCand3Prong, aod::HfSelLc, aod::HfCand3ProngMcRec>,soa::Join<aod::LcChargedMCParticleLevelJets, aod::LcChargedMCParticleLevelJetConstituents>,o2::aod::LcChargedMCDetectorLevelJetSubstructures>;
177+
// using MCParticleLevelJetSubstructureLc = JetSubstructureHFTask<soa::Join<aod::LcChargedMCDetectorLevelJets, aod::LcChargedMCDetectorLevelJetConstituents>,soa::Join<aod::HfCand3Prong, aod::HfSelLc, aod::HfCand3ProngMcRec>,soa::Join<aod::LcChargedMCParticleLevelJets, aod::LcChargedMCParticleLevelJetConstituents>,o2::aod::LcChargedMCParticleLevelJetSubstructures>;
181178

182179
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
183180
{

0 commit comments

Comments
 (0)