Script to get # of dead channels from OCDB
[u/mrichter/AliRoot.git] / FMD / scripts / TestRawIO.C
1 //____________________________________________________________________
2 //
3 // $Id$
4 //
5 // Test of AliFMDAltro{Reader,Writer}
6 //
7 /** @ingroup simple_script
8  */
9 UShort_t 
10 MakeADC(UShort_t d, UShort_t q, UShort_t s, UShort_t t)
11 {
12   return t & 0x3FF;
13 }
14 void 
15 MakeData(TClonesArray& array, AliFMDUShortMap& map)
16 {
17   size_t i = 0;
18   for (size_t d = 1; d <= 3; d++) { 
19     size_t nRng = (d == 1 ? 1 : 2);
20     for (size_t q = 0; q < nRng; q++) { 
21       Char_t r    = (q == 0 ? 'I' : 'O');
22       size_t nSec = (q == 0 ?  20 :  40);
23       size_t nStr = (q == 0 ? 512 : 256);
24       for (size_t s = 0; s < nSec; s++) { 
25         for (size_t t = 0; t < nStr; t++) { 
26           UShort_t adc = MakeADC(d, q, s, t);
27           new (array[i++]) AliFMDDigit(d, r, s, t, adc, adc, adc, adc);
28           map(d,r,s,t) = adc;
29         }
30       }
31     }
32   }
33 }
34 void 
35 CompareData(TClonesArray& in, const AliFMDUShortMap& map)
36 {
37   size_t i = 0;
38   for (size_t i = 0; i < in.GetEntries(); i++) { 
39     AliFMDDigit* inD  = static_cast<AliFMDDigit*>(in.At(i));
40     // AliFMDDigit* outD = static_cast<AliFMDDigit*>(out.At(i));
41
42     UShort_t out = map(inD->Detector(),
43                        inD->Ring(),
44                        inD->Sector(),
45                        inD->Strip());
46     if (out != inD->Counts()) {
47       std::cout << "Entries " << i << " does not match up - expected " 
48                 << out << "\n  ";
49       inD->Print();
50     }
51   }
52 }
53
54 void
55 TestRawIO()
56 {
57   AliCDBManager*    cdb   = AliCDBManager::Instance();
58   cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
59   cdb->SetRun(0);
60
61   AliFMDParameters* param = AliFMDParameters::Instance();
62   param->Init();
63
64   TClonesArray    out("AliFMDDigit");
65   AliFMDUShortMap map(0);
66   MakeData(out, map);
67
68   AliFMDRawWriter writer(0);
69   writer.WriteDigits(&out);
70
71   // gSystem->mkdir("raw0");
72   // gSystem->Rename("FMD_3072.ddl", "raw0/FMD_3072.ddl");
73   // gSystem->Rename("FMD_3073.ddl", "raw0/FMD_3073.ddl");
74   // gSystem->Rename("FMD_3074.ddl", "raw0/FMD_3074.ddl");
75
76   AliRawReader* raw = AliRawReader::Create("./");
77   AliFMDRawReader reader(raw, 0);
78   TClonesArray    in("AliFMDDigit");
79   raw->NextEvent();
80   reader.ReadAdcs(&in);
81
82   std::cout << "Got " << in.GetEntries() << std::endl;
83
84   CompareData(in, map);
85 }
86 //____________________________________________________________________
87 //
88 // EOF
89 //