]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFQADataMakerSim.cxx
Improved memory leaks in AliTOFtracker* classes: additional solution for bug #66136
[u/mrichter/AliRoot.git] / TOF / AliTOFQADataMakerSim.cxx
index faf92b698c4c747dab95a6cf44a768fd619b8fa4..9c49b7d3b568431723e94534154987dc063c50e9 100644 (file)
 ///////////////////////////////////////////////////////////////////////
 
 #include <TClonesArray.h>
-#include <TFile.h> 
-#include <TH1I.h> 
+//#include <TFile.h> 
+//#include <TH1I.h> 
 #include <TH1F.h> 
 #include <TH2F.h> 
 #include <TTree.h>
 #include <TMath.h>
 
+#include "AliLog.h"
+
 #include "AliTOFdigit.h"
 #include "AliTOFSDigit.h"
 #include "AliTOFhitT0.h"
 #include "AliTOFQADataMakerSim.h"
 #include "AliQAChecker.h"
-#include "AliLog.h"
 #include "AliTOFGeometry.h"
 
 
@@ -42,7 +43,7 @@ ClassImp(AliTOFQADataMakerSim)
            
 //____________________________________________________________________________ 
   AliTOFQADataMakerSim::AliTOFQADataMakerSim() : 
-  AliQADataMakerSim(AliQA::GetDetName(AliQA::kTOF), "TOF Quality Assurance Data Maker")
+  AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kTOF), "TOF Quality Assurance Data Maker")
 {
   //
   // ctor
@@ -77,21 +78,27 @@ void AliTOFQADataMakerSim::InitHits()
   //
   // create Hits histograms in Hits subdir
   //
-  TH1F * h0 = new TH1F("hTOFHits",    "Number of TOF Hits ",301, -1.02, 5.) ; 
+
+  const Bool_t expert   = kTRUE ; 
+  const Bool_t image    = kTRUE ;   
+  
+  TH1F * h0 = new TH1F("hTOFHits",    "Number of TOF Hits per event;TOF hit number;Counts ",101, -1., 100.) ; 
   h0->Sumw2() ;
-  Add2HitsList(h0, 0) ;
+  Add2HitsList(h0, 0, !expert, image) ;
 
-  TH1F * h1  = new TH1F("hTOFHitsTime", "Hits Time Spectrum in TOF (ns)", 2000, 0., 200) ; 
+  TH1F * h1  = new TH1F("hTOFHitsTime", "Hits Time Spectrum in TOF (ns);Simulated TOF time [ns];Counts", 25000, 0., 610.) ; 
   h1->Sumw2() ;
-  Add2HitsList(h1, 1) ;
+  Add2HitsList(h1, 1, !expert, image) ;
 
-  TH1F * h2  = new TH1F("hTOFHitsLength", "Length Spectrum in TOF (cm)", 500, 0., 500) ; 
+  TH1F * h2  = new TH1F("hTOFHitsLength", "Length Spectrum in TOF (cm);Track length from primary vertex till hit TOF pad [cm];Counts", 700, 0., 700) ; 
   h2->Sumw2() ;
-  Add2HitsList(h2, 2) ;
+  Add2HitsList(h2, 2, !expert, image) ;
 
-  TH2F * h3  = new TH2F("hTOFHitsClusMap","Hits vs TOF eta-phi",183, -0.5, 182.5,865,-0.5,864.5) ; 
+  TH2F * h3  = new TH2F("hTOFHitsClusMap","Hits vs TOF eta-phi;2*strip+padz (eta);48*sector+padx (phi)",183, -0.5, 182.5,865,-0.5,864.5) ; 
   h3->Sumw2() ;
-  Add2HitsList(h3, 3) ;
+  h3->GetYaxis()->SetTitleOffset(1.15);
+  Add2HitsList(h3, 3, !expert, image) ;
+
 }
 
 //____________________________________________________________________________ 
