ROOT logo
#include <iomanip>

void
MakeFakeDigits()
{
  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  AliCDBManager::Instance()->SetRun(0);
  AliFMDParameters* param = AliFMDParameters::Instance();
  param->Init(kFALSE,(AliFMDParameters::kPulseGain|
		      AliFMDParameters::kPedestal|
		      AliFMDParameters::kDeadMap|
		      AliFMDParameters::kSampleRate|
		      AliFMDParameters::kAltroMap|
		      AliFMDParameters::kStripRange));
  // param->SetPedestal(100);
  
  TFile*      file = TFile::Open("FMD.Digits.root", "RECREATE");
  TDirectory* dir  = file->mkdir("Event0");
  
  TTree*        tree   = new TTree("TreeD", "Digits container");
  TClonesArray* digits = new TClonesArray("AliFMDDigit");
  tree->Branch("FMD", &digits);
  
  Int_t i = 0;
  
  for (UShort_t d = 1; d <= 3; d++) { 
    UShort_t nrng = (d == 1 ? 1 : 2);
    for (UShort_t ir = 0; ir < nrng; ir++) { 
      Char_t   r    = (ir == 0 ? 'I' : 'O');
      UShort_t nsec = (ir == 0 ?  20 :  40);
      UShort_t nstr = (ir == 0 ? 512 : 256);
      for (UShort_t s = 0; s < nsec; s++) { 
	for (UShort_t t = 0; t < nstr; t++) { 
	  std::cout << "FMD" << d << r << "[" << std::setfill('0') 
		    << std::setw(2) << s << "," << std::setw(3) << t 
		    << "] " <<  std::setfill(' ') << " " 
		    << std::setw(5) << i << "/51200 " 
		    << std::setw(3) << int(i*100./51200) << "%\r"
		    << std::flush;

	  UShort_t nsam = param->GetSampleRate(d,r,s,t);
	  AliFMDDigit* digit = new((*(digits))[i]) AliFMDDigit(d,r,s,t);
	  i++;
	  UShort_t c = param->GetPedestal(d,r,s,t);
	  for (UShort_t z = 0; z < nsam; z++) { 
	    digit->SetCount(z, c);
	    if (nsam > 1 && z < 1) continue;
	    if ((t > 32 && t < 64) || (t > 96 && t < 98)) 
	      digit->SetCount(z, c + 100);
	  }
	}
      }
    }
  }
  std::cout << "Done making fake digits" << std::endl;
  dir->cd();
  tree->Fill();
  tree->Write();
  file->Close();
}

	    
 MakeFakeDigits.C:1
 MakeFakeDigits.C:2
 MakeFakeDigits.C:3
 MakeFakeDigits.C:4
 MakeFakeDigits.C:5
 MakeFakeDigits.C:6
 MakeFakeDigits.C:7
 MakeFakeDigits.C:8
 MakeFakeDigits.C:9
 MakeFakeDigits.C:10
 MakeFakeDigits.C:11
 MakeFakeDigits.C:12
 MakeFakeDigits.C:13
 MakeFakeDigits.C:14
 MakeFakeDigits.C:15
 MakeFakeDigits.C:16
 MakeFakeDigits.C:17
 MakeFakeDigits.C:18
 MakeFakeDigits.C:19
 MakeFakeDigits.C:20
 MakeFakeDigits.C:21
 MakeFakeDigits.C:22
 MakeFakeDigits.C:23
 MakeFakeDigits.C:24
 MakeFakeDigits.C:25
 MakeFakeDigits.C:26
 MakeFakeDigits.C:27
 MakeFakeDigits.C:28
 MakeFakeDigits.C:29
 MakeFakeDigits.C:30
 MakeFakeDigits.C:31
 MakeFakeDigits.C:32
 MakeFakeDigits.C:33
 MakeFakeDigits.C:34
 MakeFakeDigits.C:35
 MakeFakeDigits.C:36
 MakeFakeDigits.C:37
 MakeFakeDigits.C:38
 MakeFakeDigits.C:39
 MakeFakeDigits.C:40
 MakeFakeDigits.C:41
 MakeFakeDigits.C:42
 MakeFakeDigits.C:43
 MakeFakeDigits.C:44
 MakeFakeDigits.C:45
 MakeFakeDigits.C:46
 MakeFakeDigits.C:47
 MakeFakeDigits.C:48
 MakeFakeDigits.C:49
 MakeFakeDigits.C:50
 MakeFakeDigits.C:51
 MakeFakeDigits.C:52
 MakeFakeDigits.C:53
 MakeFakeDigits.C:54
 MakeFakeDigits.C:55
 MakeFakeDigits.C:56
 MakeFakeDigits.C:57
 MakeFakeDigits.C:58
 MakeFakeDigits.C:59
 MakeFakeDigits.C:60
 MakeFakeDigits.C:61
 MakeFakeDigits.C:62
 MakeFakeDigits.C:63