fV0multC(0),
fV0ampl(0),
- fhTimePMTCorr(0),
fhEvents(0),
fhVtxXYBB(0),
fV0multC(0),
fV0ampl(0),
- fhTimePMTCorr(0),
fhEvents(0),
fhVtxXYBB(0),
AliInfo("AliAnaVZEROQA::UserCreateOutputObjects");
// Create output container
fListOfHistos = new TList();
+ fListOfHistos->SetOwner();
fhAdcNoTimeA = CreateHisto1D("hAdcNoTimeA","ADC (no Leading Time) V0A",200,0,200,"ADC charge","Entries");
fhAdcWithTimeA = CreateHisto1D("hAdcWithTimeA","ADC ( with Leading Time) V0A",200,0,200,"ADC charge","Entries");
fV0multC = CreateHisto1D("hV0multC","Total reconstructed multiplicity (V0C)",100,0.,1000.);
fV0ampl = CreateHisto1D("hV0ampl","V0 multiplicity in single channel (all V0 channels)",400,-0.5,99.5);
- fhTimePMTCorr = CreateHisto2D("htimepmtcorr","Time measured by TDC (corrected for slewing, channels aligned) vs PMT index",64,-0.5,63.5,200,0,100,"PMT Index","Leading time (ns)");
fhEvents = CreateHisto2D("hEvents","V0C vs V0A (empty,bb,bg)",3,-0.5,2.5,3,-0.5,2.5);
fhVtxXYBB = CreateHisto2D("fhVtxXYBB","XY SPD vertex (bb)",200,-2,2,200,-2,2);
fListOfHistos->Add(fV0multC);
fListOfHistos->Add(fV0ampl);
- fListOfHistos->Add(fhTimePMTCorr);
fListOfHistos->Add(fhEvents);
fListOfHistos->Add(fhVtxXYBB);
fListOfHistos->Add(fhVtxZBGA);
fListOfHistos->Add(fhVtxXYBGC);
fListOfHistos->Add(fhVtxZBGC);
+
+ PostData(1, fListOfHistos);
}
void AliAnaVZEROQA::UserExec(Option_t */*option*/)
}
AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
+ if (!esd) {
+ Printf("ERROR: No ESD event");
+ return;
+ }
AliESDVZERO* esdV0 = esd->GetVZEROData();
+ if (!esdV0) {
+ Printf("ERROR: No ESD VZERO");
+ return;
+ }
- Float_t timeA = 0,timeC = 0;
- Int_t ntimeA = 0, ntimeC = 0;
for (Int_t i=0; i<64; ++i) {
if (esdV0->GetTime(i) < 1e-6) {
if (i >= 32) {
if (i >= 32) {
fhTimeA->Fill(esdV0->GetTime(i));
fhWidthA->Fill(esdV0->GetWidth(i));
- fhAdcWidthA->Fill(esdV0->GetAdc(i),esdV0->GetTime(i));
+ fhAdcWidthA->Fill(esdV0->GetAdc(i),esdV0->GetWidth(i));
fhAdcTimeA->Fill(esdV0->GetTime(i),esdV0->GetAdc(i));
}
else {
fhTimeC->Fill(esdV0->GetTime(i));
fhWidthC->Fill(esdV0->GetWidth(i));
- fhAdcWidthC->Fill(esdV0->GetAdc(i),esdV0->GetTime(i));
+ fhAdcWidthC->Fill(esdV0->GetAdc(i),esdV0->GetWidth(i));
fhAdcTimeC->Fill(esdV0->GetTime(i),esdV0->GetAdc(i));
}
fhTimePMT->Fill(i,esdV0->GetTime(i));
fhWidthPMT->Fill(i,esdV0->GetWidth(i));
- Float_t correctedTime = CorrectLeadingTime(i,esdV0->GetTime(i),esdV0->GetAdc(i));
- fhTimePMTCorr->Fill(i,correctedTime);
-
- if (esdV0->GetTime(i) > 1e-6) {
- if (i >= 32) {
- timeA += correctedTime;
- ntimeA++;
- }
- else {
- timeC += correctedTime;
- ntimeC++;
- }
- }
}
- if (ntimeA > 0) timeA = timeA/ntimeA;
- if (ntimeC > 0) timeC = timeC/ntimeC;
-
- fhTimeCorr->Fill(timeA,timeC);
+ fhTimeCorr->Fill(esdV0->GetV0ATime(),esdV0->GetV0CTime());
- Int_t flaga = 0, flagc = 0;
- TString stra("emptyA"),strc("emptyC");
- if (timeA > 48 && timeA < 62) { flaga = 1; stra = "BBA"; }
- if (timeA > 26 && timeA < 33) { flaga = 2; stra = "BGA"; }
- if (timeC > 49 && timeC < 60) { flagc = 1; strc = "BBC"; }
- if (timeC > 43 && timeC < 48.5) { flagc = 2; strc = "BGC"; }
+ AliESDVZERO::Decision flaga = esdV0->GetV0ADecision();
+ AliESDVZERO::Decision flagc = esdV0->GetV0CDecision();
fhEvents->Fill(flaga,flagc);
return;
}
- fhAdcNoTimeA = dynamic_cast<TH1F*>(fListOfHistos->At(0));
- fhAdcWithTimeA = dynamic_cast<TH1F*>(fListOfHistos->At(1));
- fhAdcNoTimeC = dynamic_cast<TH1F*>(fListOfHistos->At(2));
- fhAdcWithTimeC = dynamic_cast<TH1F*>(fListOfHistos->At(3));
-
- fhAdcPMTNoTime = dynamic_cast<TH2F*>(fListOfHistos->At(4));
- fhAdcPMTWithTime = dynamic_cast<TH2F*>(fListOfHistos->At(5));
-
- fhTimeA = dynamic_cast<TH1F*>(fListOfHistos->At(6));
- fhTimeC = dynamic_cast<TH1F*>(fListOfHistos->At(7));
-
- fhWidthA = dynamic_cast<TH1F*>(fListOfHistos->At(8));
- fhWidthC = dynamic_cast<TH1F*>(fListOfHistos->At(9));
-
- fhTimePMT = dynamic_cast<TH2F*>(fListOfHistos->At(10));
- fhWidthPMT = dynamic_cast<TH2F*>(fListOfHistos->At(11));
-
- fhAdcWidthA = dynamic_cast<TH2F*>(fListOfHistos->At(12));
- fhAdcWidthC = dynamic_cast<TH2F*>(fListOfHistos->At(13));
-
- fhTimeCorr = dynamic_cast<TH2F*>(fListOfHistos->At(14));
-
- fhAdcTimeA = dynamic_cast<TH2F*>(fListOfHistos->At(15));
- fhAdcTimeC = dynamic_cast<TH2F*>(fListOfHistos->At(16));
-
- fV0a = dynamic_cast<TH1F*>(fListOfHistos->At(17));
- fV0c = dynamic_cast<TH1F*>(fListOfHistos->At(18));
- fV0multA = dynamic_cast<TH1F*>(fListOfHistos->At(19));
- fV0multC = dynamic_cast<TH1F*>(fListOfHistos->At(20));
- fV0ampl = dynamic_cast<TH1F*>(fListOfHistos->At(21));
-
- fhTimePMTCorr = dynamic_cast<TH2F*>(fListOfHistos->At(22));
- fhEvents = dynamic_cast<TH2F*>(fListOfHistos->At(23));
-
- fhVtxXYBB = dynamic_cast<TH2F*>(fListOfHistos->At(24));
- fhVtxZBB = dynamic_cast<TH1F*>(fListOfHistos->At(25));
- fhVtxXYBGA = dynamic_cast<TH2F*>(fListOfHistos->At(26));
- fhVtxZBGA = dynamic_cast<TH1F*>(fListOfHistos->At(27));
- fhVtxXYBGC = dynamic_cast<TH2F*>(fListOfHistos->At(28));
- fhVtxZBGC = dynamic_cast<TH1F*>(fListOfHistos->At(29));
-
- // draw the histograms if not in batch mode
- if (!gROOT->IsBatch()) {
- new TCanvas;
- fhTimePMT->DrawCopy();
- new TCanvas;
- fhAdcTimeA->DrawCopy();
- new TCanvas;
- fhAdcTimeC->DrawCopy();
- new TCanvas;
- fhAdcPMTNoTime->DrawCopy();
- new TCanvas;
- fhAdcPMTWithTime->DrawCopy();
- new TCanvas;
- fhTimeCorr->DrawCopy("E");
- new TCanvas;
- fV0ampl->DrawCopy("E");
- new TCanvas;
- fhTimePMTCorr->DrawCopy("colz");
- new TCanvas;
- fhEvents->DrawCopy("colz");
- }
-
- // write the output histograms to a file
- TFile* outputFile = TFile::Open("VZEROQA.root", "recreate");
- if (!outputFile || !outputFile->IsOpen())
- {
- Error("AliAnaVZEROQA", "opening output file VZEROQA.root failed");
- return;
- }
-
- fhAdcNoTimeA->Write();
- fhAdcWithTimeA->Write();
- fhAdcNoTimeC->Write();
- fhAdcWithTimeC->Write();
-
- fhAdcPMTNoTime->Write();
- fhAdcPMTWithTime->Write();
-
- fhTimeA->Write();
- fhTimeC->Write();
-
- fhWidthA->Write();
- fhWidthC->Write();
-
- fhTimePMT->Write();
- fhWidthPMT->Write();
-
- fhAdcWidthA->Write();
- fhAdcWidthC->Write();
-
- fhTimeCorr->Write();
-
- fhAdcTimeA->Write();
- fhAdcTimeC->Write();
-
- fV0a->Write();
- fV0c->Write();
- fV0multA->Write();
- fV0multC->Write();
- fV0ampl->Write();
-
- fhTimePMTCorr->Write();
- fhEvents->Write();
-
- fhVtxXYBB->Write();
- fhVtxZBB->Write();
- fhVtxXYBGA->Write();
- fhVtxZBGA->Write();
- fhVtxXYBGC->Write();
- fhVtxZBGC->Write();
-
- outputFile->Close();
- delete outputFile;
-
- //delete esd;
Info("AliAnaVZEROQA", "Successfully finished");
}
-
-Float_t AliAnaVZEROQA::CorrectLeadingTime(Int_t i, Float_t time, Float_t adc) const
-{
- // Correct for slewing and align the channels
-
- if (time < 1e-6) return 0;
-
- // Time offsets between channels
- Float_t timeShift[64] = {30.2914 , 30.0019 , 30.7429 , 30.1997 , 30.1511 , 29.6437 , 30.0609 , 29.5452 , 30.1437 , 30.745 , 30.7537 , 30.446 , 30.2771 , 30.838 , 30.3748 , 30.0635 , 30.1786 , 30.282 , 31.0992 , 30.7491 , 30.624 , 30.9268 , 30.6585 , 30.4895 , 31.5815 , 31.3871 , 31.2032 , 31.5778 , 31.0838 , 31.2259 , 31.2122 , 31.5989 , 28.3792 , 28.8325 , 27.8719 , 28.3475 , 26.9925 , 27.9300 , 28.4223 , 28.4996 , 28.2934 , 28.1281 , 27.209 , 28.5327 , 28.1181 , 28.0888 , 29.5111 , 28.6601 , 29.7705 , 29.6531 , 30.3373 , 30.2345 , 30.5935 , 29.8164 , 30.2235 , 29.6505 , 30.1225 , 31.2045 , 30.8399 , 30.6789 , 30.2784 , 31.7028 , 31.4239 , 30.1814};
- time -= timeShift[i];
-
- // Slewing correction
- if (adc < 1e-6) return time;
-
- time += 30.;
- if (adc > 300.) adc = 300.;
- if (adc > 70.) {
- return (time -
- 2.93028e+01 +
- adc*1.25188e-02 -
- adc*adc*2.68348e-05);
- }
- else {
- return (time -
- 3.52314e+01 +
- adc*5.99289e-01 -
- adc*adc*2.74668e-02 +
- adc*adc*adc*6.61224e-04 -
- adc*adc*adc*adc*7.77105e-06 +
- adc*adc*adc*adc*adc*3.51229e-08);
- }
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-