@@ -100,20 +107,26 @@ void AliTOFQADataMakerSim::InitDigits()
   //
   // create Digits histograms in Digits subdir
   //
-  TH1F * h0 = new TH1F("hTOFDigits",    "Number of TOF Digits ",301, -1.02, 5.) ;   h0->Sumw2() ;
-  Add2DigitsList(h0, 0) ;
 
-  TH1F * h1  = new TH1F("hTOFDigitsTime", "Digits Time Spectrum in TOF (ns)", 2000, 0., 200) ; 
+  const Bool_t expert   = kTRUE ; 
+  const Bool_t image    = kTRUE ; 
+  
+  TH1F * h0 = new TH1F("hTOFDigits",    "Number of TOF Digit per event;TOF digit number;Counts ",101, -1., 100.) ;
+  h0->Sumw2() ;
+  Add2DigitsList(h0, 0, !expert, image) ;
+
+  TH1F * h1  = new TH1F("hTOFDigitsTime", "Digits Time Spectrum in TOF (ns);Digitized TOF time [ns];Counts", 25000, 0., 610.) ; 
   h1->Sumw2() ;
-  Add2DigitsList(h1, 1) ;
+  Add2DigitsList(h1, 1, !expert, image) ;
 
-  TH1F * h2  = new TH1F("hTOFDigitsToT", "Digits ToT Spectrum in TOF (ns)", 500, 0., 50) ; 
+  TH1F * h2  = new TH1F("hTOFDigitsToT", "Digits ToT Spectrum in TOF (ns);Digitized ToT time [ns];Counts", 1000, 0., 48.8) ; 
   h2->Sumw2() ;
-  Add2DigitsList(h2, 2) ;
+  Add2DigitsList(h2, 2, !expert, image) ;
 
-  TH2F * h3  = new TH2F("hTOFDigitsClusMap","Digits vs TOF eta-phi",183, -0.5, 182.5,865,-0.5,864.5) ; 
+  TH2F * h3  = new TH2F("hTOFDigitsClusMap","Digits vs TOF eta-phi;2*strip+padz (eta);48*sector+padx (phi)",183, -0.5, 182.5,865,-0.5,864.5) ; 
   h3->Sumw2() ;
-  Add2DigitsList(h3, 3) ;
+  h3->GetYaxis()->SetTitleOffset(1.15);
+  Add2DigitsList(h3, 3, !expert, image) ;
 
 }
 
@@ -123,21 +136,27 @@ void AliTOFQADataMakerSim::InitSDigits()
   //
   // create SDigits histograms in SDigits subdir
   //
-  TH1F * h0 = new TH1F("hTOFSDigits",    "Number of TOF SDigits ",301, -1.02, 5.) ;   h0->Sumw2() ;
-  Add2SDigitsList(h0, 0) ;
 
-  TH1F * h1  = new TH1F("hTOFSDigitsTime", "SDigits Time Spectrum in TOF (ns)", 2000, 0., 200) ; 
+  const Bool_t expert   = kTRUE ; 
+  const Bool_t image    = kTRUE ; 
+  
+  TH1F * h0 = new TH1F("hTOFSDigits",    "Number of TOF SDigits per event;TOF sdigit number;Counts ",101, -1., 100.) ;
+  h0->Sumw2() ;
+  Add2SDigitsList(h0, 0, !expert, image) ;
+
+  TH1F * h1  = new TH1F("hTOFSDigitsTime", "SDigits Time Spectrum in TOF (ns);SDigitized TOF time [ns];Counts", 25000, 0., 610) ; 
   h1->Sumw2() ;
-  Add2SDigitsList(h1, 1) ;
+  Add2SDigitsList(h1, 1, !expert, image) ;
 
-  TH2F * h2  = new TH2F("hTOFSDigitsClusMap","SDigits vs TOF eta-phi",183, -0.5, 182.5,865,-0.5,864.5) ; 
+  TH2F * h2  = new TH2F("hTOFSDigitsClusMap","SDigits vs TOF eta-phi;2*strip+padz (eta);48*sector+padx (phi)",183, -0.5, 182.5,865,-0.5,864.5) ; 
   h2->Sumw2() ;
