//____________________________________________________________________ // // $Id$ // // Test of AliFMDAltro{Reader,Writer} // /** @ingroup simple_script */ UShort_t MakeADC(UShort_t d, UShort_t q, UShort_t s, UShort_t t) { return t & 0x3FF; } void MakeData(TClonesArray& array, AliFMDUShortMap& map) { size_t i = 0; for (size_t d = 1; d <= 3; d++) { size_t nRng = (d == 1 ? 1 : 2); for (size_t q = 0; q < nRng; q++) { Char_t r = (q == 0 ? 'I' : 'O'); size_t nSec = (q == 0 ? 20 : 40); size_t nStr = (q == 0 ? 512 : 256); for (size_t s = 0; s < nSec; s++) { for (size_t t = 0; t < nStr; t++) { UShort_t adc = MakeADC(d, q, s, t); new (array[i++]) AliFMDDigit(d, r, s, t, adc, adc, adc, adc); map(d,r,s,t) = adc; } } } } } void CompareData(TClonesArray& in, const AliFMDUShortMap& map) { size_t i = 0; for (size_t i = 0; i < in.GetEntries(); i++) { AliFMDDigit* inD = static_cast(in.At(i)); // AliFMDDigit* outD = static_cast(out.At(i)); UShort_t out = map(inD->Detector(), inD->Ring(), inD->Sector(), inD->Strip()); if (out != inD->Counts()) { std::cout << "Entries " << i << " does not match up - expected " << out << "\n "; inD->Print(); } } } void TestRawIO() { AliCDBManager* cdb = AliCDBManager::Instance(); cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); cdb->SetRun(0); AliFMDParameters* param = AliFMDParameters::Instance(); param->Init(); TClonesArray out("AliFMDDigit"); AliFMDUShortMap map(0); MakeData(out, map); AliFMDRawWriter writer(0); writer.WriteDigits(&out); // gSystem->mkdir("raw0"); // gSystem->Rename("FMD_3072.ddl", "raw0/FMD_3072.ddl"); // gSystem->Rename("FMD_3073.ddl", "raw0/FMD_3073.ddl"); // gSystem->Rename("FMD_3074.ddl", "raw0/FMD_3074.ddl"); AliRawReader* raw = AliRawReader::Create("./"); AliFMDRawReader reader(raw, 0); TClonesArray in("AliFMDDigit"); raw->NextEvent(); reader.ReadAdcs(&in); std::cout << "Got " << in.GetEntries() << std::endl; CompareData(in, map); } //____________________________________________________________________ // // EOF //