Skip to content

Commit 0a3b274

Browse files
committed
Add protection for DFs with zero reco collisions in TPC PID module
1 parent 82863ee commit 0a3b274

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

Common/Tools/PID/pidTPCModule.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -553,14 +553,14 @@ class pidTPCModule
553553
track_properties[counter_track_props + 1] = trk.tgl();
554554
track_properties[counter_track_props + 2] = trk.signed1Pt();
555555
track_properties[counter_track_props + 3] = o2::track::pid_constants::sMasses[j];
556-
track_properties[counter_track_props + 4] = trk.has_collision() ? mults[trk.collisionId()] / 11000. : 1.;
556+
track_properties[counter_track_props + 4] = (trk.has_collision() && mults.size() > 0) ? mults[trk.collisionId()] / 11000. : 1.;
557557
track_properties[counter_track_props + 5] = std::sqrt(nNclNormalization / trk.tpcNClsFound());
558558
if (input_dimensions == ExpectedInputDimensionsNNV2 && networkVersion == NetworkVersionV2) {
559-
track_properties[counter_track_props + 6] = trk.has_collision() ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.;
559+
track_properties[counter_track_props + 6] = (trk.has_collision() && mults.size() > 0) ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.;
560560
}
561561
if (input_dimensions == ExpectedInputDimensionsNNV3 && networkVersion == NetworkVersionV3) {
562-
track_properties[counter_track_props + 6] = trk.has_collision() ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.;
563-
if (trk.has_collision()) {
562+
track_properties[counter_track_props + 6] = (trk.has_collision() && mults.size() > 0) ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.;
563+
if (trk.has_collision() && mults.size() > 0) {
564564
if (collsys == CollisionSystemType::kCollSyspp) {
565565
track_properties[counter_track_props + 7] = hadronicRateForCollision[trk.collisionId()] / 1500.;
566566
} else {
@@ -577,8 +577,8 @@ class pidTPCModule
577577
}
578578

579579
if (input_dimensions == ExpectedInputDimensionsNNV4 && networkVersion == NetworkVersionV4) {
580-
track_properties[counter_track_props + 6] = trk.has_collision() ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.;
581-
if (trk.has_collision()) {
580+
track_properties[counter_track_props + 6] = (trk.has_collision() && mults.size() > 0) ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.;
581+
if (trk.has_collision() && mults.size() > 0) {
582582
if (collsys == CollisionSystemType::kCollSyspp) {
583583
track_properties[counter_track_props + 7] = hadronicRateForCollision[trk.collisionId()] / 1500.;
584584
} else {
@@ -706,7 +706,7 @@ class pidTPCModule
706706
// faster counting
707707
for (const auto& track : tracks) {
708708
if (track.hasTPC()) {
709-
if (track.collisionId() > -1) {
709+
if (track.has_collision() && cols.size() > 0) {
710710
pidmults[track.collisionId()]++;
711711
}
712712
totalTPCtracks++;
@@ -792,7 +792,7 @@ class pidTPCModule
792792
float tpcSignalToEvaluatePID = trk.tpcSignal();
793793

794794
int64_t multTPC = 0;
795-
if (trk.has_collision()) {
795+
if (trk.has_collision() && cols.size() > 0) {
796796
multTPC = pidmults[trk.collisionId()];
797797
}
798798

@@ -812,7 +812,7 @@ class pidTPCModule
812812

813813
double hadronicRate;
814814
int occupancy;
815-
if (trk.has_collision()) {
815+
if (trk.has_collision() && cols.size() > 0) {
816816
auto collision = cols.iteratorAt(trk.collisionId());
817817
hadronicRate = hadronicRateForCollision[trk.collisionId()];
818818
occupancy = collision.trackOccupancyInTimeRange();
@@ -873,7 +873,7 @@ class pidTPCModule
873873
}
874874
}
875875

876-
const auto& bc = trk.has_collision() ? cols.rawIteratorAt(trk.collisionId()).template bc_as<aod::BCsWithTimestamps>() : bcs.begin();
876+
const auto& bc = trk.has_collision() && cols.size() > 0 ? cols.rawIteratorAt(trk.collisionId()).template bc_as<aod::BCsWithTimestamps>() : bcs.begin();
877877
if (useCCDBParam && pidTPCopts.ccdbTimestamp.value == 0 && !ccdb->isCachedObjectValid(pidTPCopts.ccdbPath.value, bc.timestamp())) { // Updating parametrisation only if the initial timestamp is 0
878878
if (pidTPCopts.recoPass.value == "") {
879879
LOGP(info, "Retrieving latest TPC response object for timestamp {}:", bc.timestamp());

0 commit comments

Comments
 (0)