Skip to content

Commit

Permalink
Fixed MCH track to match single MFT track (AliceO2Group#4037)
Browse files Browse the repository at this point in the history
* Add search window for matching

* Fixed bugs in filter

* Modify for formatting

* Fixed to select one mfttrack per fwdtrack

* Fixed MCH track to match single MFT track

* Modified white space
  • Loading branch information
motomioya authored Dec 1, 2023
1 parent 7d0f6a6 commit b4a9233
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions Common/TableProducer/mftmchMatchingML.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -203,13 +203,24 @@ struct mftmchMatchingML {

void process(aod::Collisions const& collisions, soa::Filtered<aod::FwdTracks> const& fwdtracks, aod::MFTTracks const& mfttracks)
{
for (auto& [fwdtrack, mfttrack] : combinations(CombinationsFullIndexPolicy(fwdtracks, mfttracks))) {

for (auto& fwdtrack : fwdtracks) {
if (fwdtrack.trackType() == aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
if (fwdtrack.has_collision() && mfttrack.has_collision()) {
if (0 <= fwdtrack.collisionId() - mfttrack.collisionId() && fwdtrack.collisionId() - mfttrack.collisionId() < cfgColWindow) {
double result = matchONNX(fwdtrack, mfttrack);
if (result > cfgThrScore) {
double bestscore = 0;
int bestmfttrackid = -1;
for (auto& mfttrack : mfttracks) {
if (fwdtrack.has_collision() && mfttrack.has_collision()) {
if (0 <= fwdtrack.collisionId() - mfttrack.collisionId() && fwdtrack.collisionId() - mfttrack.collisionId() < cfgColWindow) {
double result = matchONNX(fwdtrack, mfttrack);
if (result > cfgThrScore) {
bestscore = result;
bestmfttrackid = mfttrack.globalIndex();
}
}
}
}
if (bestmfttrackid != -1) {
for (auto& mfttrack : mfttracks) {
if (mfttrack.globalIndex() == bestmfttrackid) {
double mftchi2 = mfttrack.chi2();
SMatrix5 mftpars(mfttrack.x(), mfttrack.y(), mfttrack.phi(), mfttrack.tgl(), mfttrack.signed1Pt());
std::vector<double> mftv1;
Expand All @@ -222,7 +233,7 @@ struct mftmchMatchingML {
double px = fwdtrack.p() * sin(M_PI / 2 - atan(mfttrack.tgl())) * cos(mfttrack.phi());
double py = fwdtrack.p() * sin(M_PI / 2 - atan(mfttrack.tgl())) * sin(mfttrack.phi());
double pz = fwdtrack.p() * cos(M_PI / 2 - atan(mfttrack.tgl()));
fwdtrackml(fwdtrack.collisionId(), 0, mfttrack.x(), mfttrack.y(), mfttrack.z(), mfttrack.phi(), mfttrack.tgl(), fwdtrack.sign() / std::sqrt(std::pow(px, 2) + std::pow(py, 2)), fwdtrack.nClusters(), fwdtrack.pDca(), fwdtrack.rAtAbsorberEnd(), 0, 0, 0, result, mfttrack.globalIndex(), fwdtrack.globalIndex(), fwdtrack.mchBitMap(), fwdtrack.midBitMap(), fwdtrack.midBoards(), mfttrack.trackTime(), mfttrack.trackTimeRes(), mfttrack.eta(), std::sqrt(std::pow(px, 2) + std::pow(py, 2)), std::sqrt(std::pow(px, 2) + std::pow(py, 2) + std::pow(pz, 2)), dcaX, dcaY);
fwdtrackml(fwdtrack.collisionId(), 0, mfttrack.x(), mfttrack.y(), mfttrack.z(), mfttrack.phi(), mfttrack.tgl(), fwdtrack.sign() / std::sqrt(std::pow(px, 2) + std::pow(py, 2)), fwdtrack.nClusters(), fwdtrack.pDca(), fwdtrack.rAtAbsorberEnd(), 0, 0, 0, bestscore, mfttrack.globalIndex(), fwdtrack.globalIndex(), fwdtrack.mchBitMap(), fwdtrack.midBitMap(), fwdtrack.midBoards(), mfttrack.trackTime(), mfttrack.trackTimeRes(), mfttrack.eta(), std::sqrt(std::pow(px, 2) + std::pow(py, 2)), std::sqrt(std::pow(px, 2) + std::pow(py, 2) + std::pow(pz, 2)), dcaX, dcaY);
}
}
}
Expand Down

0 comments on commit b4a9233

Please sign in to comment.