//____________________________________________________________________ // // $Id$ // // Test I/O of ALiFMDMap // /** @file TestMap.C @author Christian Holm Christensen @date Sat Dec 16 01:29:03 2006 @brief Test of uniquenss of map @ingroup FMD_script */ #include "STEER/AliFMDFloatMap.h" #include #include #include #include struct Check { UShort_t d; Char_t r; UShort_t s; UShort_t t; Float_t v; }; std::ostream& operator<<(std::ostream& o, const Check& c) { UShort_t v = UShort_t(c.v); o << "FMD" << c.d << c.r << '[' << std::setw(2) << c.s << ',' << std::setw(3) << c.t << "] (" << std::setw(6) << v << ')'; return o; } Check Name(UShort_t d, Char_t r, UShort_t s, UShort_t t, Float_t v) { Check c; c.d = d; c.r = r; c.s = s; c.t = t; c.v = v; return c; } void TestMap() { AliFMDFloatMap m; // m.SetBit(AliFMDMap::kNeedUShort); typedef std::map CheckMap; CheckMap c; for (UShort_t d = 1; d <= 3; d++) { Char_t rings[] = { 'I', 'O', '\0' }; for (Char_t* rp = rings; *rp; rp++) { Char_t r = *rp; std::cout << "FMD" << d << r << " " << std::flush; for (UShort_t s = 0; s < 40; s++) { std::cout << "." << std::flush; for (UShort_t t = 0; t < 512; t++) { Int_t i = m.CheckIndex(d, r, s, t); CheckMap::iterator z = c.find(i); Float_t v = (t + 512 * (s + 40 * ((r=='I'? 0 : 1) + 2 * d))); if (z != c.end()) std::cout << '\n' << Name(d,r,s,t,v) << " but aleady seen " << z->second << std::flush; else { m(d,r,s,t) = v; c[i] = Name(d,r,s,t,v); } // else } // for t } // for s std::cout << "done" << std::endl; } } }