2525namespace o2 ::delphes
2626{
2727
28+ void lutEntry_t::print () const
29+ {
30+ LOGF (info, " nch = %f, eta = %f, pt = %f, valid = %s\n " , nch, eta, pt, valid ? " true" : " false" );
31+ LOGF (info, " eff = %f, eff2 = %f, itof = %f, otof = %f\n " , eff, eff2, itof, otof);
32+ LOGF (info, " covm: " );
33+ for (int i = 0 ; i < 15 ; ++i) {
34+ LOGF (info, " %f " , covm[i]);
35+ }
36+ LOGF (info, " \n " );
37+ LOGF (info, " eigval: " );
38+ for (int i = 0 ; i < 5 ; ++i) {
39+ LOGF (info, " %f " , eigval[i]);
40+ }
41+ LOGF (info, " \n " );
42+ LOGF (info, " eigvec:\n " );
43+ for (int i = 0 ; i < 5 ; ++i) {
44+ for (int j = 0 ; j < 5 ; ++j) {
45+ LOGF (info, " %f " , eigvec[i][j]);
46+ }
47+ LOGF (info, " \n " );
48+ }
49+ LOGF (info, " eiginv:\n " );
50+ for (int i = 0 ; i < 5 ; ++i) {
51+ for (int j = 0 ; j < 5 ; ++j) {
52+ LOGF (info, " %f " , eiginv[i][j]);
53+ }
54+ LOGF (info, " \n " );
55+ }
56+ }
57+
2858float map_t::fracPositionWithinBin (float val) const
2959{
3060 float width = (max - min) / nbins;
@@ -90,10 +120,10 @@ void FlatLutData::initialize(const lutHeader_t& header)
90120 mEtaBins = header.etamap .nbins ;
91121 mPtBins = header.ptmap .nbins ;
92122
93- size_t headerSize = sizeof (lutHeader_t);
94- size_t numEntries = static_cast <size_t >(mNchBins ) * mRadBins * mEtaBins * mPtBins ;
95- size_t entriesSize = numEntries * sizeof (lutEntry_t);
96- size_t totalSize = headerSize + entriesSize;
123+ const size_t headerSize = sizeof (lutHeader_t);
124+ const size_t numEntries = static_cast <size_t >(mNchBins ) * mRadBins * mEtaBins * mPtBins ;
125+ const size_t entriesSize = numEntries * sizeof (lutEntry_t);
126+ const size_t totalSize = headerSize + entriesSize;
97127
98128 mData .resize (totalSize);
99129 // Write header at the beginning
@@ -103,13 +133,10 @@ void FlatLutData::initialize(const lutHeader_t& header)
103133
104134size_t FlatLutData::getEntryOffset (int nch_bin, int rad_bin, int eta_bin, int pt_bin) const
105135{
106- size_t headerSize = sizeof (lutHeader_t);
107-
108- // Linear index: nch varies slowest, pt varies fastest
109- // idx = nch * (rad*eta*pt) + rad * (eta*pt) + eta * pt + pt
110- size_t linearIdx = static_cast <size_t >(nch_bin) * (mRadBins * mEtaBins * mPtBins ) + static_cast <size_t >(rad_bin) * (mEtaBins * mPtBins ) + static_cast <size_t >(eta_bin) * mPtBins + static_cast <size_t >(pt_bin);
111-
112- return headerSize + linearIdx * sizeof (lutEntry_t);
136+ static constexpr size_t headerSize = sizeof (lutHeader_t);
137+ const size_t linearIdx = getEntryIndex (nch_bin, rad_bin, eta_bin, pt_bin);
138+ static constexpr size_t entrySize = sizeof (lutEntry_t);
139+ return headerSize + linearIdx * entrySize;
113140}
114141
115142const lutEntry_t* FlatLutData::getEntryRef (int nch_bin, int rad_bin, int eta_bin, int pt_bin) const
0 commit comments