-  Add2SDigitsList(h2, 2) ;
+  h2->GetYaxis()->SetTitleOffset(1.15);
+  Add2SDigitsList(h2, 2, !expert, image) ;
 
 }
 
 //____________________________________________________________________________
-void AliTOFQADataMakerSim::MakeHits(TClonesArray * hits)
+void AliTOFQADataMakerSim::MakeHits()
 {
   //
   //make QA data from Hits
@@ -146,13 +165,13 @@ void AliTOFQADataMakerSim::MakeHits(TClonesArray * hits)
   Int_t in[5];
   Int_t out[5];
 
-  Int_t nentries=hits->GetEntriesFast();
+  Int_t nentries= fHitsArray->GetEntriesFast();
   if(nentries<=0) {
     GetHitsData(0)->Fill(-1.) ; 
   } else{
-    GetHitsData(0)->Fill(TMath::Log10(nentries)) ; 
+    GetHitsData(0)->Fill(nentries) ; 
   }
-  TIter next(hits) ; 
+  TIter next(fHitsArray) ; 
   AliTOFhitT0 * hit ; 
   while ( (hit = dynamic_cast<AliTOFhitT0 *>(next())) ) {
 
@@ -167,7 +186,6 @@ void AliTOFQADataMakerSim::MakeHits(TClonesArray * hits)
     GetMapIndeces(in,out);
     GetHitsData(3)->Fill( out[0],out[1]) ;//hit map
   }
-
 }
 
 
@@ -179,7 +197,7 @@ void AliTOFQADataMakerSim::MakeHits(TTree * hitTree)
   //
   if(!hitTree){
     AliError("can't get the tree with TOF hits !");
-    return;
+    return; 
   }    
 
   TBranch * branch = hitTree->GetBranch("TOF") ;
@@ -189,44 +207,39 @@ void AliTOFQADataMakerSim::MakeHits(TTree * hitTree)
     return;
   }
 
-  TClonesArray * hits = new TClonesArray("AliTOFhitT0", 1000);
-  TClonesArray * dummy = new TClonesArray("AliTOFhitT0", 1000);
-  branch->SetAddress(&dummy);
-  Int_t index = 0 ;  
+  if (fHitsArray) 
+    fHitsArray->Clear() ; 
+  else 
+    fHitsArray = new TClonesArray("AliTOFhitT0", 1000) ;
+  
+  branch->SetAddress(&fHitsArray);
   for (Int_t ientry = 0 ; ientry < branch->GetEntries() ; ientry++) {
     branch->GetEntry(ientry) ; 
-    for (Int_t ihit = 0 ; ihit < dummy->GetEntries() ; ihit++) {
-      AliTOFhitT0 * hit = dynamic_cast<AliTOFhitT0 *> (dummy->At(ihit)) ; 
-      new((*hits)[index]) AliTOFhitT0(*hit) ; 
-      index++ ;
-    } 
+    MakeHits() ; 
+    fHitsArray->Clear() ; 
   }    
-
-  dummy->Delete();
-  delete dummy;
-  MakeHits(hits) ; 
-
 }
 
 //____________________________________________________________________________
