diff --git a/PWGJE/Core/JetDerivedDataUtilities.h b/PWGJE/Core/JetDerivedDataUtilities.h index a859adc3530..0195ca3df07 100644 --- a/PWGJE/Core/JetDerivedDataUtilities.h +++ b/PWGJE/Core/JetDerivedDataUtilities.h @@ -54,6 +54,7 @@ enum JCollisionSel { selUPCSingleGapA = 10, selUPCSingleGapC = 11, selUPCDoubleGap = 12, + selTriggerTrackSignal = 13 // special bit for derived data. not used like other selection bits }; enum JCollisionSubGeneratorId { diff --git a/PWGJE/DataModel/JetReducedData.h b/PWGJE/DataModel/JetReducedData.h index 77f98dc0dbd..9f79d867083 100644 --- a/PWGJE/DataModel/JetReducedData.h +++ b/PWGJE/DataModel/JetReducedData.h @@ -100,7 +100,7 @@ DECLARE_SOA_COLUMN(AmplitudesFDDC, amplitudesFDDC, std::vector); DECLARE_SOA_COLUMN(HadronicRate, hadronicRate, float); DECLARE_SOA_COLUMN(Weight, weight, float); DECLARE_SOA_COLUMN(GetSubGeneratorId, getSubGeneratorId, int); -DECLARE_SOA_COLUMN(EventSel, eventSel, uint16_t); +DECLARE_SOA_COLUMN(EventSel, eventSel, uint16_t); // if the type is changed it also needs to be changed in derived data utilities and the writer DECLARE_SOA_BITMAP_COLUMN(Alias, alias, 32); DECLARE_SOA_BITMAP_COLUMN(Rct, rct, 32); DECLARE_SOA_COLUMN(TrackOccupancyInTimeRange, trackOccupancyInTimeRange, int); diff --git a/PWGJE/DataModel/JetReducedDataSelector.h b/PWGJE/DataModel/JetReducedDataSelector.h index 9529debc58e..2efcfec2476 100644 --- a/PWGJE/DataModel/JetReducedDataSelector.h +++ b/PWGJE/DataModel/JetReducedDataSelector.h @@ -26,14 +26,18 @@ namespace o2::aod namespace jetreduceddataselector { DECLARE_SOA_COLUMN(IsCollisionSelected, isCollisionSelected, bool); +DECLARE_SOA_COLUMN(IsCollisionSelectedForSignalTriggerTrack, isCollisionSelectedForSignalTriggerTrack, bool); DECLARE_SOA_COLUMN(IsMcCollisionSelected, isMcCollisionSelected, bool); +DECLARE_SOA_COLUMN(IsMcCollisionSelectedForSignalTriggerTrack, isMcCollisionSelectedForSignalTriggerTrack, bool); } // namespace jetreduceddataselector DECLARE_SOA_TABLE(JCollisionSelections, "AOD", "JCOLLSELECTION", - jetreduceddataselector::IsCollisionSelected); + jetreduceddataselector::IsCollisionSelected, + jetreduceddataselector::IsCollisionSelectedForSignalTriggerTrack); DECLARE_SOA_TABLE(JMcCollisionSelections, "AOD", "JMCCOLLSELECTION", - jetreduceddataselector::IsMcCollisionSelected); + jetreduceddataselector::IsMcCollisionSelected, + jetreduceddataselector::IsMcCollisionSelectedForSignalTriggerTrack); } // namespace o2::aod #endif // PWGJE_DATAMODEL_JETREDUCEDDATASELECTOR_H_ diff --git a/PWGJE/TableProducer/derivedDataSelector.cxx b/PWGJE/TableProducer/derivedDataSelector.cxx index c9a0ca6ca32..ecd7aa3a292 100644 --- a/PWGJE/TableProducer/derivedDataSelector.cxx +++ b/PWGJE/TableProducer/derivedDataSelector.cxx @@ -524,20 +524,28 @@ struct JetDerivedDataSelector { void processStoreCollisionDecision(aod::JCollision const& collision) { + bool isSelectedForSignalTriggerTrack = false; + if (doprocessCollisionSplitting || doprocessCollisionSplittingMC) { + isSelectedForSignalTriggerTrack = collisionSplitFlag[collision.globalIndex()]; + } if (collisionFlag[collision.globalIndex()]) { - collisionSelectionsTable(true); + collisionSelectionsTable(true, isSelectedForSignalTriggerTrack); } else { - collisionSelectionsTable(false); + collisionSelectionsTable(false, isSelectedForSignalTriggerTrack); } } PROCESS_SWITCH(JetDerivedDataSelector, processStoreCollisionDecision, "write out decision of storing collision", true); void processStoreMcCollisionDecision(aod::JMcCollision const& mcCollision) { + bool isSelectedForSignalTriggerTrack = false; + if (doprocessCollisionSplittingMC) { + isSelectedForSignalTriggerTrack = mcCollisionSplitFlag[mcCollision.globalIndex()]; + } if (mcCollisionFlag[mcCollision.globalIndex()]) { - mcCollisionSelectionsTable(true); + mcCollisionSelectionsTable(true, isSelectedForSignalTriggerTrack); } else { - mcCollisionSelectionsTable(false); + mcCollisionSelectionsTable(false, isSelectedForSignalTriggerTrack); } } PROCESS_SWITCH(JetDerivedDataSelector, processStoreMcCollisionDecision, "write out decision of storing mcCollision", false); diff --git a/PWGJE/TableProducer/derivedDataWriter.cxx b/PWGJE/TableProducer/derivedDataWriter.cxx index 41f4d80d227..02c18e31317 100644 --- a/PWGJE/TableProducer/derivedDataWriter.cxx +++ b/PWGJE/TableProducer/derivedDataWriter.cxx @@ -482,7 +482,11 @@ struct JetDerivedDataWriter { for (auto const& collision : collisions) { if (collision.isCollisionSelected()) { - products.storedJCollisionsTable(bcMapping[collision.bcId()], collision.posX(), collision.posY(), collision.posZ(), collision.collisionTime(), collision.multFV0A(), collision.multFV0C(), collision.multFT0A(), collision.multFT0C(), collision.centFV0A(), collision.centFV0M(), collision.centFT0A(), collision.centFT0C(), collision.centFT0M(), collision.centFT0CVariant1(), collision.hadronicRate(), collision.trackOccupancyInTimeRange(), collision.alias_raw(), collision.eventSel(), collision.rct_raw(), collision.triggerSel()); + uint16_t eventSelection = collision.eventSel(); + if (collision.isCollisionSelectedForSignalTriggerTrack()) { + SETBIT(eventSelection, jetderiveddatautilities::JCollisionSel::selTriggerTrackSignal); + } + products.storedJCollisionsTable(bcMapping[collision.bcId()], collision.posX(), collision.posY(), collision.posZ(), collision.collisionTime(), collision.multFV0A(), collision.multFV0C(), collision.multFT0A(), collision.multFT0C(), collision.centFV0A(), collision.centFV0M(), collision.centFT0A(), collision.centFT0C(), collision.centFT0M(), collision.centFT0CVariant1(), collision.hadronicRate(), collision.trackOccupancyInTimeRange(), collision.alias_raw(), eventSelection, collision.rct_raw(), collision.triggerSel()); collisionMapping[collision.globalIndex()] = products.storedJCollisionsTable.lastIndex(); products.storedJCollisionMcInfosTable(collision.weight(), collision.getSubGeneratorId()); products.storedJCollisionsParentIndexTable(collision.collisionId()); @@ -685,7 +689,11 @@ struct JetDerivedDataWriter { mcCollisionMapping.resize(mcCollisions.size(), -1); for (auto const& mcCollision : mcCollisions) { if (mcCollision.isMcCollisionSelected()) { - products.storedJMcCollisionsTable(bcMapping[mcCollision.bcId()], mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), mcCollision.multFV0A(), mcCollision.multFT0A(), mcCollision.multFT0C(), mcCollision.centFT0M(), mcCollision.weight(), mcCollision.accepted(), mcCollision.attempted(), mcCollision.xsectGen(), mcCollision.xsectErr(), mcCollision.ptHard(), mcCollision.eventSel(), mcCollision.rct_raw(), mcCollision.getGeneratorId(), mcCollision.getSubGeneratorId(), mcCollision.getSourceId(), mcCollision.impactParameter(), mcCollision.eventPlaneAngle()); + uint16_t eventSelection = mcCollision.eventSel(); + if (mcCollision.isMcCollisionSelectedForSignalTriggerTrack()) { + SETBIT(eventSelection, jetderiveddatautilities::JCollisionSel::selTriggerTrackSignal); + } + products.storedJMcCollisionsTable(bcMapping[mcCollision.bcId()], mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), mcCollision.multFV0A(), mcCollision.multFT0A(), mcCollision.multFT0C(), mcCollision.centFT0M(), mcCollision.weight(), mcCollision.accepted(), mcCollision.attempted(), mcCollision.xsectGen(), mcCollision.xsectErr(), mcCollision.ptHard(), eventSelection, mcCollision.rct_raw(), mcCollision.getGeneratorId(), mcCollision.getSubGeneratorId(), mcCollision.getSourceId(), mcCollision.impactParameter(), mcCollision.eventPlaneAngle()); products.storedJMcCollisionsParentIndexTable(mcCollision.mcCollisionId()); mcCollisionMapping[mcCollision.globalIndex()] = products.storedJMcCollisionsTable.lastIndex(); }