ROOT logo
Int_t AliTOFanalyzeSDigitsV2(Int_t ndump=0, Int_t iEvNum=-1, Int_t nEvent=0)
{

  /////////////////////////////////////////////////////////////////////////
  //
  // Analyzes the TOF sdigits and fills QA-histograms 
  // iEvNum=-1 and nEvent=0 means all events in the file
  // 
  // root[0] .L AliTOFanalyzeSDigitsV2.C
  // root[1] AliTOFanalyzeSDigitsV2()
  //
  // If you want analyze only the sdigits in the 2th event
  // (existing int the header file), see in the following:
  //
  // root[0] .L AliTOFanalyzeSDigitsV2.C
  // root[1] AliTOFanalyzeSDigitsV2(0,2,1)
  //
  // Updated to the new I/O by: A. De Caro, C. Zampolli
  //
  // Report problems to: decaro@sa.infn.it
  //
  /////////////////////////////////////////////////////////////////////////

  Int_t rc = 0;

  // adc and tdc
  TH1F *htdc     = new TH1F("htdc","TDC [bin]",5000,0.,150000.);
  TH1F *hadc     = new TH1F("hadc","ADC [bin]",100,0., 3000.);
  // TOF sdigit volumes
  TH1F *hsector  = new TH1F("hsector","Sector",18,0.,18.);
  TH1F *hplate   = new TH1F("hplate","Plate ", 5,0., 5.);
  TH1F *hstrip   = new TH1F("hstrip","Strip ",20,0.,20.);
  TH1F *hpadz    = new TH1F("hpadz","Pad along z ",2,0.,2.);
  TH1F *hpadx    = new TH1F("hpadx","Pad along x",48,0.,48.);
  // ADC-TDC correlation
  TH2F *h2tdcVSadc = new TH2F("h2tdcVSadc","TDC [bin] VS ADC [bin]",500,0.,150000.,100,0.,3000.);
  
  // Dynamically link some shared libs
  if (gClassTable->GetID("AliRun") < 0) {
    gROOT->LoadMacro("loadlibs.C");
    loadlibs();
  }

  if (gAlice) 
    {
      delete AliRunLoader::Instance();
      delete gAlice;
      gAlice = 0x0;
   }
  
  AliRunLoader *rl = AliRunLoader::Open("galice.root",AliConfig::GetDefaultEventFolderName(),"read");
  if (!rl)
    {
      cerr<<"Can't load RunLoader from file"<<"!\n";
      rc = 1;
      return rc;
    }

  rl->LoadgAlice();
  gAlice = rl->GetAliRun();

  if (!gAlice)
    {
      cerr << "<AliTOFanalyzeSDigits> AliRun object not found on file\n ";
      rc = 2;
      return rc;
    }

  rl->LoadHeader();

  AliLoader *tofl = rl->GetLoader("TOFLoader");
  AliTOF *tof = (AliTOF *) rl->GetAliRun()->GetDetector("TOF");

  if (tof==0x0 || tofl==0x0)
    {
      cerr << "<AliTOFanalyzeSDigits> no TOF detector found" << endl;
      rc = 3;
      return rc;
    }
  
  cout << "First " << ndump << " SDigits found in TOF TreeS branch have: \n";

  Int_t upperLimit;
  Int_t bottomLimit;

  if (iEvNum<0) bottomLimit=0;
  else bottomLimit = iEvNum;

  if (nEvent == 0) upperLimit = (Int_t)(rl->GetNumberOfEvents());
  else upperLimit = nEvent+bottomLimit;

  AliTOFSDigit *tofsdigit;
  
  for (Int_t ievent = bottomLimit; ievent < upperLimit; ievent++) {

    rl->GetEvent(ievent);
    printf ("Processing event %d \n", ievent);
    
    // Get the pointer SDigit tree
    tofl->LoadSDigits("read");
    TTree *TS=tofl->TreeS();
    tof->SetTreeAddress();
    
    if(!TS)
      {
	cout << "<AliTOFanalyzeSDigits> No TreeS found \n";
	rc = 4;
	return rc;
      }
    
    TClonesArray * TOFsdigits = new TClonesArray("AliTOFSDigit",1000);
    //TOFsdigits = tof->SDigits();
    tof->SDigits();
    TOFsdigits = TS->GetBranch("TOF")->SetAddress(&TOFsdigits); 

    Int_t nEntries = TS->GetEntries(); 

    for (Int_t iEntry = 0; iEntry < nEntries; iEntry ++) 
      {
	tof->ResetDigits();
	TS->GetEvent(iEntry);
	Int_t ndig = TOFsdigits->GetEntriesFast();
	cout << "<AliTOFanalyzeSDigits> found " << ndig
	     << " TOF sdigits for event " << ievent << endl;
	
	for (Int_t k=0; k<ndig; k++) {
	  tofsdigit = (AliTOFSDigit*) TOFsdigits->UncheckedAt(k);
	  Float_t firstTDC = tofsdigit->GetTdc(0);
	  Float_t firstADC = tofsdigit->GetAdc(0);
	  htdc->Fill(firstTDC);
	  hadc->Fill(firstADC);
	  // TOF sdigit volumes
	  Int_t sector = tofsdigit->GetSector(); // range [0-17]
	  Int_t plate  = tofsdigit->GetPlate();  // range [0- 4]
	  Int_t strip  = tofsdigit->GetStrip();  // range [0-19]
	  Int_t padz   = tofsdigit->GetPadz();   // range [0- 1]
	  Int_t padx   = tofsdigit->GetPadx();   // range [0-47]
	  // it is QA, then I perform QA!
	  Bool_t isSDigitBad = (sector<0 || sector>17 || plate<0 || plate >4 || padz<0 || padz>1 || padx<0 || padx>47);
	  

	  if (isSDigitBad) {
	    cout << "<AliTOFanalyzeSDigits>  strange sdigit found \n";
	    rc = 4;
	    return rc;
	  }
	  
	  if(k<ndump){
	    cout << k << "-th | Sector " << sector << " | Plate " << plate << " | Strip " << strip << " | PadZ " << padz << " | PadX " << padx << endl;
	    cout << k << "-th | ADC " << firstADC << " [bin] | TDC " << firstTDC << " [bin] \n";
	    cout << "---------------------------------------------------- \n";
	  }
	  
	  // filling sdigit volume histos
	  hsector->Fill(sector);
	  hplate->Fill(plate);
	  hstrip->Fill(strip);
	  hpadx->Fill(padx);
	  hpadz->Fill(padz);
	  h2tdcVSadc->Fill(firstTDC,firstADC);
	  
	}
      }
    
    tofl->UnloadSDigits();
  
  } // end loop on events
  
  rl->UnloadHeader();
  rl->UnloadgAlice();

  TFile *fout = new TFile("TOF_sdigitsQA.root","RECREATE");
  htdc->Write();
  hadc->Write();
  h2tdcVSadc->Write();
  hsector->Write();
  hplate->Write();
  hstrip->Write();
  hpadz->Write();
  hpadx->Write();
  fout->Close();

  delete htdc;
  delete hadc;
  delete h2tdcVSadc;
  delete hsector;
  delete hplate;
  delete hstrip;   
  delete hpadz;
  delete hpadx;

  if (gAlice) 
    {
      delete AliRunLoader::Instance();
      delete gAlice;
      gAlice = 0x0;
    }

  return rc;
  
}

 AliTOFanalyzeSDigitsV2.C:1
 AliTOFanalyzeSDigitsV2.C:2
 AliTOFanalyzeSDigitsV2.C:3
 AliTOFanalyzeSDigitsV2.C:4
 AliTOFanalyzeSDigitsV2.C:5
 AliTOFanalyzeSDigitsV2.C:6
 AliTOFanalyzeSDigitsV2.C:7
 AliTOFanalyzeSDigitsV2.C:8
 AliTOFanalyzeSDigitsV2.C:9
 AliTOFanalyzeSDigitsV2.C:10
 AliTOFanalyzeSDigitsV2.C:11
 AliTOFanalyzeSDigitsV2.C:12
 AliTOFanalyzeSDigitsV2.C:13
 AliTOFanalyzeSDigitsV2.C:14
 AliTOFanalyzeSDigitsV2.C:15
 AliTOFanalyzeSDigitsV2.C:16
 AliTOFanalyzeSDigitsV2.C:17
 AliTOFanalyzeSDigitsV2.C:18
 AliTOFanalyzeSDigitsV2.C:19
 AliTOFanalyzeSDigitsV2.C:20
 AliTOFanalyzeSDigitsV2.C:21
 AliTOFanalyzeSDigitsV2.C:22
 AliTOFanalyzeSDigitsV2.C:23
 AliTOFanalyzeSDigitsV2.C:24
 AliTOFanalyzeSDigitsV2.C:25
 AliTOFanalyzeSDigitsV2.C:26
 AliTOFanalyzeSDigitsV2.C:27
 AliTOFanalyzeSDigitsV2.C:28
 AliTOFanalyzeSDigitsV2.C:29
 AliTOFanalyzeSDigitsV2.C:30
 AliTOFanalyzeSDigitsV2.C:31
 AliTOFanalyzeSDigitsV2.C:32
 AliTOFanalyzeSDigitsV2.C:33
 AliTOFanalyzeSDigitsV2.C:34
 AliTOFanalyzeSDigitsV2.C:35
 AliTOFanalyzeSDigitsV2.C:36
 AliTOFanalyzeSDigitsV2.C:37
 AliTOFanalyzeSDigitsV2.C:38
 AliTOFanalyzeSDigitsV2.C:39
 AliTOFanalyzeSDigitsV2.C:40
 AliTOFanalyzeSDigitsV2.C:41
 AliTOFanalyzeSDigitsV2.C:42
 AliTOFanalyzeSDigitsV2.C:43
 AliTOFanalyzeSDigitsV2.C:44
 AliTOFanalyzeSDigitsV2.C:45
 AliTOFanalyzeSDigitsV2.C:46
 AliTOFanalyzeSDigitsV2.C:47
 AliTOFanalyzeSDigitsV2.C:48
 AliTOFanalyzeSDigitsV2.C:49
 AliTOFanalyzeSDigitsV2.C:50
 AliTOFanalyzeSDigitsV2.C:51
 AliTOFanalyzeSDigitsV2.C:52
 AliTOFanalyzeSDigitsV2.C:53
 AliTOFanalyzeSDigitsV2.C:54
 AliTOFanalyzeSDigitsV2.C:55
 AliTOFanalyzeSDigitsV2.C:56
 AliTOFanalyzeSDigitsV2.C:57
 AliTOFanalyzeSDigitsV2.C:58
 AliTOFanalyzeSDigitsV2.C:59
 AliTOFanalyzeSDigitsV2.C:60
 AliTOFanalyzeSDigitsV2.C:61
 AliTOFanalyzeSDigitsV2.C:62
 AliTOFanalyzeSDigitsV2.C:63
 AliTOFanalyzeSDigitsV2.C:64
 AliTOFanalyzeSDigitsV2.C:65
 AliTOFanalyzeSDigitsV2.C:66
 AliTOFanalyzeSDigitsV2.C:67
 AliTOFanalyzeSDigitsV2.C:68
 AliTOFanalyzeSDigitsV2.C:69
 AliTOFanalyzeSDigitsV2.C:70
 AliTOFanalyzeSDigitsV2.C:71
 AliTOFanalyzeSDigitsV2.C:72
 AliTOFanalyzeSDigitsV2.C:73
 AliTOFanalyzeSDigitsV2.C:74
 AliTOFanalyzeSDigitsV2.C:75
 AliTOFanalyzeSDigitsV2.C:76
 AliTOFanalyzeSDigitsV2.C:77
 AliTOFanalyzeSDigitsV2.C:78
 AliTOFanalyzeSDigitsV2.C:79
 AliTOFanalyzeSDigitsV2.C:80
 AliTOFanalyzeSDigitsV2.C:81
 AliTOFanalyzeSDigitsV2.C:82
 AliTOFanalyzeSDigitsV2.C:83
 AliTOFanalyzeSDigitsV2.C:84
 AliTOFanalyzeSDigitsV2.C:85
 AliTOFanalyzeSDigitsV2.C:86
 AliTOFanalyzeSDigitsV2.C:87
 AliTOFanalyzeSDigitsV2.C:88
 AliTOFanalyzeSDigitsV2.C:89
 AliTOFanalyzeSDigitsV2.C:90
 AliTOFanalyzeSDigitsV2.C:91
 AliTOFanalyzeSDigitsV2.C:92
 AliTOFanalyzeSDigitsV2.C:93
 AliTOFanalyzeSDigitsV2.C:94
 AliTOFanalyzeSDigitsV2.C:95
 AliTOFanalyzeSDigitsV2.C:96
 AliTOFanalyzeSDigitsV2.C:97
 AliTOFanalyzeSDigitsV2.C:98
 AliTOFanalyzeSDigitsV2.C:99
 AliTOFanalyzeSDigitsV2.C:100
 AliTOFanalyzeSDigitsV2.C:101
 AliTOFanalyzeSDigitsV2.C:102
 AliTOFanalyzeSDigitsV2.C:103
 AliTOFanalyzeSDigitsV2.C:104
 AliTOFanalyzeSDigitsV2.C:105
 AliTOFanalyzeSDigitsV2.C:106
 AliTOFanalyzeSDigitsV2.C:107
 AliTOFanalyzeSDigitsV2.C:108
 AliTOFanalyzeSDigitsV2.C:109
 AliTOFanalyzeSDigitsV2.C:110
 AliTOFanalyzeSDigitsV2.C:111
 AliTOFanalyzeSDigitsV2.C:112
 AliTOFanalyzeSDigitsV2.C:113
 AliTOFanalyzeSDigitsV2.C:114
 AliTOFanalyzeSDigitsV2.C:115
 AliTOFanalyzeSDigitsV2.C:116
 AliTOFanalyzeSDigitsV2.C:117
 AliTOFanalyzeSDigitsV2.C:118
 AliTOFanalyzeSDigitsV2.C:119
 AliTOFanalyzeSDigitsV2.C:120
 AliTOFanalyzeSDigitsV2.C:121
 AliTOFanalyzeSDigitsV2.C:122
 AliTOFanalyzeSDigitsV2.C:123
 AliTOFanalyzeSDigitsV2.C:124
 AliTOFanalyzeSDigitsV2.C:125
 AliTOFanalyzeSDigitsV2.C:126
 AliTOFanalyzeSDigitsV2.C:127
 AliTOFanalyzeSDigitsV2.C:128
 AliTOFanalyzeSDigitsV2.C:129
 AliTOFanalyzeSDigitsV2.C:130
 AliTOFanalyzeSDigitsV2.C:131
 AliTOFanalyzeSDigitsV2.C:132
 AliTOFanalyzeSDigitsV2.C:133
 AliTOFanalyzeSDigitsV2.C:134
 AliTOFanalyzeSDigitsV2.C:135
 AliTOFanalyzeSDigitsV2.C:136
 AliTOFanalyzeSDigitsV2.C:137
 AliTOFanalyzeSDigitsV2.C:138
 AliTOFanalyzeSDigitsV2.C:139
 AliTOFanalyzeSDigitsV2.C:140
 AliTOFanalyzeSDigitsV2.C:141
 AliTOFanalyzeSDigitsV2.C:142
 AliTOFanalyzeSDigitsV2.C:143
 AliTOFanalyzeSDigitsV2.C:144
 AliTOFanalyzeSDigitsV2.C:145
 AliTOFanalyzeSDigitsV2.C:146
 AliTOFanalyzeSDigitsV2.C:147
 AliTOFanalyzeSDigitsV2.C:148
 AliTOFanalyzeSDigitsV2.C:149
 AliTOFanalyzeSDigitsV2.C:150
 AliTOFanalyzeSDigitsV2.C:151
 AliTOFanalyzeSDigitsV2.C:152
 AliTOFanalyzeSDigitsV2.C:153
 AliTOFanalyzeSDigitsV2.C:154
 AliTOFanalyzeSDigitsV2.C:155
 AliTOFanalyzeSDigitsV2.C:156
 AliTOFanalyzeSDigitsV2.C:157
 AliTOFanalyzeSDigitsV2.C:158
 AliTOFanalyzeSDigitsV2.C:159
 AliTOFanalyzeSDigitsV2.C:160
 AliTOFanalyzeSDigitsV2.C:161
 AliTOFanalyzeSDigitsV2.C:162
 AliTOFanalyzeSDigitsV2.C:163
 AliTOFanalyzeSDigitsV2.C:164
 AliTOFanalyzeSDigitsV2.C:165
 AliTOFanalyzeSDigitsV2.C:166
 AliTOFanalyzeSDigitsV2.C:167
 AliTOFanalyzeSDigitsV2.C:168
 AliTOFanalyzeSDigitsV2.C:169
 AliTOFanalyzeSDigitsV2.C:170
 AliTOFanalyzeSDigitsV2.C:171
 AliTOFanalyzeSDigitsV2.C:172
 AliTOFanalyzeSDigitsV2.C:173
 AliTOFanalyzeSDigitsV2.C:174
 AliTOFanalyzeSDigitsV2.C:175
 AliTOFanalyzeSDigitsV2.C:176
 AliTOFanalyzeSDigitsV2.C:177
 AliTOFanalyzeSDigitsV2.C:178
 AliTOFanalyzeSDigitsV2.C:179
 AliTOFanalyzeSDigitsV2.C:180
 AliTOFanalyzeSDigitsV2.C:181
 AliTOFanalyzeSDigitsV2.C:182
 AliTOFanalyzeSDigitsV2.C:183
 AliTOFanalyzeSDigitsV2.C:184
 AliTOFanalyzeSDigitsV2.C:185
 AliTOFanalyzeSDigitsV2.C:186
 AliTOFanalyzeSDigitsV2.C:187
 AliTOFanalyzeSDigitsV2.C:188
 AliTOFanalyzeSDigitsV2.C:189
 AliTOFanalyzeSDigitsV2.C:190
 AliTOFanalyzeSDigitsV2.C:191
 AliTOFanalyzeSDigitsV2.C:192
 AliTOFanalyzeSDigitsV2.C:193
 AliTOFanalyzeSDigitsV2.C:194
 AliTOFanalyzeSDigitsV2.C:195
 AliTOFanalyzeSDigitsV2.C:196
 AliTOFanalyzeSDigitsV2.C:197
 AliTOFanalyzeSDigitsV2.C:198
 AliTOFanalyzeSDigitsV2.C:199
 AliTOFanalyzeSDigitsV2.C:200
 AliTOFanalyzeSDigitsV2.C:201
 AliTOFanalyzeSDigitsV2.C:202
 AliTOFanalyzeSDigitsV2.C:203