@@ -39,6 +39,8 @@ using namespace o2;
3939using namespace o2 ::framework;
4040using namespace o2 ::framework::expressions;
4141
42+ std::vector<float > ptBinning = {0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 , 0.9 , 1.0 , 1.1 , 1.2 , 1.3 , 1.4 , 1.5 , 1.6 , 1.8 , 2.0 , 2.2 , 2.4 , 2.8 , 3.2 , 3.6 , 4 ., 5 ., 6 ., 8 ., 10 ., 12 ., 14 .};
43+
4244struct NucleiHistTask {
4345
4446 // Data
@@ -473,6 +475,26 @@ struct NucleiHistTask {
473475 Configurable<bool > requireGoldenChi2{" requireGoldenChi2" , false , " Enable the requirement of GoldenChi2" };
474476 Configurable<bool > event_selection_sel8{" event_selection_sel8" , true , " Enable sel8 event selection" };
475477 Configurable<bool > event_selection_MC_sel8{" event_selection_MC_sel8" , true , " Enable sel8 event selection in MC processing" };
478+ Configurable<std::vector<float >> Tpc_mSigma_shift_Pi{" Tpc_mSigma_shift_Pi" , {.0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f }, " Array for shifting pi^{+} & pi^{-} nSigma values in TPC" };
479+ Configurable<std::vector<float >> Tpc_mSigma_shift_Pr{" Tpc_mSigma_shift_Pr" , {.0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f }, " Array for shifting (anti)proton nSigma values in TPC" };
480+ Configurable<std::vector<float >> Tpc_mSigma_shift_De{" Tpc_mSigma_shift_De" , {.0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f }, " Array for shifting (anti)deuteron nSigma values in TPC" };
481+ Configurable<std::vector<float >> Tpc_mSigma_shift_Tr{" Tpc_mSigma_shift_Tr" , {.0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f }, " Array for shifting (anti)triton nSigma values in TPC" };
482+ Configurable<std::vector<float >> Tpc_mSigma_shift_He3{" Tpc_mSigma_shift_He3" , {.0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f }, " Array for shifting (anti)helium-3 nSigma values in TPC" };
483+ Configurable<std::vector<float >> Tpc_mSigma_shift_Al{" Tpc_mSigma_shift_Al" , {.0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f , .0f }, " Array for shifting (anti)helium-4 nSigma values in TPC" };
484+
485+ // ***************************************************************************
486+
487+ int getBinIndex (const std::vector<float >& ptBinning, float momentum)
488+ {
489+ for (size_t i = 0 ; i < ptBinning.size () - 1 ; ++i) {
490+ if (momentum >= ptBinning[i] && momentum < ptBinning[i + 1 ]) {
491+ return i;
492+ }
493+ }
494+ return -1 ;
495+ }
496+
497+ // ***************************************************************************
476498
477499 template <typename CollisionType, typename TracksType>
478500 void fillHistograms (const CollisionType& event, const TracksType& tracks)
@@ -630,6 +652,20 @@ struct NucleiHistTask {
630652
631653 spectra_reg.fill (HIST (" histTpcSignalData" ), momentum * track.sign (), track.tpcSignal ());
632654
655+ int binIndex = getBinIndex (ptBinning, momentum);
656+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Pi.value .size ()))
657+ nSigmaPion += Tpc_mSigma_shift_Pi.value [binIndex];
658+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Pr.value .size ()))
659+ nSigmaProton += Tpc_mSigma_shift_Pr.value [binIndex];
660+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_De.value .size ()))
661+ nSigmaDeut += Tpc_mSigma_shift_De.value [binIndex];
662+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Tr.value .size ()))
663+ nSigmaTriton += Tpc_mSigma_shift_Tr.value [binIndex];
664+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_He3.value .size ()))
665+ nSigmaHe3 += Tpc_mSigma_shift_He3.value [binIndex];
666+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Al.value .size ()))
667+ nSigmaHe4 += Tpc_mSigma_shift_Al.value [binIndex];
668+
633669 if (track.sign () > 0 ) {
634670 pion_reg.fill (HIST (" histTpcNsigmaData" ), momentum, nSigmaPion);
635671 proton_reg.fill (HIST (" histTpcNsigmaData" ), momentum, nSigmaProton);
@@ -1231,6 +1267,13 @@ struct NucleiHistTask {
12311267 if (requireGoldenChi2 && !(track.passedGoldenChi2 ()))
12321268 continue ;
12331269
1270+ float nSigmaPion = track.tpcNSigmaPi ();
1271+ float nSigmaProton = track.tpcNSigmaPr ();
1272+ float nSigmaDeut = track.tpcNSigmaDe ();
1273+ float nSigmaTriton = track.tpcNSigmaTr ();
1274+ float nSigmaHe3 = track.tpcNSigmaHe ();
1275+ float nSigmaHe4 = track.tpcNSigmaAl ();
1276+
12341277 TLorentzVector lorentzVector_pion{};
12351278 TLorentzVector lorentzVector_proton{};
12361279 TLorentzVector lorentzVector_deuteron{};
@@ -1253,22 +1296,36 @@ struct NucleiHistTask {
12531296 lorentzVector_He4.Rapidity () < yMin || lorentzVector_He4.Rapidity () > yMax)
12541297 continue ;
12551298
1299+ int binIndex = getBinIndex (ptBinning, momentum);
1300+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Pi.value .size ()))
1301+ nSigmaPion += Tpc_mSigma_shift_Pi.value [binIndex];
1302+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Pr.value .size ()))
1303+ nSigmaProton += Tpc_mSigma_shift_Pr.value [binIndex];
1304+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_De.value .size ()))
1305+ nSigmaDeut += Tpc_mSigma_shift_De.value [binIndex];
1306+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Tr.value .size ()))
1307+ nSigmaTriton += Tpc_mSigma_shift_Tr.value [binIndex];
1308+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_He3.value .size ()))
1309+ nSigmaHe3 += Tpc_mSigma_shift_He3.value [binIndex];
1310+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Al.value .size ()))
1311+ nSigmaHe4 += Tpc_mSigma_shift_Al.value [binIndex];
1312+
12561313 if (track.sign () > 0 ) {
12571314
1258- pion_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, track. tpcNSigmaPi () , event.centFT0C ());
1259- proton_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, track. tpcNSigmaPr () , event.centFT0C ());
1260- deuteron_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, track. tpcNSigmaDe () , event.centFT0C ());
1261- triton_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, track. tpcNSigmaTr () , event.centFT0C ());
1262- Helium3_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum * 2.0 , track. tpcNSigmaHe () , event.centFT0C ());
1263- Helium4_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum * 2.0 , track. tpcNSigmaAl () , event.centFT0C ());
1315+ pion_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, nSigmaPion , event.centFT0C ());
1316+ proton_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, nSigmaProton , event.centFT0C ());
1317+ deuteron_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, nSigmaDeut , event.centFT0C ());
1318+ triton_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, nSigmaTriton , event.centFT0C ());
1319+ Helium3_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum * 2.0 , nSigmaHe3 , event.centFT0C ());
1320+ Helium4_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum * 2.0 , nSigmaHe4 , event.centFT0C ());
12641321
12651322 if ((event.centFT0C () > minCentrality) && (event.centFT0C () < maxCentrality)) {
1266- pion_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, track. tpcNSigmaPi () , track.eta ());
1267- proton_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, track. tpcNSigmaPr () , track.eta ());
1268- deuteron_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, track. tpcNSigmaDe () , track.eta ());
1269- triton_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, track. tpcNSigmaTr () , track.eta ());
1270- Helium3_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum * 2.0 , track. tpcNSigmaHe () , track.eta ());
1271- Helium4_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum * 2.0 , track. tpcNSigmaAl () , track.eta ());
1323+ pion_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, nSigmaPion , track.eta ());
1324+ proton_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, nSigmaProton , track.eta ());
1325+ deuteron_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, nSigmaDeut , track.eta ());
1326+ triton_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, nSigmaTriton , track.eta ());
1327+ Helium3_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum * 2.0 , nSigmaHe3 , track.eta ());
1328+ Helium4_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum * 2.0 , nSigmaHe4 , track.eta ());
12721329 }
12731330
12741331 if (track.hasTOF ()) {
@@ -1316,20 +1373,20 @@ struct NucleiHistTask {
13161373
13171374 if (track.sign () < 0 ) {
13181375
1319- apion_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, track. tpcNSigmaPi () , event.centFT0C ());
1320- aproton_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, track. tpcNSigmaPr () , event.centFT0C ());
1321- adeuteron_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, track. tpcNSigmaDe () , event.centFT0C ());
1322- atriton_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, track. tpcNSigmaTr () , event.centFT0C ());
1323- aHelium3_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum * 2.0 , track. tpcNSigmaHe () , event.centFT0C ());
1324- aHelium4_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum * 2.0 , track. tpcNSigmaAl () , event.centFT0C ());
1376+ apion_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, nSigmaPion , event.centFT0C ());
1377+ aproton_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, nSigmaProton , event.centFT0C ());
1378+ adeuteron_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, nSigmaDeut , event.centFT0C ());
1379+ atriton_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum, nSigmaTriton , event.centFT0C ());
1380+ aHelium3_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum * 2.0 , nSigmaHe3 , event.centFT0C ());
1381+ aHelium4_reg.fill (HIST (" histTpcNsigmaData_cent" ), momentum * 2.0 , nSigmaHe4 , event.centFT0C ());
13251382
13261383 if ((event.centFT0C () > minCentrality) && (event.centFT0C () < maxCentrality)) {
1327- apion_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, track. tpcNSigmaPi () , track.eta ());
1328- aproton_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, track. tpcNSigmaPr () , track.eta ());
1329- adeuteron_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, track. tpcNSigmaDe () , track.eta ());
1330- atriton_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, track. tpcNSigmaTr () , track.eta ());
1331- aHelium3_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum * 2.0 , track. tpcNSigmaHe () , track.eta ());
1332- aHelium4_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum * 2.0 , track. tpcNSigmaAl () , track.eta ());
1384+ apion_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, nSigmaPion , track.eta ());
1385+ aproton_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, nSigmaProton , track.eta ());
1386+ adeuteron_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, nSigmaDeut , track.eta ());
1387+ atriton_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum, nSigmaTriton , track.eta ());
1388+ aHelium3_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum * 2.0 , nSigmaHe3 , track.eta ());
1389+ aHelium4_reg.fill (HIST (" histTpcNsigmaData_eta" ), momentum * 2.0 , nSigmaHe4 , track.eta ());
13331390 }
13341391
13351392 if (track.hasTOF ()) {
@@ -1658,6 +1715,20 @@ struct NucleiHistTask {
16581715 float nSigmaHe3 = track.tpcNSigmaHe ();
16591716 float nSigmaHe4 = track.tpcNSigmaAl ();
16601717
1718+ int binIndex = getBinIndex (ptBinning, momentum);
1719+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Pi.value .size ()))
1720+ nSigmaPion += Tpc_mSigma_shift_Pi.value [binIndex];
1721+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Pr.value .size ()))
1722+ nSigmaProton += Tpc_mSigma_shift_Pr.value [binIndex];
1723+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_De.value .size ()))
1724+ nSigmaDeuteron += Tpc_mSigma_shift_De.value [binIndex];
1725+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Tr.value .size ()))
1726+ nSigmaTriton += Tpc_mSigma_shift_Tr.value [binIndex];
1727+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_He3.value .size ()))
1728+ nSigmaHe3 += Tpc_mSigma_shift_He3.value [binIndex];
1729+ if (binIndex >= 0 && binIndex < static_cast <int >(Tpc_mSigma_shift_Al.value .size ()))
1730+ nSigmaHe4 += Tpc_mSigma_shift_Al.value [binIndex];
1731+
16611732 if (track.sign () > 0 ) {
16621733 MC_recon_reg.fill (HIST (" histTpcNsigmaDataPi" ), momentum, nSigmaPion);
16631734 MC_recon_reg.fill (HIST (" histTpcNsigmaDataPr" ), momentum, nSigmaProton);
0 commit comments