@@ -95,6 +95,7 @@ struct HadronNucleiCorrelation {
9595 Configurable<bool > isPrim{" isPrim" , true , " is isPrim" };
9696 Configurable<bool > doCorrection{" doCorrection" , false , " do efficiency correction" };
9797 Configurable<bool > doQuadraticPID{" doQuadraticPID" , false , " do PID with sum in quadrature of TOF and TPC" };
98+ Configurable<bool > doPIDRej{" doPIDRej" , false , " do PID rejection of competing species" };
9899
99100 struct : ConfigurableGroup {
100101 std::string prefix = " Coalescence" ; // JSON group name
@@ -130,12 +131,13 @@ struct HadronNucleiCorrelation {
130131 Configurable<float > nsigmaElPr{" nsigmaElPr" , 1 .0f , " cut nsigma TPC El for protons" };
131132 Configurable<float > nsigmaElDe{" nsigmaElDe" , 3 .0f , " cut nsigma TPC El for protons" };
132133 Configurable<float > nsigmaTOF{" nsigmaTOF" , 3 .5f , " cut nsigma TOF" };
134+ Configurable<float > nsigmaTOFPrRej{" nsigmaTOFPrRej" , 3 .f , " cut nsigma TOF for proton rejection" };
135+ Configurable<float > doPrRej{" doPrRej" , 3 .f , " do TOF proton rejection" };
133136 Configurable<float > nsigmaQuadratic{" nsigmaQuadratic" , 3 .0f , " cut on sqrt(nsigmaTPC^2 + nsigmaTOF^2), used above the TOF pT threshold when doQuadraticPID is on" };
134137 Configurable<float > nsigmaITSPr{" nsigmaITSPr" , -2 .0f , " cut nsigma ITS Pr" };
135138 Configurable<float > nsigmaITSDe{" nsigmaITSDe" , -2 .0f , " cut nsigma ITS De" };
136139 Configurable<bool > doITSPID{" doITSPID" , true , " do ITS PID" };
137140 Configurable<float > pTthrprTOF{" pTthrprTOF" , 0 .8f , " threshold pT proton to use TOF" };
138- Configurable<float > pTthrprTPCEl{" pTthrprTPCEl" , 1 .0f , " threshold pT proton to use TPC El rejection" };
139141 Configurable<float > pTthrdeTOF{" pTthrdeTOF" , 1 .0f , " threshold pT deuteron to use TOF" };
140142 Configurable<float > pTthrdeTPCEl{" pTthrdeTPCEl" , 1 .0f , " threshold pT deuteron to use TPC El rejection" };
141143 Configurable<bool > rejectionEl{" rejectionEl" , true , " use TPC El rejection" };
@@ -407,6 +409,8 @@ struct HadronNucleiCorrelation {
407409 registryQa.add (" QA/h3dTPCTOF_AntiPr" , " n#sigma TPC vs n#sigma TOF" , {HistType::kTH3D , {tpcNSigmaAxis, tofNSigmaAxis, ptAxis}});
408410 registryQa.add (" QA/h3dTPCTOF_De" , " n#sigma TPC vs n#sigma TOF" , {HistType::kTH3D , {tpcNSigmaAxis, tofNSigmaAxis, ptAxis}});
409411 registryQa.add (" QA/h3dTPCTOF_AntiDe" , " n#sigma TPC vs n#sigma TOF" , {HistType::kTH3D , {tpcNSigmaAxis, tofNSigmaAxis, ptAxis}});
412+ registryQa.add (" QA/h3dTPCTOF_De_Rej" , " n#sigma TPC vs n#sigma TOF" , {HistType::kTH3D , {tpcNSigmaAxis, tofNSigmaAxis, ptAxis}});
413+ registryQa.add (" QA/h3dTPCTOF_AntiDe_Rej" , " n#sigma TPC vs n#sigma TOF" , {HistType::kTH3D , {tpcNSigmaAxis, tofNSigmaAxis, ptAxis}});
410414 registryQa.add (" QA/hnSigmaTPCVsPt_El" , " n#sigma TPC vs p_{T} for e hypothesis (all tracks)" , {HistType::kTH2D , {ptAxis, tpcNSigmaAxis}});
411415 registryQa.add (" QA/hnSigmaTPCVsPt_Pr" , " n#sigma TPC vs p_{T} for p hypothesis (all tracks)" , {HistType::kTH2D , {ptAxis, tpcNSigmaAxis}});
412416 registryQa.add (" QA/hnSigmaTPCVsPt_De" , " n#sigma TPC vs p_{T} for d hypothesis (all tracks)" , {HistType::kTH2D , {ptAxis, tpcNSigmaAxis}});
@@ -581,7 +585,6 @@ struct HadronNucleiCorrelation {
581585 {
582586 const bool isTPCPID = std::abs (track.tpcNSigmaPr ()) < nsigmaTPC.value ;
583587 const bool isTOFPID = std::abs (track.tofNSigmaPr ()) < nsigmaTOF.value ;
584- const bool isTPCElRejection = rejectionEl.value && track.beta () < BetahasTOFthr && track.pt () < pTthrprTPCEl.value && track.tpcNSigmaEl () >= nsigmaElPr.value ;
585588 const bool isITSPID = track.itsNSigmaPr () > nsigmaITSPr.value ;
586589
587590 const bool isQuadraticPID = std::hypot (track.tpcNSigmaPr (), track.tofNSigmaPr ()) < nsigmaQuadratic.value ;
@@ -594,7 +597,7 @@ struct HadronNucleiCorrelation {
594597 if (!doITSPID.value || isITSPID) {
595598 return signCheck;
596599 }
597- } else if (isTPCElRejection || isTOFPID) {
600+ } else if (isTOFPID) {
598601 return signCheck;
599602 }
600603 }
@@ -1021,20 +1024,36 @@ struct HadronNucleiCorrelation {
10211024 registryQa.fill (HIST (" QA/hnSigmaTOFVsPt_De" ), track.pt () * track.sign (), track.tofNSigmaDe ());
10221025 registryQa.fill (HIST (" QA/hnSigmaITSVsPt_Pr" ), track.pt () * track.sign (), track.itsNSigmaPr ());
10231026 registryQa.fill (HIST (" QA/hnSigmaITSVsPt_De" ), track.pt () * track.sign (), track.itsNSigmaDe ());
1027+
1028+ const bool isTPCElRejection = rejectionEl.value && track.beta () < BetahasTOFthr && track.pt () < pTthrdeTPCEl.value && track.tpcNSigmaEl () >= nsigmaElDe.value ;
1029+ const bool isTOFPID = std::abs (track.tofNSigmaDe ()) < nsigmaTOF.value ;
1030+ const bool isNotPr = std::abs (track.tofNSigmaPr ()) >= nsigmaTOFPrRej.value || !doPrRej;
1031+
10241032 if (track.sign () > 0 ) {
1033+
10251034 if (track.pt () >= pTthrprTOF.value || !doITSPID.value || track.itsNSigmaPr () > nsigmaITSPr.value ) {
10261035 registryQa.fill (HIST (" QA/h3dTPCTOF_Pr" ), track.tpcNSigmaPr (), track.tofNSigmaPr (), track.pt ());
10271036 }
10281037 if (track.pt () >= pTthrdeTOF.value || !doITSPID.value || track.itsNSigmaDe () > nsigmaITSDe.value ) {
1029- registryQa.fill (HIST (" QA/h3dTPCTOF_De" ), track.tpcNSigmaDe (), track.tofNSigmaDe (), track.pt ());
1038+ if (isNotPr) {
1039+ registryQa.fill (HIST (" QA/h3dTPCTOF_De" ), track.tpcNSigmaDe (), track.tofNSigmaDe (), track.pt ());
1040+ if (isTPCElRejection || isTOFPID) {
1041+ registryQa.fill (HIST (" QA/h3dTPCTOF_De_Rej" ), track.tpcNSigmaDe (), track.tofNSigmaDe (), track.pt ());
1042+ }
1043+ }
10301044 }
10311045 }
10321046 if (track.sign () < 0 ) {
10331047 if (track.pt () >= pTthrprTOF.value || !doITSPID.value || track.itsNSigmaPr () > nsigmaITSPr.value ) {
10341048 registryQa.fill (HIST (" QA/h3dTPCTOF_AntiPr" ), track.tpcNSigmaPr (), track.tofNSigmaPr (), track.pt ());
10351049 }
10361050 if (track.pt () >= pTthrdeTOF.value || !doITSPID.value || track.itsNSigmaDe () > nsigmaITSDe.value ) {
1037- registryQa.fill (HIST (" QA/h3dTPCTOF_AntiDe" ), track.tpcNSigmaDe (), track.tofNSigmaDe (), track.pt ());
1051+ if (isNotPr) {
1052+ registryQa.fill (HIST (" QA/h3dTPCTOF_AntiDe" ), track.tpcNSigmaDe (), track.tofNSigmaDe (), track.pt ());
1053+ if (isTPCElRejection || isTOFPID) {
1054+ registryQa.fill (HIST (" QA/h3dTPCTOF_AntiDe_Rej" ), track.tpcNSigmaDe (), track.tofNSigmaDe (), track.pt ());
1055+ }
1056+ }
10381057 }
10391058 }
10401059
0 commit comments