]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/AliAnaVZEROQA.cxx
Protections added (F.Bellini)
[u/mrichter/AliRoot.git] / PWG1 / AliAnaVZEROQA.cxx
index 8e08eaee628db99802211b492354b71658d658f0..b87a16f132bf5c920544cdf22cb341af31ea8a07 100644 (file)
@@ -69,7 +69,6 @@ AliAnalysisTaskSE("AliAnaVZEROQA"),
   fV0multC(0),
   fV0ampl(0),
 
-  fhTimePMTCorr(0),
   fhEvents(0),
 
   fhVtxXYBB(0),
@@ -121,7 +120,6 @@ AliAnalysisTaskSE(name),
   fV0multC(0),
   fV0ampl(0),
 
-  fhTimePMTCorr(0),
   fhEvents(0),
 
   fhVtxXYBB(0),
@@ -172,6 +170,7 @@ void AliAnaVZEROQA::UserCreateOutputObjects()
   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");
@@ -204,7 +203,6 @@ void AliAnaVZEROQA::UserCreateOutputObjects()
   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);
@@ -245,7 +243,6 @@ void AliAnaVZEROQA::UserCreateOutputObjects()
   fListOfHistos->Add(fV0multC);
   fListOfHistos->Add(fV0ampl);
 
-  fListOfHistos->Add(fhTimePMTCorr);
   fListOfHistos->Add(fhEvents);
 
   fListOfHistos->Add(fhVtxXYBB);
@@ -254,6 +251,8 @@ void AliAnaVZEROQA::UserCreateOutputObjects()
   fListOfHistos->Add(fhVtxZBGA);
   fListOfHistos->Add(fhVtxXYBGC);
   fListOfHistos->Add(fhVtxZBGC);
+
+  PostData(1, fListOfHistos);
 }
 
 void AliAnaVZEROQA::UserExec(Option_t */*option*/)
@@ -267,10 +266,16 @@ 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) {
@@ -294,44 +299,24 @@ void AliAnaVZEROQA::UserExec(Option_t */*option*/)
       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);
 
@@ -374,214 +359,5 @@ void AliAnaVZEROQA::Terminate(Option_t *)
     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);
-  }
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-