]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSQADataMakerSim.cxx
Protection against double setting of bad channels.
[u/mrichter/AliRoot.git] / PHOS / AliPHOSQADataMakerSim.cxx
index 4127dbad99cd350b0ebd4f32aa13329d0fc541d1..b825c52663ad3561a239d23f2c5a7351e431798e 100644 (file)
@@ -43,8 +43,8 @@
 ClassImp(AliPHOSQADataMakerSim)
            
 //____________________________________________________________________________ 
-  AliPHOSQADataMakerSim::AliPHOSQADataMakerSim() : 
-  AliQADataMakerSim(AliQA::GetDetName(AliQA::kPHOS), "PHOS Quality Assurance Data Maker")
+AliPHOSQADataMakerSim::AliPHOSQADataMakerSim() : 
+  AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kPHOS), "PHOS Quality Assurance Data Maker")
 {
   // ctor
 }
@@ -68,145 +68,155 @@ AliPHOSQADataMakerSim& AliPHOSQADataMakerSim::operator = (const AliPHOSQADataMak
 }
  
 //____________________________________________________________________________ 
-void AliPHOSQADataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX task, TObjArray * list)
+void AliPHOSQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
 {
   //Detector specific actions at end of cycle
   // do the QA checking
-  AliQAChecker::Instance()->Run(AliQA::kPHOS, task, list) ;  
+  AliQAChecker::Instance()->Run(AliQAv1::kPHOS, task, list) ;  
 }
 
 //____________________________________________________________________________ 
 void AliPHOSQADataMakerSim::InitHits()
 {
   // create Hits histograms in Hits subdir
-  TH1F * h0 = new TH1F("hPhosHits",    "Hits energy distribution in PHOS",       100, 0., 100.) ; 
+  const Bool_t expert   = kTRUE ; 
+  const Bool_t image    = kTRUE ; 
+  TH1F * h0 = new TH1F("hPhosHits",    "Hits energy distribution in PHOS;Energy [MeV];Counts",       100, 0., 100.) ; 
   h0->Sumw2() ;
-  Add2HitsList(h0, 0) ;
-  TH1I * h1  = new TH1I("hPhosHitsMul", "Hits multiplicity distribution in PHOS", 500, 0., 10000) ; 
+  Add2HitsList(h0, kHits, !expert, image) ;
+  TH1I * h1 = new TH1I("hPhosHitsMul", "Hits multiplicity distribution in PHOS;# of Hits;Entries", 500, 0., 10000) ; 
   h1->Sumw2() ;
-  Add2HitsList(h1, 1) ;
+  Add2HitsList(h1, kHitsMul, !expert, image) ;
+  
 }
 
 //____________________________________________________________________________ 
 void AliPHOSQADataMakerSim::InitDigits()
 {
   // create Digits histograms in Digits subdir
-  TH1I * h0 = new TH1I("hPhosDigits",    "Digits amplitude distribution in PHOS",    500, 0, 5000) ; 
+  const Bool_t expert   = kTRUE ; 
+  const Bool_t image    = kTRUE ; 
+  TH1I * h0 = new TH1I("hPhosDigits",    "Digits amplitude distribution in PHOS;Amplitude [ADC counts];Counts",    500, 0, 1000) ; 
   h0->Sumw2() ;
-  Add2DigitsList(h0, 0) ;
-  TH1I * h1 = new TH1I("hPhosDigitsMul", "Digits multiplicity distribution in PHOS", 500, 0, 1000) ; 
+  Add2DigitsList(h0, kDigits, !expert, image) ;
+  TH1I * h1 = new TH1I("hPhosDigitsMul", "Digits multiplicity distribution in PHOS;# of Digits;Entries", 2000, 0, 10000) ; 
   h1->Sumw2() ;
-  Add2DigitsList(h1, 1) ;
+  Add2DigitsList(h1, kDigitsMul, !expert, image) ;
 }
 
 //____________________________________________________________________________ 
 void AliPHOSQADataMakerSim::InitSDigits()
 {
   // create SDigits histograms in SDigits subdir
-  TH1F * h0 = new TH1F("hPhosSDigits",    "SDigits energy distribution in PHOS",       100, 0., 100.) ; 
+  const Bool_t expert   = kTRUE ; 
+  const Bool_t image    = kTRUE ; 
+  TH1F * h0 = new TH1F("hPhosSDigits",    "SDigits energy distribution in PHOS; Energy [MeV];Counts",       500, 0., 1000.) ; 
   h0->Sumw2() ;
-  Add2SDigitsList(h0, 0) ;
-  TH1I * h1 = new TH1I("hPhosSDigitsMul", "SDigits multiplicity distribution in PHOS", 500, 0,  10000) ; 
+  Add2SDigitsList(h0, kSDigits, !expert, image) ;
+  TH1I * h1 = new TH1I("hPhosSDigitsMul", "SDigits multiplicity distribution in PHOS;# of SDigits;Entries", 500, 0,  1000) ; 
   h1->Sumw2() ;
-  Add2SDigitsList(h1, 1) ;
+  Add2SDigitsList(h1, kSDigitsMul, !expert, image) ;
 }
 
 //____________________________________________________________________________
