@@ -52,7 +52,7 @@ struct UpcCandProducerGlobalMuon {
5252 Produces<o2::aod::UDFwdTracks> udFwdTracks;
5353 Produces<o2::aod::UDFwdTracksExtra> udFwdTracksExtra;
5454 Produces<o2::aod::UDFwdIndices> udFwdIndices;
55- Produces<o2::aod::UDFwdTracksCls> udFwdTrkClusters; // Added for MFT clusters
55+ Produces<o2::aod::UDFwdTracksCls> udFwdTrkClusters; // Added for MFT clusters
5656 Produces<o2::aod::UDCollisions> eventCandidates;
5757 Produces<o2::aod::UDCollisionsSelsFwd> eventCandidatesSelsFwd;
5858 Produces<o2::aod::UDZdcsReduced> udZdcsReduced;
@@ -64,7 +64,7 @@ struct UpcCandProducerGlobalMuon {
6464 Configurable<uint64_t> fBcWindowFITAmps{"fBcWindowFITAmps", 20, "BC range for T0A/V0A amplitudes array [-range, +(range-1)]"};
6565 Configurable<int> fBcWindowMCH{"fBcWindowMCH", 20, "Time window for MCH-MID to MCH-only matching for Muon candidates"};
6666 Configurable<float> fMaxFV0Amp{"fMaxFV0Amp", 100.f, "Max FV0 amplitude in the same BC"};
67-
67+
6868 // NEW: MFT/Global track support configurables
6969 Configurable<bool> fEnableMFT{"fEnableMFT", true, "Enable MFT/global track processing"};
7070 Configurable<float> fMinEtaMFT{"fMinEtaMFT", -3.6, "Minimum eta for MFT acceptance"};
@@ -97,7 +97,7 @@ struct UpcCandProducerGlobalMuon {
9797 histRegistry.get<TH1>(HIST("MuonsSelCounter"))->GetXaxis()->SetBinLabel(upchelpers::kFwdSelRabs + 1, "Rabs");
9898 histRegistry.get<TH1>(HIST("MuonsSelCounter"))->GetXaxis()->SetBinLabel(upchelpers::kFwdSelpDCA + 1, "pDCA");
9999 histRegistry.get<TH1>(HIST("MuonsSelCounter"))->GetXaxis()->SetBinLabel(upchelpers::kFwdSelChi2 + 1, "Chi2");
100-
100+
101101 // NEW: Add histograms for global track monitoring
102102 if (fEnableMFT) {
103103 const AxisSpec axisTrackType{5, -0.5, 4.5, "Track Type"};
@@ -106,7 +106,7 @@ struct UpcCandProducerGlobalMuon {
106106 histRegistry.get<TH1>(HIST("hTrackTypes"))->GetXaxis()->SetBinLabel(2, "MCHStandalone");
107107 histRegistry.get<TH1>(HIST("hTrackTypes"))->GetXaxis()->SetBinLabel(3, "GlobalMuon");
108108 histRegistry.get<TH1>(HIST("hTrackTypes"))->GetXaxis()->SetBinLabel(4, "GlobalFwd");
109-
109+
110110 const AxisSpec axisEta{100, -4.0, -2.0, "#eta"};
111111 histRegistry.add("hEtaMFT", "MFT track eta", kTH1F, {axisEta});
112112 histRegistry.add("hEtaGlobal", "Global track eta", kTH1F, {axisEta});
@@ -347,7 +347,7 @@ struct UpcCandProducerGlobalMuon {
347347 const auto& track = fwdTracks.iteratorAt(trackId);
348348 float px, py, pz;
349349 int sign;
350-
350+
351351 // NEW: Fill track type histogram if MFT enabled
352352 if (fEnableMFT) {
353353 histRegistry.fill(HIST("hTrackTypes"), track.trackType());
@@ -356,7 +356,7 @@ struct UpcCandProducerGlobalMuon {
356356 histRegistry.fill(HIST("hEtaGlobal"), track.eta());
357357 }
358358 }
359-
359+
360360 if (fUpcCuts.getUseFwdCuts()) {
361361 auto pft = propagateToZero(track);
362362 bool pass = cut(pft, track);
@@ -372,29 +372,29 @@ struct UpcCandProducerGlobalMuon {
372372 pz = track.pz();
373373 sign = track.sign();
374374 }
375-
375+
376376 udFwdTracks(candId, px, py, pz, sign, gbc, trackTime, track.trackTimeRes());
377-
377+
378378 // NEW: Enhanced extra info for global tracks
379379 float mchmftChi2 = -1.;
380380 if (track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack ||
381381 track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack) {
382382 mchmftChi2 = track.chi2MatchMCHMFT();
383383 }
384-
385- udFwdTracksExtra(track.trackType(), track.nClusters(), track.pDca(), track.rAtAbsorberEnd(),
386- track.chi2(), track.chi2MatchMCHMID(), mchmftChi2,
384+
385+ udFwdTracksExtra(track.trackType(), track.nClusters(), track.pDca(), track.rAtAbsorberEnd(),
386+ track.chi2(), track.chi2MatchMCHMID(), mchmftChi2,
387387 track.mchBitMap(), track.midBitMap(), track.midBoards());
388-
388+
389389 // NEW: Store MFT index for global tracks
390390 int64_t mftIndex = -1;
391391 if (fEnableMFT && (track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack ||
392392 track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack)) {
393393 mftIndex = track.matchMFTTrackId();
394394 }
395-
395+
396396 udFwdIndices(candId, trackId, track.matchMCHTrackId(), mftIndex);
397-
397+
398398 if (fDoMC) {
399399 const auto& label = mcFwdTrackLabels->iteratorAt(trackId);
400400 uint16_t mcMask = label.mcMask();
@@ -410,12 +410,12 @@ struct UpcCandProducerGlobalMuon {
410410 {
411411 if (!fSaveMFTClusters)
412412 return;
413-
413+
414414 std::map<int64_t, std::vector<int64_t>> clustersPerTrack;
415415 for (const auto& cls : fwdTrkCls) {
416416 clustersPerTrack[cls.fwdtrackId()].push_back(cls.globalIndex());
417417 }
418-
418+
419419 int newId = 0;
420420 for (auto trackId : trackIds) {
421421 auto it = clustersPerTrack.find(trackId);
@@ -445,10 +445,10 @@ struct UpcCandProducerGlobalMuon {
445445 o2::aod::Zdcs const& zdcs,
446446 const o2::aod::McFwdTrackLabels* mcFwdTrackLabels)
447447 {
448+ using o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack;
449+ using o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack;
448450 using o2::aod::fwdtrack::ForwardTrackTypeEnum::MCHStandaloneTrack;
449451 using o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack;
450- using o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack;
451- using o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack;
452452
453453 int32_t runNumber = bcs.iteratorAt(0).runNumber();
454454 if (fUpcCuts.getUseFwdCuts()) {
@@ -509,21 +509,21 @@ struct UpcCandProducerGlobalMuon {
509509 std::map<uint64_t, std::vector<int64_t>> mapGlobalBcsWithMCHMIDTrackIds;
510510 std::map<uint64_t, std::vector<int64_t>> mapGlobalBcsWithMCHTrackIds;
511511 std::map<uint64_t, std::vector<int64_t>> mapGlobalBcsWithGlobalTrackIds; // NEW: For global tracks
512-
512+
513513 for (const auto& fwdTrack : fwdTracks) {
514514 auto trackType = fwdTrack.trackType();
515-
515+
516516 // Skip if not a relevant track type
517- if (trackType != MCHStandaloneTrack &&
518- trackType != MuonStandaloneTrack &&
517+ if (trackType != MCHStandaloneTrack &&
518+ trackType != MuonStandaloneTrack &&
519519 trackType != GlobalMuonTrack &&
520520 trackType != GlobalForwardTrack)
521521 continue;
522-
522+
523523 auto trackId = fwdTrack.globalIndex();
524524 int64_t indexBC = vAmbFwdTrackIndex[trackId] < 0 ? vColIndexBCs[fwdTrack.collisionId()] : vAmbFwdTrackIndexBCs[vAmbFwdTrackIndex[trackId]];
525525 auto globalBC = vGlobalBCs[indexBC] + TMath::FloorNint(fwdTrack.trackTime() / o2::constants::lhc::LHCBunchSpacingNS + 1.);
526-
526+
527527 if (trackType == MuonStandaloneTrack) { // MCH-MID
528528 mapGlobalBcsWithMCHMIDTrackIds[globalBC].push_back(trackId);
529529 } else if (trackType == MCHStandaloneTrack) { // MCH-only
@@ -534,9 +534,9 @@ struct UpcCandProducerGlobalMuon {
534534 }
535535
536536 std::vector<int64_t> selTrackIds{}; // NEW: For cluster saving
537-
537+
538538 int32_t candId = 0;
539-
539+
540540 // NEW: Process global tracks if MFT is enabled
541541 if (fEnableMFT && !mapGlobalBcsWithGlobalTrackIds.empty()) {
542542 for (const auto& gbc_globalids : mapGlobalBcsWithGlobalTrackIds) {
@@ -551,15 +551,15 @@ struct UpcCandProducerGlobalMuon {
551551 if (fv0Amp > fMaxFV0Amp)
552552 continue;
553553 }
554-
554+
555555 uint16_t numContrib = 0;
556556 auto& vGlobalIds = gbc_globalids.second;
557-
557+
558558 // Check if we have global tracks (with MFT)
559559 std::vector<int64_t> tracksToSave;
560560 for (const auto& iglobal : vGlobalIds) {
561561 const auto& trk = fwdTracks.iteratorAt(iglobal);
562-
562+
563563 // Check MFT acceptance and decide which track to use
564564 if (isInMFTAcceptance(trk.eta())) {
565565 // Inside MFT acceptance - use global track
@@ -578,18 +578,18 @@ struct UpcCandProducerGlobalMuon {
578578 }
579579 }
580580 }
581-
581+
582582 // Write selected tracks
583583 for (const auto& trkId : tracksToSave) {
584584 if (!addToFwdTable(candId, trkId, globalBcGlobal, 0., fwdTracks, mcFwdTrackLabels))
585585 continue;
586586 numContrib++;
587587 selTrackIds.push_back(trkId);
588588 }
589-
589+
590590 if (numContrib < 1)
591591 continue;
592-
592+
593593 eventCandidates(globalBcGlobal, runNumber, 0., 0., 0., 0, numContrib, 0, 0);
594594 std::vector<float> amplitudesV0A{};
595595 std::vector<int8_t> relBCsV0A{};
@@ -613,7 +613,7 @@ struct UpcCandProducerGlobalMuon {
613613 candId++;
614614 }
615615 }
616-
616+
617617 // Process MCH-MID tracks (original logic)
618618 for (const auto& gbc_muids : mapGlobalBcsWithMCHMIDTrackIds) {
619619 uint64_t globalBcMid = gbc_muids.first;
@@ -684,7 +684,7 @@ struct UpcCandProducerGlobalMuon {
684684 mapGlobalBcsWithMCHMIDTrackIds.clear();
685685 mapGlobalBcsWithMCHTrackIds.clear();
686686 mapGlobalBcsWithGlobalTrackIds.clear(); // NEW
687- selTrackIds.clear(); // NEW
687+ selTrackIds.clear(); // NEW
688688 }
689689
690690 void processFwd(ForwardTracks const& fwdTracks,
0 commit comments