@@ -25,25 +25,41 @@ template <typename T>
2525auto printArray (std::vector<T> const & vec)
2626{
2727 std::stringstream ss;
28- ss << " [" ;
29- auto count = 0u ;
30- for (auto & entry : vec) {
31- ss << entry;
32- if (count < vec.size () - 1 ) {
33- ss << " ," ;
34- }
35- ++count;
28+ ss << " [" << vec[0 ];
29+ for (auto i = 1u ; i < vec.size (); ++i) {
30+ ss << " , " << vec[i];
3631 }
3732 ss << " ]" ;
3833 return ss.str ();
3934}
4035
36+ template <typename T>
37+ auto printMatrix (Array2D<T> const & m)
38+ {
39+ std::stringstream ss;
40+ ss << " [[" << m (0 , 0 );
41+ for (auto i = 1u ; i < m.cols ; ++i) {
42+ ss << " ," << m (0 , i);
43+ }
44+ for (auto i = 1u ; i < m.rows ; ++i) {
45+ ss << " ], [" << m (i, 0 );
46+ for (auto j = 1u ; j < m.cols ; ++j) {
47+ ss << " ," << m (i, j);
48+ }
49+ }
50+ ss << " ]]" ;
51+ return ss.str ();
52+ }
53+
54+ static constexpr float defaultm[3 ][4 ] = {{1.1 , 1.2 , 1.3 , 1.4 }, {2.1 , 2.2 , 2.3 , 2.4 }, {3.1 , 3.2 , 3.3 , 3.4 }};
55+
4156struct ConfigurableObjectDemo {
4257 Configurable<configurableCut> cut{" cut" , {0.5 , 1 , true }, " generic cut" };
4358 MutableConfigurable<configurableCut> mutable_cut{" mutable_cut" , {1 ., 2 , false }, " generic cut" };
4459
4560 // note that size is fixed by this declaration - externally supplied vector needs to be the same size!
4661 Configurable<std::vector<int >> array{" array" , {0 , 0 , 0 , 0 , 0 , 0 , 0 }, " generic array" };
62+ Configurable<Array2D<float >> vmatrix{" matrix" , {&defaultm[0 ][0 ], 3 , 4 }, " generic matrix" };
4763
4864 void init (InitContext const &){};
4965 void process (aod::Collision const &, aod::Tracks const & tracks)
@@ -53,7 +69,8 @@ struct ConfigurableObjectDemo {
5369 LOGF (INFO, " Cut1 labels: %s; Cut2 labels: %s" , printArray (cut->getLabels ()), printArray (mutable_cut->getLabels ()));
5470 auto vec = (std::vector<int >)array;
5571 LOGF (INFO, " Array: %s" , printArray (vec).c_str ());
56- for (auto & track : tracks) {
72+ LOGF (INFO, " Matrix: %s" , printMatrix ((Array2D<float >)vmatrix));
73+ for (auto const & track : tracks) {
5774 if (track.globalIndex () % 500 == 0 ) {
5875 std::string decision1;
5976 std::string decision2;
0 commit comments