Skip to content

Commit a94ac79

Browse files
authored
PWGEM/PhotonMeson: update event mixing (#6435)
1 parent a935c16 commit a94ac79

4 files changed

Lines changed: 52 additions & 22 deletions

File tree

PWGEM/PhotonMeson/Tasks/dalitzEEQC.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,9 @@ struct DalitzEEQC {
285285
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron);
286286
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron);
287287
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
288+
if (abs(v12.Rapidity()) > maxY) {
289+
return false;
290+
}
288291
float phiv = getPhivPair(t1.px(), t1.py(), t1.pz(), t2.px(), t2.py(), t2.pz(), t1.sign(), t2.sign(), collision.bz());
289292

290293
if (t1.sign() * t2.sign() < 0) { // ULS

PWGEM/PhotonMeson/Tasks/dalitzEEQCMC.cxx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,9 @@ struct DalitzEEQCMC {
332332
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron);
333333
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron);
334334
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
335+
if (abs(v12.Rapidity()) > maxY) {
336+
return false;
337+
}
335338
float dca_t1_3d = t1.dca3DinSigma();
336339
float dca_t2_3d = t2.dca3DinSigma();
337340
float dca_ee_3d = std::sqrt((dca_t1_3d * dca_t1_3d + dca_t2_3d * dca_t2_3d) / 2.);
@@ -532,6 +535,10 @@ struct DalitzEEQCMC {
532535
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron);
533536
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
534537

