Int_t AliTOFanalyzeSDigits(TString headersFile, Int_t ndump=15, Int_t iEvNum=0)
{
//
// Analyzes the TOF sdigits and fills QA-histograms
// report problems to pierella@bo.infn.it
// iEvNum=0 means all events in the file
// Dynamically link some shared libs
if (gClassTable->GetID("AliRun") < 0) {
gROOT->LoadMacro("loadlibs.C");
loadlibs();
} else {
delete gAlice;
gAlice = 0;
}
Int_t rc=0;
TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(headersFile.Data());
if(file){
cout<<"headerFile already open \n";
}
else {
if(!file)file=TFile::Open(headersFile.Data());
}
// Get AliRun object from file
if (!gAlice) {
gAlice = (AliRun*)file->Get("gAlice");
if (gAlice) printf("AliRun object found on file\n");
}
if (iEvNum == 0) iEvNum = (Int_t) gAlice->TreeE()->GetEntries();
AliTOFSDigit *tofsdigit;
AliTOF * tof = (AliTOF *) gAlice->GetDetector("TOF") ;
if (!tof) {
cout << "<AliTOFanalyzeSDigits> No TOF detector found" << endl;
rc = 2;
return rc;
}
// 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",20,0.,20.);
TH1F *hplate = new TH1F("hplate","Plate ", 6,0., 6.);
TH1F *hstrip = new TH1F("hstrip","Strip ",25,0.,25.);
TH1F *hpadz = new TH1F("hpadz","Pad along z ",3,0.,3.);
TH1F *hpadx = new TH1F("hpadx","Pad along x",50,0.,50.);
// ADC-TDC correlation
TH2F *h2tdcVSadc = new TH2F("h2tdcVSadc","TDC [bin] VS ADC [bin]",500,0.,150000.,100,0.,3000.);
cout << "First " << ndump << " SDigits found in TOF TreeS branch have:" << endl;
for (Int_t ievent = 0; ievent < iEvNum; ievent++) {
gAlice->GetEvent(ievent) ;
if(gAlice->TreeS()==0) {
cout << "<AliTOFanalyzeSDigits> No TreeS found" << endl;
rc = 4;
return rc;
}
Int_t ndig, k;
gAlice->ResetDigits();
gAlice->TreeS()->GetEvent(ievent);
TClonesArray * TOFdigits = tof->SDigits();
ndig=TOFdigits->GetEntries();
cout << "<AliTOFanalyzeSDigits> found " << ndig
<< " TOF sdigits for event " << ievent << endl;
for (k=0; k<ndig; k++) {
tofsdigit= (AliTOFSDigit*) TOFdigits->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 [1-18]
Int_t plate = tofsdigit->GetPlate(); // range [1- 5]
Int_t strip = tofsdigit->GetStrip(); // range [1-20]
Int_t padz = tofsdigit->GetPadz(); // range [1- 2]
Int_t padx = tofsdigit->GetPadx(); // range [1-48]
// it is QA, then I perform QA!
Bool_t isSDigitBad = (sector<1 || sector>18 || plate<1 || plate >5 || padz<1 || padz>2 || padx<1 || padx>48);
if (isSDigitBad) {
cout << "<AliTOFanalyzeSDigits> strange sdigit found" << endl;
rc = 3;
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]" << endl;
cout << "----------------------------------------------------"<< endl;
}
// filling sdigit volume histos
hsector->Fill(sector);
hplate->Fill(plate);
hstrip->Fill(strip);
hpadx->Fill(padx);
hpadz->Fill(padz);
h2tdcVSadc->Fill(firstTDC,firstADC);
//cout << "firstTDC " << firstTDC << " firstADC " << firstADC << endl;
}
} // end loop on events
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();
return rc;
}
AliTOFanalyzeSDigits.C:10 AliTOFanalyzeSDigits.C:11 AliTOFanalyzeSDigits.C:12 AliTOFanalyzeSDigits.C:13 AliTOFanalyzeSDigits.C:14 AliTOFanalyzeSDigits.C:15 AliTOFanalyzeSDigits.C:16 AliTOFanalyzeSDigits.C:17 AliTOFanalyzeSDigits.C:18 AliTOFanalyzeSDigits.C:19 AliTOFanalyzeSDigits.C:20 AliTOFanalyzeSDigits.C:21 AliTOFanalyzeSDigits.C:22 AliTOFanalyzeSDigits.C:23 AliTOFanalyzeSDigits.C:24 AliTOFanalyzeSDigits.C:25 AliTOFanalyzeSDigits.C:26 AliTOFanalyzeSDigits.C:27 AliTOFanalyzeSDigits.C:28 AliTOFanalyzeSDigits.C:29 AliTOFanalyzeSDigits.C:30 AliTOFanalyzeSDigits.C:31 AliTOFanalyzeSDigits.C:32 AliTOFanalyzeSDigits.C:33 AliTOFanalyzeSDigits.C:34 AliTOFanalyzeSDigits.C:35 AliTOFanalyzeSDigits.C:36 AliTOFanalyzeSDigits.C:37 AliTOFanalyzeSDigits.C:38 AliTOFanalyzeSDigits.C:39 AliTOFanalyzeSDigits.C:40 AliTOFanalyzeSDigits.C:41 AliTOFanalyzeSDigits.C:42 AliTOFanalyzeSDigits.C:43 AliTOFanalyzeSDigits.C:44 AliTOFanalyzeSDigits.C:45 AliTOFanalyzeSDigits.C:46 AliTOFanalyzeSDigits.C:47 AliTOFanalyzeSDigits.C:48 AliTOFanalyzeSDigits.C:49 AliTOFanalyzeSDigits.C:50 AliTOFanalyzeSDigits.C:51 AliTOFanalyzeSDigits.C:52 AliTOFanalyzeSDigits.C:53 AliTOFanalyzeSDigits.C:54 AliTOFanalyzeSDigits.C:55 AliTOFanalyzeSDigits.C:56 AliTOFanalyzeSDigits.C:57 AliTOFanalyzeSDigits.C:58 AliTOFanalyzeSDigits.C:59 AliTOFanalyzeSDigits.C:60 AliTOFanalyzeSDigits.C:61 AliTOFanalyzeSDigits.C:62 AliTOFanalyzeSDigits.C:63 AliTOFanalyzeSDigits.C:64 AliTOFanalyzeSDigits.C:65 AliTOFanalyzeSDigits.C:66 AliTOFanalyzeSDigits.C:67 AliTOFanalyzeSDigits.C:68 AliTOFanalyzeSDigits.C:69 AliTOFanalyzeSDigits.C:70 AliTOFanalyzeSDigits.C:71 AliTOFanalyzeSDigits.C:72 AliTOFanalyzeSDigits.C:73 AliTOFanalyzeSDigits.C:74 AliTOFanalyzeSDigits.C:75 AliTOFanalyzeSDigits.C:76 AliTOFanalyzeSDigits.C:77 AliTOFanalyzeSDigits.C:78 AliTOFanalyzeSDigits.C:79 AliTOFanalyzeSDigits.C:80 AliTOFanalyzeSDigits.C:81 AliTOFanalyzeSDigits.C:82 AliTOFanalyzeSDigits.C:83 AliTOFanalyzeSDigits.C:84 AliTOFanalyzeSDigits.C:85 AliTOFanalyzeSDigits.C:86 AliTOFanalyzeSDigits.C:87 AliTOFanalyzeSDigits.C:88 AliTOFanalyzeSDigits.C:89 AliTOFanalyzeSDigits.C:90 AliTOFanalyzeSDigits.C:91 AliTOFanalyzeSDigits.C:92 AliTOFanalyzeSDigits.C:93 AliTOFanalyzeSDigits.C:94 AliTOFanalyzeSDigits.C:95 AliTOFanalyzeSDigits.C:96 AliTOFanalyzeSDigits.C:97 AliTOFanalyzeSDigits.C:98 AliTOFanalyzeSDigits.C:99 AliTOFanalyzeSDigits.C:100 AliTOFanalyzeSDigits.C:101 AliTOFanalyzeSDigits.C:102 AliTOFanalyzeSDigits.C:103 AliTOFanalyzeSDigits.C:104 AliTOFanalyzeSDigits.C:105 AliTOFanalyzeSDigits.C:106 AliTOFanalyzeSDigits.C:107 AliTOFanalyzeSDigits.C:108 AliTOFanalyzeSDigits.C:109 AliTOFanalyzeSDigits.C:110 AliTOFanalyzeSDigits.C:111 AliTOFanalyzeSDigits.C:112 AliTOFanalyzeSDigits.C:113 AliTOFanalyzeSDigits.C:114 AliTOFanalyzeSDigits.C:115 AliTOFanalyzeSDigits.C:116 AliTOFanalyzeSDigits.C:117 AliTOFanalyzeSDigits.C:118 AliTOFanalyzeSDigits.C:119 AliTOFanalyzeSDigits.C:120 AliTOFanalyzeSDigits.C:121 AliTOFanalyzeSDigits.C:122 AliTOFanalyzeSDigits.C:123 AliTOFanalyzeSDigits.C:124 AliTOFanalyzeSDigits.C:125 AliTOFanalyzeSDigits.C:126 AliTOFanalyzeSDigits.C:127 AliTOFanalyzeSDigits.C:128 AliTOFanalyzeSDigits.C:129 AliTOFanalyzeSDigits.C:130 AliTOFanalyzeSDigits.C:131 AliTOFanalyzeSDigits.C:132 AliTOFanalyzeSDigits.C:133 AliTOFanalyzeSDigits.C:134 AliTOFanalyzeSDigits.C:135 AliTOFanalyzeSDigits.C:136 AliTOFanalyzeSDigits.C:137 AliTOFanalyzeSDigits.C:138 AliTOFanalyzeSDigits.C:139 AliTOFanalyzeSDigits.C:140