ROOT logo
//____________________________________________________________________
//
// $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<AliFMDDigit*>(in.At(i));
    // AliFMDDigit* outD = static_cast<AliFMDDigit*>(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
//
 TestRawIO.C:1
 TestRawIO.C:2
 TestRawIO.C:3
 TestRawIO.C:4
 TestRawIO.C:5
 TestRawIO.C:6
 TestRawIO.C:7
 TestRawIO.C:8
 TestRawIO.C:9
 TestRawIO.C:10
 TestRawIO.C:11
 TestRawIO.C:12
 TestRawIO.C:13
 TestRawIO.C:14
 TestRawIO.C:15
 TestRawIO.C:16
 TestRawIO.C:17
 TestRawIO.C:18
 TestRawIO.C:19
 TestRawIO.C:20
 TestRawIO.C:21
 TestRawIO.C:22
 TestRawIO.C:23
 TestRawIO.C:24
 TestRawIO.C:25
 TestRawIO.C:26
 TestRawIO.C:27
 TestRawIO.C:28
 TestRawIO.C:29
 TestRawIO.C:30
 TestRawIO.C:31
 TestRawIO.C:32
 TestRawIO.C:33
 TestRawIO.C:34
 TestRawIO.C:35
 TestRawIO.C:36
 TestRawIO.C:37
 TestRawIO.C:38
 TestRawIO.C:39
 TestRawIO.C:40
 TestRawIO.C:41
 TestRawIO.C:42
 TestRawIO.C:43
 TestRawIO.C:44
 TestRawIO.C:45
 TestRawIO.C:46
 TestRawIO.C:47
 TestRawIO.C:48
 TestRawIO.C:49
 TestRawIO.C:50
 TestRawIO.C:51
 TestRawIO.C:52
 TestRawIO.C:53
 TestRawIO.C:54
 TestRawIO.C:55
 TestRawIO.C:56
 TestRawIO.C:57
 TestRawIO.C:58
 TestRawIO.C:59
 TestRawIO.C:60
 TestRawIO.C:61
 TestRawIO.C:62
 TestRawIO.C:63
 TestRawIO.C:64
 TestRawIO.C:65
 TestRawIO.C:66
 TestRawIO.C:67
 TestRawIO.C:68
 TestRawIO.C:69
 TestRawIO.C:70
 TestRawIO.C:71
 TestRawIO.C:72
 TestRawIO.C:73
 TestRawIO.C:74
 TestRawIO.C:75
 TestRawIO.C:76
 TestRawIO.C:77
 TestRawIO.C:78
 TestRawIO.C:79
 TestRawIO.C:80
 TestRawIO.C:81
 TestRawIO.C:82
 TestRawIO.C:83
 TestRawIO.C:84
 TestRawIO.C:85
 TestRawIO.C:86
 TestRawIO.C:87
 TestRawIO.C:88
 TestRawIO.C:89
 TestRawIO.C:90