-void AliPHOSQADataMakerSim::MakeHits(TClonesArray * hits)
+void AliPHOSQADataMakerSim::MakeHits()
 {
-       //make QA data from Hits
-
-    GetHitsData(1)->Fill(hits->GetEntriesFast()) ; 
-    TIter next(hits) ; 
-    AliPHOSHit * hit ; 
-    while ( (hit = dynamic_cast<AliPHOSHit *>(next())) ) {
-      GetHitsData(0)->Fill( hit->GetEnergy()) ;
-    }
+  //make QA data from Hits
+  
+  TIter next(fHitsArray) ; 
+  AliPHOSHit * hit ; 
+  while ( (hit = dynamic_cast<AliPHOSHit *>(next())) ) {
+    GetHitsData(kHits)->Fill( hit->GetEnergy()) ;
+  }
 }
 
 //____________________________________________________________________________
 void AliPHOSQADataMakerSim::MakeHits(TTree * hitTree)
 {
-       // make QA data from Hit Tree
-       
-       TClonesArray * hits = new TClonesArray("AliPHOSHit", 1000);
-
-       TBranch * branch = hitTree->GetBranch("PHOS") ;
-       if ( ! branch ) {
-               AliWarning("PHOS branch in Hit Tree not found") ; 
-       } else {
-               TClonesArray * tmp =  new TClonesArray("AliPHOSHit", 1000) ;
-               branch->SetAddress(&tmp) ;
-               Int_t index = 0 ;  
-               for (Int_t ientry = 0 ; ientry < branch->GetEntries() ; ientry++) {
-                       branch->GetEntry(ientry) ; 
-                       for (Int_t ihit = 0 ; ihit < tmp->GetEntries() ; ihit++) {
-                               AliPHOSHit * hit = dynamic_cast<AliPHOSHit *> (tmp->At(ihit)) ; 
-                               new((*hits)[index]) AliPHOSHit(*hit) ; 
-                               index++ ;
-                       } 
-               }       
-               tmp->Delete() ; 
-               delete tmp ; 
-               MakeHits(hits) ; 
-       }
+  // make QA data from Hit Tree
+  
+  if (fHitsArray)
+    fHitsArray->Clear() ; 
+  else
+    fHitsArray = new TClonesArray("AliPHOSHit", 1000);
+
+  TBranch * branch = hitTree->GetBranch("PHOS") ;
+  if ( ! branch ) {
+    AliWarning("PHOS branch in Hit Tree not found") ; 
+  } else {
+    Int_t nHits = 0;
+    branch->SetAddress(&fHitsArray) ;
+    for (Int_t ientry = 0 ; ientry < branch->GetEntries() ; ientry++) {
+      branch->GetEntry(ientry) ;
+      nHits += fHitsArray->GetEntriesFast();
+      MakeHits() ; 
+      fHitsArray->Clear();
+    }  
+    GetHitsData(1)->Fill(nHits) ;
+  }
 }
 
 //____________________________________________________________________________
