Skip to content

Commit 701b265

Browse files
Use ITS pid instead of TPC when configured
1 parent f71edfb commit 701b265

1 file changed

Lines changed: 85 additions & 44 deletions

File tree

PWGCF/EbyEFluctuations/Tasks/v0ptHadPiKaProt.cxx

Lines changed: 85 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -546,18 +546,31 @@ struct V0ptHadPiKaProt {
546546
return false;
547547
int flag = 0; //! pid check main flag
548548

549+
float partNsigmaTpcOrItsPi = 0.0;
550+
float partNsigmaTpcOrItsKa = 0.0;
551+
float partNsigmaTpcOrItsPr = 0.0;
552+
if (cfgUseItsPID) {
553+
partNsigmaTpcOrItsPi = itsResponse.nSigmaITS<o2::track::PID::Pion>(candidate);
554+
partNsigmaTpcOrItsKa = itsResponse.nSigmaITS<o2::track::PID::Kaon>(candidate);
555+
partNsigmaTpcOrItsPr = itsResponse.nSigmaITS<o2::track::PID::Proton>(candidate);
556+
} else {
557+
partNsigmaTpcOrItsPi = candidate.tpcNSigmaPi();
558+
partNsigmaTpcOrItsKa = candidate.tpcNSigmaKa();
559+
partNsigmaTpcOrItsPr = candidate.tpcNSigmaPr();
560+
}
561+
549562
if (candidate.pt() > cfgCutPtLower && candidate.pt() <= cfgCutPtUpperTPC) {
550-
if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < cfgnSigmaCutTPC) {
563+
if (!candidate.hasTOF() && std::abs(partNsigmaTpcOrItsPr) < cfgnSigmaCutTPC) {
551564
flag = 1;
552565
}
553-
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaPr()) < cfgnSigmaCutTOF) {
566+
if (candidate.hasTOF() && std::abs(partNsigmaTpcOrItsPr) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaPr()) < cfgnSigmaCutTOF) {
554567
flag = 1;
555568
}
556569
}
557570
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));
571+
const float combNSigmaPr = std::sqrt(std::pow(partNsigmaTpcOrItsPr, 2.0) + std::pow(candidate.tofNSigmaPr(), 2.0));
572+
const float combNSigmaPi = std::sqrt(std::pow(partNsigmaTpcOrItsPi, 2.0) + std::pow(candidate.tofNSigmaPi(), 2.0));
573+
const float combNSigmaKa = std::sqrt(std::pow(partNsigmaTpcOrItsKa, 2.0) + std::pow(candidate.tofNSigmaKa(), 2.0));
561574

562575
int flag2 = 0;
563576
if (combNSigmaPr < cfgnSigmaOtherParticles)
@@ -568,8 +581,8 @@ struct V0ptHadPiKaProt {
568581
flag2 += 1;
569582

570583
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)
584+
if (std::abs(partNsigmaTpcOrItsPr) < cfgnSigmaCutTPCHigherPt && std::abs(candidate.tofNSigmaPr()) < cfgnSigmaCutTOFHigherPt) {
585+
if (!(flag2 > 1) && std::abs(partNsigmaTpcOrItsPi) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPi()) > cfgnSigmaSeperationCut && std::abs(partNsigmaTpcOrItsKa) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaKa()) > cfgnSigmaSeperationCut)
573586
flag = 1;
574587
}
575588
} else {
@@ -600,18 +613,31 @@ struct V0ptHadPiKaProt {
600613
return false;
601614
int flag = 0; //! pid check main flag
602615

616+
float partNsigmaTpcOrItsPi = 0.0;
617+
float partNsigmaTpcOrItsKa = 0.0;
618+
float partNsigmaTpcOrItsPr = 0.0;
619+
if (cfgUseItsPID) {
620+
partNsigmaTpcOrItsPi = itsResponse.nSigmaITS<o2::track::PID::Pion>(candidate);
621+
partNsigmaTpcOrItsKa = itsResponse.nSigmaITS<o2::track::PID::Kaon>(candidate);
622+
partNsigmaTpcOrItsPr = itsResponse.nSigmaITS<o2::track::PID::Proton>(candidate);
623+
} else {
624+
partNsigmaTpcOrItsPi = candidate.tpcNSigmaPi();
625+
partNsigmaTpcOrItsKa = candidate.tpcNSigmaKa();
626+
partNsigmaTpcOrItsPr = candidate.tpcNSigmaPr();
627+
}
628+
603629
if (candidate.pt() > cfgCutPtLower && candidate.pt() <= cfgCutPtUpperTPC) {
604-
if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPi()) < cfgnSigmaCutTPC) {
630+
if (!candidate.hasTOF() && std::abs(partNsigmaTpcOrItsPi) < cfgnSigmaCutTPC) {
605631
flag = 1;
606632
}
607-
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaPi()) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaPi()) < cfgnSigmaCutTOF) {
633+
if (candidate.hasTOF() && std::abs(partNsigmaTpcOrItsPi) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaPi()) < cfgnSigmaCutTOF) {
608634
flag = 1;
609635
}
610636
}
611637
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));
638+
const float combNSigmaPr = std::sqrt(std::pow(partNsigmaTpcOrItsPr, 2.0) + std::pow(candidate.tofNSigmaPr(), 2.0));
639+
const float combNSigmaPi = std::sqrt(std::pow(partNsigmaTpcOrItsPi, 2.0) + std::pow(candidate.tofNSigmaPi(), 2.0));
640+
const float combNSigmaKa = std::sqrt(std::pow(partNsigmaTpcOrItsKa, 2.0) + std::pow(candidate.tofNSigmaKa(), 2.0));
615641

