Skip to content

Commit d4e6743

Browse files
authored
[PWGEM/Dilepton] update muon analysis (#10698)
1 parent 1669f6b commit d4e6743

File tree

10 files changed

+110
-176
lines changed

10 files changed

+110
-176
lines changed

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@ using MyElectron = MyElectrons::iterator;
8080
using FilteredMyElectrons = soa::Filtered<MyElectrons>;
8181
using FilteredMyElectron = FilteredMyElectrons::iterator;
8282

83-
using MyMuons = soa::Join<aod::EMPrimaryMuons, aod::EMPrimaryMuonsCov, aod::EMPrimaryMuonEMEventIds, aod::EMAmbiguousMuonSelfIds>;
83+
using MyMuons = soa::Join<aod::EMPrimaryMuons, aod::EMPrimaryMuonEMEventIds, aod::EMAmbiguousMuonSelfIds>;
8484
using MyMuon = MyMuons::iterator;
8585
using FilteredMyMuons = soa::Filtered<MyMuons>;
8686
using FilteredMyMuon = FilteredMyMuons::iterator;
8787

8888
using MyEMH_electron = o2::aod::pwgem::dilepton::utils::EventMixingHandler<std::tuple<int, int, int, int>, std::pair<int, int>, EMTrackWithCov>;
89-
using MyEMH_muon = o2::aod::pwgem::dilepton::utils::EventMixingHandler<std::tuple<int, int, int, int>, std::pair<int, int>, EMFwdTrackWithCov>;
89+
using MyEMH_muon = o2::aod::pwgem::dilepton::utils::EventMixingHandler<std::tuple<int, int, int, int>, std::pair<int, int>, EMFwdTrack>;
9090

9191
template <o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType pairtype, typename TEMH, typename... Types>
9292
struct Dilepton {
@@ -260,7 +260,7 @@ struct Dilepton {
260260
Configurable<float> cfg_min_deta{"cfg_min_deta", 0.02, "min deta between 2 muons (elliptic cut)"};
261261
Configurable<float> cfg_min_dphi{"cfg_min_dphi", 0.02, "min dphi between 2 muons (elliptic cut)"};
262262

263-
Configurable<uint> cfg_track_type{"cfg_track_type", 3, "muon track type [0: MFT-MCH-MID, 3: MCH-MID]"};
263+
Configurable<uint8_t> cfg_track_type{"cfg_track_type", 3, "muon track type [0: MFT-MCH-MID, 3: MCH-MID]"};
264264
Configurable<float> cfg_min_pt_track{"cfg_min_pt_track", 0.2, "min pT for single track"};
265265
Configurable<float> cfg_max_pt_track{"cfg_max_pt_track", 1e+10, "max pT for single track"};
266266
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -4.0, "min eta for single track"};
@@ -418,8 +418,11 @@ struct Dilepton {
418418
// fwdfitter.setTGeoMat(false);
419419
}
420420

421-
fRegistry.addClone("Event/before/hCollisionCounter", "Event/norm/hCollisionCounter");
422421
fRegistry.add("Pair/mix/hDiffBC", "diff. global BC in mixed event;|BC_{current} - BC_{mixed}|", kTH1D, {{10001, -0.5, 10000.5}}, true);
422+
423+
if (doprocessNorm) {
424+
fRegistry.addClone("Event/before/hCollisionCounter", "Event/norm/hCollisionCounter");
425+
}
423426
if (doprocessTriggerAnalysis) {
424427
fRegistry.add("Event/hNInspectedTVX", "N inspected TVX;run number;N_{TVX}", kTProfile, {{80000, 520000.5, 600000.5}}, true);
425428
}
@@ -1071,27 +1074,23 @@ struct Dilepton {
10711074
used_trackIds.emplace_back(pair_tmp_id1);
10721075
if (cfgDoMix) {
10731076
if (t1.sign() > 0) {
1074-
emh_pos->AddTrackToEventPool(key_df_collision, EMFwdTrackWithCov(ndf, t1.globalIndex(), collision.globalIndex(), t1.fwdtrackId(), t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassMuon, t1.sign(), t1.fwdDcaX(), t1.fwdDcaY(), possibleIds1,
1075-
t1.x(), t1.y(), t1.z(), t1.tgl(), t1.cXX(), t1.cXY(), t1.cYY(),
1076-
t1.cPhiX(), t1.cPhiY(), t1.cPhiPhi(), t1.cTglX(), t1.cTglY(), t1.cTglPhi(), t1.cTglTgl(), t1.c1PtX(), t1.c1PtY(), t1.c1PtPhi(), t1.c1PtTgl(), t1.c1Pt21Pt2(), t1.chi2()));
1077+
emh_pos->AddTrackToEventPool(key_df_collision, EMFwdTrack(ndf, t1.globalIndex(), collision.globalIndex(), t1.fwdtrackId(), t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassMuon, t1.sign(), t1.fwdDcaX(), t1.fwdDcaY(), possibleIds1,
1078+
t1.cXXatDCA(), t1.cXYatDCA(), t1.cYYatDCA()));
10771079
} else {
1078-
emh_neg->AddTrackToEventPool(key_df_collision, EMFwdTrackWithCov(ndf, t1.globalIndex(), collision.globalIndex(), t1.fwdtrackId(), t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassMuon, t1.sign(), t1.fwdDcaX(), t1.fwdDcaY(), possibleIds1,
1079-
t1.x(), t1.y(), t1.z(), t1.tgl(), t1.cXX(), t1.cXY(), t1.cYY(),
1080-
t1.cPhiX(), t1.cPhiY(), t1.cPhiPhi(), t1.cTglX(), t1.cTglY(), t1.cTglPhi(), t1.cTglTgl(), t1.c1PtX(), t1.c1PtY(), t1.c1PtPhi(), t1.c1PtTgl(), t1.c1Pt21Pt2(), t1.chi2()));
1080+
emh_neg->AddTrackToEventPool(key_df_collision, EMFwdTrack(ndf, t1.globalIndex(), collision.globalIndex(), t1.fwdtrackId(), t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassMuon, t1.sign(), t1.fwdDcaX(), t1.fwdDcaY(), possibleIds1,
1081+
t1.cXXatDCA(), t1.cXYatDCA(), t1.cYYatDCA()));
10811082
}
10821083
}
10831084
}
10841085
if (std::find(used_trackIds.begin(), used_trackIds.end(), pair_tmp_id2) == used_trackIds.end()) {
10851086
used_trackIds.emplace_back(pair_tmp_id2);
10861087
if (cfgDoMix) {
10871088
if (t2.sign() > 0) {
1088-
emh_pos->AddTrackToEventPool(key_df_collision, EMFwdTrackWithCov(ndf, t2.globalIndex(), collision.globalIndex(), t2.fwdtrackId(), t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassMuon, t2.sign(), t2.fwdDcaX(), t2.fwdDcaY(), possibleIds2,
1089-
t2.x(), t2.y(), t2.z(), t2.tgl(), t2.cXX(), t2.cXY(), t2.cYY(),
1090-
t2.cPhiX(), t2.cPhiY(), t2.cPhiPhi(), t2.cTglX(), t2.cTglY(), t2.cTglPhi(), t2.cTglTgl(), t2.c1PtX(), t2.c1PtY(), t2.c1PtPhi(), t2.c1PtTgl(), t2.c1Pt21Pt2(), t2.chi2()));
1089+
emh_pos->AddTrackToEventPool(key_df_collision, EMFwdTrack(ndf, t2.globalIndex(), collision.globalIndex(), t2.fwdtrackId(), t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassMuon, t2.sign(), t2.fwdDcaX(), t2.fwdDcaY(), possibleIds2,
1090+
t2.cXXatDCA(), t2.cXYatDCA(), t2.cYYatDCA()));
10911091
} else {
1092-
emh_neg->AddTrackToEventPool(key_df_collision, EMFwdTrackWithCov(ndf, t2.globalIndex(), collision.globalIndex(), t2.fwdtrackId(), t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassMuon, t2.sign(), t2.fwdDcaX(), t2.fwdDcaY(), possibleIds2,
1093-
t2.x(), t2.y(), t2.z(), t2.tgl(), t2.cXX(), t2.cXY(), t2.cYY(),
1094-
t2.cPhiX(), t2.cPhiY(), t2.cPhiPhi(), t2.cTglX(), t2.cTglY(), t2.cTglPhi(), t2.cTglTgl(), t2.c1PtX(), t2.c1PtY(), t2.c1PtPhi(), t2.c1PtTgl(), t2.c1Pt21Pt2(), t2.chi2()));
1092+
emh_neg->AddTrackToEventPool(key_df_collision, EMFwdTrack(ndf, t2.globalIndex(), collision.globalIndex(), t2.fwdtrackId(), t2.pt(), t2.eta(), t2.phi(), o2::constants::physics::MassMuon, t2.sign(), t2.fwdDcaX(), t2.fwdDcaY(), possibleIds2,
1093+
t2.cXXatDCA(), t2.cXYatDCA(), t2.cYYatDCA()));
10951094
}
10961095
}
10971096
}
@@ -1129,7 +1128,7 @@ struct Dilepton {
11291128
Partition<FilteredMyElectrons> negative_electrons = o2::aod::emprimaryelectron::sign < int8_t(0);
11301129

11311130
Preslice<MyMuons> perCollision_muon = aod::emprimarymuon::emeventId;
1132-
Filter trackFilter_muon = o2::aod::fwdtrack::trackType == static_cast<uint8_t>(dimuoncuts.cfg_track_type) && dimuoncuts.cfg_min_pt_track < o2::aod::fwdtrack::pt && 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;
1131+
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;
11331132
Filter ttcaFilter_muon = ifnode(dimuoncuts.enableTTCA.node(), o2::aod::emprimarymuon::isAssociatedToMPC == true || o2::aod::emprimarymuon::isAssociatedToMPC == false, o2::aod::emprimarymuon::isAssociatedToMPC == true);
11341133
Partition<FilteredMyMuons> positive_muons = o2::aod::emprimarymuon::sign > int8_t(0);
11351134
Partition<FilteredMyMuons> negative_muons = o2::aod::emprimarymuon::sign < int8_t(0);

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ using MyMCElectron = MyMCElectrons::iterator;
7373
using FilteredMyMCElectrons = soa::Filtered<MyMCElectrons>;
7474
using FilteredMyMCElectron = FilteredMyMCElectrons::iterator;
7575

76-
using MyMCMuons = soa::Join<aod::EMPrimaryMuons, aod::EMPrimaryMuonsCov, aod::EMPrimaryMuonEMEventIds, aod::EMAmbiguousMuonSelfIds, aod::EMPrimaryMuonMCLabels>;
76+
using MyMCMuons = soa::Join<aod::EMPrimaryMuons, aod::EMPrimaryMuonEMEventIds, aod::EMAmbiguousMuonSelfIds, aod::EMPrimaryMuonMCLabels>;
7777
using MyMCMuon = MyMCMuons::iterator;
7878
using FilteredMyMCMuons = soa::Filtered<MyMCMuons>;
7979
using FilteredMyMCMuon = FilteredMyMCMuons::iterator;
@@ -252,7 +252,7 @@ struct DileptonMC {
252252
Configurable<float> cfg_min_deta{"cfg_min_deta", 0.02, "min deta between 2 muons (elliptic cut)"};
253253
Configurable<float> cfg_min_dphi{"cfg_min_dphi", 0.02, "min dphi between 2 muons (elliptic cut)"};
254254

255-
Configurable<uint> cfg_track_type{"cfg_track_type", 3, "muon track type [0: MFT-MCH-MID, 3: MCH-MID]"};
255+
Configurable<uint8_t> cfg_track_type{"cfg_track_type", 3, "muon track type [0: MFT-MCH-MID, 3: MCH-MID]"};
256256
Configurable<float> cfg_min_pt_track{"cfg_min_pt_track", 0.2, "min pT for single track"};
257257
Configurable<float> cfg_max_pt_track{"cfg_max_pt_track", 1e+10, "max pT for single track"};
258258
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -4.0, "min eta for single track"};
@@ -528,7 +528,9 @@ struct DileptonMC {
528528
// fwdfitter.setUseAbsDCA(true);
529529
// fwdfitter.setTGeoMat(false);
530530
}
531-
fRegistry.addClone("Event/before/hCollisionCounter", "Event/norm/hCollisionCounter");
531+
if (doprocessNorm) {
532+
fRegistry.addClone("Event/before/hCollisionCounter", "Event/norm/hCollisionCounter");
533+
}
532534
}
533535

534536
template <typename TCollision>
@@ -808,7 +810,7 @@ struct DileptonMC {
808810
return false;
809811
}
810812
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
811-
if (!cut.template IsSelectedTrack(t1) || !cut.template IsSelectedTrack(t2)) {
813+
if (!cut.template IsSelectedTrack<false>(t1) || !cut.template IsSelectedTrack<false>(t2)) {
812814
return false;
813815
}
814816
if (!cut.template IsSelectedPair(t1, t2)) {
@@ -1199,7 +1201,7 @@ struct DileptonMC {
11991201
o2::aod::emprimaryelectron::pfb >= static_cast<uint8_t>(0));
12001202

12011203
Preslice<MyMCMuons> perCollision_muon = aod::emprimarymuon::emeventId;
1202-
Filter trackFilter_muon = o2::aod::fwdtrack::trackType == static_cast<uint8_t>(dimuoncuts.cfg_track_type) && dimuoncuts.cfg_min_phi_track < o2::aod::fwdtrack::phi && o2::aod::fwdtrack::phi < dimuoncuts.cfg_max_phi_track;
1204+
Filter trackFilter_muon = o2::aod::fwdtrack::trackType == dimuoncuts.cfg_track_type && dimuoncuts.cfg_min_phi_track < o2::aod::fwdtrack::phi && o2::aod::fwdtrack::phi < dimuoncuts.cfg_max_phi_track;
12031205
Filter ttcaFilter_muon = ifnode(dimuoncuts.enableTTCA.node(), o2::aod::emprimarymuon::isAssociatedToMPC == true || o2::aod::emprimarymuon::isAssociatedToMPC == false, o2::aod::emprimarymuon::isAssociatedToMPC == true);
12041206

12051207
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);

PWGEM/Dilepton/Core/DimuonCut.h

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -158,42 +158,42 @@ class DimuonCut : public TNamed
158158
return true;
159159
}
160160

161-
template <typename TTrack>
162-
bool IsSelectedTrackWoPtEta(TTrack const& track) const
163-
{
164-
if (!IsSelectedTrack(track, DimuonCuts::kTrackType)) {
165-
return false;
166-
}
167-
if (!IsSelectedTrack(track, DimuonCuts::kTrackPhiRange)) {
168-
return false;
169-
}
170-
if (!IsSelectedTrack(track, DimuonCuts::kDCAxy)) {
171-
return false;
172-
}
173-
if (track.trackType() == static_cast<uint8_t>(o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) && !IsSelectedTrack(track, DimuonCuts::kMFTNCls)) {
174-
return false;
175-
}
176-
if (!IsSelectedTrack(track, DimuonCuts::kMCHMIDNCls)) {
177-
return false;
178-
}
179-
if (!IsSelectedTrack(track, DimuonCuts::kChi2)) {
180-
return false;
181-
}
182-
if (track.trackType() == static_cast<uint8_t>(o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) && !IsSelectedTrack(track, DimuonCuts::kMatchingChi2MCHMFT)) {
183-
return false;
184-
}
185-
if (!IsSelectedTrack(track, DimuonCuts::kMatchingChi2MCHMID)) {
186-
return false;
187-
}
188-
if (!IsSelectedTrack(track, DimuonCuts::kPDCA)) {
189-
return false;
190-
}
191-
if (!IsSelectedTrack(track, DimuonCuts::kRabs)) {
192-
return false;
193-
}
194-
195-
return true;
196-
}
161+
// template <typename TTrack>
162+
// bool IsSelectedTrackWoPtEta(TTrack const& track) const
163+
// {
164+
// if (!IsSelectedTrack(track, DimuonCuts::kTrackType)) {
165+
// return false;
166+
// }
167+
// if (!IsSelectedTrack(track, DimuonCuts::kTrackPhiRange)) {
168+
// return false;
169+
// }
170+
// if (!IsSelectedTrack(track, DimuonCuts::kDCAxy)) {
171+
// return false;
172+
// }
173+
// if (track.trackType() == static_cast<uint8_t>(o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) && !IsSelectedTrack(track, DimuonCuts::kMFTNCls)) {
174+
// return false;
175+
// }
176+
// if (!IsSelectedTrack(track, DimuonCuts::kMCHMIDNCls)) {
177+
// return false;
178+
// }
179+
// if (!IsSelectedTrack(track, DimuonCuts::kChi2)) {
180+
// return false;
181+
// }
182+
// if (track.trackType() == static_cast<uint8_t>(o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) && !IsSelectedTrack(track, DimuonCuts::kMatchingChi2MCHMFT)) {
183+
// return false;
184+
// }
185+
// if (!IsSelectedTrack(track, DimuonCuts::kMatchingChi2MCHMID)) {
186+
// return false;
187+
// }
188+
// if (!IsSelectedTrack(track, DimuonCuts::kPDCA)) {
189+
// return false;
190+
// }
191+
// if (!IsSelectedTrack(track, DimuonCuts::kRabs)) {
192+
// return false;
193+
// }
194+
//
195+
// return true;
196+
// }
197197

198198
template <typename T>
199199
bool IsSelectedTrack(T const& track, const DimuonCuts& cut) const

0 commit comments

Comments
 (0)