diff --git a/PWGEM/Dilepton/Core/DileptonHadron.h b/PWGEM/Dilepton/Core/DileptonHadronMPC.h similarity index 95% rename from PWGEM/Dilepton/Core/DileptonHadron.h rename to PWGEM/Dilepton/Core/DileptonHadronMPC.h index 026d52458c6..176cfcdb740 100644 --- a/PWGEM/Dilepton/Core/DileptonHadron.h +++ b/PWGEM/Dilepton/Core/DileptonHadronMPC.h @@ -14,8 +14,8 @@ // This code runs loop over leptons. // Please write to: daiki.sekihata@cern.ch -#ifndef PWGEM_DILEPTON_CORE_DILEPTONHADRON_H_ -#define PWGEM_DILEPTON_CORE_DILEPTONHADRON_H_ +#ifndef PWGEM_DILEPTON_CORE_DILEPTONHADRONMPC_H_ +#define PWGEM_DILEPTON_CORE_DILEPTONHADRONMPC_H_ #include "PWGEM/Dilepton/Core/DielectronCut.h" #include "PWGEM/Dilepton/Core/DimuonCut.h" @@ -97,7 +97,7 @@ using MyEMH_dimuon = o2::aod::pwgem::dilepton::utils::EventMixingHandler, std::pair, EMTrack>; // for charged track template -struct DileptonHadron { +struct DileptonHadronMPC { // Configurables Configurable ccdburl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; @@ -133,7 +133,7 @@ struct DileptonHadron { ConfigurableAxis ConfRapidityBins{"ConfRapidityBins", {20, -1, 1}, "rapidity bins for output histograms"}; ConfigurableAxis ConfDEtaBins{"ConfDEtaBins", {60, -3, 3}, "deta bins for output histograms"}; Configurable cfgNbinsDPhi{"cfgNbinsDPhi", 36, "nbins in dphi for output histograms"}; - Configurable cfgNbinsCosNDPhi{"cfgNbinsCosNDPhi", 100, "nbins in cos(n(dphi)) for output histograms"}; + Configurable cfgNbinsCosNDPhi{"cfgNbinsCosNDPhi", 200, "nbins in cos(n(dphi)) for output histograms"}; Configurable cfgNmod{"cfgNmod", 2, "n-th harmonics"}; EMEventCut fEMEventCut; @@ -397,10 +397,7 @@ struct DileptonHadron { leptonM2 = o2::constants::physics::MassMuon; } - fRegistry.add("DileptonHadron/mix/hDiffBC", "diff. global BC in mixed event;|BC_{current} - BC_{mixed}|", kTH1D, {{10001, -0.5, 10000.5}}, true); - fRegistry.addClone("DileptonHadron/mix/hDiffBC", "HadronHadron/mix/hDiffBC"); - - if (doprocessTriggerAnalysis) { + if (doprocess2PCwithTrigger) { fRegistry.add("Event/hNInspectedTVX", "N inspected TVX;run number;N_{TVX}", kTProfile, {{80000, 520000.5, 600000.5}}, true); } } @@ -453,7 +450,7 @@ struct DileptonHadron { } } - ~DileptonHadron() + ~DileptonHadronMPC() { delete emh_pos; emh_pos = 0x0; @@ -466,6 +463,9 @@ struct DileptonHadron { void addhistograms() { + // event info + o2::aod::pwgem::dilepton::utils::eventhistogram::addEventHistograms<-1>(&fRegistry); + std::string mass_axis_title = "m_{ll} (GeV/c^{2})"; std::string pair_pt_axis_title = "p_{T,ll}^{trg} (GeV/c)"; std::string pair_dca_axis_title = "DCA_{ll} (#sigma)"; @@ -525,6 +525,13 @@ struct DileptonHadron { fRegistry.addClone("Dilepton/same/uls/", "Dilepton/same/lspp/"); fRegistry.addClone("Dilepton/same/uls/", "Dilepton/same/lsmm/"); fRegistry.addClone("Dilepton/same/", "Dilepton/mix/"); + + // hadron-hadron + const AxisSpec axis_deta_hh{ConfDEtaBins, "#Delta#eta = #eta_{h}^{trg} - #eta_{h}^{ref}"}; + // const AxisSpec axis_dphi_hh{cfgNbinsDPhi, -M_PI/2, 3 * M_PI/2, "#Delta#varphi = #varphi_{h}^{trg} - #varphi_{h}^{ref} (rad.)"}; + const AxisSpec axis_cosndphi_hh{cfgNbinsCosNDPhi, -1, +1, std::format("cos({0:d}(#varphi_{{h}}^{{trg}} - #varphi_{{h}}^{{ref}}))", cfgNmod.value)}; + fRegistry.add("HadronHadron/same/hs", "hadron-hadron 2PC", kTHnSparseD, {axis_pt_trg, axis_pt_ref, axis_deta_hh, axis_cosndphi_hh}, true); + // fRegistry.addClone("HadronHadron/same/", "HadronHadron/mix/"); } else { // same as kCumulant to avoid seg. fault fRegistry.add("Hadron/hs", "hadron", kTHnSparseD, {axis_pt_trg, axis_eta_trg, axis_phi_trg}, true); @@ -537,17 +544,15 @@ struct DileptonHadron { fRegistry.addClone("Dilepton/same/uls/", "Dilepton/same/lspp/"); fRegistry.addClone("Dilepton/same/uls/", "Dilepton/same/lsmm/"); fRegistry.addClone("Dilepton/same/", "Dilepton/mix/"); - } - - // hadron-hadron - const AxisSpec axis_deta_hh{ConfDEtaBins, "#Delta#eta = #eta_{h}^{trg} - #eta_{h}^{ref}"}; - // const AxisSpec axis_dphi_hh{cfgNbinsDPhi, -M_PI/2, 3 * M_PI/2, "#Delta#varphi = #varphi_{h}^{trg} - #varphi_{h}^{ref} (rad.)"}; - const AxisSpec axis_cosndphi_hh{cfgNbinsCosNDPhi, -1, +1, std::format("cos({0:d}(#varphi_{{h}}^{{trg}} - #varphi_{{h}}^{{ref}}))", cfgNmod.value)}; - fRegistry.add("HadronHadron/same/hs", "hadron-hadron 2PC", kTHnSparseD, {axis_pt_trg, axis_pt_ref, axis_deta_hh, axis_cosndphi_hh}, true); - fRegistry.addClone("HadronHadron/same/", "HadronHadron/mix/"); - // event info - o2::aod::pwgem::dilepton::utils::eventhistogram::addEventHistograms<-1>(&fRegistry); + // hadron-hadron + const AxisSpec axis_deta_hh{ConfDEtaBins, "#Delta#eta = #eta_{h}^{trg} - #eta_{h}^{ref}"}; + // const AxisSpec axis_dphi_hh{cfgNbinsDPhi, -M_PI/2, 3 * M_PI/2, "#Delta#varphi = #varphi_{h}^{trg} - #varphi_{h}^{ref} (rad.)"}; + const AxisSpec axis_cosndphi_hh{cfgNbinsCosNDPhi, -1, +1, std::format("cos({0:d}(#varphi_{{h}}^{{trg}} - #varphi_{{h}}^{{ref}}))", cfgNmod.value)}; + fRegistry.add("HadronHadron/same/hs", "hadron-hadron 2PC", kTHnSparseD, {axis_pt_trg, axis_pt_ref, axis_deta_hh, axis_cosndphi_hh}, true); + // fRegistry.addClone("HadronHadron/same/", "HadronHadron/mix/"); + } + fRegistry.add("Dilepton/mix/hDiffBC", "diff. global BC in mixed event;|BC_{current} - BC_{mixed}|", kTH1D, {{10001, -0.5, 10000.5}}, true); } void DefineEMEventCut() @@ -1053,6 +1058,8 @@ struct DileptonHadron { if (!fEMTrackCut.IsSelected(t1) || !fEMTrackCut.IsSelected(t2)) { // for charged track return false; } + } else { + return false; // mixed event is not necessary for cumulant method. } float weight = 1.f; @@ -1063,21 +1070,9 @@ struct DileptonHadron { float cosndphi = std::cos(cfgNmod * dphi); if (cfgAnalysisType == static_cast(o2::aod::pwgem::dilepton::utils::pairutil::DileptonHadronAnalysisType::kCumulant)) { - if (t1.sign() * t2.sign() < 0) { // ULS - fRegistry.fill(HIST("HadronHadron/") + HIST(event_pair_types[ev_id]) + HIST("hs"), t1.pt(), t2.pt(), deta, cosndphi, weight); - } else if (t1.sign() > 0 && t2.sign() > 0) { // LS++ - fRegistry.fill(HIST("HadronHadron/") + HIST(event_pair_types[ev_id]) + HIST("hs"), t1.pt(), t2.pt(), deta, cosndphi, weight); - } else if (t1.sign() < 0 && t2.sign() < 0) { // LS- - fRegistry.fill(HIST("HadronHadron/") + HIST(event_pair_types[ev_id]) + HIST("hs"), t1.pt(), t2.pt(), deta, cosndphi, weight); - } - } else { // same as kCumulant to avoid seg. fault - if (t1.sign() * t2.sign() < 0) { // ULS - fRegistry.fill(HIST("HadronHadron/") + HIST(event_pair_types[ev_id]) + HIST("hs"), t1.pt(), t2.pt(), deta, cosndphi, weight); - } else if (t1.sign() > 0 && t2.sign() > 0) { // LS++ - fRegistry.fill(HIST("HadronHadron/") + HIST(event_pair_types[ev_id]) + HIST("hs"), t1.pt(), t2.pt(), deta, cosndphi, weight); - } else if (t1.sign() < 0 && t2.sign() < 0) { // LS-- - fRegistry.fill(HIST("HadronHadron/") + HIST(event_pair_types[ev_id]) + HIST("hs"), t1.pt(), t2.pt(), deta, cosndphi, weight); - } + fRegistry.fill(HIST("HadronHadron/") + HIST(event_pair_types[ev_id]) + HIST("hs"), t1.pt(), t2.pt(), deta, cosndphi, weight); + } else { // same as kCumulant to avoid seg. fault + fRegistry.fill(HIST("HadronHadron/") + HIST(event_pair_types[ev_id]) + HIST("hs"), t1.pt(), t2.pt(), deta, cosndphi, weight); } // // store tracks for event mixing without double counting @@ -1199,7 +1194,7 @@ struct DileptonHadron { int ndf = 0; template - void runPairing(TCollisions const& collisions, TLeptons const& posTracks, TLeptons const& negTracks, TPresilce const& perCollision, TCut const& cut, TAllTracks const& tracks, TRefTracks const& refTracks) + void run2PC(TCollisions const& collisions, TLeptons const& posTracks, TLeptons const& negTracks, TPresilce const& perCollision, TCut const& cut, TAllTracks const& tracks, TRefTracks const& refTracks) { for (const auto& collision : collisions) { initCCDB(collision); @@ -1230,8 +1225,8 @@ struct DileptonHadron { auto refTracks_per_coll = refTracks.sliceBy(perCollision_track, collision.globalIndex()); for (const auto& track : refTracks_per_coll) { - if (fEMTrackCut.IsSelected(track)) { // for charged track - fRegistry.fill(HIST("Hadron/hs"), track.pt(), track.eta(), track.phi()); // accepted + if (fEMTrackCut.IsSelected(track)) { + fRegistry.fill(HIST("Hadron/hs"), track.pt(), track.eta(), track.phi()); } } @@ -1244,32 +1239,34 @@ struct DileptonHadron { bool is_pair_ok = fillDilepton<0>(collision, pos, neg, cut, tracks); if (is_pair_ok) { nuls++; - } - for (const auto& reftrack : refTracks_per_coll) { - fillDileptonHadron<0>(collision, pos, neg, cut, tracks, reftrack); + for (const auto& reftrack : refTracks_per_coll) { + fillDileptonHadron<0>(collision, pos, neg, cut, tracks, reftrack); + } } } for (const auto& [pos1, pos2] : combinations(CombinationsStrictlyUpperIndexPolicy(posTracks_per_coll, posTracks_per_coll))) { // LS++ bool is_pair_ok = fillDilepton<0>(collision, pos1, pos2, cut, tracks); if (is_pair_ok) { nlspp++; - } - for (const auto& reftrack : refTracks_per_coll) { - fillDileptonHadron<0>(collision, pos1, pos2, cut, tracks, reftrack); + for (const auto& reftrack : refTracks_per_coll) { + fillDileptonHadron<0>(collision, pos1, pos2, cut, tracks, reftrack); + } } } for (const auto& [neg1, neg2] : combinations(CombinationsStrictlyUpperIndexPolicy(negTracks_per_coll, negTracks_per_coll))) { // LS-- bool is_pair_ok = fillDilepton<0>(collision, neg1, neg2, cut, tracks); if (is_pair_ok) { nlsmm++; - } - for (const auto& reftrack : refTracks_per_coll) { - fillDileptonHadron<0>(collision, neg1, neg2, cut, tracks, reftrack); + for (const auto& reftrack : refTracks_per_coll) { + fillDileptonHadron<0>(collision, neg1, neg2, cut, tracks, reftrack); + } } } - for (const auto& [trg, ref] : combinations(CombinationsStrictlyUpperIndexPolicy(refTracks_per_coll, refTracks_per_coll))) { - fillHadronHadron<0>(trg, ref); + if (nuls > 0 || nlspp > 0 || nlsmm > 0) { // at least 1 pair exists. + for (const auto& [trg, ref] : combinations(CombinationsStrictlyUpperIndexPolicy(refTracks_per_coll, refTracks_per_coll))) { + fillHadronHadron<0>(trg, ref); + } } if (!cfgDoMix || !(nuls > 0 || nlspp > 0 || nlsmm > 0)) { @@ -1328,7 +1325,7 @@ struct DileptonHadron { auto globalBC_mix = map_mixed_eventId_to_globalBC[mix_dfId_collisionId]; uint64_t diffBC = std::max(collision.globalBC(), globalBC_mix) - std::min(collision.globalBC(), globalBC_mix); - fRegistry.fill(HIST("DileptonHadron/mix/hDiffBC"), diffBC); + fRegistry.fill(HIST("Dilepton/mix/hDiffBC"), diffBC); if (diffBC < ndiff_bc_mix) { continue; } @@ -1491,49 +1488,49 @@ struct DileptonHadron { passed_pairIds.shrink_to_fit(); } - void processAnalysis(FilteredMyCollisions const& collisions, MyTracks const& refTracks, Types const&... args) + void process2PC(FilteredMyCollisions const& collisions, MyTracks const& refTracks, Types const&... args) { if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) { auto electrons = std::get<0>(std::tie(args...)); if (cfgApplyWeightTTCA) { fillPairWeightMap(collisions, positive_electrons, negative_electrons, o2::aod::emprimaryelectron::emeventId, fDielectronCut, electrons); } - runPairing(collisions, positive_electrons, negative_electrons, o2::aod::emprimaryelectron::emeventId, fDielectronCut, electrons, refTracks); + run2PC(collisions, positive_electrons, negative_electrons, o2::aod::emprimaryelectron::emeventId, fDielectronCut, electrons, refTracks); } else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) { auto muons = std::get<0>(std::tie(args...)); if (cfgApplyWeightTTCA) { fillPairWeightMap(collisions, positive_muons, negative_muons, o2::aod::emprimarymuon::emeventId, fDimuonCut, muons); } - runPairing(collisions, positive_muons, negative_muons, o2::aod::emprimarymuon::emeventId, fDimuonCut, muons, refTracks); + run2PC(collisions, positive_muons, negative_muons, o2::aod::emprimarymuon::emeventId, fDimuonCut, muons, refTracks); } map_weight.clear(); ndf++; } - PROCESS_SWITCH(DileptonHadron, processAnalysis, "run dilepton analysis", true); + PROCESS_SWITCH(DileptonHadronMPC, process2PC, "run dilepton analysis", true); using FilteredMyCollisionsWithSWT = soa::Filtered; - void processTriggerAnalysis(FilteredMyCollisionsWithSWT const& collisions, MyTracks const& refTracks, Types const&... args) + void process2PCwithTrigger(FilteredMyCollisionsWithSWT const& collisions, MyTracks const& refTracks, Types const&... args) { if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) { auto electrons = std::get<0>(std::tie(args...)); if (cfgApplyWeightTTCA) { fillPairWeightMap(collisions, positive_electrons, negative_electrons, o2::aod::emprimaryelectron::emeventId, fDielectronCut, electrons); } - runPairing(collisions, positive_electrons, negative_electrons, o2::aod::emprimaryelectron::emeventId, fDielectronCut, electrons, refTracks); + run2PC(collisions, positive_electrons, negative_electrons, o2::aod::emprimaryelectron::emeventId, fDielectronCut, electrons, refTracks); } else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) { auto muons = std::get<0>(std::tie(args...)); if (cfgApplyWeightTTCA) { fillPairWeightMap(collisions, positive_muons, negative_muons, o2::aod::emprimarymuon::emeventId, fDimuonCut, muons); } - runPairing(collisions, positive_muons, negative_muons, o2::aod::emprimarymuon::emeventId, fDimuonCut, muons, refTracks); + run2PC(collisions, positive_muons, negative_muons, o2::aod::emprimarymuon::emeventId, fDimuonCut, muons, refTracks); } map_weight.clear(); ndf++; } - PROCESS_SWITCH(DileptonHadron, processTriggerAnalysis, "run dilepton analysis on triggered data", false); + PROCESS_SWITCH(DileptonHadronMPC, process2PCwithTrigger, "run dilepton analysis on triggered data", false); void processDummy(MyCollisions const&) {} - PROCESS_SWITCH(DileptonHadron, processDummy, "Dummy function", false); + PROCESS_SWITCH(DileptonHadronMPC, processDummy, "Dummy function", false); }; -#endif // PWGEM_DILEPTON_CORE_DILEPTONHADRON_H_ +#endif // PWGEM_DILEPTON_CORE_DILEPTONHADRONMPC_H_ diff --git a/PWGEM/Dilepton/Tasks/CMakeLists.txt b/PWGEM/Dilepton/Tasks/CMakeLists.txt index b7cb367ecbb..fd976b5e79f 100644 --- a/PWGEM/Dilepton/Tasks/CMakeLists.txt +++ b/PWGEM/Dilepton/Tasks/CMakeLists.txt @@ -151,8 +151,13 @@ o2physics_add_dpl_workflow(qvector-dummy-otf PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore COMPONENT_NAME Analysis) -o2physics_add_dpl_workflow(dielectron-hadron-2pc - SOURCES dielectronHadron2PC.cxx +o2physics_add_dpl_workflow(dielectron-hadron-mpc + SOURCES dielectronHadronMPC.cxx + PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::MLCore O2Physics::PWGEMDileptonCore + COMPONENT_NAME Analysis) + +o2physics_add_dpl_workflow(dimuon-hadron-mpc + SOURCES dimuonHadronMPC.cxx PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::MLCore O2Physics::PWGEMDileptonCore COMPONENT_NAME Analysis) diff --git a/PWGEM/Dilepton/Tasks/dielectronHadron2PC.cxx b/PWGEM/Dilepton/Tasks/dielectronHadronMPC.cxx similarity index 77% rename from PWGEM/Dilepton/Tasks/dielectronHadron2PC.cxx rename to PWGEM/Dilepton/Tasks/dielectronHadronMPC.cxx index fb3b63f1b33..42cfa2eac28 100644 --- a/PWGEM/Dilepton/Tasks/dielectronHadron2PC.cxx +++ b/PWGEM/Dilepton/Tasks/dielectronHadronMPC.cxx @@ -14,7 +14,7 @@ // This code is for dielectron analyses. // Please write to: daiki.sekihata@cern.ch -#include "PWGEM/Dilepton/Core/DileptonHadron.h" +#include "PWGEM/Dilepton/Core/DileptonHadronMPC.h" #include "Framework/ASoAHelpers.h" #include "Framework/AnalysisTask.h" @@ -23,5 +23,5 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{ - adaptAnalysisTask>(cfgc, TaskName{"dielectron-hadron-2pc"})}; + adaptAnalysisTask>(cfgc, TaskName{"dielectron-hadron-2pc"})}; } diff --git a/PWGEM/Dilepton/Tasks/dimuonHadronMPC.cxx b/PWGEM/Dilepton/Tasks/dimuonHadronMPC.cxx new file mode 100644 index 00000000000..2e0cf5f5e59 --- /dev/null +++ b/PWGEM/Dilepton/Tasks/dimuonHadronMPC.cxx @@ -0,0 +1,27 @@ +// 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. +// +// ======================== +// +// This code is for dimuon analyses. +// Please write to: daiki.sekihata@cern.ch + +#include "PWGEM/Dilepton/Core/DileptonHadronMPC.h" + +#include "Framework/ASoAHelpers.h" +#include "Framework/AnalysisTask.h" +#include "Framework/runDataProcessing.h" + +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ + return WorkflowSpec{ + adaptAnalysisTask>(cfgc, TaskName{"dimuon-hadron-mpc"})}; +} diff --git a/PWGEM/PhotonMeson/Core/DiphotonHadron2PC.h b/PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h similarity index 82% rename from PWGEM/PhotonMeson/Core/DiphotonHadron2PC.h rename to PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h index aa2746f6291..499b3fe1184 100644 --- a/PWGEM/PhotonMeson/Core/DiphotonHadron2PC.h +++ b/PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h @@ -11,15 +11,15 @@ // // ======================== // -/// \file DiphotonHadron2PC.h +/// \file DiphotonHadronMPC.h /// \brief This code is to analyze diphoton-hadron correlation. Keep in mind that cumulant method does not require event mixing. /// /// \author D. Sekihata, daiki.sekihata@cern.ch -#ifndef PWGEM_PHOTONMESON_CORE_DIPHOTONHADRON2PC_H_ -#define PWGEM_PHOTONMESON_CORE_DIPHOTONHADRON2PC_H_ +#ifndef PWGEM_PHOTONMESON_CORE_DIPHOTONHADRONMPC_H_ +#define PWGEM_PHOTONMESON_CORE_DIPHOTONHADRONMPC_H_ -// #include "PWGEM/Dilepton/Core/EMTrackCut.h" +#include "PWGEM/Dilepton/Core/EMTrackCut.h" #include "PWGEM/Dilepton/Utils/EMTrack.h" #include "PWGEM/Dilepton/Utils/EMTrackUtilities.h" #include "PWGEM/Dilepton/Utils/EventMixingHandler.h" @@ -69,6 +69,9 @@ using namespace o2::aod::pwgem::dilepton::utils; using MyCollisions = soa::Join; using MyCollision = MyCollisions::iterator; +using MyCollisionsWithSWT = soa::Join; +using MyCollisionWithSWT = MyCollisionsWithSWT::iterator; + using MyV0Photons = soa::Filtered>; using MyV0Photon = MyV0Photons::iterator; @@ -79,13 +82,14 @@ using MyTracks = soa::Join; using MyTrack = MyTracks::iterator; template -struct DiphotonHadron2PC { +struct DiphotonHadronMPC { Configurable ccdburl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; Configurable grpPath{"grpPath", "GLO/GRP/GRP", "Path of the grp file"}; Configurable grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"}; Configurable skipGRPOquery{"skipGRPOquery", true, "skip grpo query"}; Configurable d_bz_input{"d_bz_input", -999, "bz field in kG, -999 is automatic"}; + Configurable cfg_swt_name{"cfg_swt_name", "fHighTrackMult", "desired software trigger name"}; // 1 trigger name per 1 task. fHighTrackMult, fHighFt0Mult Configurable cfgCentEstimator{"cfgCentEstimator", 2, "FT0M:0, FT0A:1, FT0C:2"}; Configurable cfgOccupancyEstimator{"cfgOccupancyEstimator", 0, "FT0C:0, Track:1"}; @@ -105,7 +109,7 @@ struct DiphotonHadron2PC { ConfigurableAxis ConfPtHadronBins{"ConfPtHadronBins", {VARIABLE_WIDTH, 0.00, 0.15, 0.2, 0.3, 0.4, 0.50, 1.00, 2.00, 3.00, 4.00, 5.00}, "pT,h bins for output histograms"}; ConfigurableAxis ConfDEtaBins{"ConfDEtaBins", {60, -3, 3}, "deta bins for output histograms"}; Configurable cfgNbinsDPhi{"cfgNbinsDPhi", 36, "nbins in dphi for output histograms"}; - Configurable cfgNbinsCosNDPhi{"cfgNbinsCosNDPhi", 100, "nbins in cos(n(dphi)) for output histograms"}; + Configurable cfgNbinsCosNDPhi{"cfgNbinsCosNDPhi", 200, "nbins in cos(n(dphi)) for output histograms"}; Configurable cfgNmod{"cfgNmod", 2, "n-th harmonics"}; EMPhotonEventCut fEMEventCut; @@ -195,26 +199,26 @@ struct DiphotonHadron2PC { Configurable cfg_max_TOFNsigmaEl{"cfg_max_TOFNsigmaEl", +3.0, "max. TOF n sigma for electron inclusion"}; } dileptoncuts; - // EMTrackCut fEMTrackCut; - // struct : ConfigurableGroup { - // std::string prefix = "trackcut_group"; - // Configurable cfg_min_pt_track{"cfg_min_pt_track", 0.15, "min pT for ref. track"}; - // Configurable cfg_max_pt_track{"cfg_max_pt_track", 3.0, "max pT for ref. track"}; - // Configurable cfg_min_eta_track{"cfg_min_eta_track", -1.2, "min eta for ref. track"}; - // Configurable cfg_max_eta_track{"cfg_max_eta_track", +1.2, "max eta for ref. track"}; - // Configurable cfg_min_phi_track{"cfg_min_phi_track", 0., "min phi for ref. track"}; - // Configurable cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for ref. track"}; - // Configurable cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"}; - // Configurable cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"}; - // Configurable cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"}; - // Configurable cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"}; - // Configurable cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"}; - // Configurable cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"}; - // Configurable cfg_max_dcaxy{"cfg_max_dcaxy", 1.0, "max dca XY for single track in cm"}; - // Configurable cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z for single track in cm"}; - // Configurable cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"}; - // Configurable cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"}; - // } trackcuts; + EMTrackCut fEMTrackCut; + struct : ConfigurableGroup { + std::string prefix = "trackcut_group"; + Configurable cfg_min_pt_track{"cfg_min_pt_track", 0.15, "min pT for ref. track"}; + Configurable cfg_max_pt_track{"cfg_max_pt_track", 3.0, "max pT for ref. track"}; + Configurable cfg_min_eta_track{"cfg_min_eta_track", -1.2, "min eta for ref. track"}; + Configurable cfg_max_eta_track{"cfg_max_eta_track", +1.2, "max eta for ref. track"}; + Configurable cfg_min_phi_track{"cfg_min_phi_track", 0., "min phi for ref. track"}; + Configurable cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for ref. track"}; + Configurable cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"}; + Configurable cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"}; + Configurable cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"}; + Configurable cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"}; + Configurable cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"}; + Configurable cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"}; + Configurable cfg_max_dcaxy{"cfg_max_dcaxy", 1.0, "max dca XY for single track in cm"}; + Configurable cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z for single track in cm"}; + Configurable cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"}; + Configurable cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"}; + } trackcuts; o2::aod::rctsel::RCTFlagsChecker rctChecker; HistogramRegistry fRegistry{"output", {}, OutputObjHandlingPolicy::AnalysisObject, false, false}; @@ -249,10 +253,14 @@ struct DiphotonHadron2PC { addHistograms(); DefineEMEventCut(); + DefineEMTrackCut(); DefinePCMCut(); DefineDileptonCut(); fRegistry.add("Diphoton/mix/hDiffBC", "diff. global BC in mixed event;|BC_{current} - BC_{mixed}|", kTH1D, {{10001, -0.5, 10000.5}}, true); + if (doprocess2PCwithTrigger) { + fRegistry.add("Event/hNInspectedTVX", "N inspected TVX;run number;N_{TVX}", kTProfile, {{80000, 520000.5, 600000.5}}, true); + } mRunNumber = 0; d_bz = 0; @@ -264,7 +272,7 @@ struct DiphotonHadron2PC { rctChecker.init(eventcuts.cfgRCTLabel.value, eventcuts.cfgCheckZDC.value, eventcuts.cfgTreatLimitedAcceptanceAsBad.value); } - template + template void initCCDB(TCollision const& collision) { if (mRunNumber == collision.runNumber()) { @@ -301,9 +309,15 @@ struct DiphotonHadron2PC { LOG(info) << "Retrieved GRP for timestamp " << run3grp_timestamp << " with magnetic field of " << d_bz << " kZG"; } mRunNumber = collision.runNumber(); + + if constexpr (isTriggerAnalysis) { + LOGF(info, "Trigger analysis is enabled. Desired trigger name = %s", cfg_swt_name.value); + LOGF(info, "total inspected TVX events = %d in run number %d", collision.nInspectedTVX(), collision.runNumber()); + fRegistry.fill(HIST("Event/hNInspectedTVX"), collision.runNumber(), collision.nInspectedTVX()); + } } - ~DiphotonHadron2PC() + ~DiphotonHadronMPC() { delete emh1; emh1 = 0x0; @@ -365,7 +379,8 @@ struct DiphotonHadron2PC { // hadron-hadron const AxisSpec axis_deta_hh{ConfDEtaBins, "#Delta#eta = #eta_{h}^{trg} - #eta_{h}^{ref}"}; const AxisSpec axis_cosndphi_hh{cfgNbinsCosNDPhi, -1, +1, std::format("cos({0:d}(#varphi_{{h}}^{{trg}} - #varphi_{{h}}^{{ref}}))", cfgNmod.value)}; - fRegistry.add("HadronHadron/same/hs", "hadron-hadron 2PC", kTHnSparseD, {axis_pt_trg, axis_pt_ref, axis_deta_hh, axis_cosndphi_hh}, true); + fRegistry.add("HadronHadron_for_Diphoton/same/hs", "hadron-hadron 2PC", kTHnSparseD, {axis_pt_trg, axis_pt_ref, axis_deta_hh, axis_cosndphi_hh}, true); + fRegistry.addClone("HadronHadron_for_Diphoton/same/hs", "HadronHadron_for_Photon/same/hs"); } void DefineEMEventCut() @@ -445,6 +460,25 @@ struct DiphotonHadron2PC { fDileptonCut.SetTOFNsigmaElRange(dileptoncuts.cfg_min_TOFNsigmaEl, dileptoncuts.cfg_max_TOFNsigmaEl); } + void DefineEMTrackCut() + { + fEMTrackCut = EMTrackCut("fEMTrackCut", "fEMTrackCut"); + fEMTrackCut.SetTrackPtRange(trackcuts.cfg_min_pt_track, trackcuts.cfg_max_pt_track); + fEMTrackCut.SetTrackEtaRange(trackcuts.cfg_min_eta_track, trackcuts.cfg_max_eta_track); + fEMTrackCut.SetTrackPhiRange(trackcuts.cfg_min_phi_track, trackcuts.cfg_max_phi_track); + fEMTrackCut.SetMinNClustersTPC(trackcuts.cfg_min_ncluster_tpc); + fEMTrackCut.SetMinNCrossedRowsTPC(trackcuts.cfg_min_ncrossedrows); + fEMTrackCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8); + fEMTrackCut.SetMaxFracSharedClustersTPC(trackcuts.cfg_max_frac_shared_clusters_tpc); + fEMTrackCut.SetChi2PerClusterTPC(0.0, trackcuts.cfg_max_chi2tpc); + fEMTrackCut.SetChi2PerClusterITS(0.0, trackcuts.cfg_max_chi2its); + fEMTrackCut.SetNClustersITS(trackcuts.cfg_min_ncluster_its, 7); + fEMTrackCut.SetTrackMaxDcaXY(trackcuts.cfg_max_dcaxy); + fEMTrackCut.SetTrackMaxDcaZ(trackcuts.cfg_max_dcaz); + fEMTrackCut.RequireITSibAny(trackcuts.cfg_require_itsib_any); + fEMTrackCut.RequireITSib1st(trackcuts.cfg_require_itsib_1st); + } + SliceCache cache; Preslice perCollision_pcm = aod::v0photonkf::emeventId; Preslice perCollision_track = aod::emprimarytrack::emeventId; @@ -460,20 +494,27 @@ struct DiphotonHadron2PC { std::vector> used_dileptonIds; // std::map, uint64_t> map_mixed_eventId_to_globalBC; - template - void runPairing(TCollisions const& collisions, - TPhotons1 const& photons1, TPhotons2 const& photons2, TSubInfos1 const&, TSubInfos2 const&, TPreslice1 const& perCollision1, TPreslice2 const& perCollision2, TCut1 const& cut1, TCut2 const& cut2, - TRefTracks const& refTracks) + template + void run2PC(TCollisions const& collisions, + TPhotons1 const& photons1, TPhotons2 const& photons2, TSubInfos1 const&, TSubInfos2 const&, TPreslice1 const& perCollision1, TPreslice2 const& perCollision2, TCut1 const& cut1, TCut2 const& cut2, + TRefTracks const& refTracks) { for (const auto& collision : collisions) { - initCCDB(collision); + initCCDB(collision); int ndiphoton = 0; + int nphoton = 0; const float centralities[3] = {collision.centFT0M(), collision.centFT0A(), collision.centFT0C()}; if (centralities[cfgCentEstimator] < cfgCentMin || cfgCentMax < centralities[cfgCentEstimator]) { continue; } + if constexpr (isTriggerAnalysis) { + if (!collision.swtalias_bit(o2::aod::pwgem::dilepton::swt::aliasLabels.at(cfg_swt_name.value))) { + continue; + } + } + o2::aod::pwgem::photonmeson::utils::eventhistogram::fillEventInfo<0>(&fRegistry, collision, 1.f); if (!fEMEventCut.IsSelected(collision)) { continue; @@ -521,14 +562,9 @@ struct DiphotonHadron2PC { auto refTracks_per_collision = refTracks.sliceBy(perCollision_track, collision.globalIndex()); for (const auto& track : refTracks_per_collision) { - fRegistry.fill(HIST("Hadron/hs"), track.pt(), track.eta(), track.phi()); - } - - for (const auto& [trg, ref] : combinations(CombinationsStrictlyUpperIndexPolicy(refTracks_per_collision, refTracks_per_collision))) { - float deta = trg.eta() - ref.eta(); - float dphi = trg.phi() - ref.phi(); - o2::math_utils::bringTo02Pi(dphi); - fRegistry.fill(HIST("HadronHadron/same/hs"), trg.pt(), ref.pt(), deta, std::cos(cfgNmod * dphi)); + if (fEMTrackCut.IsSelected(track)) { + fRegistry.fill(HIST("Hadron/hs"), track.pt(), track.eta(), track.phi()); + } } std::tuple key_bin = std::make_tuple(zbin, centbin, epbin, occbin); @@ -541,12 +577,15 @@ struct DiphotonHadron2PC { for (const auto& photon : photons1_per_collision) { // single photon if (cut1.template IsSelected(photon)) { fRegistry.fill(HIST("Photon/hs"), photon.pt(), photon.eta(), photon.phi()); + nphoton++; for (const auto& track : refTracks_per_collision) { - float deta = photon.eta() - track.eta(); - float dphi = photon.phi() - track.phi(); - o2::math_utils::bringTo02Pi(dphi); + if (fEMTrackCut.IsSelected(track)) { + float deta = photon.eta() - track.eta(); + float dphi = photon.phi() - track.phi(); + o2::math_utils::bringTo02Pi(dphi); - fRegistry.fill(HIST("PhotonHadron/same/hs"), photon.pt(), track.pt(), deta, std::cos(cfgNmod * dphi)); + fRegistry.fill(HIST("PhotonHadron/same/hs"), photon.pt(), track.pt(), deta, std::cos(cfgNmod * dphi)); + } } // end of ref track loop } } // end of photon loop @@ -564,13 +603,14 @@ struct DiphotonHadron2PC { } fRegistry.fill(HIST("Diphoton/same/hs"), v12.M(), v12.Pt()); - for (const auto& track : refTracks_per_collision) { - ROOT::Math::PtEtaPhiMVector v3(track.pt(), track.eta(), track.phi(), 0.139); - float deta = v12.Eta() - v3.Eta(); - float dphi = v12.Phi() - v3.Phi(); - o2::math_utils::bringTo02Pi(dphi); - fRegistry.fill(HIST("DiphotonHadron/same/hs"), v12.M(), v12.Pt(), v3.Pt(), deta, std::cos(cfgNmod * dphi)); + if (fEMTrackCut.IsSelected(track)) { + ROOT::Math::PtEtaPhiMVector v3(track.pt(), track.eta(), track.phi(), 0.139); + float deta = v12.Eta() - v3.Eta(); + float dphi = v12.Phi() - v3.Phi(); + o2::math_utils::bringTo02Pi(dphi); + fRegistry.fill(HIST("DiphotonHadron/same/hs"), v12.M(), v12.Pt(), v3.Pt(), deta, std::cos(cfgNmod * dphi)); + } } // end of ref track loop std::pair pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex()); @@ -594,12 +634,15 @@ struct DiphotonHadron2PC { for (const auto& photon : photons1_per_collision) { // single photon if (cut1.template IsSelected(photon)) { fRegistry.fill(HIST("Photon/hs"), photon.pt(), photon.eta(), photon.phi()); + nphoton++; for (const auto& track : refTracks_per_collision) { - float deta = photon.eta() - track.eta(); - float dphi = photon.phi() - track.phi(); - o2::math_utils::bringTo02Pi(dphi); + if (fEMTrackCut.IsSelected(track)) { + float deta = photon.eta() - track.eta(); + float dphi = photon.phi() - track.phi(); + o2::math_utils::bringTo02Pi(dphi); - fRegistry.fill(HIST("PhotonHadron/same/hs"), photon.pt(), track.pt(), deta, std::cos(cfgNmod * dphi)); + fRegistry.fill(HIST("PhotonHadron/same/hs"), photon.pt(), track.pt(), deta, std::cos(cfgNmod * dphi)); + } } // end of ref track loop } } // end of photon loop @@ -661,6 +704,28 @@ struct DiphotonHadron2PC { } // end of g1 loop } // end of pairing in same event + if (nphoton > 0) { + for (const auto& [trg, ref] : combinations(CombinationsStrictlyUpperIndexPolicy(refTracks_per_collision, refTracks_per_collision))) { + if (fEMTrackCut.IsSelected(trg) && fEMTrackCut.IsSelected(ref)) { + float deta = trg.eta() - ref.eta(); + float dphi = trg.phi() - ref.phi(); + o2::math_utils::bringTo02Pi(dphi); + fRegistry.fill(HIST("HadronHadron_for_Photon/same/hs"), trg.pt(), ref.pt(), deta, std::cos(cfgNmod * dphi)); + } + } + } + + if (ndiphoton > 0) { + for (const auto& [trg, ref] : combinations(CombinationsStrictlyUpperIndexPolicy(refTracks_per_collision, refTracks_per_collision))) { + if (fEMTrackCut.IsSelected(trg) && fEMTrackCut.IsSelected(ref)) { + float deta = trg.eta() - ref.eta(); + float dphi = trg.phi() - ref.phi(); + o2::math_utils::bringTo02Pi(dphi); + fRegistry.fill(HIST("HadronHadron_for_Diphoton/same/hs"), trg.pt(), ref.pt(), deta, std::cos(cfgNmod * dphi)); + } + } + } + // event mixing if (!cfgDoMix || !(ndiphoton > 0)) { continue; @@ -793,25 +858,44 @@ struct DiphotonHadron2PC { Filter prefilter_primaryelectron = ifnode(dileptoncuts.cfg_apply_cuts_from_prefilter_derived.node(), o2::aod::emprimaryelectron::pfbderived == static_cast(0), true); int ndf = 0; - void processAnalysis(FilteredMyCollisions const& collisions, MyTracks const& refTracks, Types const&... args) + void process2PC(FilteredMyCollisions const& collisions, MyTracks const& refTracks, Types const&... args) + { + // LOGF(info, "ndf = %d", ndf); + if constexpr (pairtype == PairType::kPCMPCM) { + auto v0photons = std::get<0>(std::tie(args...)); + auto v0legs = std::get<1>(std::tie(args...)); + run2PC(collisions, v0photons, v0photons, v0legs, v0legs, perCollision_pcm, perCollision_pcm, fV0PhotonCut, fV0PhotonCut, refTracks); + } else if constexpr (pairtype == PairType::kPCMDalitzEE) { + auto v0photons = std::get<0>(std::tie(args...)); + auto v0legs = std::get<1>(std::tie(args...)); + auto emprimaryelectrons = std::get<2>(std::tie(args...)); + // LOGF(info, "electrons.size() = %d, positrons.size() = %d", electrons.size(), positrons.size()); + run2PC(collisions, v0photons, emprimaryelectrons, v0legs, emprimaryelectrons, perCollision_pcm, perCollision_electron, fV0PhotonCut, fDileptonCut, refTracks); + } + ndf++; + } + PROCESS_SWITCH(DiphotonHadronMPC, process2PC, "process pair analysis", true); + + using FilteredMyCollisionsWithSWT = soa::Filtered; + void process2PCwithTrigger(FilteredMyCollisionsWithSWT const& collisions, MyTracks const& refTracks, Types const&... args) { // LOGF(info, "ndf = %d", ndf); if constexpr (pairtype == PairType::kPCMPCM) { auto v0photons = std::get<0>(std::tie(args...)); auto v0legs = std::get<1>(std::tie(args...)); - runPairing(collisions, v0photons, v0photons, v0legs, v0legs, perCollision_pcm, perCollision_pcm, fV0PhotonCut, fV0PhotonCut, refTracks); + run2PC(collisions, v0photons, v0photons, v0legs, v0legs, perCollision_pcm, perCollision_pcm, fV0PhotonCut, fV0PhotonCut, refTracks); } else if constexpr (pairtype == PairType::kPCMDalitzEE) { auto v0photons = std::get<0>(std::tie(args...)); auto v0legs = std::get<1>(std::tie(args...)); auto emprimaryelectrons = std::get<2>(std::tie(args...)); // LOGF(info, "electrons.size() = %d, positrons.size() = %d", electrons.size(), positrons.size()); - runPairing(collisions, v0photons, emprimaryelectrons, v0legs, emprimaryelectrons, perCollision_pcm, perCollision_electron, fV0PhotonCut, fDileptonCut, refTracks); + run2PC(collisions, v0photons, emprimaryelectrons, v0legs, emprimaryelectrons, perCollision_pcm, perCollision_electron, fV0PhotonCut, fDileptonCut, refTracks); } ndf++; } - PROCESS_SWITCH(DiphotonHadron2PC, processAnalysis, "process pair analysis", false); + PROCESS_SWITCH(DiphotonHadronMPC, process2PCwithTrigger, "process pair analysis", false); void processDummy(MyCollisions const&) {} - PROCESS_SWITCH(DiphotonHadron2PC, processDummy, "Dummy function", true); + PROCESS_SWITCH(DiphotonHadronMPC, processDummy, "Dummy function", false); }; -#endif // PWGEM_PHOTONMESON_CORE_DIPHOTONHADRON2PC_H_ +#endif // PWGEM_PHOTONMESON_CORE_DIPHOTONHADRONMPC_H_ diff --git a/PWGEM/PhotonMeson/Tasks/CMakeLists.txt b/PWGEM/PhotonMeson/Tasks/CMakeLists.txt index 2293f384857..1cb25bac7b4 100644 --- a/PWGEM/PhotonMeson/Tasks/CMakeLists.txt +++ b/PWGEM/PhotonMeson/Tasks/CMakeLists.txt @@ -149,13 +149,13 @@ o2physics_add_dpl_workflow(tagging-pi0-mc-pcmdalitzee PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGEMPhotonMesonCore COMPONENT_NAME Analysis) -o2physics_add_dpl_workflow(diphoton-hadron-2pc-pcmpcm - SOURCES diphotonHadron2PCPCMPCM.cxx +o2physics_add_dpl_workflow(diphoton-hadron-mpc-pcmpcm + SOURCES diphotonHadronMPCPCMPCM.cxx PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGEMPhotonMesonCore COMPONENT_NAME Analysis) -o2physics_add_dpl_workflow(diphoton-hadron-2pc-pcmdalitzee - SOURCES diphotonHadron2PCPCMDalitzEE.cxx +o2physics_add_dpl_workflow(diphoton-hadron-mpc-pcmdalitzee + SOURCES diphotonHadronMPCPCMDalitzEE.cxx PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGEMPhotonMesonCore COMPONENT_NAME Analysis) diff --git a/PWGEM/PhotonMeson/Tasks/diphotonHadron2PCPCMDalitzEE.cxx b/PWGEM/PhotonMeson/Tasks/diphotonHadronMPCPCMDalitzEE.cxx similarity index 88% rename from PWGEM/PhotonMeson/Tasks/diphotonHadron2PCPCMDalitzEE.cxx rename to PWGEM/PhotonMeson/Tasks/diphotonHadronMPCPCMDalitzEE.cxx index 6856ec72227..a3a7b548894 100644 --- a/PWGEM/PhotonMeson/Tasks/diphotonHadron2PCPCMDalitzEE.cxx +++ b/PWGEM/PhotonMeson/Tasks/diphotonHadronMPCPCMDalitzEE.cxx @@ -14,7 +14,7 @@ // This code loops over photons and makes pairs for neutral mesons analyses. // Please write to: daiki.sekihata@cern.ch -#include "PWGEM/PhotonMeson/Core/DiphotonHadron2PC.h" +#include "PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h" #include "PWGEM/PhotonMeson/DataModel/gammaTables.h" #include "PWGEM/PhotonMeson/Utils/PairUtilities.h" @@ -31,6 +31,6 @@ using namespace o2::aod; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{ - adaptAnalysisTask>(cfgc, TaskName{"diphoton-hadron-2pc-pcmdalitzee"}), + adaptAnalysisTask>(cfgc, TaskName{"diphoton-hadron-mpc-pcmdalitzee"}), }; } diff --git a/PWGEM/PhotonMeson/Tasks/diphotonHadron2PCPCMPCM.cxx b/PWGEM/PhotonMeson/Tasks/diphotonHadronMPCPCMPCM.cxx similarity index 85% rename from PWGEM/PhotonMeson/Tasks/diphotonHadron2PCPCMPCM.cxx rename to PWGEM/PhotonMeson/Tasks/diphotonHadronMPCPCMPCM.cxx index 7597de252ac..6f0dfff7c2f 100644 --- a/PWGEM/PhotonMeson/Tasks/diphotonHadron2PCPCMPCM.cxx +++ b/PWGEM/PhotonMeson/Tasks/diphotonHadronMPCPCMPCM.cxx @@ -14,7 +14,7 @@ // This code loops over photons and makes pairs for neutral mesons analyses. // Please write to: daiki.sekihata@cern.ch -#include "PWGEM/PhotonMeson/Core/DiphotonHadron2PC.h" +#include "PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h" #include "PWGEM/PhotonMeson/DataModel/gammaTables.h" #include "PWGEM/PhotonMeson/Utils/PairUtilities.h" @@ -29,6 +29,6 @@ using namespace o2::aod; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{ - adaptAnalysisTask>(cfgc, TaskName{"diphoton-hadron-2pc-pcmpcm"}), + adaptAnalysisTask>(cfgc, TaskName{"diphoton-hadron-mpc-pcmpcm"}), }; }