538+
if (abs(v12.Rapidity()) > maxY) {
539+
continue;
540+
}
541+
535542
if (mother_id > -1) {
536543
auto mcmother = mcparticles.iteratorAt(mother_id);
537544
if (mcmother.isPhysicalPrimary() || mcmother.producedByGenerator()) {

PWGEM/PhotonMeson/Tasks/dielectronQC.cxx

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ struct dielectronQC {
7777
struct : ConfigurableGroup {
7878
std::string prefix = "dileptoncut_group";
7979
Configurable<float> cfg_min_mass{"cfg_min_mass", 0.0, "min mass"};
80-
Configurable<float> cfg_max_mass{"cfg_max_mass", 0.5, "max mass"};
80+
Configurable<float> cfg_max_mass{"cfg_max_mass", 1e+10, "max mass"};
8181
Configurable<float> cfg_min_pair_dca3d{"cfg_min_pair_dca3d", 0.0, "min pair dca3d in sigma"};
8282
Configurable<float> cfg_max_pair_dca3d{"cfg_max_pair_dca3d", 1e+10, "max pair dca3d in sigma"};
8383
Configurable<bool> cfg_apply_phiv{"cfg_apply_phiv", true, "flag to apply phiv cut"};
@@ -142,8 +142,8 @@ struct dielectronQC {
142142
ep_bin_edges = std::vector<float>(ConfEPBins.value.begin(), ConfEPBins.value.end());
143143
ep_bin_edges.erase(ep_bin_edges.begin());
144144

145-
emh_pos = new o2::aod::pwgem::photonmeson::utils::EventMixingHandler<std::tuple<int, int, int>, std::pair<int, int64_t>, EMTrack>(ndepth);
146-
emh_ele = new o2::aod::pwgem::photonmeson::utils::EventMixingHandler<std::tuple<int, int, int>, std::pair<int, int64_t>, EMTrack>(ndepth);
145+
emh_pos = new o2::aod::pwgem::photonmeson::utils::EventMixingHandler<std::tuple<int, int, int>, std::pair<int, int>, EMTrack>(ndepth);
146+
emh_ele = new o2::aod::pwgem::photonmeson::utils::EventMixingHandler<std::tuple<int, int, int>, std::pair<int, int>, EMTrack>(ndepth);
147147

148148
DefineEMEventCut();
149149
DefineDileptonCut();
@@ -317,7 +317,8 @@ struct dielectronQC {
317317
template <int ev_id, typename TCollision, typename TTrack1, typename TTrack2>
318318
bool fillPairInfo(TCollision const& collision, TTrack1 const& t1, TTrack2 const& t2)
319319
{
320-
if (t1.trackId() == t2.trackId()) { // this is protection against pairing identical 2 tracks. This happens, when TTCA is used. TTCA can assign a track to several possible collisions.
320+
if (t1.trackId() == t2.trackId()) { // this is protection against pairing 2 identical tracks. This happens, when TTCA is used. TTCA can assign a track to several possible collisions.
321+
// LOGF(info, "event id = %d , same track is found. t1.trackId() = %d, t1.collisionId() = %d, t1.pt() = %f, t1.eta() = %f, t1.phi() = %f, t2.trackId() = %d, t2.collisionId() = %d, t2.pt() = %f, t2.eta() = %f, t2.phi() = %f", ev_id, t1.trackId(), t1.collisionId(), t1.pt(), t1.eta(), t1.phi(), t2.trackId(), t2.collisionId(), t2.pt(), t2.eta(), t2.phi());
321322
return false;
322323
}
323324

@@ -341,6 +342,10 @@ struct dielectronQC {
341342
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron);
342343
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
343344

345+
if (abs(v12.Rapidity()) > maxY) {
346+
return false;
347+
}
348+
344349
float dca_t1_3d = t1.dca3DinSigma();
345350
float dca_t2_3d = t2.dca3DinSigma();
346351
float dca_ee_3d = std::sqrt((dca_t1_3d * dca_t1_3d + dca_t2_3d * dca_t2_3d) / 2.);
@@ -383,34 +388,34 @@ struct dielectronQC {
383388
epbin = static_cast<int>(ep_bin_edges.size()) - 2;
384389
}
385390

386-
std::pair<int, int64_t> key_df_collision = std::make_pair(ndf, collision.globalIndex());
391+
std::pair<int, int> key_df_collision = std::make_pair(ndf, collision.globalIndex());
387392

388-
std::tuple<int, int, int> tuple_tmp_id1 = std::make_tuple(ndf, collision.globalIndex(), t1.trackId());
389-
std::tuple<int, int, int> tuple_tmp_id2 = std::make_tuple(ndf, collision.globalIndex(), t2.trackId());
393+
std::pair<int, int> pair_tmp_id1 = std::make_pair(ndf, t1.globalIndex());
394+
std::pair<int, int> pair_tmp_id2 = std::make_pair(ndf, t2.globalIndex());
390395

391396
if (t1.sign() > 0) {
392-
if (std::find(used_trackIds.begin(), used_trackIds.end(), tuple_tmp_id1) == used_trackIds.end()) {
397+
if (std::find(used_trackIds.begin(), used_trackIds.end(), pair_tmp_id1) == used_trackIds.end()) {
393398
emh_pos->AddTrackToEventPool(key_df_collision, EMTrack(collision.globalIndex(), t1.trackId(), t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron, t1.sign(), t1.dca3DinSigma()));
394-
used_trackIds.emplace_back(tuple_tmp_id1);
399+
used_trackIds.emplace_back(pair_tmp_id1);
395400
fillTrackInfo(t1);
396401
}
397402
} else {
398-
if (std::find(used_trackIds.begin(), used_trackIds.end(), tuple_tmp_id1) == used_trackIds.end()) {
403+
if (std::find(used_trackIds.begin(), used_trackIds.end(), pair_tmp_id1) == used_trackIds.end()) {
399404
emh_ele->AddTrackToEventPool(key_df_collision, EMTrack(collision.globalIndex(), t1.trackId(), t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron, t1.sign(), t1.dca3DinSigma()));
400-
used_trackIds.emplace_back(tuple_tmp_id1);
405+
used_trackIds.emplace_back(pair_tmp_id1);
401406
fillTrackInfo(t1);
402407
}
403408
}
404409
if (t2.sign() > 0) {
405-
if (std::find(used_trackIds.begin(), used_trackIds.end(), tuple_tmp_id2) == used_trackIds.end()) {
410+
if (std::find(used_trackIds.begin(), used_trackIds.end(), pair_tmp_id2) == used_trackIds.end()) {
406411
emh_pos->AddTrackToEventPool(key_df_collision, EMTrack(collision.globalIndex(), t2.trackId(), t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron, t2.sign(), t2.dca3DinSigma()));
407-
used_trackIds.emplace_back(tuple_tmp_id2);
412+
used_trackIds.emplace_back(pair_tmp_id2);
408413
fillTrackInfo(t2);
409414
}
410415
} else {
411-
if (std::find(used_trackIds.begin(), used_trackIds.end(), tuple_tmp_id2) == used_trackIds.end()) {
416+
if (std::find(used_trackIds.begin(), used_trackIds.end(), pair_tmp_id2) == used_trackIds.end()) {
412417
emh_ele->AddTrackToEventPool(key_df_collision, EMTrack(collision.globalIndex(), t2.trackId(), t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron, t2.sign(), t2.dca3DinSigma()));
413-
used_trackIds.emplace_back(tuple_tmp_id2);
418+
used_trackIds.emplace_back(pair_tmp_id2);
414419
fillTrackInfo(t2);
415420
}
416421
}
@@ -451,8 +456,8 @@ struct dielectronQC {
451456
fRegistry.fill(HIST("Track/hTOFNsigmaPr"), track.tpcInnerParam(), track.tofNSigmaPr());
452457
}
453458

454-
o2::aod::pwgem::photonmeson::utils::EventMixingHandler<std::tuple<int, int, int>, std::pair<int, int64_t>, EMTrack>* emh_pos = nullptr;
455-
o2::aod::pwgem::photonmeson::utils::EventMixingHandler<std::tuple<int, int, int>, std::pair<int, int64_t>, EMTrack>* emh_ele = nullptr;
459+
o2::aod::pwgem::photonmeson::utils::EventMixingHandler<std::tuple<int, int, int>, std::pair<int, int>, EMTrack>* emh_pos = nullptr;
460+
o2::aod::pwgem::photonmeson::utils::EventMixingHandler<std::tuple<int, int, int>, std::pair<int, int>, EMTrack>* emh_ele = nullptr;
456461

457462
Filter collisionFilter_centrality = (cfgCentMin < o2::aod::cent::centFT0M && o2::aod::cent::centFT0M < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0A && o2::aod::cent::centFT0A < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0C && o2::aod::cent::centFT0C < cfgCentMax);
458463
using FilteredMyCollisions = soa::Filtered<MyCollisions>;
@@ -465,7 +470,7 @@ struct dielectronQC {
465470
Partition<FilteredMyTracks> posTracks = o2::aod::emprimaryelectron::sign > int8_t(0);
466471
Partition<FilteredMyTracks> negTracks = o2::aod::emprimaryelectron::sign < int8_t(0);
467472

468-
std::vector<std::tuple<int, int, int>> used_trackIds;
473+
std::vector<std::pair<int, int>> used_trackIds;
469474
int ndf = 0;
470475
void processQC(FilteredMyCollisions const& collisions, FilteredMyTracks const& tracks)
471476
{
@@ -485,7 +490,7 @@ struct dielectronQC {
485490

486491
auto posTracks_per_coll = posTracks->sliceByCached(o2::aod::emprimaryelectron::emeventId, collision.globalIndex(), cache);
487492
auto negTracks_per_coll = negTracks->sliceByCached(o2::aod::emprimaryelectron::emeventId, collision.globalIndex(), cache);
488-
// LOGF(info, "centrality = %f , posTracks_per_coll.size() = %d, negTracks_per_coll.size() = %d", centralities[cfgCentEstimator], posTracks_per_coll.size(), negTracks_per_coll.size());
493+
// LOGF(info, "collision.globalIndex() = %d , collision.posZ() = %f , collision.numContrib() = %d, centrality = %f , posTracks_per_coll.size() = %d, negTracks_per_coll.size() = %d", collision.globalIndex(), collision.posZ(), collision.numContrib(), centralities[cfgCentEstimator], posTracks_per_coll.size(), negTracks_per_coll.size());
489494

490495
int nuls = 0, nlspp = 0, nlsmm = 0;
491496
for (auto& [pos, ele] : combinations(CombinationsFullIndexPolicy(posTracks_per_coll, negTracks_per_coll))) { // ULS
@@ -536,18 +541,18 @@ struct dielectronQC {
536541
}
537542

538543
std::tuple<int, int, int> key_bin = std::make_tuple(zbin, centbin, epbin);
539-
std::pair<int, int64_t> key_df_collision = std::make_pair(ndf, collision.globalIndex());
544+
std::pair<int, int> key_df_collision = std::make_pair(ndf, collision.globalIndex());
540545

541546
// make a vector of selected photons in this collision.
542547
auto selected_posTracks_in_this_event = emh_pos->GetTracksPerCollision(key_df_collision);
543548
auto selected_negTracks_in_this_event = emh_ele->GetTracksPerCollision(key_df_collision);
544-
// LOGF(info, "N selected tracks in current event (%d, %d), npos = %d , nele = %d", ndf, collision.globalIndex(), selected_posTracks_in_this_event.size(), selected_negTracks_in_this_event.size());
549+
// LOGF(info, "N selected tracks in current event (%d, %d), zvtx = %f, centrality = %f , npos = %d , nele = %d, nuls = %d , nlspp = %d, nlsmm = %d", ndf, collision.globalIndex(), collision.posZ(), centralities[cfgCentEstimator], selected_posTracks_in_this_event.size(), selected_negTracks_in_this_event.size(), nuls, nlspp, nlsmm);
545550

546551
auto collisionIds_in_mixing_pool = emh_pos->GetCollisionIdsFromEventPool(key_bin); // pos/ele does not matter.
547552

548553
for (auto& mix_dfId_collisionId : collisionIds_in_mixing_pool) {
549554
int mix_dfId = mix_dfId_collisionId.first;
550-
int64_t mix_collisionId = mix_dfId_collisionId.second;
555+
int mix_collisionId = mix_dfId_collisionId.second;
551556

552557
if (collision.globalIndex() == mix_collisionId && ndf == mix_dfId) { // this never happens. only protection.
553558
continue;

PWGEM/PhotonMeson/Tasks/dielectronQCMC.cxx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,11 @@ struct dielectronQCMC {
382382
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron);
383383
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron);
384384
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
385+
386+
if (abs(v12.Rapidity()) > maxY) {
387+
return false;
388+
}
389+
385390
float dca_t1_3d = t1.dca3DinSigma();
386391
float dca_t2_3d = t2.dca3DinSigma();
387392
float dca_ee_3d = std::sqrt((dca_t1_3d * dca_t1_3d + dca_t2_3d * dca_t2_3d) / 2.);
@@ -697,6 +702,10 @@ struct dielectronQCMC {
697702
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron);
698703
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
699704

705+
if (abs(v12.Rapidity()) > maxY) {
706+
continue;
707+
}
708+
700709
if (mother_id > -1) {
701710
auto mcmother = mcparticles.iteratorAt(mother_id);
702711
if (mcmother.isPhysicalPrimary() || mcmother.producedByGenerator()) {
@@ -818,6 +827,9 @@ struct dielectronQCMC {
818827
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron);
819828
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron);
820829
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
830+
if (abs(v12.Rapidity()) > maxY) {
831+
continue;
832+
}
821833
if (hfee_type > -1) {
822834
auto mp1 = mcparticles.iteratorAt(t1.mothersIds()[0]);
823835
auto mp2 = mcparticles.iteratorAt(t2.mothersIds()[0]);
@@ -872,6 +884,9 @@ struct dielectronQCMC {
872884
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron);
873885
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassElectron);
874886
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
887+
if (abs(v12.Rapidity()) > maxY) {
888+
continue;
889+
}
875890
if (hfee_type > -1) {
876891
auto mp1 = mcparticles.iteratorAt(t1.mothersIds()[0]);
877892
auto mp2 = mcparticles.iteratorAt(t2.mothersIds()[0]);

0 commit comments

Comments
 (0)