Newer
Older
/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
Sergei Zharko
committed
SPDX-License-Identifier: GPL-3.0-only
Authors: Sergey Gorbunov, Sergei Zharko [committer] */
/************************************************************************************************************
* @file L1Constants.h
* @brief Compile-time constants definition for the L1 tracking algorithm
* @since 02.06.2022
* @author S.Zharko <s.zharko@gsi.de>
***********************************************************************************************************/
#ifndef L1Constants_h
#define L1Constants_h 1
/// Namespace contains compile-time constants definition for the L1 tracking algorithm
namespace L1Constants
{
Sergei Zharko
committed
/// Array sizes
namespace size
{
Sergei Zharko
committed
/// Amount of coefficients in field approximations
constexpr int kMaxNFieldApproxCoefficients {21}; // TODO: May be it is better to use the polynomial
// order instead of this?
Sergei Zharko
committed
/// Order of polynomial to approximate field in the vicinity of station plane
constexpr int kMaxFieldApproxPolynomialOrder {5};
Sergei Zharko
committed
/// Amount of bits to code a station, thread or triplet. This values determine the ma
constexpr unsigned int kStationBits {6u}; ///< Amount of bits to code one station
constexpr unsigned int kThreadBits {6u}; ///< Amount of bits to code one thread
Sergei Zharko
committed
constexpr unsigned int kTripletBits {32u - kStationBits - kThreadBits}; ///< Amount of bits to code one triplet
Sergei Zharko
committed
constexpr int kMaxNdetectors {5}; ///< Max number of tracking detectors
constexpr int kMaxNstations {1u << kStationBits}; ///< Max number of stations, 2^6 = 64
constexpr int kMaxNthreads {1u << kThreadBits}; ///< Max number of threads, 2^6 = 64
constexpr int kMaxNtriplets {1u << kTripletBits}; ///< Max number of triplets, 2^20 = 1,048,576
} // end namespace size
Sergei Zharko
committed
/// Control flags
namespace control
{
Sergei Zharko
committed
/// Flag for the radiation length tables usage
/// true - Radiational tables will be used,
/// false - basic station material info is used
constexpr bool kIfUseRadLengthTable {true};
/// Flag for calling the CAMergeClones procedure ... TODO
constexpr bool kIfMergeClones {true};
/// Flag: debug mode for analyzing the doublets pergormance efficiencies
//constexpr bool kIfDebugDoubletsPerformance {false};
Sergei Zharko
committed
/// Flag: debug mode for analyzing the tiplets pergormance efficiencies
//constexpr bool kIfDebugTripletsPerformance {false};
Sergei Zharko
committed
/// Flag: debug mode for creating pools for triplets.
/// NOTE: this feature will work only if the L1Parameters::kIfDebugTipletsPerformace is true!
//constexpr bool kIfCreateTripletPulls {false};
} // end namespace control
Sergei Zharko
committed
/// Miscellaneous constants
namespace misc
{
Sergei Zharko
committed
constexpr int kAssertionLevel {0}; ///< Assertion level
Sergei Zharko
committed
constexpr int kAlignment {16};
} // end namespace misc
} // end namespace L1Constants
Sergei Zharko
committed
#endif // L1Constants_h