ROOT logo
/** @file    ReadRaw.C
    @author  Christian Holm Christensen <cholm@nbi.dk>
    @date    Tue Mar 28 12:39:08 2006
    @brief   Script to read raw data 
*/
/** 
 * Default input file 
 * @ingroup FMD_script
 */
const char* df = "/data/alice/data/pp/LHC10c/raw/118561/physics_118561.root";
/** 
 * @brief Read raw data into a TClonesArray - for testing 
 * 
 * @param file   Input raw data
 * @param nEv    Number of events to process (<=0 means all)
 * @param skip   Number of events to skip 
 * @param debug  Debug level
 */
void
ReadRaw(const char* src=df, Int_t nEv=10, Int_t skip=300, Int_t debug=4)
{

  AliCDBManager* cdb = AliCDBManager::Instance();
  cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  cdb->SetRun(0);

  AliRawReader*    reader    = AliRawReader::Create(src);
  AliFMDRawReader* fmdReader = new AliFMDRawReader(reader, 0);
  TClonesArray*    array     = new TClonesArray("AliFMDDigit", 0);
  fmdReader->SetVerbose(debug > 0);
  AliLog::SetModuleDebugLevel("FMD", debug);

  Int_t evCnt = 0;
  while (reader->NextEvent()) {
    evCnt++;
    if (skip > 0 && (evCnt-skip) < 0) { 
      continue;
    }
    if (nEv > 0 && (evCnt-skip) > nEv) { 
      break;
    }
    array->Clear();
    fmdReader->ReadAdcs(array);

    std::cout << "Event # " << std::setw(6) << evCnt 
	      << ": read " << array->GetEntriesFast() << " digits" << std::endl;
  
#if 0
    AliFMDBoolMap read(0);
    read.Reset(kFALSE);

    TIter next(array);
    AliFMDDigit* digit = 0;
    while ((digit = static_cast<AliFMDDigit*>(next()))) {
      UShort_t d = digit->Detector();
      Char_t   r = digit->Ring();
      UShort_t s = digit->Sector();
      UShort_t t = digit->Strip();
      read(d,r,s,t) = true;
    }
    const UShort_t lineLength = 64;
    for (UShort_t d = 1; d <= 3; d++) {
      UShort_t nr = (d == 1 ? 1 : 2);
      for (UShort_t q = 0; q < nr; q++) { 
	Char_t   r  = q == 0 ? 'I' : 'O';
	UShort_t ns = q == 0 ?  20 :  40;
	UShort_t nt = q == 0 ? 512 : 256;
	std::cout << "FMD" << d << r << ":" << std::endl;
	for (UShort_t s = 0; s < ns; s++) {
	  std::cout << " Sector " << s << "\n" << std::flush;
	  for (UShort_t t = 0; t < nt; t++) { 
	    bool on = read(d,r,s,t);
	    if (t % lineLength == 0) std::cout << "  ";
	    std::cout << (on ? '+' : '-');
	    if (t % lineLength == lineLength-1) std::cout << "\n";
	  }
	}
      }
    }
#endif
  }
  // a->ls();
}
//____________________________________________________________________
//
// EOF
//
 ReadRaw.C:1
 ReadRaw.C:2
 ReadRaw.C:3
 ReadRaw.C:4
 ReadRaw.C:5
 ReadRaw.C:6
 ReadRaw.C:7
 ReadRaw.C:8
 ReadRaw.C:9
 ReadRaw.C:10
 ReadRaw.C:11
 ReadRaw.C:12
 ReadRaw.C:13
 ReadRaw.C:14
 ReadRaw.C:15
 ReadRaw.C:16
 ReadRaw.C:17
 ReadRaw.C:18
 ReadRaw.C:19
 ReadRaw.C:20
 ReadRaw.C:21
 ReadRaw.C:22
 ReadRaw.C:23
 ReadRaw.C:24
 ReadRaw.C:25
 ReadRaw.C:26
 ReadRaw.C:27
 ReadRaw.C:28
 ReadRaw.C:29
 ReadRaw.C:30
 ReadRaw.C:31
 ReadRaw.C:32
 ReadRaw.C:33
 ReadRaw.C:34
 ReadRaw.C:35
 ReadRaw.C:36
 ReadRaw.C:37
 ReadRaw.C:38
 ReadRaw.C:39
 ReadRaw.C:40
 ReadRaw.C:41
 ReadRaw.C:42
 ReadRaw.C:43
 ReadRaw.C:44
 ReadRaw.C:45
 ReadRaw.C:46
 ReadRaw.C:47
 ReadRaw.C:48
 ReadRaw.C:49
 ReadRaw.C:50
 ReadRaw.C:51
 ReadRaw.C:52
 ReadRaw.C:53
 ReadRaw.C:54
 ReadRaw.C:55
 ReadRaw.C:56
 ReadRaw.C:57
 ReadRaw.C:58
 ReadRaw.C:59
 ReadRaw.C:60
 ReadRaw.C:61
 ReadRaw.C:62
 ReadRaw.C:63
 ReadRaw.C:64
 ReadRaw.C:65
 ReadRaw.C:66
 ReadRaw.C:67
 ReadRaw.C:68
 ReadRaw.C:69
 ReadRaw.C:70
 ReadRaw.C:71
 ReadRaw.C:72
 ReadRaw.C:73
 ReadRaw.C:74
 ReadRaw.C:75
 ReadRaw.C:76
 ReadRaw.C:77
 ReadRaw.C:78
 ReadRaw.C:79
 ReadRaw.C:80
 ReadRaw.C:81
 ReadRaw.C:82
 ReadRaw.C:83
 ReadRaw.C:84
 ReadRaw.C:85
 ReadRaw.C:86
 ReadRaw.C:87
 ReadRaw.C:88