ROOT logo

void AliTRDanalyzeTestBeam(Int_t run, Int_t begin, Int_t end) {
  
  gROOT->SetStyle("Plain");
  //gStyle->SetPadTopMargin(0.02);
  //gStyle->SetPadRightMargin(0.02);
  //gStyle->SetPadLeftMargin(0.1);

  gStyle->SetPalette(1);
  gStyle->SetOptStat(0);
  gStyle->SetOptDate();
  
  TGaxis::SetMaxDigits(3);

  TStopwatch st;
  st.Start();

  const Int_t N = 640;

  // declare histograms
  const int nbins = 100;
  const int nstart = 0;

  TH1D *mSi1L = new TH1D("mSi1L", ";number of Si1 fired pads", 50, nstart-0.5, nstart+nbins-0.5);
  TH1D *mSi2L = new TH1D("mS21L", ";number of Si2 fired pads", 50, nstart-0.5, nstart+nbins-0.5);
 
  TProfile *mSi1ChP = new TProfile("mSi1ChP",";Si1 pad number;signal", 1280, -0.5, 1279.5, 0, 200, "s");
  TProfile *mSi2ChP = new TProfile("mS21ChP",";Si2 pad number;signal", 1280, -0.5, 1279.5, 0, 200, "s");
  
  TH1D *mSi1N = new TH1D("mSi1N", "Noise Dist Si1;ADC", 100, 0, 50);
  TH1D *mSi2N = new TH1D("mSi2N", "Noise Dist Si2;ADC", 100, 0, 50);
  
  TH1D *mSiCh[4];
  mSiCh[0] = new TH1D("mSi1ChX", ";Si1X pad amplitude (ADC)", 250, -0.5, 249.5);
  mSiCh[1] = new TH1D("mSi1ChY", ";Si1Y pad amplitude (ADC)", 250, -0.5, 249.5);
  mSiCh[2] = new TH1D("mSi2ChX", ";Si2X pad amplitude (ADC)", 250, -0.5, 249.5);
  mSiCh[3] = new TH1D("mSi2ChY", ";Si2Y pad amplitude (ADC)", 250, -0.5, 249.5);
  
  TH1D *mSiFullCh[4];
  mSiFullCh[0] = new TH1D("mSi1fChX", "Si1X;max amplitude (ADC)", 300, -0.5, 299.5);
  mSiFullCh[1] = new TH1D("mSi1fChY", "Si1Y;max amplitude (ADC)", 300, -0.5, 299.5);
  mSiFullCh[2] = new TH1D("mSi2fChX", "Si2X;max amplitude (ADC)", 300, -0.5, 299.5);
  mSiFullCh[3] = new TH1D("mSi2fChY", "Si2Y;max amplitude (ADC)", 300, -0.5, 299.5);  

  TH2D *mPos[2];
  mPos[0] = new TH2D("posSi1", ";x Si1 (mm);y Si1 (mm)", 128, 0, 32, 128, 0, 32);
  mPos[1] = new TH2D("posSi2", ";x Si2 (mm);y Si2 (mm)", 128, 0, 32, 128, 0, 32);

  TH2D *mCor[2];
  mCor[0] = new TH2D("corX", ";Si1 X (mm);Si2 X (mm)", 128, 0, 32, 128, 0, 32);
  mCor[1] = new TH2D("corY", ";Si1 Y (mm);Si2 Y (mm)", 128, 0, 32, 128, 0, 32);

  TH2D *mChCor[2];
  mChCor[0] = new TH2D("ChCorSi1", ";Si1 amp X;Si1 amp Y", 100, 0, 200, 100, 0, 200);
  mChCor[1] = new TH2D("ChCorSi2", ";Si2 amp X;Si2 amp Y", 100, 0, 200, 100, 0, 200);
  
  gStyle->SetOptStat(11);
  TH1D *mPb   = new TH1D("mPb", ";Amp Pb (ADC)", 150, -0.5, 4499.5);
  TH1D *mCher = new TH1D("mCher", ";Amp Cherenkov (ADC)", 150, -0.5, 4499.5);
  TH2D *mPbCher = new TH2D("mPbCher", ";amp Cherenkov;amp Pb", 150, -0.5, 4499.5, 150, -0.5, 4599.5);
  // gStyle->SetOptStat(0);

  // needed by the AliTRDRawStreamTB
  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  AliTRDcalibDB *calib = AliTRDcalibDB::Instance();
  calib->SetRun(0);

  // TRD data monitoring
  TH1D *mDet = new TH1D("mDet", ";chamber", 20, -0.5, 19.5);
  TH1D *mROB = new TH1D("mROB", ";rob", 20, -0.5, 19.5);
  TH1D *mTRDsig = new TH1D("mTRDsig", ";trdSignal", 100, -0.5, 299.5);
  
  //AliLog::SetClassDebugLevel("AliTRDRawStreamTB", 10);

  int counter = 0;
  // for(Int_t run = 365; run < 386; run++) {
  //for(Int_t run = 369; run < 382; run++) {
  //for(int run = 387; run < 389; run++) {

  // if (run == 389) continue;
    cout << run << endl;

    for(Int_t fn=begin; fn<end; fn++) {
      
      // connect to data 
      //const char *base="/Users/radomski/data/1GeV/";
      const char *base = "./";
      const char *filename = Form("%s/run%d_gdc_daq09.%03d.raw",base,run,fn);
      if (gSystem->AccessPathName(filename)) continue;
      cout << filename << endl;

      AliTRDtestBeam *data = new AliTRDtestBeam(filename);
      
      // process data
      while (data->NextEvent()) {
      
	if (!(counter%1000)) cout << "Event = " << counter << endl;
	counter++;
	
	/*
	AliTRDRawStreamTB *tb = data->GetTRDrawStream();
	while(tb->Next()) {
	  mROB->Fill(tb->GetROB());
	  mDet->Fill(tb->GetDet());
	  int *sig = tb->GetSignals();
	  mTRDsig->Fill(sig[0]);
	  mTRDsig->Fill(sig[1]);
	  mTRDsig->Fill(sig[2]);
	}
	delete tb;
	*/

	mCher->Fill(data->GetCher());
	mPb->Fill(data->GetPb());
	mPbCher->Fill(data->GetCher(), data->GetPb());

	mSi1L->Fill(data->GetNSi1());
	mSi2L->Fill(data->GetNSi2());
	
	for(int i=0; i<data->GetNSi1(); i++) {
	  Int_t q = data->GetSi1Charge(i);
	  Int_t a = data->GetSi1Address(i);
	  if (a == 0) continue; // noisy channels
	  mSi1ChP->Fill(a, q);
	  if (a < N) mSiCh[0]->Fill(q);
	  else mSiCh[1]->Fill(q);	       
	}
	
	for(int i=0; i<data->GetNSi2(); i++) {
	  Int_t q = data->GetSi2Charge(i);
	  Int_t a = data->GetSi2Address(i);
	  if (a == 0 || a == 1279) continue; // noisy channels
	  mSi2ChP->Fill(a, q);
	  if (a < N) mSiCh[2]->Fill(q);
	  else mSiCh[3]->Fill(q);	       
	}
	
	mSiFullCh[0]->Fill(data->GetQx(0));
	mSiFullCh[1]->Fill(data->GetQy(0));
	mSiFullCh[2]->Fill(data->GetQx(1));
	mSiFullCh[3]->Fill(data->GetQy(1));
	
	for(int k=0; k<2; k++)
	  mChCor[k]->Fill(data->GetQx(k), data->GetQy(k));
	
	/*
	  if (data->GetQx(0) < 20) continue;
	  if (data->GetQx(1) < 20) continue;
	  if (data->GetQy(0) < 20) continue;
	  if (data->GetQy(1) < 20) continue;
	*/
	
	for(int k=0; k<2; k++)
	  mPos[k]->Fill(data->GetX(k), data->GetY(k));
      
	mCor[0]->Fill(data->GetX(0), data->GetX(1));
	mCor[1]->Fill(data->GetY(0), data->GetY(1));
      }
      
      delete data;
    }
    //}

  // process histograms
  for(int i=1; i<1281; i++) mSi1N->Fill(mSi1ChP->GetBinError(i));
  for(int i=1; i<1281; i++) mSi2N->Fill(mSi2ChP->GetBinError(i));

  // display
  cout << "Number of Events = " << counter << endl;
  
  /**/
  TCanvas *c = new TCanvas("siliconSignal", "silicon signal");
  c->Divide(2,2, 0.01, 0.01);
  c->cd(1);
  mSi1L->Draw();
  c->cd(2);
  mSi2L->Draw();
  c->cd(3);
  mSi1ChP->Draw();
  c->cd(4);
  mSi2ChP->Draw();
  /* */

  /**/
  c = new TCanvas();
  c->Divide(2,2,0.01,0.01);
  c->cd(1);
  mSi1N->Draw();
  c->cd(2);
  mSi2N->Draw();
  /**/

  /**/
  // pads
  c = new TCanvas("siPads", "Silicon Pads");
  c->Divide(2,2, 0.01, 0.01);
  for(int i=0; i<4; i++) {
    c->cd(i+1);
    gPad->SetLogy();
    mSiCh[i]->Draw();
  }
  
  // clusters
  c = new TCanvas("siCluster", "silicon clusters");
  c->Divide(2,2, 0.01, 0.01);
  for(int i=0; i<4; i++) {
    c->cd(i+1);
    gPad->SetLogy();
    mSiFullCh[i]->Draw();
  }

  // position and correlation
  c = new TCanvas("siPosition", "reconstructed position");
  c->Divide(2,2, 0.01, 0.01);
  for(int i=0; i<2; i++) {
    c->cd(1+i);
    mPos[i]->Draw("col");
    c->cd(3+i);
    mCor[i]->Draw("col");  
  }
  
  c = new TCanvas("siCharge", "si charge correlation");
  c->Divide(2,2, 0.01, 0.01);
  c->cd(1);
  gPad->SetLogz();
  mChCor[0]->Draw("col");
  c->cd(2);
  gPad->SetLogz();
  mChCor[1]->Draw("col");
  /**/

  new TCanvas();
  gPad->SetLogy();
  mCher->Draw();
  
  // electron sample
  int bin = mCher->FindBin(500.);
  double ef = (mCher->Integral(bin, 151)/ mCher->GetSum());
  TLatex *l = new TLatex(2e3, 0.02*mCher->GetSum(), Form("Electron fraction = %.2f ", ef));
  l->Draw();
  
  new TCanvas();
  gPad->SetLogy();
  mPb->Draw();

  new TCanvas();
  gPad->SetLogz();
  mPbCher->Draw("colz");
  
  /*
  c = new TCanvas();
  c->Divide(2,2,0.01, 0.01);
  c->cd(1);
  gPad->SetLogy();
  mTRDsig->Draw();

  c->cd(2);
  mROB->Draw();

  c->cd(3);
  mDet->Draw();
  */
  
  st.Stop();
  st.Print();
}