-void AliTOFQADataMakerSim::MakeDigits(TClonesArray * digits)
+void AliTOFQADataMakerSim::MakeDigits()
 {
   //
   // makes data from Digits
   //
+  
   Double_t tdc2ns=AliTOFGeometry::TdcBinWidth()*1E-3;
   Double_t tot2ns=AliTOFGeometry::ToTBinWidth()*1E-3;
   Int_t in[5];
   Int_t out[5];
 
-  Int_t nentries=digits->GetEntriesFast();
+  Int_t nentries=fDigitsArray->GetEntriesFast();
   if(nentries<=0){
     GetDigitsData(0)->Fill(-1.) ; 
   }else{
-    GetDigitsData(0)->Fill(TMath::Log10(nentries)) ; 
+    GetDigitsData(0)->Fill(nentries) ; 
   } 
 
-  TIter next(digits) ; 
+  TIter next(fDigitsArray) ; 
   AliTOFdigit * digit ; 
   while ( (digit = dynamic_cast<AliTOFdigit *>(next())) ) {
     
@@ -251,37 +264,40 @@ void AliTOFQADataMakerSim::MakeDigits(TTree * digitTree)
   //
   // makes data from Digit Tree
   //
-  TClonesArray * digits = new TClonesArray("AliTOFdigit", 1000) ; 
+  if (fDigitsArray) 
+    fDigitsArray->Clear() ; 
+  else 
+    fDigitsArray = new TClonesArray("AliTOFdigit", 1000) ; 
   
   TBranch * branch = digitTree->GetBranch("TOF") ;
   if ( ! branch ) {
     AliError("TOF branch in Digit Tree not found") ; 
     return;
   }
-  branch->SetAddress(&digits) ;
+  branch->SetAddress(&fDigitsArray) ;
   branch->GetEntry(0) ; 
-  MakeDigits(digits) ; 
+  MakeDigits() ; 
 }
 
 //____________________________________________________________________________
-void AliTOFQADataMakerSim::MakeSDigits(TClonesArray * sdigits)
+void AliTOFQADataMakerSim::MakeSDigits()
 {
   //
   // makes data from SDigits
   //
-
+  
   Double_t tdc2ns=AliTOFGeometry::TdcBinWidth()*1E-3;
   Int_t in[5];
   Int_t out[5];
 
-  Int_t nentries=sdigits->GetEntriesFast();
+  Int_t nentries=fSDigitsArray->GetEntriesFast();
   if(nentries<=0){
     GetSDigitsData(0)->Fill(-1.) ; 
   }else{
-    GetSDigitsData(0)->Fill(TMath::Log10(nentries)) ; 
+    GetSDigitsData(0)->Fill(nentries) ; 
   } 
 
-  TIter next(sdigits) ; 
+  TIter next(fSDigitsArray) ; 
   AliTOFSDigit * sdigit ; 
   while ( (sdigit = dynamic_cast<AliTOFSDigit *>(next())) ) {
     
@@ -305,16 +321,19 @@ void AliTOFQADataMakerSim::MakeSDigits(TTree * sdigitTree)
   //
   // makes data from SDigit Tree
   //
-  TClonesArray * sdigits = new TClonesArray("AliTOFSDigit", 1000) ; 
+  if (fSDigitsArray) 
+    fSDigitsArray->Clear() ; 
+  else 
+    fSDigitsArray = new TClonesArray("AliTOFSDigit", 1000) ; 
   
   TBranch * branch = sdigitTree->GetBranch("TOF") ;
   if ( ! branch ) {
     AliError("TOF branch in SDigit Tree not found") ; 
     return;
   }
-  branch->SetAddress(&sdigits) ;
+  branch->SetAddress(&fSDigitsArray) ;
   branch->GetEntry(0) ; 
-  MakeSDigits(sdigits) ; 
+  MakeSDigits() ; 
 }
 
 //____________________________________________________________________________ 
@@ -326,12 +345,12 @@ void AliTOFQADataMakerSim::StartOfDetectorCycle()
 }
 
 //____________________________________________________________________________ 
-void AliTOFQADataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX task, TObjArray * list)
+void AliTOFQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
 {
   //Detector specific actions at end of cycle
   // do the QA checking
 
-  AliQAChecker::Instance()->Run(AliQA::kTOF, task, list) ;  
+  AliQAChecker::Instance()->Run(AliQAv1::kTOF, task, list) ;  
 }
 //____________________________________________________________________________
 void AliTOFQADataMakerSim::GetMapIndeces(Int_t* in , Int_t* out)