616642
int flag2 = 0;
617643
if (combNSigmaPr < cfgnSigmaOtherParticles)
@@ -622,8 +648,8 @@ struct V0ptHadPiKaProt {
622648
flag2 += 1;
623649

624650
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)
651+
if (std::abs(partNsigmaTpcOrItsPi) < cfgnSigmaCutTPCHigherPt && std::abs(candidate.tofNSigmaPi()) < cfgnSigmaCutTOFHigherPt) {
652+
if (!(flag2 > 1) && std::abs(partNsigmaTpcOrItsKa) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaKa()) > cfgnSigmaSeperationCut && std::abs(partNsigmaTpcOrItsPr) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPr()) > cfgnSigmaSeperationCut)
627653
flag = 1;
628654
}
629655
} else {
@@ -654,18 +680,31 @@ struct V0ptHadPiKaProt {
654680
return false;
655681
int flag = 0; //! pid check main flag
656682

683+
float partNsigmaTpcOrItsPi = 0.0;
684+
float partNsigmaTpcOrItsKa = 0.0;
685+
float partNsigmaTpcOrItsPr = 0.0;
686+
if (cfgUseItsPID) {
687+
partNsigmaTpcOrItsPi = itsResponse.nSigmaITS<o2::track::PID::Pion>(candidate);
688+
partNsigmaTpcOrItsKa = itsResponse.nSigmaITS<o2::track::PID::Kaon>(candidate);
689+
partNsigmaTpcOrItsPr = itsResponse.nSigmaITS<o2::track::PID::Proton>(candidate);
690+
} else {
691+
partNsigmaTpcOrItsPi = candidate.tpcNSigmaPi();
692+
partNsigmaTpcOrItsKa = candidate.tpcNSigmaKa();
693+
partNsigmaTpcOrItsPr = candidate.tpcNSigmaPr();
694+
}
695+
657696
if (candidate.pt() > cfgCutPtLower && candidate.pt() <= cfgCutPtUpperTPC) {
658-
if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaKa()) < cfgnSigmaCutTPC) {
697+
if (!candidate.hasTOF() && std::abs(partNsigmaTpcOrItsKa) < cfgnSigmaCutTPC) {
659698
flag = 1;
660699
}
661-
if (candidate.hasTOF() && std::abs(candidate.tpcNSigmaKa()) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaKa()) < cfgnSigmaCutTOF) {
700+
if (candidate.hasTOF() && std::abs(partNsigmaTpcOrItsKa) < cfgnSigmaCutTPC && std::abs(candidate.tofNSigmaKa()) < cfgnSigmaCutTOF) {
662701
flag = 1;
663702
}
664703
}
665704
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));
705+
const float combNSigmaPr = std::sqrt(std::pow(partNsigmaTpcOrItsPr, 2.0) + std::pow(candidate.tofNSigmaPr(), 2.0));
706+
const float combNSigmaPi = std::sqrt(std::pow(partNsigmaTpcOrItsPi, 2.0) + std::pow(candidate.tofNSigmaPi(), 2.0));
707+
const float combNSigmaKa = std::sqrt(std::pow(partNsigmaTpcOrItsKa, 2.0) + std::pow(candidate.tofNSigmaKa(), 2.0));
669708