-void AliPHOSQADataMakerSim::MakeDigits(TClonesArray * digits)
+void AliPHOSQADataMakerSim::MakeDigits()
 {
   // makes data from Digits
-
-    GetDigitsData(1)->Fill(digits->GetEntriesFast()) ; 
-    TIter next(digits) ; 
-    AliPHOSDigit * digit ; 
-    while ( (digit = dynamic_cast<AliPHOSDigit *>(next())) ) {
-      GetDigitsData(0)->Fill( digit->GetEnergy()) ;
-    }  
+  GetDigitsData(1)->Fill(fDigitsArray->GetEntriesFast()) ; 
+  TIter next(fDigitsArray) ; 
+  AliPHOSDigit * digit ; 
+  while ( (digit = dynamic_cast<AliPHOSDigit *>(next())) ) {
+    GetDigitsData(kDigits)->Fill( digit->GetEnergy()) ;
+  }  
 }
 
 //____________________________________________________________________________
 void AliPHOSQADataMakerSim::MakeDigits(TTree * digitTree)
 {
        // makes data from Digit Tree
-       TClonesArray * digits = new TClonesArray("AliPHOSDigit", 1000) ; 
+       if (fDigitsArray) 
+    fDigitsArray->Clear() ; 
+  else
+    fDigitsArray = new TClonesArray("AliPHOSDigit", 1000) ; 
 
        TBranch * branch = digitTree->GetBranch("PHOS") ;
        if ( ! branch ) {
                AliWarning("PHOS branch in Digit Tree not found") ; 
        } else {
-               branch->SetAddress(&digits) ;
+               branch->SetAddress(&fDigitsArray) ;
                branch->GetEntry(0) ; 
-               MakeDigits(digits) ; 
+               MakeDigits() ; 
        }
 }
 
 //____________________________________________________________________________
-void AliPHOSQADataMakerSim::MakeSDigits(TClonesArray * sdigits)
+void AliPHOSQADataMakerSim::MakeSDigits()
 {
   // makes data from SDigits
-  
-       GetSDigitsData(1)->Fill(sdigits->GetEntriesFast()) ; 
-    TIter next(sdigits) ; 
-    AliPHOSDigit * sdigit ; 
-    while ( (sdigit = dynamic_cast<AliPHOSDigit *>(next())) ) {
-      GetSDigitsData(0)->Fill( sdigit->GetEnergy()) ;
-    
+
+  GetSDigitsData(1)->Fill(fSDigitsArray->GetEntriesFast()) ; 
+  TIter next(fSDigitsArray) ; 
+  AliPHOSDigit * sdigit ; 
+  while ( (sdigit = dynamic_cast<AliPHOSDigit *>(next())) ) {
+    GetSDigitsData(kSDigits)->Fill( sdigit->GetEnergy()) ;
+  } 
 }
 
 //____________________________________________________________________________
 void AliPHOSQADataMakerSim::MakeSDigits(TTree * sdigitTree)
 {
        // makes data from SDigit Tree
-       TClonesArray * sdigits = new TClonesArray("AliPHOSDigit", 1000) ; 
-
+       if (fSDigitsArray) 
+    fSDigitsArray->Clear() ; 
+  else
+    fSDigitsArray = new TClonesArray("AliPHOSDigit", 1000) ; 
+  
        TBranch * branch = sdigitTree->GetBranch("PHOS") ;
        if ( ! branch ) {
                AliWarning("PHOS branch in SDigit Tree not found") ; 
        } else {
-               branch->SetAddress(&sdigits) ;
+               branch->SetAddress(&fSDigitsArray) ;
                branch->GetEntry(0) ;
-               MakeSDigits(sdigits) ; 
+               MakeSDigits() ; 
        }
 }