@@ -131,6 +131,7 @@ constexpr static uint32_t gkEventFillMapWithMultsZdc = VarManager::ObjTypes::BC
131131constexpr static uint32_t gkEventFillMapWithMultsAndEventFilter = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::EventFilter;
132132constexpr static uint32_t gkEventFillMapWithMultsEventFilterZdc = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::EventFilter | VarManager::ObjTypes::Zdc;
133133constexpr static uint32_t gkEventFillMapWithMultsRapidityGapFilterZdc = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::RapidityGapFilter | VarManager::ObjTypes::Zdc;
134+ constexpr static uint32_t gkEventFillMapWithMultsRapidityGapFilterZdcFit = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::RapidityGapFilter | VarManager::ObjTypes::Zdc | VarManager::ObjTypes::ReducedFit;
134135// constexpr static uint32_t gkEventFillMapWithCent = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionCent;
135136constexpr static uint32_t gkEventFillMapWithCentAndMults = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionCent | VarManager::CollisionMult | VarManager::ObjTypes::CollisionMultExtra;
136137constexpr static uint32_t gkEventFillMapWithMultsExtra = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::CollisionMult | VarManager::ObjTypes::CollisionMultExtra;
@@ -167,6 +168,7 @@ struct TableMaker {
167168 Produces<ReducedEventsVtxCov> eventVtxCov;
168169 Produces<ReducedEventsInfo> eventInfo;
169170 Produces<ReducedZdcs> zdc;
171+ Produces<ReducedFITs> fit;
170172 Produces<ReducedEventsMultPV> multPV;
171173 Produces<ReducedEventsMultAll> multAll;
172174 Produces<ReducedTracksBarrelInfo> trackBarrelInfo;
@@ -861,6 +863,56 @@ struct TableMaker {
861863 VarManager::FillZDC (bc_zdc);
862864 }
863865 }
866+ // Fill FIT info using newbc pattern for UPC events (similar to ZDC)
867+ if constexpr ((TEventFillMap & VarManager::ObjTypes::ReducedFit) > 0 ) {
868+ if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0 ) {
869+ // The DQRapidityGapFilter contains the index of the bc we want to get FIT info from
870+ auto newbc = bcs.rawIteratorAt (collision.newBcIndex ());
871+ // Fill FIT information from newbc
872+ if (newbc.has_foundFT0 ()) {
873+ auto ft0 = newbc.foundFT0 ();
874+ VarManager::fgValues[VarManager::kTimeFT0A ] = ft0.timeA ();
875+ VarManager::fgValues[VarManager::kTimeFT0C ] = ft0.timeC ();
876+ const auto & ampsA = ft0.amplitudeA ();
877+ const auto & ampsC = ft0.amplitudeC ();
878+ VarManager::fgValues[VarManager::kAmplitudeFT0A ] = 0 .f ;
879+ for (auto amp : ampsA)
880+ VarManager::fgValues[VarManager::kAmplitudeFT0A ] += amp;
881+ VarManager::fgValues[VarManager::kAmplitudeFT0C ] = 0 .f ;
882+ for (auto amp : ampsC)
883+ VarManager::fgValues[VarManager::kAmplitudeFT0C ] += amp;
884+ VarManager::fgValues[VarManager::kNFiredChannelsFT0A ] = ft0.channelA ().size ();
885+ VarManager::fgValues[VarManager::kNFiredChannelsFT0C ] = ft0.channelC ().size ();
886+ VarManager::fgValues[VarManager::kTriggerMaskFT0 ] = ft0.triggerMask ();
887+ }
888+ if (newbc.has_foundFV0 ()) {
889+ auto fv0a = newbc.foundFV0 ();
890+ VarManager::fgValues[VarManager::kTimeFV0A ] = fv0a.time ();
891+ const auto & amps = fv0a.amplitude ();
892+ VarManager::fgValues[VarManager::kAmplitudeFV0A ] = 0 .f ;
893+ for (auto amp : amps)
894+ VarManager::fgValues[VarManager::kAmplitudeFV0A ] += amp;
895+ VarManager::fgValues[VarManager::kNFiredChannelsFV0A ] = fv0a.channel ().size ();
896+ VarManager::fgValues[VarManager::kTriggerMaskFV0A ] = fv0a.triggerMask ();
897+ }
898+ if (newbc.has_foundFDD ()) {
899+ auto fdd = newbc.foundFDD ();
900+ VarManager::fgValues[VarManager::kTimeFDDA ] = fdd.timeA ();
901+ VarManager::fgValues[VarManager::kTimeFDDC ] = fdd.timeC ();
902+ const auto & ampsA = fdd.chargeA ();
903+ const auto & ampsC = fdd.chargeC ();
904+ VarManager::fgValues[VarManager::kAmplitudeFDDA ] = 0 .f ;
905+ for (auto amp : ampsA)
906+ VarManager::fgValues[VarManager::kAmplitudeFDDA ] += amp;
907+ VarManager::fgValues[VarManager::kAmplitudeFDDC ] = 0 .f ;
908+ for (auto amp : ampsC)
909+ VarManager::fgValues[VarManager::kAmplitudeFDDC ] += amp;
910+ VarManager::fgValues[VarManager::kNFiredChannelsFDDA ] = fdd.channelA ().size ();
911+ VarManager::fgValues[VarManager::kNFiredChannelsFDDC ] = fdd.channelC ().size ();
912+ VarManager::fgValues[VarManager::kTriggerMaskFDD ] = fdd.triggerMask ();
913+ }
914+ }
915+ }
864916 if constexpr ((TEventFillMap & VarManager::ObjTypes::CollisionMultExtra) > 0 && (TTrackFillMap & VarManager::ObjTypes::Track) > 0 && (TTrackFillMap & VarManager::ObjTypes::TrackDCA) > 0 ) {
865917 auto groupedTrackIndices = trackAssocs.sliceBy (trackIndicesPerCollision, collision.globalIndex ());
866918 VarManager::FillEventTrackEstimators<TTrackFillMap>(collision, groupedTrackIndices, tracks);
@@ -968,6 +1020,37 @@ struct TableMaker {
9681020 zdc (-1.0 , -1.0 , -1.0 , -1.0 , -1.0 , -1.0 , -1.0 , -1.0 );
9691021 }
9701022 }
1023+ // Fill FIT table if requested
1024+ if constexpr ((TEventFillMap & VarManager::ObjTypes::ReducedFit) > 0 ) {
1025+ fit (VarManager::fgValues[VarManager::kAmplitudeFT0A ], VarManager::fgValues[VarManager::kAmplitudeFT0C ],
1026+ VarManager::fgValues[VarManager::kTimeFT0A ], VarManager::fgValues[VarManager::kTimeFT0C ],
1027+ static_cast <uint8_t >(VarManager::fgValues[VarManager::kTriggerMaskFT0 ]),
1028+ static_cast <int >(VarManager::fgValues[VarManager::kNFiredChannelsFT0A ]),
1029+ static_cast <int >(VarManager::fgValues[VarManager::kNFiredChannelsFT0C ]),
1030+ VarManager::fgValues[VarManager::kAmplitudeFDDA ], VarManager::fgValues[VarManager::kAmplitudeFDDC ],
1031+ VarManager::fgValues[VarManager::kTimeFDDA ], VarManager::fgValues[VarManager::kTimeFDDC ],
1032+ static_cast <uint8_t >(VarManager::fgValues[VarManager::kTriggerMaskFDD ]),
1033+ static_cast <int >(VarManager::fgValues[VarManager::kNFiredChannelsFDDA ]),
1034+ static_cast <int >(VarManager::fgValues[VarManager::kNFiredChannelsFDDC ]),
1035+ VarManager::fgValues[VarManager::kAmplitudeFV0A ], VarManager::fgValues[VarManager::kTimeFV0A ],
1036+ static_cast <uint8_t >(VarManager::fgValues[VarManager::kTriggerMaskFV0A ]),
1037+ static_cast <int >(VarManager::fgValues[VarManager::kNFiredChannelsFV0A ]),
1038+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBBFT0Apf ]),
1039+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBGFT0Apf ]),
1040+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBBFT0Cpf ]),
1041+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBGFT0Cpf ]),
1042+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBBFV0Apf ]),
1043+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBGFV0Apf ]),
1044+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBBFDDApf ]),
1045+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBGFDDApf ]),
1046+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBBFDDCpf ]),
1047+ static_cast <int32_t >(VarManager::fgValues[VarManager::kBGFDDCpf ]),
1048+ static_cast <int32_t >(VarManager::fgValues[VarManager::kDistClosestBcTOR ]),
1049+ static_cast <int32_t >(VarManager::fgValues[VarManager::kDistClosestBcTSC ]),
1050+ static_cast <int32_t >(VarManager::fgValues[VarManager::kDistClosestBcTVX ]),
1051+ static_cast <int32_t >(VarManager::fgValues[VarManager::kDistClosestBcV0A ]),
1052+ static_cast <int32_t >(VarManager::fgValues[VarManager::kDistClosestBcT0A ]));
1053+ }
9711054 if constexpr ((TEventFillMap & VarManager::ObjTypes::CollisionMultExtra) > 0 ) {
9721055 multPV (collision.multNTracksHasITS (), collision.multNTracksHasTPC (), collision.multNTracksHasTOF (), collision.multNTracksHasTRD (),
9731056 collision.multNTracksITSOnly (), collision.multNTracksTPCOnly (), collision.multNTracksITSTPC (),
0 commit comments