670709
int flag2 = 0;
671710
if (combNSigmaPr < cfgnSigmaOtherParticles)
@@ -676,8 +715,8 @@ struct V0ptHadPiKaProt {
676715
flag2 += 1;
677716

678717
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)
718+
if (std::abs(partNsigmaTpcOrItsKa) < cfgnSigmaCutTPCHigherPt && std::abs(candidate.tofNSigmaKa()) < cfgnSigmaCutTOFHigherPt) {
719+
if (!(flag2 > 1) && std::abs(partNsigmaTpcOrItsPi) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPi()) > cfgnSigmaSeperationCut && std::abs(partNsigmaTpcOrItsPr) > cfgnSigmaSeperationCut && std::abs(candidate.tofNSigmaPr()) > cfgnSigmaSeperationCut)
681720
flag = 1;
682721
}
683722
} else {
@@ -1335,27 +1374,29 @@ struct V0ptHadPiKaProt {
13351374
double trkEta = track.eta();
13361375
double trkPhi = track.phi();
13371376

1377+
double effweight = 1.0;
1378+
if (cfgLoadPtEffWeights) {
1379+
effweight = 1.0 / getEffAllCharged(track); // NUE weight
1380+
}
1381+
13381382
// inclusive charged particles
13391383
if (track.sign() != 0) {
13401384
if (trkEta < cfgCutEtaLeft) {
13411385
fPtProfileHad->Fill(trkPt);
1342-
pTsumEtaLeftHad += trkPt;
1343-
nSumEtaLeftHad += 1.0;
1386+
pTsumEtaLeftHad += trkPt * effweight;
1387+
nSumEtaLeftHad += effweight;
13441388
}
13451389
if (trkEta > cfgCutEtaRight) {
1346-
pTsumEtaRightHad += trkPt;
1347-
nSumEtaRightHad += 1.0;
1390+
pTsumEtaRightHad += trkPt * effweight;
1391+
nSumEtaRightHad += effweight;
13481392
}
13491393
}
13501394

13511395
double phiweight = 1.0;
13521396
if (cfgLoadPhiWeights) {
13531397
phiweight = getPhiWeight(track, coll.posZ()); // NUA weight
13541398
}
1355-
double effweight = 1.0;
1356-
if (cfgLoadPtEffWeights) {
1357-
effweight = 1.0 / getEffAllCharged(track); // NUE weight
1358-
}
1399+
13591400
double weight = phiweight * effweight;
13601401

13611402
if (track.sign() != 0 && trkPt < cfgCutPtMaxForV02) {
@@ -1433,34 +1474,34 @@ struct V0ptHadPiKaProt {
14331474
histos.fill(HIST("h2DnsigmaProtonTpcVsTofAfterCut"), trkPt, nSigmaTpcProt, nSigmaTofProt);
14341475
}
14351476

1477+
double effweightPion = 1.0;
1478+
double effweightKaon = 1.0;
1479+
double effweightProton = 1.0;
1480+
if (cfgLoadPtEffWeights) {
1481+
effweightPion = 1.0 / getEffPion(track); // NUE weight for pion
1482+
effweightKaon = 1.0 / getEffKaon(track); // NUE weight for kaon
1483+
effweightProton = 1.0 / getEffProton(track); // NUE weight for proton
1484+
}
1485+
14361486
if (track.sign() != 0) {
14371487
if (trkPt < cfgCutPtUpperPID) {
14381488
if (trkEta < cfgCutEtaLeft) {
14391489
if (isPion) {
1440-
fPtProfilePi->Fill(trkPt);
1441-
nSumEtaLeftPi += 1.0;
1490+
fPtProfilePi->Fill(trkPt, effweightPion);
1491+
nSumEtaLeftPi += effweightPion;
14421492
}
14431493
if (isKaon) {
1444-
fPtProfileKa->Fill(trkPt);
1445-
nSumEtaLeftKa += 1.0;
1494+
fPtProfileKa->Fill(trkPt, effweightKaon);
1495+
nSumEtaLeftKa += effweightKaon;
14461496
}
14471497
if (isProton && trkPt > cfgCutPtLowerProt) {
1448-
fPtProfileProt->Fill(trkPt);
1449-
nSumEtaLeftProt += 1.0;
1498+
fPtProfileProt->Fill(trkPt, effweightProton);
1499+
nSumEtaLeftProt += effweightProton;
14501500
}
14511501
}
14521502
}
14531503
}
14541504

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-
14641505
// fill subevent B for ***identified particles'*** f(pT) in v02(pT)
14651506
if (track.sign() != 0 && trkPt < cfgCutPtMaxForV02) {
14661507
if (std::abs(trkEta) < cfgCutEtaWindowB) {

0 commit comments

Comments
 (0)