Skip to content

Commit 83ebcaa

Browse files
dsekihatalibuild
andauthored
[PWGEM/Dilepton] update 2PC (#12551)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 805f8c8 commit 83ebcaa

File tree

8 files changed

+45
-27
lines changed

8 files changed

+45
-27
lines changed

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ struct Dilepton {
106106
Configurable<int> cfgQvecEstimator{"cfgQvecEstimator", 0, "FT0M:0, FT0A:1, FT0C:2, BTot:3, BPos:4, BNeg:5"};
107107
Configurable<int> cfgCentEstimator{"cfgCentEstimator", 2, "FT0M:0, FT0A:1, FT0C:2"};
108108
Configurable<int> cfgOccupancyEstimator{"cfgOccupancyEstimator", 0, "FT0C:0, Track:1"};
109-
Configurable<float> cfgCentMin{"cfgCentMin", 0, "min. centrality"};
109+
Configurable<float> cfgCentMin{"cfgCentMin", -1, "min. centrality"};
110110
Configurable<float> cfgCentMax{"cfgCentMax", 999.f, "max. centrality"};
111111
Configurable<bool> cfgDoMix{"cfgDoMix", true, "flag for event mixing"};
112112
Configurable<int> ndepth{"ndepth", 100, "depth for event mixing"};

PWGEM/Dilepton/Core/DileptonHadronMPC.h

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,6 @@ using MyMuon = MyMuons::iterator;
8787
using FilteredMyMuons = soa::Filtered<MyMuons>;
8888
using FilteredMyMuon = FilteredMyMuons::iterator;
8989

90-
using MyTracks = soa::Join<aod::EMPrimaryTracks, aod::EMPrimaryTrackEMEventIds>;
91-
using MyTrack = MyTracks::iterator;
92-
9390
using MyEMH_electron = o2::aod::pwgem::dilepton::utils::EventMixingHandler<std::tuple<int, int, int, int>, std::pair<int, int>, EMTrack>;
9491
using MyEMH_muon = o2::aod::pwgem::dilepton::utils::EventMixingHandler<std::tuple<int, int, int, int>, std::pair<int, int>, EMFwdTrack>;
9592
using MyEMH_track = o2::aod::pwgem::dilepton::utils::EventMixingHandler<std::tuple<int, int, int, int>, std::pair<int, int>, EMTrack>; // for charged track
@@ -114,15 +111,15 @@ struct DileptonHadronMPC {
114111
Configurable<int> ndepth_hadron{"ndepth_hadron", 1, "depth for event mixing between hadron-hadron"};
115112
Configurable<uint64_t> ndiff_bc_mix{"ndiff_bc_mix", 594, "difference in global BC required in mixed events"};
116113
ConfigurableAxis ConfVtxBins{"ConfVtxBins", {VARIABLE_WIDTH, -10.0f, -8.f, -6.f, -4.f, -2.f, 0.f, 2.f, 4.f, 6.f, 8.f, 10.f}, "Mixing bins - z-vertex"};
117-
ConfigurableAxis ConfCentBins{"ConfCentBins", {VARIABLE_WIDTH, 0.0f, 0.1, 1, 5.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f, 100.f, 999.f}, "Mixing bins - centrality"};
114+
ConfigurableAxis ConfCentBins{"ConfCentBins", {VARIABLE_WIDTH, 0.0f, 5.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f, 100.f, 999.f}, "Mixing bins - centrality"};
118115
ConfigurableAxis ConfOccupancyBins{"ConfOccupancyBins", {VARIABLE_WIDTH, -1, 1e+10}, "Mixing bins - occupancy"};
119116
Configurable<std::string> cfg_swt_name{"cfg_swt_name", "fHighTrackMult", "desired software trigger name"}; // 1 trigger name per 1 task. fHighTrackMult, fHighFt0Mult
120117
// Configurable<int> cfgNtracksPV08Min{"cfgNtracksPV08Min", -1, "min. multNTracksPV"};
121118
// Configurable<int> cfgNtracksPV08Max{"cfgNtracksPV08Max", static_cast<int>(1e+9), "max. multNTracksPV"};
122119
Configurable<bool> cfgApplyWeightTTCA{"cfgApplyWeightTTCA", false, "flag to apply weighting by 1/N"};
123120
Configurable<uint> cfgDCAType{"cfgDCAType", 0, "type of DCA for output. 0:3D, 1:XY, 2:Z, else:3D"};
124121

125-
ConfigurableAxis ConfMllBins{"ConfMllBins", {VARIABLE_WIDTH, 0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.20, 0.30, 0.40, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.60, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.70, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.80, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.90, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.00, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.75, 2.80, 2.85, 2.90, 2.95, 3.00, 3.05, 3.10, 3.15, 3.20, 3.25, 3.30, 3.35, 3.40, 3.45, 3.50, 3.55, 3.60, 3.65, 3.70, 3.75, 3.80, 3.85, 3.90, 3.95, 4.00}, "mll bins for output histograms"};
122+
ConfigurableAxis ConfMllBins{"ConfMllBins", {VARIABLE_WIDTH, 0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.40, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.60, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.70, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.80, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.90, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.00, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.75, 2.80, 2.85, 2.90, 2.95, 3.00, 3.05, 3.10, 3.15, 3.20, 3.25, 3.30, 3.35, 3.40, 3.45, 3.50, 3.55, 3.60, 3.65, 3.70, 3.75, 3.80, 3.85, 3.90, 3.95, 4.00}, "mll bins for output histograms"};
126123
ConfigurableAxis ConfPtllBins{"ConfPtllBins", {VARIABLE_WIDTH, 0.00, 0.15, 0.50, 1.00, 1.50, 2.00, 2.50, 3.00, 3.50, 4.00, 4.50, 5.00, 6.00, 7.00, 8.00, 9.00, 10.00}, "pTll bins for output histograms"};
127124
ConfigurableAxis ConfDCAllBins{"ConfDCAllBins", {VARIABLE_WIDTH, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}, "DCAll bins for output histograms"};
128125

@@ -289,7 +286,7 @@ struct DileptonHadronMPC {
289286
// Configurable<float> cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for ref. track"};
290287
// Configurable<float> cfg_max_dcaxy{"cfg_max_dcaxy", 0.5, "max dca XY for single track in cm"};
291288
// Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 0.5, "max dca Z for single track in cm"};
292-
Configurable<uint16_t> cfg_track_bits{"cfg_track_bits", 645, "required track bits"}; // default:645, loose:0, tight:778
289+
Configurable<uint16_t> cfg_track_bits{"cfg_track_bits", 5765, "required track bits"}; // default:645, loose:0, tight:778
293290
} trackcuts;
294291

295292
o2::aod::rctsel::RCTFlagsChecker rctChecker;
@@ -511,7 +508,9 @@ struct DileptonHadronMPC {
511508
const AxisSpec axis_pt_trg{ConfPtHadronBins, "p_{T,h} (GeV/c)"};
512509
const AxisSpec axis_eta_trg{40, -2, +2, "#eta_{h}"};
513510
const AxisSpec axis_phi_trg{36, 0, 2 * M_PI, "#varphi_{h} (rad.)"};
514-
fRegistry.add("Hadron/hs", "hadron", kTHnSparseD, {axis_pt_trg, axis_eta_trg, axis_phi_trg}, true);
511+
fRegistry.add("Hadron/hs", "hadron", kTHnSparseD, {axis_pt_trg, axis_eta_trg, axis_phi_trg}, false);
512+
fRegistry.add("Hadron/hTrackBit", "track bit", kTH1D, {{65536, -0.5, 65535.5}}, false);
513+
515514
fRegistry.add("Dilepton/same/uls/hs", "dilepton", kTHnSparseD, {axis_mass, axis_pt, axis_dca, axis_y}, true);
516515
fRegistry.addClone("Dilepton/same/uls/", "Dilepton/same/lspp/");
517516
fRegistry.addClone("Dilepton/same/uls/", "Dilepton/same/lsmm/");
@@ -1063,14 +1062,19 @@ struct DileptonHadronMPC {
10631062
Partition<FilteredMyElectrons> positive_electrons = o2::aod::emprimaryelectron::sign > int8_t(0);
10641063
Partition<FilteredMyElectrons> negative_electrons = o2::aod::emprimaryelectron::sign < int8_t(0);
10651064

1066-
Preslice<MyTracks> perCollision_track = aod::emprimarytrack::emeventId;
1067-
10681065
Preslice<MyMuons> perCollision_muon = aod::emprimarymuon::emeventId;
10691066
Filter trackFilter_muon = o2::aod::fwdtrack::trackType == dimuoncuts.cfg_track_type && dimuoncuts.cfg_min_pt_track < o2::aod::fwdtrack::pt && o2::aod::fwdtrack::pt < dimuoncuts.cfg_max_pt_track && dimuoncuts.cfg_min_eta_track < o2::aod::fwdtrack::eta && o2::aod::fwdtrack::eta < dimuoncuts.cfg_max_eta_track && dimuoncuts.cfg_min_phi_track < o2::aod::fwdtrack::phi && o2::aod::fwdtrack::phi < dimuoncuts.cfg_max_phi_track;
10701067
Filter ttcaFilter_muon = ifnode(dimuoncuts.enableTTCA.node(), o2::aod::emprimarymuon::isAssociatedToMPC == true || o2::aod::emprimarymuon::isAssociatedToMPC == false, o2::aod::emprimarymuon::isAssociatedToMPC == true);
10711068
Partition<FilteredMyMuons> positive_muons = o2::aod::emprimarymuon::sign > int8_t(0);
10721069
Partition<FilteredMyMuons> negative_muons = o2::aod::emprimarymuon::sign < int8_t(0);
10731070

1071+
using RefTracks = soa::Join<aod::EMPrimaryTracks, aod::EMPrimaryTrackEMEventIds>;
1072+
using RefTrack = RefTracks::iterator;
1073+
Preslice<RefTracks> perCollision_track = aod::emprimarytrack::emeventId;
1074+
Filter refTrackFilter = trackcuts.cfg_min_pt_track < 1 / nabs(o2::aod::emprimarytrack::signed1Pt) && 1 / nabs(o2::aod::emprimarytrack::signed1Pt) < trackcuts.cfg_max_pt_track && trackcuts.cfg_min_eta_track < o2::aod::emprimarytrack::eta && o2::aod::emprimarytrack::eta < trackcuts.cfg_max_eta_track;
1075+
using FilteredRefTracks = soa::Filtered<RefTracks>;
1076+
using FilteredRefTrack = FilteredRefTracks::iterator;
1077+
10741078
TEMH* emh_pos = nullptr;
10751079
TEMH* emh_neg = nullptr;
10761080
MyEMH_track* emh_ref = nullptr; // for reference flow
@@ -1149,6 +1153,7 @@ struct DileptonHadronMPC {
11491153
for (const auto& track : refTracks_per_coll) {
11501154
if (fEMTrackCut.IsSelected(track)) {
11511155
fRegistry.fill(HIST("Hadron/hs"), track.pt(), track.eta(), track.phi());
1156+
fRegistry.fill(HIST("Hadron/hTrackBit"), track.trackBit());
11521157
}
11531158
}
11541159
for (const auto& [trg, ref] : combinations(CombinationsStrictlyUpperIndexPolicy(refTracks_per_coll, refTracks_per_coll))) {
@@ -1408,7 +1413,7 @@ struct DileptonHadronMPC {
14081413
passed_pairIds.shrink_to_fit();
14091414
}
14101415

1411-
void processAnalysis(FilteredMyCollisions const& collisions, MyTracks const& refTracks, Types const&... args)
1416+
void processAnalysis(FilteredMyCollisions const& collisions, FilteredRefTracks const& refTracks, Types const&... args)
14121417
{
14131418
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
14141419
auto electrons = std::get<0>(std::tie(args...));
@@ -1429,7 +1434,7 @@ struct DileptonHadronMPC {
14291434
PROCESS_SWITCH(DileptonHadronMPC, processAnalysis, "run dilepton analysis", true);
14301435

14311436
using FilteredMyCollisionsWithSWT = soa::Filtered<MyCollisionsWithSWT>;
1432-
void processTriggerAnalysis(FilteredMyCollisionsWithSWT const& collisions, MyTracks const& refTracks, Types const&... args)
1437+
void processTriggerAnalysis(FilteredMyCollisionsWithSWT const& collisions, FilteredRefTracks const& refTracks, Types const&... args)
14331438
{
14341439
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
14351440
auto electrons = std::get<0>(std::tie(args...));

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ struct DileptonMC {
9696

9797
Configurable<int> cfgEventGeneratorType{"cfgEventGeneratorType", -1, "if positive, select event generator type. i.e. gap or signal"};
9898
Configurable<int> cfgCentEstimator{"cfgCentEstimator", 2, "FT0M:0, FT0A:1, FT0C:2"};
99-
Configurable<float> cfgCentMin{"cfgCentMin", 0, "min. centrality"};
99+
Configurable<float> cfgCentMin{"cfgCentMin", -1, "min. centrality"};
100100
Configurable<float> cfgCentMax{"cfgCentMax", 999.f, "max. centrality"};
101101
// Configurable<int> cfgNtracksPV08Min{"cfgNtracksPV08Min", -1, "min. multNTracksPV"};
102102
// Configurable<int> cfgNtracksPV08Max{"cfgNtracksPV08Max", static_cast<int>(1e+9), "max. multNTracksPV"};

PWGEM/Dilepton/Core/PhotonHBT.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ struct PhotonHBT {
9999
Configurable<int> cfgEP2Estimator_for_Mix{"cfgEP2Estimator_for_Mix", 3, "FT0M:0, FT0A:1, FT0C:2, BTot:3, BPos:4, BNeg:5"};
100100
Configurable<int> cfgCentEstimator{"cfgCentEstimator", 2, "FT0M:0, FT0A:1, FT0C:2"};
101101
Configurable<int> cfgOccupancyEstimator{"cfgOccupancyEstimator", 0, "FT0C:0, Track:1"};
102-
Configurable<float> cfgCentMin{"cfgCentMin", 0, "min. centrality"};
102+
Configurable<float> cfgCentMin{"cfgCentMin", -1, "min. centrality"};
103103
Configurable<float> cfgCentMax{"cfgCentMax", 999, "max. centrality"};
104104
Configurable<float> maxY{"maxY", 0.8, "maximum rapidity for reconstructed particles"};
105105
Configurable<bool> cfgDoMix{"cfgDoMix", true, "flag for event mixing"};

PWGEM/Dilepton/Core/SingleTrackQC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ struct SingleTrackQC {
7575
Configurable<std::string> ccdburl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
7676

7777
Configurable<int> cfgCentEstimator{"cfgCentEstimator", 2, "FT0M:0, FT0A:1, FT0C:2"};
78-
Configurable<float> cfgCentMin{"cfgCentMin", 0, "min. centrality"};
78+
Configurable<float> cfgCentMin{"cfgCentMin", -1, "min. centrality"};
7979
Configurable<float> cfgCentMax{"cfgCentMax", 999.f, "max. centrality"};
8080
Configurable<std::string> cfg_swt_name{"cfg_swt_name", "fHighTrackMult", "desired software trigger name"}; // 1 trigger name per 1 task. fHighTrackMult, fHighFt0Mult
8181
// Configurable<int> cfgNtracksPV08Min{"cfgNtracksPV08Min", -1, "min. multNTracksPV"};

PWGEM/Dilepton/Core/SingleTrackQCMC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ struct SingleTrackQCMC {
8282

8383
Configurable<int> cfgEventGeneratorType{"cfgEventGeneratorType", -1, "if positive, select event generator type. i.e. gap or signal"};
8484
Configurable<int> cfgCentEstimator{"cfgCentEstimator", 2, "FT0M:0, FT0A:1, FT0C:2"};
85-
Configurable<float> cfgCentMin{"cfgCentMin", 0, "min. centrality"};
85+
Configurable<float> cfgCentMin{"cfgCentMin", -1, "min. centrality"};
8686
Configurable<float> cfgCentMax{"cfgCentMax", 999.f, "max. centrality"};
8787
// Configurable<int> cfgNtracksPV08Min{"cfgNtracksPV08Min", -1, "min. multNTracksPV"};
8888
// Configurable<int> cfgNtracksPV08Max{"cfgNtracksPV08Max", static_cast<int>(1e+9), "max. multNTracksPV"};

PWGEM/Dilepton/DataModel/dileptonTables.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -762,24 +762,32 @@ DECLARE_SOA_TABLE(EMGlobalMuonSelfIds, "AOD", "EMGLMUSELFID", emprimarymuon::Glo
762762
// iterators
763763
using EMGlobalMuonSelfId = EMGlobalMuonSelfIds::iterator;
764764

765+
namespace oldemprimarytrack
766+
{
767+
DECLARE_SOA_COLUMN(Sign, sign, int8_t);
768+
} // namespace oldemprimarytrack
769+
765770
namespace emprimarytrack
766771
{
767772
DECLARE_SOA_INDEX_COLUMN(EMEvent, emevent); //!
768773
DECLARE_SOA_COLUMN(CollisionId, collisionId, int); //!
769774
DECLARE_SOA_COLUMN(TrackId, trackId, int); //!
770-
DECLARE_SOA_COLUMN(Sign, sign, int8_t); //!
771775
DECLARE_SOA_COLUMN(TrackBit, trackBit, uint16_t); //!
776+
DECLARE_SOA_COLUMN(Signed1Pt, signed1Pt, float); //! (sign of charge)/Pt in c/GeV. Use pt() and sign() instead
777+
DECLARE_SOA_COLUMN(Eta, eta, float); //!
778+
DECLARE_SOA_COLUMN(Phi, phi, float); //!
772779
DECLARE_SOA_DYNAMIC_COLUMN(Pt, pt, [](float signed1Pt) -> float { return 1.f / std::fabs(signed1Pt); });
780+
DECLARE_SOA_DYNAMIC_COLUMN(Sign, sign, [](float signed1Pt) -> short { return (signed1Pt > 0) ? 1 : -1; }); //! Charge: positive: 1, negative: -1
773781
} // namespace emprimarytrack
774782

775783
DECLARE_SOA_TABLE_VERSIONED(EMPrimaryTracks_000, "AOD", "EMPRIMARYTRACK", 0, //! primary charged track table for 2PC
776-
o2::soa::Index<>, emprimarytrack::CollisionId, emprimarytrack::TrackId, emprimarytrack::Sign, track::Pt, track::Eta, track::Phi, emprimarytrack::TrackBit);
784+
o2::soa::Index<>, emprimarytrack::CollisionId, emprimarytrack::TrackId, oldemprimarytrack::Sign, track::Pt, track::Eta, track::Phi, emprimarytrack::TrackBit);
777785

778786
DECLARE_SOA_TABLE_VERSIONED(EMPrimaryTracks_001, "AOD", "EMPRIMARYTRACK", 1, //! primary charged track table for 2PC
779787
o2::soa::Index<>, emprimarytrack::CollisionId, emprimarytrack::TrackId,
780-
track::Signed1Pt, track::Eta, track::Phi, emprimarytrack::TrackBit,
788+
emprimarytrack::Signed1Pt, emprimarytrack::Eta, emprimarytrack::Phi, emprimarytrack::TrackBit,
781789
// dynamic column
782-
track::Sign<track::Signed1Pt>, emprimarytrack::Pt<track::Signed1Pt>);
790+
emprimarytrack::Sign<emprimarytrack::Signed1Pt>, emprimarytrack::Pt<emprimarytrack::Signed1Pt>);
783791

784792
using EMPrimaryTracks = EMPrimaryTracks_001;
785793
// iterators

PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,6 @@ using MyV0Photon = MyV0Photons::iterator;
7878
using MyPrimaryElectrons = soa::Filtered<soa::Join<aod::EMPrimaryElectronsFromDalitz, aod::EMPrimaryElectronEMEventIds, aod::EMPrimaryElectronsPrefilterBitDerived>>;
7979
using MyPrimaryElectron = MyPrimaryElectrons::iterator;
8080

81-
using MyTracks = soa::Join<aod::EMPrimaryTracks, aod::EMPrimaryTrackEMEventIds>;
82-
using MyTrack = MyTracks::iterator;
83-
8481
template <PairType pairtype, typename... Types>
8582
struct DiphotonHadronMPC {
8683

@@ -362,7 +359,8 @@ struct DiphotonHadronMPC {
362359
const AxisSpec axis_eta_hadron{40, -2, +2, "#eta_{h}"};
363360
const AxisSpec axis_phi_hadron{36, 0, 2 * M_PI, "#varphi_{h} (rad.)"};
364361

365-
fRegistry.add("Hadron/hs", "hadron", kTHnSparseD, {axis_pt_hadron, axis_eta_hadron, axis_phi_hadron}, true);
362+
fRegistry.add("Hadron/hs", "hadron", kTHnSparseD, {axis_pt_hadron, axis_eta_hadron, axis_phi_hadron}, false);
363+
fRegistry.add("Hadron/hTrackBit", "track bit", kTH1D, {{65536, -0.5, 65535.5}}, false);
366364

367365
fRegistry.add("Diphoton/same/hs", "diphoton", kTHnSparseD, {axis_mass, axis_pt}, true);
368366
fRegistry.addClone("Diphoton/same/", "Diphoton/mix/");
@@ -467,12 +465,18 @@ struct DiphotonHadronMPC {
467465

468466
SliceCache cache;
469467
Preslice<MyV0Photons> perCollision_pcm = aod::v0photonkf::emeventId;
470-
Preslice<MyTracks> perCollision_track = aod::emprimarytrack::emeventId;
471468

472469
Preslice<MyPrimaryElectrons> perCollision_electron = aod::emprimaryelectron::emeventId;
473470
Partition<MyPrimaryElectrons> positrons = o2::aod::emprimaryelectron::sign > int8_t(0) && static_cast<float>(dileptoncuts.cfg_min_pt_track) < o2::aod::track::pt&& nabs(o2::aod::track::eta) < static_cast<float>(dileptoncuts.cfg_max_eta_track) && static_cast<float>(dileptoncuts.cfg_min_TPCNsigmaEl) < o2::aod::pidtpc::tpcNSigmaEl&& o2::aod::pidtpc::tpcNSigmaEl < static_cast<float>(dileptoncuts.cfg_max_TPCNsigmaEl);
474471
Partition<MyPrimaryElectrons> electrons = o2::aod::emprimaryelectron::sign < int8_t(0) && static_cast<float>(dileptoncuts.cfg_min_pt_track) < o2::aod::track::pt && nabs(o2::aod::track::eta) < static_cast<float>(dileptoncuts.cfg_max_eta_track) && static_cast<float>(dileptoncuts.cfg_min_TPCNsigmaEl) < o2::aod::pidtpc::tpcNSigmaEl && o2::aod::pidtpc::tpcNSigmaEl < static_cast<float>(dileptoncuts.cfg_max_TPCNsigmaEl);
475472

473+
using RefTracks = soa::Join<aod::EMPrimaryTracks, aod::EMPrimaryTrackEMEventIds>;
474+
using RefTrack = RefTracks::iterator;
475+
Preslice<RefTracks> perCollision_track = aod::emprimarytrack::emeventId;
476+
Filter refTrackFilter = trackcuts.cfg_min_pt_track < 1 / nabs(o2::aod::emprimarytrack::signed1Pt) && 1 / nabs(o2::aod::emprimarytrack::signed1Pt) < trackcuts.cfg_max_pt_track && trackcuts.cfg_min_eta_track < o2::aod::emprimarytrack::eta && o2::aod::emprimarytrack::eta < trackcuts.cfg_max_eta_track;
477+
using FilteredRefTracks = soa::Filtered<RefTracks>;
478+
using FilteredRefTrack = FilteredRefTracks::iterator;
479+
476480
using MyEMH = o2::aod::pwgem::dilepton::utils::EventMixingHandler<std::tuple<int, int, int, int>, std::pair<int, int>, EMTrack>;
477481
MyEMH* emh1 = nullptr;
478482
MyEMH* emh2 = nullptr;
@@ -555,6 +559,7 @@ struct DiphotonHadronMPC {
555559
for (const auto& track : refTracks_per_collision) {
556560
if (fEMTrackCut.IsSelected(track)) {
557561
fRegistry.fill(HIST("Hadron/hs"), track.pt(), track.eta(), track.phi());
562+
fRegistry.fill(HIST("Hadron/hTrackBit"), track.trackBit());
558563
}
559564
}
560565

@@ -942,7 +947,7 @@ struct DiphotonHadronMPC {
942947
Filter prefilter_primaryelectron = ifnode(dileptoncuts.cfg_apply_cuts_from_prefilter_derived.node(), o2::aod::emprimaryelectron::pfbderived == static_cast<uint16_t>(0), true);
943948

944949
int ndf = 0;
945-
void processAnalysis(FilteredMyCollisions const& collisions, MyTracks const& refTracks, Types const&... args)
950+
void processAnalysis(FilteredMyCollisions const& collisions, FilteredRefTracks const& refTracks, Types const&... args)
946951
{
947952
// LOGF(info, "ndf = %d", ndf);
948953
if constexpr (pairtype == PairType::kPCMPCM) {
@@ -961,7 +966,7 @@ struct DiphotonHadronMPC {
961966
PROCESS_SWITCH(DiphotonHadronMPC, processAnalysis, "process pair analysis", true);
962967

963968
using FilteredMyCollisionsWithSWT = soa::Filtered<MyCollisionsWithSWT>;
964-
void processTriggerAnalysis(FilteredMyCollisionsWithSWT const& collisions, MyTracks const& refTracks, Types const&... args)
969+
void processTriggerAnalysis(FilteredMyCollisionsWithSWT const& collisions, FilteredRefTracks const& refTracks, Types const&... args)
965970
{
966971
// LOGF(info, "ndf = %d", ndf);
967972
if constexpr (pairtype == PairType::kPCMPCM) {

0 commit comments

Comments
 (0)