//Int_t SelectEvent() {
//}
 AliTRDanalyzeTestBeam.C:1
 AliTRDanalyzeTestBeam.C:2
 AliTRDanalyzeTestBeam.C:3
 AliTRDanalyzeTestBeam.C:4
 AliTRDanalyzeTestBeam.C:5
 AliTRDanalyzeTestBeam.C:6
 AliTRDanalyzeTestBeam.C:7
 AliTRDanalyzeTestBeam.C:8
 AliTRDanalyzeTestBeam.C:9
 AliTRDanalyzeTestBeam.C:10
 AliTRDanalyzeTestBeam.C:11
 AliTRDanalyzeTestBeam.C:12
 AliTRDanalyzeTestBeam.C:13
 AliTRDanalyzeTestBeam.C:14
 AliTRDanalyzeTestBeam.C:15
 AliTRDanalyzeTestBeam.C:16
 AliTRDanalyzeTestBeam.C:17
 AliTRDanalyzeTestBeam.C:18
 AliTRDanalyzeTestBeam.C:19
 AliTRDanalyzeTestBeam.C:20
 AliTRDanalyzeTestBeam.C:21
 AliTRDanalyzeTestBeam.C:22
 AliTRDanalyzeTestBeam.C:23
 AliTRDanalyzeTestBeam.C:24
 AliTRDanalyzeTestBeam.C:25
 AliTRDanalyzeTestBeam.C:26
 AliTRDanalyzeTestBeam.C:27
 AliTRDanalyzeTestBeam.C:28
 AliTRDanalyzeTestBeam.C:29
 AliTRDanalyzeTestBeam.C:30
 AliTRDanalyzeTestBeam.C:31
 AliTRDanalyzeTestBeam.C:32
 AliTRDanalyzeTestBeam.C:33
 AliTRDanalyzeTestBeam.C:34
 AliTRDanalyzeTestBeam.C:35
 AliTRDanalyzeTestBeam.C:36
 AliTRDanalyzeTestBeam.C:37
 AliTRDanalyzeTestBeam.C:38
 AliTRDanalyzeTestBeam.C:39
 AliTRDanalyzeTestBeam.C:40
 AliTRDanalyzeTestBeam.C:41
 AliTRDanalyzeTestBeam.C:42
 AliTRDanalyzeTestBeam.C:43
 AliTRDanalyzeTestBeam.C:44
 AliTRDanalyzeTestBeam.C:45
 AliTRDanalyzeTestBeam.C:46
 AliTRDanalyzeTestBeam.C:47
 AliTRDanalyzeTestBeam.C:48
 AliTRDanalyzeTestBeam.C:49
 AliTRDanalyzeTestBeam.C:50
 AliTRDanalyzeTestBeam.C:51
 AliTRDanalyzeTestBeam.C:52
 AliTRDanalyzeTestBeam.C:53
 AliTRDanalyzeTestBeam.C:54
 AliTRDanalyzeTestBeam.C:55
 AliTRDanalyzeTestBeam.C:56
 AliTRDanalyzeTestBeam.C:57
 AliTRDanalyzeTestBeam.C:58
 AliTRDanalyzeTestBeam.C:59
 AliTRDanalyzeTestBeam.C:60
 AliTRDanalyzeTestBeam.C:61
 AliTRDanalyzeTestBeam.C:62
 AliTRDanalyzeTestBeam.C:63
 AliTRDanalyzeTestBeam.C:64
 AliTRDanalyzeTestBeam.C:65
 AliTRDanalyzeTestBeam.C:66
 AliTRDanalyzeTestBeam.C:67
 AliTRDanalyzeTestBeam.C:68
 AliTRDanalyzeTestBeam.C:69
 AliTRDanalyzeTestBeam.C:70
 AliTRDanalyzeTestBeam.C:71
 AliTRDanalyzeTestBeam.C:72
 AliTRDanalyzeTestBeam.C:73
 AliTRDanalyzeTestBeam.C:74
 AliTRDanalyzeTestBeam.C:75
 AliTRDanalyzeTestBeam.C:76
 AliTRDanalyzeTestBeam.C:77
 AliTRDanalyzeTestBeam.C:78
 AliTRDanalyzeTestBeam.C:79
 AliTRDanalyzeTestBeam.C:80
 AliTRDanalyzeTestBeam.C:81
 AliTRDanalyzeTestBeam.C:82
 AliTRDanalyzeTestBeam.C:83
 AliTRDanalyzeTestBeam.C:84
 AliTRDanalyzeTestBeam.C:85
 AliTRDanalyzeTestBeam.C:86
 AliTRDanalyzeTestBeam.C:87
 AliTRDanalyzeTestBeam.C:88
 AliTRDanalyzeTestBeam.C:89
 AliTRDanalyzeTestBeam.C:90
 AliTRDanalyzeTestBeam.C:91
 AliTRDanalyzeTestBeam.C:92
 AliTRDanalyzeTestBeam.C:93
 AliTRDanalyzeTestBeam.C:94
 AliTRDanalyzeTestBeam.C:95
 AliTRDanalyzeTestBeam.C:96
 AliTRDanalyzeTestBeam.C:97
 AliTRDanalyzeTestBeam.C:98
 AliTRDanalyzeTestBeam.C:99
 AliTRDanalyzeTestBeam.C:100
 AliTRDanalyzeTestBeam.C:101
 AliTRDanalyzeTestBeam.C:102
 AliTRDanalyzeTestBeam.C:103
 AliTRDanalyzeTestBeam.C:104
 AliTRDanalyzeTestBeam.C:105
 AliTRDanalyzeTestBeam.C:106
 AliTRDanalyzeTestBeam.C:107
 AliTRDanalyzeTestBeam.C:108
 AliTRDanalyzeTestBeam.C:109
 AliTRDanalyzeTestBeam.C:110
 AliTRDanalyzeTestBeam.C:111
 AliTRDanalyzeTestBeam.C:112
 AliTRDanalyzeTestBeam.C:113
 AliTRDanalyzeTestBeam.C:114
 AliTRDanalyzeTestBeam.C:115
 AliTRDanalyzeTestBeam.C:116
 AliTRDanalyzeTestBeam.C:117
 AliTRDanalyzeTestBeam.C:118
 AliTRDanalyzeTestBeam.C:119
 AliTRDanalyzeTestBeam.C:120
 AliTRDanalyzeTestBeam.C:121
 AliTRDanalyzeTestBeam.C:122
 AliTRDanalyzeTestBeam.C:123
 AliTRDanalyzeTestBeam.C:124
 AliTRDanalyzeTestBeam.C:125
 AliTRDanalyzeTestBeam.C:126
 AliTRDanalyzeTestBeam.C:127
 AliTRDanalyzeTestBeam.C:128
 AliTRDanalyzeTestBeam.C:129
 AliTRDanalyzeTestBeam.C:130
 AliTRDanalyzeTestBeam.C:131
 AliTRDanalyzeTestBeam.C:132
 AliTRDanalyzeTestBeam.C:133
 AliTRDanalyzeTestBeam.C:134
 AliTRDanalyzeTestBeam.C:135
 AliTRDanalyzeTestBeam.C:136
 AliTRDanalyzeTestBeam.C:137
 AliTRDanalyzeTestBeam.C:138
 AliTRDanalyzeTestBeam.C:139
 AliTRDanalyzeTestBeam.C:140
 AliTRDanalyzeTestBeam.C:141
 AliTRDanalyzeTestBeam.C:142
 AliTRDanalyzeTestBeam.C:143
 AliTRDanalyzeTestBeam.C:144
 AliTRDanalyzeTestBeam.C:145
 AliTRDanalyzeTestBeam.C:146
 AliTRDanalyzeTestBeam.C:147
 AliTRDanalyzeTestBeam.C:148
 AliTRDanalyzeTestBeam.C:149
 AliTRDanalyzeTestBeam.C:150
 AliTRDanalyzeTestBeam.C:151
 AliTRDanalyzeTestBeam.C:152
 AliTRDanalyzeTestBeam.C:153
 AliTRDanalyzeTestBeam.C:154
 AliTRDanalyzeTestBeam.C:155
 AliTRDanalyzeTestBeam.C:156
 AliTRDanalyzeTestBeam.C:157
 AliTRDanalyzeTestBeam.C:158
 AliTRDanalyzeTestBeam.C:159
 AliTRDanalyzeTestBeam.C:160
 AliTRDanalyzeTestBeam.C:161
 AliTRDanalyzeTestBeam.C:162
 AliTRDanalyzeTestBeam.C:163
 AliTRDanalyzeTestBeam.C:164
 AliTRDanalyzeTestBeam.C:165
 AliTRDanalyzeTestBeam.C:166
 AliTRDanalyzeTestBeam.C:167
 AliTRDanalyzeTestBeam.C:168
 AliTRDanalyzeTestBeam.C:169
 AliTRDanalyzeTestBeam.C:170
 AliTRDanalyzeTestBeam.C:171
 AliTRDanalyzeTestBeam.C:172
 AliTRDanalyzeTestBeam.C:173
 AliTRDanalyzeTestBeam.C:174
 AliTRDanalyzeTestBeam.C:175
 AliTRDanalyzeTestBeam.C:176
 AliTRDanalyzeTestBeam.C:177
 AliTRDanalyzeTestBeam.C:178
 AliTRDanalyzeTestBeam.C:179
 AliTRDanalyzeTestBeam.C:180
 AliTRDanalyzeTestBeam.C:181
 AliTRDanalyzeTestBeam.C:182
 AliTRDanalyzeTestBeam.C:183
 AliTRDanalyzeTestBeam.C:184
 AliTRDanalyzeTestBeam.C:185
 AliTRDanalyzeTestBeam.C:186
 AliTRDanalyzeTestBeam.C:187
 AliTRDanalyzeTestBeam.C:188
 AliTRDanalyzeTestBeam.C:189
 AliTRDanalyzeTestBeam.C:190
 AliTRDanalyzeTestBeam.C:191
 AliTRDanalyzeTestBeam.C:192
 AliTRDanalyzeTestBeam.C:193
 AliTRDanalyzeTestBeam.C:194
 AliTRDanalyzeTestBeam.C:195
 AliTRDanalyzeTestBeam.C:196
 AliTRDanalyzeTestBeam.C:197
 AliTRDanalyzeTestBeam.C:198
 AliTRDanalyzeTestBeam.C:199
 AliTRDanalyzeTestBeam.C:200
 AliTRDanalyzeTestBeam.C:201
 AliTRDanalyzeTestBeam.C:202
 AliTRDanalyzeTestBeam.C:203
 AliTRDanalyzeTestBeam.C:204
 AliTRDanalyzeTestBeam.C:205
 AliTRDanalyzeTestBeam.C:206
 AliTRDanalyzeTestBeam.C:207
 AliTRDanalyzeTestBeam.C:208
 AliTRDanalyzeTestBeam.C:209
 AliTRDanalyzeTestBeam.C:210
 AliTRDanalyzeTestBeam.C:211
 AliTRDanalyzeTestBeam.C:212
 AliTRDanalyzeTestBeam.C:213
 AliTRDanalyzeTestBeam.C:214
 AliTRDanalyzeTestBeam.C:215
 AliTRDanalyzeTestBeam.C:216
 AliTRDanalyzeTestBeam.C:217
 AliTRDanalyzeTestBeam.C:218
 AliTRDanalyzeTestBeam.C:219
 AliTRDanalyzeTestBeam.C:220
 AliTRDanalyzeTestBeam.C:221
 AliTRDanalyzeTestBeam.C:222
 AliTRDanalyzeTestBeam.C:223
 AliTRDanalyzeTestBeam.C:224
 AliTRDanalyzeTestBeam.C:225
 AliTRDanalyzeTestBeam.C:226
 AliTRDanalyzeTestBeam.C:227
 AliTRDanalyzeTestBeam.C:228
 AliTRDanalyzeTestBeam.C:229
 AliTRDanalyzeTestBeam.C:230
 AliTRDanalyzeTestBeam.C:231
 AliTRDanalyzeTestBeam.C:232
 AliTRDanalyzeTestBeam.C:233
 AliTRDanalyzeTestBeam.C:234
 AliTRDanalyzeTestBeam.C:235
 AliTRDanalyzeTestBeam.C:236
 AliTRDanalyzeTestBeam.C:237
 AliTRDanalyzeTestBeam.C:238
 AliTRDanalyzeTestBeam.C:239
 AliTRDanalyzeTestBeam.C:240
 AliTRDanalyzeTestBeam.C:241
 AliTRDanalyzeTestBeam.C:242
 AliTRDanalyzeTestBeam.C:243
 AliTRDanalyzeTestBeam.C:244
 AliTRDanalyzeTestBeam.C:245
 AliTRDanalyzeTestBeam.C:246
 AliTRDanalyzeTestBeam.C:247
 AliTRDanalyzeTestBeam.C:248
 AliTRDanalyzeTestBeam.C:249
 AliTRDanalyzeTestBeam.C:250
 AliTRDanalyzeTestBeam.C:251
 AliTRDanalyzeTestBeam.C:252
 AliTRDanalyzeTestBeam.C:253
 AliTRDanalyzeTestBeam.C:254
 AliTRDanalyzeTestBeam.C:255
 AliTRDanalyzeTestBeam.C:256
 AliTRDanalyzeTestBeam.C:257
 AliTRDanalyzeTestBeam.C:258
 AliTRDanalyzeTestBeam.C:259
 AliTRDanalyzeTestBeam.C:260
 AliTRDanalyzeTestBeam.C:261
 AliTRDanalyzeTestBeam.C:262
 AliTRDanalyzeTestBeam.C:263
 AliTRDanalyzeTestBeam.C:264
 AliTRDanalyzeTestBeam.C:265
 AliTRDanalyzeTestBeam.C:266
 AliTRDanalyzeTestBeam.C:267
 AliTRDanalyzeTestBeam.C:268
 AliTRDanalyzeTestBeam.C:269
 AliTRDanalyzeTestBeam.C:270