@@ -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