Skip to content

Commit 33fcbf1

Browse files
[PWGCF] Use ITS pid instead of TPC when configured (#16459)
1 parent 6e5023f commit 33fcbf1

1 file changed

Lines changed: 85 additions & 45 deletions

File tree

PWGCF/EbyEFluctuations/Tasks/v0ptHadPiKaProt.cxx

Lines changed: 85 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
#include <ReconstructionDataFormats/PID.h>
3838

3939
#include <TComplex.h>
40-
#include <TDatabasePDG.h>
4140
#include <TF1.h>
4241
#include <THn.h>
4342
#include <TList.h>
@@ -546,18 +545,31 @@ struct V0ptHadPiKaProt {
546545
return false;
547546
int flag = 0; //! pid check main flag
548547

548+
float partNsigmaTpcOrItsPi = 0.0;
549+
float partNsigmaTpcOrItsKa = 0.0;
550+
float partNsigmaTpcOrItsPr = 0.0;
551+
if (cfgUseItsPID) {
552+
partNsigmaTpcOrItsPi = itsResponse.nSigmaITS<o2::track::PID::Pion>(candidate);
553+
partNsigmaTpcOrItsKa = itsResponse.nSigmaITS<o2::track::PID::Kaon>(candidate);
554+
partNsigmaTpcOrItsPr = itsResponse.nSigmaITS<o2::track::PID::Proton>(candidate);
555+
} else {
556+
partNsigmaTpcOrItsPi = candidate.tpcNSigmaPi();
557+
partNsigmaTpcOrItsKa = candidate.tpcNSigmaKa();
558+
partNsigmaTpcOrItsPr = candidate.tpcNSigmaPr();
559+
}
560+
549561
if (candidate.pt() > cfgCutPtLower && candidate.pt() <= cfgCutPtUpperTPC) {
550-
if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < cfgnSigmaCutTPC) {
562+
if (!candidate.hasTOF() && std::abs(partNsigmaTpcOrItsPr) < cfgnSigmaCutTPC) {
551563
flag = 1;
552564
}
553-
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaPr()) < cfgnSigmaCutTOF) {
565+
if (candidate.hasTOF() && std::abs(partNsigmaTpcOrItsPr) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaPr()) < cfgnSigmaCutTOF) {
554566
flag = 1;
555567
}
556568
}
557569
if (candidate.hasTOF() && candidate.pt() > cfgCutPtUpperTPC && candidate.pt() < cfgCutPtUpperPID) {
558-
const float combNSigmaPr = std::sqrt(std::pow(candidate.tpcNSigmaPr(), 2.0) + std::pow(candidate.tofNSigmaPr(), 2.0));
559-
const float combNSigmaPi = std::sqrt(std::pow(candidate.tpcNSigmaPi(), 2.0) + std::pow(candidate.tofNSigmaPi(), 2.0));
560-
const float combNSigmaKa = std::sqrt(std::pow(candidate.tpcNSigmaKa(), 2.0) + std::pow(candidate.tofNSigmaKa(), 2.0));
570+
const float combNSigmaPr = std::sqrt(std::pow(partNsigmaTpcOrItsPr, 2.0) + std::pow(candidate.tofNSigmaPr(), 2.0));
571+
const float combNSigmaPi = std::sqrt(std::pow(partNsigmaTpcOrItsPi, 2.0) + std::pow(candidate.tofNSigmaPi(), 2.0));
572+
const float combNSigmaKa = std::sqrt(std::pow(partNsigmaTpcOrItsKa, 2.0) + std::pow(candidate.tofNSigmaKa(), 2.0));
561573

562574
int flag2 = 0;
563575
if (combNSigmaPr < cfgnSigmaOtherParticles)
@@ -568,8 +580,8 @@ struct V0ptHadPiKaProt {
568580
flag2 += 1;
569581

570582
if (cfgUseNewSeperationPid) {
571-
if (std::abs(candidate.tpcNSigmaPr()) < cfgnSigmaCutTPCHigherPt && std::abs(candidate.tofNSigmaPr()) < cfgnSigmaCutTOFHigherPt) {
572-
if (!(flag2 > 1) && std::abs(candidate.tpcNSigmaPi()) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPi()) > cfgnSigmaSeperationCut && std::abs(candidate.tpcNSigmaKa()) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaKa()) > cfgnSigmaSeperationCut)
583+
if (std::abs(partNsigmaTpcOrItsPr) < cfgnSigmaCutTPCHigherPt && std::abs(candidate.tofNSigmaPr()) < cfgnSigmaCutTOFHigherPt) {
584+
if (!(flag2 > 1) && std::abs(partNsigmaTpcOrItsPi) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPi()) > cfgnSigmaSeperationCut && std::abs(partNsigmaTpcOrItsKa) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaKa()) > cfgnSigmaSeperationCut)
573585
flag = 1;
574586
}
575587
} else {
@@ -600,18 +612,31 @@ struct V0ptHadPiKaProt {
600612
return false;
601613
int flag = 0; //! pid check main flag
602614

615+
float partNsigmaTpcOrItsPi = 0.0;
616+
float partNsigmaTpcOrItsKa = 0.0;
617+
float partNsigmaTpcOrItsPr = 0.0;
618+
if (cfgUseItsPID) {
619+
partNsigmaTpcOrItsPi = itsResponse.nSigmaITS<o2::track::PID::Pion>(candidate);
620+
partNsigmaTpcOrItsKa = itsResponse.nSigmaITS<o2::track::PID::Kaon>(candidate);
621+
partNsigmaTpcOrItsPr = itsResponse.nSigmaITS<o2::track::PID::Proton>(candidate);
622+
} else {
623+
partNsigmaTpcOrItsPi = candidate.tpcNSigmaPi();
624+
partNsigmaTpcOrItsKa = candidate.tpcNSigmaKa();
625+
partNsigmaTpcOrItsPr = candidate.tpcNSigmaPr();
626+
}
627+
603628
if (candidate.pt() > cfgCutPtLower && candidate.pt() <= cfgCutPtUpperTPC) {
604-
if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPi()) < cfgnSigmaCutTPC) {
629+
if (!candidate.hasTOF() && std::abs(partNsigmaTpcOrItsPi) < cfgnSigmaCutTPC) {
605630
flag = 1;
606631
}
607-
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaPi()) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaPi()) < cfgnSigmaCutTOF) {
632+
if (candidate.hasTOF() && std::abs(partNsigmaTpcOrItsPi) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaPi()) < cfgnSigmaCutTOF) {
608633
flag = 1;
609634
}
610635
}
611636
if (candidate.hasTOF() && candidate.pt() > cfgCutPtUpperTPC && candidate.pt() < cfgCutPtUpperPID) {
612-
const float combNSigmaPr = std::sqrt(std::pow(candidate.tpcNSigmaPr(), 2.0) + std::pow(candidate.tofNSigmaPr(), 2.0));
613-
const float combNSigmaPi = std::sqrt(std::pow(candidate.tpcNSigmaPi(), 2.0) + std::pow(candidate.tofNSigmaPi(), 2.0));
614-
const float combNSigmaKa = std::sqrt(std::pow(candidate.tpcNSigmaKa(), 2.0) + std::pow(candidate.tofNSigmaKa(), 2.0));
637+
const float combNSigmaPr = std::sqrt(std::pow(partNsigmaTpcOrItsPr, 2.0) + std::pow(candidate.tofNSigmaPr(), 2.0));
638+
const float combNSigmaPi = std::sqrt(std::pow(partNsigmaTpcOrItsPi, 2.0) + std::pow(candidate.tofNSigmaPi(), 2.0));
639+
const float combNSigmaKa = std::sqrt(std::pow(partNsigmaTpcOrItsKa, 2.0) + std::pow(candidate.tofNSigmaKa(), 2.0));
615640

616641
int flag2 = 0;
617642
if (combNSigmaPr < cfgnSigmaOtherParticles)
@@ -622,8 +647,8 @@ struct V0ptHadPiKaProt {
622647
flag2 += 1;
623648

624649
if (cfgUseNewSeperationPid) {
625-
if (std::abs(candidate.tpcNSigmaPi()) < cfgnSigmaCutTPCHigherPt && std::abs(candidate.tofNSigmaPi()) < cfgnSigmaCutTOFHigherPt) {
626-
if (!(flag2 > 1) && std::abs(candidate.tpcNSigmaKa()) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaKa()) > cfgnSigmaSeperationCut && std::abs(candidate.tpcNSigmaPr()) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPr()) > cfgnSigmaSeperationCut)
650+
if (std::abs(partNsigmaTpcOrItsPi) < cfgnSigmaCutTPCHigherPt && std::abs(candidate.tofNSigmaPi()) < cfgnSigmaCutTOFHigherPt) {
651+
if (!(flag2 > 1) && std::abs(partNsigmaTpcOrItsKa) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaKa()) > cfgnSigmaSeperationCut && std::abs(partNsigmaTpcOrItsPr) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPr()) > cfgnSigmaSeperationCut)
627652
flag = 1;
628653
}
629654
} else {
@@ -654,18 +679,31 @@ struct V0ptHadPiKaProt {
654679
return false;
655680
int flag = 0; //! pid check main flag
656681

682+
float partNsigmaTpcOrItsPi = 0.0;
683+
float partNsigmaTpcOrItsKa = 0.0;
684+
float partNsigmaTpcOrItsPr = 0.0;
685+
if (cfgUseItsPID) {
686+
partNsigmaTpcOrItsPi = itsResponse.nSigmaITS<o2::track::PID::Pion>(candidate);
687+
partNsigmaTpcOrItsKa = itsResponse.nSigmaITS<o2::track::PID::Kaon>(candidate);
688+
partNsigmaTpcOrItsPr = itsResponse.nSigmaITS<o2::track::PID::Proton>(candidate);
689+
} else {
690+
partNsigmaTpcOrItsPi = candidate.tpcNSigmaPi();
691+
partNsigmaTpcOrItsKa = candidate.tpcNSigmaKa();
692+
partNsigmaTpcOrItsPr = candidate.tpcNSigmaPr();
693+
}
694+
657695
if (candidate.pt() > cfgCutPtLower && candidate.pt() <= cfgCutPtUpperTPC) {
658-
if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaKa()) < cfgnSigmaCutTPC) {
696+
if (!candidate.hasTOF() && std::abs(partNsigmaTpcOrItsKa) < cfgnSigmaCutTPC) {
659697
flag = 1;
660698
}
661-
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaKa()) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaKa()) < cfgnSigmaCutTOF) {
699+
if (candidate.hasTOF() && std::abs(partNsigmaTpcOrItsKa) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaKa()) < cfgnSigmaCutTOF) {
662700
flag = 1;
663701
}
664702
}
665703
if (candidate.hasTOF() && candidate.pt() > cfgCutPtUpperTPC && candidate.pt() < cfgCutPtUpperPID) {
666-
const float combNSigmaPr = std::sqrt(std::pow(candidate.tpcNSigmaPr(), 2.0) + std::pow(candidate.tofNSigmaPr(), 2.0));
667-
const float combNSigmaPi = std::sqrt(std::pow(candidate.tpcNSigmaPi(), 2.0) + std::pow(candidate.tofNSigmaPi(), 2.0));
668-
const float combNSigmaKa = std::sqrt(std::pow(candidate.tpcNSigmaKa(), 2.0) + std::pow(candidate.tofNSigmaKa(), 2.0));
704+
const float combNSigmaPr = std::sqrt(std::pow(partNsigmaTpcOrItsPr, 2.0) + std::pow(candidate.tofNSigmaPr(), 2.0));
705+
const float combNSigmaPi = std::sqrt(std::pow(partNsigmaTpcOrItsPi, 2.0) + std::pow(candidate.tofNSigmaPi(), 2.0));
706+
const float combNSigmaKa = std::sqrt(std::pow(partNsigmaTpcOrItsKa, 2.0) + std::pow(candidate.tofNSigmaKa(), 2.0));
669707

670708
int flag2 = 0;
671709
if (combNSigmaPr < cfgnSigmaOtherParticles)
@@ -676,8 +714,8 @@ struct V0ptHadPiKaProt {
676714
flag2 += 1;
677715

678716
if (cfgUseNewSeperationPid) {
679-
if (std::abs(candidate.tpcNSigmaKa()) < cfgnSigmaCutTPCHigherPt && std::abs(candidate.tofNSigmaKa()) < cfgnSigmaCutTOFHigherPt) {
680-
if (!(flag2 > 1) && std::abs(candidate.tpcNSigmaPi()) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPi()) > cfgnSigmaSeperationCut && std::abs(candidate.tpcNSigmaPr()) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPr()) > cfgnSigmaSeperationCut)
717+
if (std::abs(partNsigmaTpcOrItsKa) < cfgnSigmaCutTPCHigherPt && std::abs(candidate.tofNSigmaKa()) < cfgnSigmaCutTOFHigherPt) {
718+
if (!(flag2 > 1) && std::abs(partNsigmaTpcOrItsPi) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPi()) > cfgnSigmaSeperationCut && std::abs(partNsigmaTpcOrItsPr) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPr()) > cfgnSigmaSeperationCut)
681719
flag = 1;
682720
}
683721
} else {
@@ -1335,27 +1373,29 @@ struct V0ptHadPiKaProt {
13351373
double trkEta = track.eta();
13361374
double trkPhi = track.phi();
13371375

1376+
double effweight = 1.0;
1377+
if (cfgLoadPtEffWeights) {
1378+
effweight = 1.0 / getEffAllCharged(track); // NUE weight
1379+
}
1380+
13381381
// inclusive charged particles
13391382
if (track.sign() != 0) {
13401383
if (trkEta < cfgCutEtaLeft) {
13411384
fPtProfileHad->Fill(trkPt);
1342-
pTsumEtaLeftHad += trkPt;
1343-
nSumEtaLeftHad += 1.0;
1385+
pTsumEtaLeftHad += trkPt * effweight;
1386+
nSumEtaLeftHad += effweight;
13441387
}
13451388
if (trkEta > cfgCutEtaRight) {
1346-
pTsumEtaRightHad += trkPt;
1347-
nSumEtaRightHad += 1.0;
1389+
pTsumEtaRightHad += trkPt * effweight;
1390+
nSumEtaRightHad += effweight;
13481391
}
13491392
}
13501393

13511394
double phiweight = 1.0;
13521395
if (cfgLoadPhiWeights) {
13531396
phiweight = getPhiWeight(track, coll.posZ()); // NUA weight
13541397
}
1355-
double effweight = 1.0;
1356-
if (cfgLoadPtEffWeights) {
1357-
effweight = 1.0 / getEffAllCharged(track); // NUE weight
1358-
}
1398+
13591399
double weight = phiweight * effweight;
13601400

13611401
if (track.sign() != 0 && trkPt < cfgCutPtMaxForV02) {
@@ -1433,34 +1473,34 @@ struct V0ptHadPiKaProt {
14331473
histos.fill(HIST("h2DnsigmaProtonTpcVsTofAfterCut"), trkPt, nSigmaTpcProt, nSigmaTofProt);
14341474
}
14351475

1476+
double effweightPion = 1.0;
1477+
double effweightKaon = 1.0;
1478+
double effweightProton = 1.0;
1479+
if (cfgLoadPtEffWeights) {
1480+
effweightPion = 1.0 / getEffPion(track); // NUE weight for pion
1481+
effweightKaon = 1.0 / getEffKaon(track); // NUE weight for kaon
1482+
effweightProton = 1.0 / getEffProton(track); // NUE weight for proton
1483+
}
1484+
14361485
if (track.sign() != 0) {
14371486
if (trkPt < cfgCutPtUpperPID) {
14381487
if (trkEta < cfgCutEtaLeft) {
14391488
if (isPion) {
1440-
fPtProfilePi->Fill(trkPt);
1441-
nSumEtaLeftPi += 1.0;
1489+
fPtProfilePi->Fill(trkPt, effweightPion);
1490+
nSumEtaLeftPi += effweightPion;
14421491
}
14431492
if (isKaon) {
1444-
fPtProfileKa->Fill(trkPt);
1445-
nSumEtaLeftKa += 1.0;
1493+
fPtProfileKa->Fill(trkPt, effweightKaon);
1494+
nSumEtaLeftKa += effweightKaon;
14461495
}
14471496
if (isProton && trkPt > cfgCutPtLowerProt) {
1448-
fPtProfileProt->Fill(trkPt);
1449-
nSumEtaLeftProt += 1.0;
1497+
fPtProfileProt->Fill(trkPt, effweightProton);
1498+
nSumEtaLeftProt += effweightProton;
14501499
}
14511500
}
14521501
}
14531502
}
14541503

1455-
double effweightPion = 1.0;
1456-
double effweightKaon = 1.0;
1457-
double effweightProton = 1.0;
1458-
if (cfgLoadPtEffWeights) {
1459-
effweightPion = 1.0 / getEffPion(track); // NUE weight for pion
1460-
effweightKaon = 1.0 / getEffKaon(track); // NUE weight for kaon
1461-
effweightProton = 1.0 / getEffProton(track); // NUE weight for proton
1462-
}
1463-
14641504
// fill subevent B for ***identified particles'*** f(pT) in v02(pT)
14651505
if (track.sign() != 0 && trkPt < cfgCutPtMaxForV02) {
14661506
if (std::abs(trkEta) < cfgCutEtaWindowB) {

0 commit comments

Comments
 (0)