Skip to content

Commit 170ffb0

Browse files
diana0x0fDiana Krupova
andauthored
[PWGUD] Remove ROF and TF borders for global fwd tracks (#10168)
Co-authored-by: Diana Krupova <diana@Dianas-MacBook-Pro.local>
1 parent ce813eb commit 170ffb0

File tree

1 file changed

+54
-4
lines changed

1 file changed

+54
-4
lines changed

PWGUD/TableProducer/UPCCandidateProducer.cxx

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ struct UpcCandProducer {
124124
histRegistry.get<TH1>(HIST("hCountersTrg"))->GetXaxis()->SetBinLabel(1, "TCE");
125125
histRegistry.get<TH1>(HIST("hCountersTrg"))->GetXaxis()->SetBinLabel(2, "ZNA");
126126
histRegistry.get<TH1>(HIST("hCountersTrg"))->GetXaxis()->SetBinLabel(3, "ZNC");
127+
histRegistry.get<TH1>(HIST("hCountersTrg"))->GetXaxis()->SetBinLabel(4, "TCE_ROF");
128+
histRegistry.get<TH1>(HIST("hCountersTrg"))->GetXaxis()->SetBinLabel(5, "TCE_TF");
129+
histRegistry.get<TH1>(HIST("hCountersTrg"))->GetXaxis()->SetBinLabel(6, "TCE_ROF_TF");
127130

128131
const AxisSpec axisBcDist{201, 0.5, 200.5, ""};
129132
histRegistry.add("hDistToITSTPC", "", kTH1F, {axisBcDist});
@@ -691,6 +694,43 @@ struct UpcCandProducer {
691694
}
692695
}
693696

697+
template <typename TBCs>
698+
void collectForwardGlobalTracks(std::vector<BCTracksPair>& bcsMatchedTrIds,
699+
int typeFilter,
700+
TBCs const& /*bcs*/,
701+
o2::aod::Collisions const& /*collisions*/,
702+
ForwardTracks const& fwdTracks,
703+
o2::aod::AmbiguousFwdTracks const& /*ambFwdTracks*/,
704+
std::unordered_map<int64_t, uint64_t>& ambFwdTrBCs)
705+
{
706+
for (const auto& trk : fwdTracks) {
707+
if (trk.trackType() != typeFilter)
708+
continue;
709+
if (!applyFwdCuts(trk))
710+
continue;
711+
int64_t trkId = trk.globalIndex();
712+
int32_t nContrib = -1;
713+
uint64_t trackBC = 0;
714+
auto ambIter = ambFwdTrBCs.find(trkId);
715+
if (ambIter == ambFwdTrBCs.end()) {
716+
const auto& col = trk.collision();
717+
nContrib = col.numContrib();
718+
trackBC = col.bc_as<TBCs>().globalBC();
719+
if (!(col.bc_as<TBCs>().selection_bit(o2::aod::evsel::kNoTimeFrameBorder) &&
720+
col.bc_as<TBCs>().selection_bit(o2::aod::evsel::kNoITSROFrameBorder))) {
721+
continue; // skip this track if both selection bits are not set
722+
}
723+
} else {
724+
trackBC = ambIter->second;
725+
}
726+
int64_t tint = TMath::FloorNint(trk.trackTime() / o2::constants::lhc::LHCBunchSpacingNS + static_cast<float>(fMuonTrackTShift));
727+
uint64_t bc = trackBC + tint;
728+
if (nContrib > upcCuts.getMaxNContrib())
729+
continue;
730+
addTrack(bcsMatchedTrIds, bc, trkId);
731+
}
732+
}
733+
694734
int32_t searchTracks(uint64_t midbc, uint64_t range, uint32_t tracksToFind,
695735
std::vector<int64_t>& tracks,
696736
std::vector<BCTracksPair>& v,
@@ -1519,10 +1559,10 @@ struct UpcCandProducer {
15191559
bcs, collisions,
15201560
fwdTracks, ambFwdTracks, ambFwdTrBCs);
15211561

1522-
collectForwardTracks(bcsMatchedTrIdsGlobal,
1523-
o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack,
1524-
bcs, collisions,
1525-
fwdTracks, ambFwdTracks, ambFwdTrBCs);
1562+
collectForwardGlobalTracks(bcsMatchedTrIdsGlobal,
1563+
o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack,
1564+
bcs, collisions,
1565+
fwdTracks, ambFwdTracks, ambFwdTrBCs);
15261566

15271567
std::sort(bcsMatchedTrIdsMID.begin(), bcsMatchedTrIdsMID.end(),
15281568
[](const auto& left, const auto& right) { return left.first < right.first; });
@@ -1539,6 +1579,16 @@ struct UpcCandProducer {
15391579
continue;
15401580
if (TESTBIT(ft0.triggerMask(), o2::fit::Triggers::bitCen)) { // TVX & TCE
15411581
histRegistry.get<TH1>(HIST("hCountersTrg"))->Fill("TCE", 1);
1582+
if (ft0.bc_as<TBCs>().selection_bit(o2::aod::evsel::kNoITSROFrameBorder)) { // TVX & TCE without ROF borders
1583+
histRegistry.get<TH1>(HIST("hCountersTrg"))->Fill("TCE_ROF", 1);
1584+
}
1585+
if (ft0.bc_as<TBCs>().selection_bit(o2::aod::evsel::kNoTimeFrameBorder)) { // TVX & TCE without TF borders
1586+
histRegistry.get<TH1>(HIST("hCountersTrg"))->Fill("TCE_TF", 1);
1587+
}
1588+
if (ft0.bc_as<TBCs>().selection_bit(o2::aod::evsel::kNoITSROFrameBorder) &&
1589+
ft0.bc_as<TBCs>().selection_bit(o2::aod::evsel::kNoTimeFrameBorder)) { // TVX & TCE without ROF and TF borders
1590+
histRegistry.get<TH1>(HIST("hCountersTrg"))->Fill("TCE_ROF_TF", 1);
1591+
}
15421592
}
15431593
if (std::abs(ft0.timeA()) > 2.f)
15441594
continue;

0 commit comments

Comments
 (0)