Skip to content

Commit 53761b4

Browse files
committed
Update multicharm table producer with lutConfigId at collision level
1 parent e12caba commit 53761b4

File tree

1 file changed

+18
-41
lines changed

1 file changed

+18
-41
lines changed

ALICE3/TableProducer/alice3MulticharmFinder.cxx

Lines changed: 18 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ using namespace o2::framework::expressions;
6868
#define BIT_CHECK(var, nbit) ((var) & (static_cast<uint32_t>(1) << (nbit)))
6969
#define GET_HIST(type, name) std::get<std::shared_ptr<type>>(histPointers[name])
7070

71-
using Alice3Tracks = soa::Join<aod::Tracks, aod::TracksCov, aod::Alice3DecayMaps, aod::McTrackLabels, aod::TracksDCA, aod::TracksExtraA3, aod::UpgradeTofs, aod::UpgradeTofExpectedTimes, aod::UpgradeRichs, aod::UpgradeRichSignals, aod::OTFLUTConfigId>;
71+
using Alice3Tracks = soa::Join<aod::Tracks, aod::TracksCov, aod::Alice3DecayMaps, aod::McTrackLabels, aod::TracksDCA, aod::TracksExtraA3, aod::UpgradeTofs, aod::UpgradeTofExpectedTimes, aod::UpgradeRichs, aod::UpgradeRichSignals>;
72+
using Alice3Collision = soa::Join<aod::Collisions, aod::OTFLUTConfigId>;
7273

