Skip to content

Commit 0dd9945

Browse files
committed
Changes to data model, stratof
1 parent 281b383 commit 0dd9945

File tree

4 files changed

+278
-165
lines changed

4 files changed

+278
-165
lines changed

PWGLF/DataModel/LFStrangenessPIDTables.h

Lines changed: 121 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,144 @@
1919
#include "Framework/AnalysisDataModel.h"
2020
#include "Common/Core/RecoDecay.h"
2121
#include "CommonConstants/PhysicsConstants.h"
22+
#include "PWGLF/DataModel/LFStrangenessTables.h"
2223

2324
namespace o2::aod
2425
{
2526
namespace dautrack
2627
{
27-
// ==== TPC INFORMATION ===
28-
DECLARE_SOA_COLUMN(TPCSignal, tpcSignal, float); //! track TPC signal
28+
// ==== define packing helpers ===
29+
namespace packing
30+
{
31+
// define variables for packing
32+
static constexpr int nbins = (1 << 8 * sizeof(int8_t)) - 2;
33+
static constexpr int8_t overflowBin = nbins >> 1;
34+
static constexpr int8_t underflowBin = -(nbins >> 1);
35+
static constexpr float binned_max = 6.35;
36+
static constexpr float binned_min = -6.35;
37+
static constexpr float bin_width = (binned_max - binned_min) / nbins;
38+
static constexpr float underflow_return = -100.0f;
39+
static constexpr float overflow_return = +100.0f;
40+
41+
// define helper function to do packing
42+
int8_t packInInt8(float nSigma){
43+
// calculate
44+
if(nSigma<=binned_min) return underflowBin;
45+
if(nSigma>=binned_max) return overflowBin;
46+
if(nSigma>=0){
47+
return static_cast<int8_t>((nSigma/bin_width)+0.5f);
48+
}
49+
// automatic: this is the case in which nSigma < 0
50+
return static_cast<int8_t>((nSigma/bin_width)-0.5f);
51+
}
52+
53+
// define helper function to do unpacking
54+
float unpackInt8(int8_t nSigma){
55+
if(nSigma == underflowBin){
56+
return underflow_return;
57+
}
58+
if(nSigma == overflowBin){
59+
return overflow_return;
60+
}
61+
return bin_width*nSigma;
62+
}
63+
64+
} // end packing namespace
65+
} // end dautrack namespace
66+
67+
namespace dautrack_legacy
68+
{
69+
// ==== LEGACY TPC INFORMATION (full size tables) ===
2970
DECLARE_SOA_COLUMN(TPCNSigmaEl, tpcNSigmaEl, float); //! Nsigma proton
3071
DECLARE_SOA_COLUMN(TPCNSigmaPi, tpcNSigmaPi, float); //! Nsigma proton
3172
DECLARE_SOA_COLUMN(TPCNSigmaKa, tpcNSigmaKa, float); //! Nsigma proton
3273
DECLARE_SOA_COLUMN(TPCNSigmaPr, tpcNSigmaPr, float); //! Nsigma proton
3374
DECLARE_SOA_COLUMN(TPCNSigmaHe, tpcNSigmaHe, float); //! Nsigma proton
75+
}
76+
77+
namespace dautrack{
78+
// ==== COMPACT TPC INFORMATION (full size tables) ===
79+
DECLARE_SOA_COLUMN(TPCSignal, tpcSignal, float); //! track TPC signal
80+
DECLARE_SOA_COLUMN(PackedTPCNSigmaEl, packedTpcNSigmaEl, int8_t); //! Nsigma proton
81+
DECLARE_SOA_COLUMN(PackedTPCNSigmaPi, packedTpcNSigmaPi, int8_t); //! Nsigma proton
82+
DECLARE_SOA_COLUMN(PackedTPCNSigmaKa, packedTpcNSigmaKa, int8_t); //! Nsigma proton
83+
DECLARE_SOA_COLUMN(PackedTPCNSigmaPr, packgedTpcNSigmaPr, int8_t); //! Nsigma proton
84+
85+
DECLARE_SOA_DYNAMIC_COLUMN(TPCNSigmaEl, tpcNSigmaEl, //! unpacked TPC nsigma
86+
[](int8_t nsigma_packed) -> float { return o2::aod::dautrack::packing::unpackInt8(nsigma_packed); });
87+
DECLARE_SOA_DYNAMIC_COLUMN(TPCNSigmaPi, tpcNSigmaPi, //! unpacked TPC nsigma
88+
[](int8_t nsigma_packed) -> float { return o2::aod::dautrack::packing::unpackInt8(nsigma_packed); });
89+
DECLARE_SOA_DYNAMIC_COLUMN(TPCNSigmaKa, tpcNSigmaKa, //! unpacked TPC nsigma
90+
[](int8_t nsigma_packed) -> float { return o2::aod::dautrack::packing::unpackInt8(nsigma_packed); });
91+
DECLARE_SOA_DYNAMIC_COLUMN(TPCNSigmaPr, tpcNSigmaPr, //! unpacked TPC nsigma
92+
[](int8_t nsigma_packed) -> float { return o2::aod::dautrack::packing::unpackInt8(nsigma_packed); });
3493

3594
// ==== TOF INFORMATION ===
95+
DECLARE_SOA_INDEX_COLUMN(DauTrackExtra, dauTrackExtra); //! point to daughter this TOF info belongs to
96+
DECLARE_SOA_INDEX_COLUMN(StraCollision, straCollision); //! point to collision associated with this track (not the V0/Casc)
3697
DECLARE_SOA_COLUMN(TOFSignal, tofSignal, float); //! track TOF signal
37-
DECLARE_SOA_COLUMN(TOFEvTime, tofEvTime, float); //! track TOF signal
38-
DECLARE_SOA_COLUMN(Length, length, float); //! track TOF signal
98+
DECLARE_SOA_COLUMN(TOFEvTime, tofEvTime, float); //! event time
99+
DECLARE_SOA_COLUMN(Length, length, float); //! track length (to assigned PV)
100+
DECLARE_SOA_COLUMN(TOFExpMom, tofExpMom, float); //! tof Exp Mom (to assigned PV)
101+
102+
// dynamics with expected times
103+
DECLARE_SOA_DYNAMIC_COLUMN(TOFExpTimeEl, tofExpTimeEl, //! Expected time for the track to reach the TOF under the electron hypothesis
104+
[](float length, float tofExpMom) -> float {
105+
constexpr float massSquared = o2::constants::physics::MassElectron * o2::constants::physics::MassElectron;
106+
return o2::framework::pid::tof::MassToExpTime(tofExpMom, length, massSquared);
107+
});
108+
109+
DECLARE_SOA_DYNAMIC_COLUMN(TOFExpTimePi, tofExpTimePi, //! Expected time for the track to reach the TOF under the pion hypothesis
110+
[](float length, float tofExpMom) -> float {
111+
constexpr float massSquared = o2::constants::physics::MassPionCharged * o2::constants::physics::MassPionCharged;
112+
return o2::framework::pid::tof::MassToExpTime(tofExpMom, length, massSquared);
113+
});
114+
115+
DECLARE_SOA_DYNAMIC_COLUMN(TOFExpTimeKa, tofExpTimeKa, //! Expected time for the track to reach the TOF under the kaon hypothesis
116+
[](float length, float tofExpMom) -> float {
117+
constexpr float massSquared = o2::constants::physics::MassKaonCharged * o2::constants::physics::MassKaonCharged;
118+
return o2::framework::pid::tof::MassToExpTime(tofExpMom, length, massSquared);
119+
});
120+
121+
DECLARE_SOA_DYNAMIC_COLUMN(TOFExpTimePr, tofExpTimePr, //! Expected time for the track to reach the TOF under the proton hypothesis
122+
[](float length, float tofExpMom) -> float {
123+
constexpr float massSquared = o2::constants::physics::MassProton * o2::constants::physics::MassProton;
124+
return o2::framework::pid::tof::MassToExpTime(tofExpMom, length, massSquared);
125+
});
126+
39127
} // namespace dautrack
40128

41-
DECLARE_SOA_TABLE(DauTrackTPCPIDs, "AOD", "DAUTRACKTPCPID", // nsigma table (for analysis)
42-
dautrack::TPCSignal, dautrack::TPCNSigmaEl,
43-
dautrack::TPCNSigmaPi, dautrack::TPCNSigmaKa,
44-
dautrack::TPCNSigmaPr, dautrack::TPCNSigmaHe);
45-
DECLARE_SOA_TABLE(DauTrackTOFPIDs, "AOD", "DAUTRACKTOFPID", // raw table (for posterior TOF calculation)
129+
DECLARE_SOA_TABLE(DauTrackTPCPIDs_000, "AOD", "DAUTRACKTPCPID", // nsigma table (for analysis)
130+
dautrack::TPCSignal, dautrack_legacy::TPCNSigmaEl,
131+
dautrack_legacy::TPCNSigmaPi, dautrack_legacy::TPCNSigmaKa,
132+
dautrack_legacy::TPCNSigmaPr, dautrack_legacy::TPCNSigmaHe);
133+
134+
DECLARE_SOA_TABLE_VERSIONED(DauTrackTPCPIDs_001, "AOD", "DAUTRACKTPCPID", 1, // nsigma table (for analysis)
135+
dautrack::TPCSignal,
136+
dautrack::PackedTPCNSigmaEl, dautrack::PackedTPCNSigmaPi,
137+
dautrack::PackedTPCNSigmaKa, dautrack::PackedTPCNSigmaPr,
138+
dautrack::TPCNSigmaEl<dautrack::PackedTPCNSigmaEl>,
139+
dautrack::TPCNSigmaPi<dautrack::PackedTPCNSigmaPi>,
140+
dautrack::TPCNSigmaKa<dautrack::PackedTPCNSigmaKa>,
141+
dautrack::TPCNSigmaPr<dautrack::PackedTPCNSigmaPr>);
142+
143+
using DauTrackTPCPIDs = DauTrackTPCPIDs_001; // second gen: packed Nsigma, no He
144+
145+
DECLARE_SOA_TABLE(DauTrackTOFPIDs_000, "AOD", "DAUTRACKTOFPID", // raw table (for posterior TOF calculation)
46146
dautrack::TOFSignal, dautrack::TOFEvTime, dautrack::Length);
47147

148+
DECLARE_SOA_TABLE_VERSIONED(DauTrackTOFPIDs_001, "AOD", "DAUTRACKTOFPID", 1, // raw table (for posterior TOF calculation)
149+
o2::soa::Index<>,
150+
dautrack::StraCollisionId, dautrack::DauTrackExtraId,
151+
dautrack::TOFSignal, dautrack::TOFEvTime,
152+
dautrack::Length, dautrack::TOFExpMom,
153+
dautrack::TOFExpTimeEl<dautrack::Length, dautrack::TOFExpMom>,
154+
dautrack::TOFExpTimePi<dautrack::Length, dautrack::TOFExpMom>,
155+
dautrack::TOFExpTimeKa<dautrack::Length, dautrack::TOFExpMom>,
156+
dautrack::TOFExpTimePr<dautrack::Length, dautrack::TOFExpMom>);
157+
158+
using DauTrackTOFPIDs = DauTrackTOFPIDs_001; // second gen: with collision Id, with TOFExpMom
159+
48160
namespace v0data
49161
{
50162
// define constants for NSigma operation

PWGLF/TableProducer/Strangeness/Converters/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ o2physics_add_dpl_workflow(stradautrackstofpidconverter
1414
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
1515
COMPONENT_NAME Analysis)
1616

17+
o2physics_add_dpl_workflow(stradautrackstofpidconverter2
18+
SOURCES stradautrackstofpidconverter2.cxx
19+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
20+
COMPONENT_NAME Analysis)
21+
1722
o2physics_add_dpl_workflow(stradautracksextraconverter2
1823
SOURCES stradautracksextraconverter2.cxx
1924
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore

PWGLF/TableProducer/Strangeness/Converters/stradautrackstofpidconverter.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ struct stradautrackstofpidconverter {
5353
lTOFEvTimes[casc.bachTrackExtraId()] = casc.bachTOFEventTime();
5454
}
5555
for (int ii = 0; ii < dauTracks.size(); ii++) {
56-
dautracktofpids(lTOFSignals[ii], lTOFEvTimes[ii], lLengths[ii]);
56+
dautracktofpids(-1, -1, lTOFSignals[ii], lTOFEvTimes[ii], lLengths[ii], 0.0f);
5757
}
5858
}
5959
};

0 commit comments

Comments
 (0)