ROOT logo
void CreatePulserRunHisto(Int_t iLDC=0){

  // macro to create histogram as if from pulser data

  AliTOFGeometry * geom = new AliTOFGeometry();
  AliTOFDecoder * decoder = new AliTOFDecoder();
  Int_t array0[2160];
  Int_t array1[2208];
  Int_t array2[2160];
  Int_t array3[2208];
  Int_t array4[2160];
  Int_t array5[2208];
  // simulating data from LDC reading DDL # iLDC*6+{0,1,2,3,4,5}
  Int_t iDDL[6];
  for (Int_t j=0;j<6;j++){
    iDDL[j]=j+iLDC*6;
  }
  decoder->GetArrayDDL(array0,iDDL[0]);
  cout << " DDL " << iDDL[0] << " done " << endl;
  decoder->GetArrayDDL(array1,iDDL[1]);
  cout << " DDL " << iDDL[1] << " done " << endl;
  decoder->GetArrayDDL(array2,iDDL[2]);
  cout << " DDL " << iDDL[2] << " done " << endl;
  decoder->GetArrayDDL(array3,iDDL[3]);
  cout << " DDL " << iDDL[3] << " done " << endl;
  decoder->GetArrayDDL(array4,iDDL[4]);
  cout << " DDL " << iDDL[4] << " done " << endl;
  decoder->GetArrayDDL(array5,iDDL[5]);
  cout << " DDL " << iDDL[5] << " done " << endl;

  // debugging printings
  for (Int_t i=0;i<2160;i++){
    cout << " array0[" << i << "] = " << array0[i] << endl;
    cout << " array2[" << i << "] = " << array2[i] << endl;
    cout << " array4[" << i << "] = " << array4[i] << endl;
  }
  for (Int_t i=0;i<2208;i++){
    cout << " array1[" << i << "] = " << array1[i] << endl;
    cout << " array3[" << i << "] = " << array3[i] << endl;
    cout << " array5[" << i << "] = " << array5[i] << endl;
  }

  static const Int_t size = AliTOFGeometry::NPadXSector()*AliTOFGeometry::NSectors();
  cout << " size = " << size << endl;
  TH1F::AddDirectory(0);
  TH1S * htofPulser = new TH1S("hTOFpulser","histo with signals on TOF during pulser", size,-0.5,size-0.5);
  for (Int_t ibin=1;ibin<=size;ibin++){
    htofPulser->SetBinContent(ibin,-1);
  }

  for (Int_t i=0;i<2160;i++){
    if (htofPulser->GetBinContent(array0[i]+1)<0) htofPulser->SetBinContent(array0[i]+1,10000);
    if (htofPulser->GetBinContent(array2[i]+1)<0) htofPulser->SetBinContent(array2[i]+1,10000);
    if (htofPulser->GetBinContent(array4[i]+1)<0) htofPulser->SetBinContent(array4[i]+1,10000);
  }

  for (Int_t i=0;i<2208;i++){
    if (htofPulser->GetBinContent(array1[i]+1)<0) htofPulser->SetBinContent(array1[i]+1,10000);
    if (htofPulser->GetBinContent(array3[i]+1)<0) htofPulser->SetBinContent(array3[i]+1,10000);
    if (htofPulser->GetBinContent(array5[i]+1)<0) htofPulser->SetBinContent(array5[i]+1,10000);
  }

  const Int_t ndead =3;
  Int_t idead[18]; // indexes of dead channels
  Float_t ifloatdead[ndead]; // indexes of dead channels
  TRandom *rnd = new TRandom(4357);
  TDatime ciccio;
  //cout << " time = " << ciccio.Get() << endl;
  rnd->SetSeed(ciccio.Get());
  rnd->RndmArray(ndead,ifloatdead);

  for (Int_t i=0;i<ndead;i++){
    Int_t index = Int_t(ifloatdead[i]*2160);
    idead[i*3] = array0[index];
    idead[i*3+1] = array2[index];
    idead[i*3+2] = array4[index];
    cout << " channels " << idead[i*3] << ", " << idead[i*3+1] << ", " << idead[i*3+2] << ", " << " will be skipped " << endl;
  }

  for (Int_t i=0;i<ndead;i++){
    Int_t index = Int_t(ifloatdead[i]*2208);
    idead[i*3+9] = array1[index];
    idead[i*3+9+1] = array3[index];
    idead[i*3+9+2] = array5[index];
    cout << " channels " << idead[i*3+9] << ", " << idead[i*3+9+1] << ", " << idead[i*3+9+2] << ", " << " will be skipped " << endl;
  }

  for (Int_t i=0;i<ndead*6;i++){
    cout << " idead[" << i << "] = " << idead[i] << endl;
  }

  Bool_t tobeskipped=kFALSE;
  for (Int_t i=0;i<size;i++){
    tobeskipped = kFALSE;
    for (Int_t j=0;j<ndead*6;j++){
      if (i==idead[j]) {
	tobeskipped=kTRUE;
	cout << " skipping channel " << i << " with idead = " << idead[j] << endl;
	break;
      }
    }
    if (tobeskipped && (htofPulser->GetBinContent(i+1)!=-1)) htofPulser->SetBinContent(i+1,0);
    else {
      //      cout << " filling channel " << i << endl;
      //      htofPulser->Fill(i,10000);
    }
  }
  TCanvas *c = new TCanvas("c","c",-2,30,500,500);
  htofPulser->Draw();
  char filename[100];
  sprintf(filename,"$ALICE_ROOT/TOF/ShuttleInput/TOFoutPulserLDC_%02i.root",iLDC);
  TFile *fileout = new TFile(filename,"RECREATE");
  htofPulser->Write("hTOFpulser");
  fileout->Close();
}
 CreatePulserRunHisto.C:1
 CreatePulserRunHisto.C:2
 CreatePulserRunHisto.C:3
 CreatePulserRunHisto.C:4
 CreatePulserRunHisto.C:5
 CreatePulserRunHisto.C:6
 CreatePulserRunHisto.C:7
 CreatePulserRunHisto.C:8
 CreatePulserRunHisto.C:9
 CreatePulserRunHisto.C:10
 CreatePulserRunHisto.C:11
 CreatePulserRunHisto.C:12
 CreatePulserRunHisto.C:13
 CreatePulserRunHisto.C:14
 CreatePulserRunHisto.C:15
 CreatePulserRunHisto.C:16
 CreatePulserRunHisto.C:17
 CreatePulserRunHisto.C:18
 CreatePulserRunHisto.C:19
 CreatePulserRunHisto.C:20
 CreatePulserRunHisto.C:21
 CreatePulserRunHisto.C:22
 CreatePulserRunHisto.C:23
 CreatePulserRunHisto.C:24
 CreatePulserRunHisto.C:25
 CreatePulserRunHisto.C:26
 CreatePulserRunHisto.C:27
 CreatePulserRunHisto.C:28
 CreatePulserRunHisto.C:29
 CreatePulserRunHisto.C:30
 CreatePulserRunHisto.C:31
 CreatePulserRunHisto.C:32
 CreatePulserRunHisto.C:33
 CreatePulserRunHisto.C:34
 CreatePulserRunHisto.C:35
 CreatePulserRunHisto.C:36
 CreatePulserRunHisto.C:37
 CreatePulserRunHisto.C:38
 CreatePulserRunHisto.C:39
 CreatePulserRunHisto.C:40
 CreatePulserRunHisto.C:41
 CreatePulserRunHisto.C:42
 CreatePulserRunHisto.C:43
 CreatePulserRunHisto.C:44
 CreatePulserRunHisto.C:45
 CreatePulserRunHisto.C:46
 CreatePulserRunHisto.C:47
 CreatePulserRunHisto.C:48
 CreatePulserRunHisto.C:49
 CreatePulserRunHisto.C:50
 CreatePulserRunHisto.C:51
 CreatePulserRunHisto.C:52
 CreatePulserRunHisto.C:53
 CreatePulserRunHisto.C:54
 CreatePulserRunHisto.C:55
 CreatePulserRunHisto.C:56
 CreatePulserRunHisto.C:57
 CreatePulserRunHisto.C:58
 CreatePulserRunHisto.C:59
 CreatePulserRunHisto.C:60
 CreatePulserRunHisto.C:61
 CreatePulserRunHisto.C:62
 CreatePulserRunHisto.C:63
 CreatePulserRunHisto.C:64
 CreatePulserRunHisto.C:65
 CreatePulserRunHisto.C:66
 CreatePulserRunHisto.C:67
 CreatePulserRunHisto.C:68
 CreatePulserRunHisto.C:69
 CreatePulserRunHisto.C:70
 CreatePulserRunHisto.C:71
 CreatePulserRunHisto.C:72
 CreatePulserRunHisto.C:73
 CreatePulserRunHisto.C:74
 CreatePulserRunHisto.C:75
 CreatePulserRunHisto.C:76
 CreatePulserRunHisto.C:77
 CreatePulserRunHisto.C:78
 CreatePulserRunHisto.C:79
 CreatePulserRunHisto.C:80
 CreatePulserRunHisto.C:81
 CreatePulserRunHisto.C:82
 CreatePulserRunHisto.C:83
 CreatePulserRunHisto.C:84
 CreatePulserRunHisto.C:85
 CreatePulserRunHisto.C:86
 CreatePulserRunHisto.C:87
 CreatePulserRunHisto.C:88
 CreatePulserRunHisto.C:89
 CreatePulserRunHisto.C:90
 CreatePulserRunHisto.C:91
 CreatePulserRunHisto.C:92
 CreatePulserRunHisto.C:93
 CreatePulserRunHisto.C:94
 CreatePulserRunHisto.C:95
 CreatePulserRunHisto.C:96
 CreatePulserRunHisto.C:97
 CreatePulserRunHisto.C:98
 CreatePulserRunHisto.C:99
 CreatePulserRunHisto.C:100
 CreatePulserRunHisto.C:101
 CreatePulserRunHisto.C:102
 CreatePulserRunHisto.C:103
 CreatePulserRunHisto.C:104
 CreatePulserRunHisto.C:105
 CreatePulserRunHisto.C:106
 CreatePulserRunHisto.C:107
 CreatePulserRunHisto.C:108
 CreatePulserRunHisto.C:109
 CreatePulserRunHisto.C:110
 CreatePulserRunHisto.C:111
 CreatePulserRunHisto.C:112
 CreatePulserRunHisto.C:113
 CreatePulserRunHisto.C:114
 CreatePulserRunHisto.C:115
 CreatePulserRunHisto.C:116