7374
struct Alice3MulticharmFinder {
7475
SliceCache cache;
@@ -388,12 +389,6 @@ struct Alice3MulticharmFinder {
388389
return returnValue;
389390
}
390391

391-
template <typename TTrackType>
392-
bool checkSameLUTConf(TTrackType const& track1, const int track2)
393-
{
394-
return track1.lutConfigId() == track2;
395-
}
396-
397392
void init(InitContext&)
398393
{
399394
// initialize O2 2-prong fitter (only once)
@@ -489,7 +484,7 @@ struct Alice3MulticharmFinder {
489484
}
490485
}
491486

492-
void initConf(const int icfg)
487+
void initDetectorConfiguration(const int icfg)
493488
{
494489
if (std::find(savedConfigs.begin(), savedConfigs.end(), icfg) != savedConfigs.end()) {
495490
return;
@@ -498,7 +493,7 @@ struct Alice3MulticharmFinder {
498493
savedConfigs.push_back(icfg);
499494

500495
// do more plots
501-
std::string histPath = "Configuration_" + std::to_string(icfg) + "/";
496+
const std::string histPath = "Configuration_" + std::to_string(icfg) + "/";
502497
histPointers.insert({histPath + "hMassXiCC", histos.add((histPath + "hMassXiCC").c_str(), "hMassXiCC", {kTH1D, {{axisXiCCMass}}})});
503498
histPointers.insert({histPath + "hNCollisions", histos.add((histPath + "hNCollisions").c_str(), "hNCollisions", {kTH1D, {{2, 0.5, 2.5}}})});
504499
histPointers.insert({histPath + "hNTracks", histos.add((histPath + "hNTracks").c_str(), "hNTracks", {kTH1D, {{20000, 0, 20000}}})});
@@ -519,19 +514,26 @@ struct Alice3MulticharmFinder {
519514
}
520515

521516
//*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*+-+*
522-
void processFindXiCC(aod::Collision const& collision, Alice3Tracks const& tracks, aod::McParticles const&, aod::UpgradeCascades const& cascades)
517+
void processFindXiCC(Alice3Collision::iterator const& collision, Alice3Tracks const& tracks, aod::McParticles const&, aod::UpgradeCascades const& cascades)
523518
{
519+
const std::string histPath = "Configuration_" + std::to_string(collision.lutConfigId()) + "/";
520+
initDetectorConfiguration(collision.lutConfigId());
521+
522+
GET_HIST(TH1, histPath + "hNCollisions")->Fill(1);
523+
GET_HIST(TH1, histPath + "hNTracks")->Fill(tracks.size());
524+
std::cout << tracks.size() << std::endl;
525+
if (tracks.size() < minNTracks.value[collision.lutConfigId()]) {
526+
return;
527+
}
528+
GET_HIST(TH1, histPath + "hNCollisions")->Fill(2);
529+
524530
// group with this collision
525531
// n.b. cascades do not need to be grouped, being used directly in iterator-grouping
526532
auto picTracksGrouped = picTracks->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache);
527533
auto piccTracksGrouped = piccTracks->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache);
528534

529-
static constexpr int MaxLUTConfigs = 20;
530-
std::vector<int> nTracks(MaxLUTConfigs);
531-
for (auto const& track : tracks) {
532-
int lutConfigId = track.lutConfigId();
533-
nTracks[lutConfigId]++;
534535

536+
for (auto const& track : tracks) {
535537
if (BIT_CHECK(track.decayMap(), kTruePiFromXiC)) {
536538
histos.fill(HIST("h2dDCAxyVsPtPiFromXiC"), track.pt(), track.dcaXY() * 1e+4);
537539
}
@@ -542,19 +544,6 @@ struct Alice3MulticharmFinder {
542544

543545
for (auto const& xiCand : cascades) {
544546
auto xi = xiCand.cascadeTrack_as<Alice3Tracks>(); // de-reference cascade track
545-
int lutConfigId = xi.lutConfigId();
546-
initConf(lutConfigId);
547-
if (minNTracks.value.size() < static_cast<size_t>(lutConfigId)) {
548-
if (nTracks[lutConfigId] < minNTracks.value.front()) {
549-
continue; // fallback to first
550-
}
551-
} else {
552-
if (nTracks[lutConfigId] < minNTracks.value[lutConfigId]) {
553-
continue;
554-
}
555-
}
556-
557-
std::string histPath = "Configuration_" + std::to_string(lutConfigId) + "/";
558547
histos.fill(HIST("hMassXi"), xiCand.mXi());
559548
histos.fill(HIST("h2dDCAxyVsPtXiFromXiC"), xi.pt(), xi.dcaXY() * 1e+4);
560549
if (std::fabs(xiCand.mXi() - o2::constants::physics::MassXiMinus) > xiMassWindow) {
@@ -583,10 +572,6 @@ struct Alice3MulticharmFinder {
583572

584573
histos.fill(HIST("hMinXiDecayRadius"), xiCand.cascRadius());
585574
for (auto const& pi1c : picTracksGrouped) {
586-
if (!checkSameLUTConf(pi1c, lutConfigId)) {
587-
continue;
588-
}
589-
590575
if (mcSameMotherCheck && !checkSameMother(xi, pi1c)) {
591576
continue;
592577
}
@@ -609,10 +594,6 @@ struct Alice3MulticharmFinder {
609594
histos.fill(HIST("hInnerTOFTrackTimeRecoPi1c"), pi1cTOFDiffInner);
610595
// second pion from XiC decay for starts here
611596
for (auto const& pi2c : picTracksGrouped) {
612-
if (!checkSameLUTConf(pi2c, lutConfigId)) {
613-
continue;
614-
}
615-
616597
if (mcSameMotherCheck && !checkSameMother(xi, pi2c)) {
617598
continue; // keep only if same mother
618599
}
@@ -691,10 +672,6 @@ struct Alice3MulticharmFinder {
691672
// attempt XiCC finding
692673
uint32_t nCombinationsCC = 0;
693674
for (auto const& picc : piccTracksGrouped) {
694-
if (!checkSameLUTConf(picc, lutConfigId)) {
695-
continue;
696-
}
697-
698675
if (mcSameMotherCheck && !checkSameMotherExtra(xi, picc)) {
699676
continue;
700677
}
@@ -823,7 +800,7 @@ struct Alice3MulticharmFinder {
823800
xicDecayDistanceFromPV,
824801
xiccProperLength,
825802
pi1c.pt(), pi2c.pt(), picc.pt(),
826-
lutConfigId);
803+
collision.lutConfigId());
827804

828805
multiCharmPID(
829806
pi1cTOFDiffInner, pi1c.nSigmaPionInnerTOF(),

0 commit comments

Comments
 (0)