2727#include " Common/Core/EventPlaneHelper.h"
2828#include " Common/Core/fwdtrackUtilities.h"
2929#include " Common/Core/trackUtilities.h"
30- #include " DataFormatsFIT/Triggers.h"
3130
31+ #include " DataFormatsFIT/Triggers.h"
3232#include < CommonConstants/LHCConstants.h>
3333#include < CommonConstants/PhysicsConstants.h>
3434#include < DCAFitter/DCAFitterN.h>
@@ -5333,29 +5333,32 @@ void VarManager::FillFIT(T const& obj, float* values)
53335333 values[kDistClosestBcV0A ] = obj.distClosestBcV0A ();
53345334 values[kDistClosestBcT0A ] = obj.distClosestBcT0A ();
53355335}
5336- namespace FITConstants {
5337- static constexpr uint64_t kPileupScanRange = 16 ;
5338- static constexpr float kFT0TimeThreshold = 2 .0f ;
5339- static constexpr float kDefaultAmplitude = -1 .f;
5340- static constexpr float kDefaultTime = -999 .f;
5341- static constexpr int32_t kDefaultDistance = 999 ;
5342- }
5336+ namespace FITConstants
5337+ {
5338+ static constexpr uint64_t kPileupScanRange = 16 ;
5339+ static constexpr float kFT0TimeThreshold = 2 .0f ;
5340+ static constexpr float kDefaultAmplitude = -1 .f;
5341+ static constexpr float kDefaultTime = -999 .f;
5342+ static constexpr int32_t kDefaultDistance = 999 ;
5343+ } // namespace FITConstants
53435344
53445345// Helper 함수로 pileup 스캔 로직 분리 (개선안 1)
53455346template <typename TBCs>
5346- static void FillPileupFlags (TBCs const & bcs, uint64_t midbc,
5347- int32_t & bgFT0Apf, int32_t & bgFT0Cpf, int32_t & bbFT0Apf, int32_t & bbFT0Cpf,
5348- int32_t & bgFV0Apf, int32_t & bbFV0Apf, int32_t & bgFDDApf, int32_t & bgFDDCpf,
5349- int32_t & bbFDDApf, int32_t & bbFDDCpf, int32_t & minDistTOR, int32_t & minDistTSC,
5350- int32_t & minDistTVX, int32_t & minDistV0A, int32_t & minDistT0A)
5347+ static void FillPileupFlags (TBCs const & bcs, uint64_t midbc,
5348+ int32_t & bgFT0Apf, int32_t & bgFT0Cpf, int32_t & bbFT0Apf, int32_t & bbFT0Cpf,
5349+ int32_t & bgFV0Apf, int32_t & bbFV0Apf, int32_t & bgFDDApf, int32_t & bgFDDCpf,
5350+ int32_t & bbFDDApf, int32_t & bbFDDCpf, int32_t & minDistTOR, int32_t & minDistTSC,
5351+ int32_t & minDistTVX, int32_t & minDistV0A, int32_t & minDistT0A)
53515352{
53525353 uint64_t leftBC = midbc >= FITConstants::kPileupScanRange ? midbc - FITConstants::kPileupScanRange : 0 ;
53535354 uint64_t rightBC = midbc + FITConstants::kPileupScanRange ;
53545355
53555356 for (auto const & scanbc : bcs) {
53565357 uint64_t bcnum = scanbc.globalBC ();
5357- if (bcnum < leftBC) continue ;
5358- if (bcnum > rightBC) break ;
5358+ if (bcnum < leftBC)
5359+ continue ;
5360+ if (bcnum > rightBC)
5361+ break ;
53595362
53605363 uint64_t bit = bcnum - leftBC;
53615364 int32_t dist = static_cast <int32_t >(bcnum) - static_cast <int32_t >(midbc);
@@ -5393,8 +5396,8 @@ static void FillPileupFlags(TBCs const& bcs, uint64_t midbc,
53935396 if (scanbc.has_ft0 ()) {
53945397 auto ft0 = scanbc.ft0 ();
53955398 bool hasValidTiming = (ft0.timeA () > -900 .f && ft0.timeC () > -900 .f );
5396- bool isTOR = hasValidTiming &&
5397- !(std::abs (ft0.timeA ()) > FITConstants::kFT0TimeThreshold &&
5399+ bool isTOR = hasValidTiming &&
5400+ !(std::abs (ft0.timeA ()) > FITConstants::kFT0TimeThreshold &&
53985401 std::abs (ft0.timeC ()) > FITConstants::kFT0TimeThreshold );
53995402 if (isTOR) {
54005403 if (std::abs (dist) < std::abs (minDistTOR)) {
@@ -5428,10 +5431,10 @@ static void FillPileupFlags(TBCs const& bcs, uint64_t midbc,
54285431 }
54295432
54305433 // Early exit if all closest BCs found (개선안 6)
5431- bool allFound = (minDistTOR != FITConstants::kDefaultDistance &&
5432- minDistTSC != FITConstants::kDefaultDistance &&
5433- minDistTVX != FITConstants::kDefaultDistance &&
5434- minDistV0A != FITConstants::kDefaultDistance &&
5434+ bool allFound = (minDistTOR != FITConstants::kDefaultDistance &&
5435+ minDistTSC != FITConstants::kDefaultDistance &&
5436+ minDistTVX != FITConstants::kDefaultDistance &&
5437+ minDistV0A != FITConstants::kDefaultDistance &&
54355438 minDistT0A != FITConstants::kDefaultDistance );
54365439 if (allFound && std::abs (dist) > static_cast <int32_t >(FITConstants::kPileupScanRange )) {
54375440 break ;
@@ -5441,38 +5444,40 @@ static void FillPileupFlags(TBCs const& bcs, uint64_t midbc,
54415444
54425445// Helper to detect C-style arrays
54435446template <typename T>
5444- struct is_c_array : std::false_type {};
5447+ struct is_c_array : std::false_type {
5448+ };
54455449
54465450template <typename T, size_t N>
5447- struct is_c_array <T[N]> : std::true_type {};
5451+ struct is_c_array <T[N]> : std::true_type {
5452+ };
54485453
54495454// Generic amplitude calculator supporting both std::vector, std::array and C-arrays
54505455template <typename T>
54515456std::pair<float , int > ComputeFITAmplitude (const T& amplitudes)
54525457{
5453- float sum = 0 .f ;
5454- int nFired = 0 ;
5455-
5456- if constexpr (is_c_array<T>::value) {
5457- // C-style array
5458- for (size_t i = 0 ; i < std::extent<T>::value; ++i) {
5459- auto a = amplitudes[i];
5460- if (a > 0 ) {
5461- sum += a;
5462- nFired++;
5463- }
5464- }
5465- } else {
5466- // Containers with begin() / end()
5467- for (auto a : amplitudes) {
5468- if (a > 0 ) {
5469- sum += a;
5470- nFired++;
5471- }
5472- }
5458+ float sum = 0 .f ;
5459+ int nFired = 0 ;
5460+
5461+ if constexpr (is_c_array<T>::value) {
5462+ // C-style array
5463+ for (size_t i = 0 ; i < std::extent<T>::value; ++i) {
5464+ auto a = amplitudes[i];
5465+ if (a > 0 ) {
5466+ sum += a;
5467+ nFired++;
5468+ }
54735469 }
5470+ } else {
5471+ // Containers with begin() / end()
5472+ for (auto a : amplitudes) {
5473+ if (a > 0 ) {
5474+ sum += a;
5475+ nFired++;
5476+ }
5477+ }
5478+ }
54745479
5475- return {sum, nFired};
5480+ return {sum, nFired};
54765481}
54775482
54785483template <typename TBC, typename TBCs>
@@ -5485,22 +5490,22 @@ void VarManager::FillFIT(TBC const& bc, TBCs const& bcs, float* values)
54855490 // Default initialize
54865491 values[kAmplitudeFT0A ] = FITConstants::kDefaultAmplitude ;
54875492 values[kAmplitudeFT0C ] = FITConstants::kDefaultAmplitude ;
5488- values[kTimeFT0A ] = FITConstants::kDefaultTime ;
5489- values[kTimeFT0C ] = FITConstants::kDefaultTime ;
5493+ values[kTimeFT0A ] = FITConstants::kDefaultTime ;
5494+ values[kTimeFT0C ] = FITConstants::kDefaultTime ;
54905495 values[kTriggerMaskFT0 ] = 0 ;
54915496 values[kNFiredChannelsFT0A ] = 0 ;
54925497 values[kNFiredChannelsFT0C ] = 0 ;
54935498
54945499 values[kAmplitudeFDDA ] = FITConstants::kDefaultAmplitude ;
54955500 values[kAmplitudeFDDC ] = FITConstants::kDefaultAmplitude ;
5496- values[kTimeFDDA ] = FITConstants::kDefaultTime ;
5497- values[kTimeFDDC ] = FITConstants::kDefaultTime ;
5501+ values[kTimeFDDA ] = FITConstants::kDefaultTime ;
5502+ values[kTimeFDDC ] = FITConstants::kDefaultTime ;
54985503 values[kTriggerMaskFDD ] = 0 ;
54995504 values[kNFiredChannelsFDDA ] = 0 ;
55005505 values[kNFiredChannelsFDDC ] = 0 ;
55015506
55025507 values[kAmplitudeFV0A ] = FITConstants::kDefaultAmplitude ;
5503- values[kTimeFV0A ] = FITConstants::kDefaultTime ;
5508+ values[kTimeFV0A ] = FITConstants::kDefaultTime ;
55045509 values[kTriggerMaskFV0A ] = 0 ;
55055510 values[kNFiredChannelsFV0A ] = 0 ;
55065511
@@ -5514,10 +5519,12 @@ void VarManager::FillFIT(TBC const& bc, TBCs const& bcs, float* values)
55145519 auto [ampA, nA] = ComputeFITAmplitude (ft0.amplitudeA ());
55155520 auto [ampC, nC] = ComputeFITAmplitude (ft0.amplitudeC ());
55165521
5517- if (nA > 0 ) values[kAmplitudeFT0A ] = ampA;
5518- if (nC > 0 ) values[kAmplitudeFT0C ] = ampC;
5522+ if (nA > 0 )
5523+ values[kAmplitudeFT0A ] = ampA;
5524+ if (nC > 0 )
5525+ values[kAmplitudeFT0C ] = ampC;
55195526
5520- values[kTriggerMaskFT0 ] = ft0.triggerMask ();
5527+ values[kTriggerMaskFT0 ] = ft0.triggerMask ();
55215528 values[kNFiredChannelsFT0A ] = nA;
55225529 values[kNFiredChannelsFT0C ] = nC;
55235530 }
@@ -5529,7 +5536,8 @@ void VarManager::FillFIT(TBC const& bc, TBCs const& bcs, float* values)
55295536 values[kTimeFV0A ] = fv0a.time ();
55305537
55315538 auto [ampV0A, nV0A] = ComputeFITAmplitude (fv0a.amplitude ());
5532- if (nV0A > 0 ) values[kAmplitudeFV0A ] = ampV0A;
5539+ if (nV0A > 0 )
5540+ values[kAmplitudeFV0A ] = ampV0A;
55335541
55345542 values[kTriggerMaskFV0A ] = fv0a.triggerMask ();
55355543 values[kNFiredChannelsFV0A ] = nV0A;
@@ -5545,8 +5553,10 @@ void VarManager::FillFIT(TBC const& bc, TBCs const& bcs, float* values)
55455553 auto [ampA, nA] = ComputeFITAmplitude (fdd.chargeA ());
55465554 auto [ampC, nC] = ComputeFITAmplitude (fdd.chargeC ());
55475555
5548- if (nA > 0 ) values[kAmplitudeFDDA ] = ampA;
5549- if (nC > 0 ) values[kAmplitudeFDDC ] = ampC;
5556+ if (nA > 0 )
5557+ values[kAmplitudeFDDA ] = ampA;
5558+ if (nC > 0 )
5559+ values[kAmplitudeFDDC ] = ampC;
55505560
55515561 values[kTriggerMaskFDD ] = fdd.triggerMask ();
55525562 values[kNFiredChannelsFDDA ] = nA;
@@ -5567,10 +5577,10 @@ void VarManager::FillFIT(TBC const& bc, TBCs const& bcs, float* values)
55675577 int32_t minDistT0A = FITConstants::kDefaultDistance ;
55685578
55695579 FillPileupFlags (
5570- bcs, midbc,
5571- bgFT0Apf, bgFT0Cpf, bbFT0Apf, bbFT0Cpf,
5572- bgFV0Apf, bbFV0Apf, bgFDDApf, bgFDDCpf, bbFDDApf, bbFDDCpf,
5573- minDistTOR, minDistTSC, minDistTVX, minDistV0A, minDistT0A);
5580+ bcs, midbc,
5581+ bgFT0Apf, bgFT0Cpf, bbFT0Apf, bbFT0Cpf,
5582+ bgFV0Apf, bbFV0Apf, bgFDDApf, bgFDDCpf, bbFDDApf, bbFDDCpf,
5583+ minDistTOR, minDistTSC, minDistTVX, minDistV0A, minDistT0A);
55745584
55755585 // distance store
55765586 values[kDistClosestBcTOR ] = minDistTOR;
0 commit comments