]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliCorrQADataMakerRec.cxx
Fix for Savannah bug report 59287
[u/mrichter/AliRoot.git] / STEER / AliCorrQADataMakerRec.cxx
index e3c46e6e9ed24ae4f353c4414154f3b598cb7a0d..87fedc1744c23617e251c65266f1cc57ba5b530e 100644 (file)
@@ -43,7 +43,7 @@ ClassImp(AliCorrQADataMakerRec)
            
 //____________________________________________________________________________ 
 AliCorrQADataMakerRec::AliCorrQADataMakerRec(AliQADataMaker ** qadm ) : 
-AliQADataMakerRec(AliQA::GetDetName(AliQA::kCORR), "Corr Quality Assurance Data Maker"),
+AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kCORR), "Corr Quality Assurance Data Maker"),
   fMaxRawVar(0),  
   fqadm(qadm)
 {
@@ -78,21 +78,22 @@ AliCorrQADataMakerRec::~AliCorrQADataMakerRec()
 {
   // dtor only destroy the ntuple 
   if ( fCorrNt ) {
-    for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
-      if ( fCorrNt[specie] != NULL ) 
-        delete fCorrNt[specie] ; 
-    }
+//    for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
+//      if ( fCorrNt[specie] != NULL ) 
+//        delete fCorrNt[specie] ; 
+//    }
                delete[] fCorrNt ; 
+    fCorrNt = 0x0;
        }  
 }
   
 //____________________________________________________________________________ 
-void AliCorrQADataMakerRec::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray ** /*list*/)
+void AliCorrQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** /*list*/)
 {
   //Detector specific actions at end of cycle
   // do the QA checking
-  if (task == AliQA::kRAWS) {
-     AliQAChecker::Instance()->Run(AliQA::kCORR, task, fCorrNt) ; 
+  if (task == AliQAv1::kRAWS) {
+     AliQAChecker::Instance()->Run(AliQAv1::kCORR, task, fCorrNt) ; 
   }
 }
 
@@ -116,12 +117,12 @@ void AliCorrQADataMakerRec::InitRecPoints()
 void AliCorrQADataMakerRec::InitRaws()
 {
   // createa ntuple taking all the parameters declared by detectors
-  if (fCorrNt) 
+  if (fCorrNt[AliRecoParam::AConvert(fEventSpecie)]
     return ; 
   delete fRawsQAList ; // not needed for the time being 
   fRawsQAList = NULL ; 
   TString varlist("") ;
-  for ( Int_t detIndex = 0 ; detIndex < AliQA::kNDET ; detIndex++ ) {
+  for ( Int_t detIndex = 0 ; detIndex < AliQAv1::kNDET ; detIndex++ ) {
     AliQADataMaker * qadm = fqadm[detIndex] ; 
     if ( ! qadm ) 
       continue ;
@@ -129,7 +130,7 @@ void AliCorrQADataMakerRec::InitRaws()
     if (list) {
       TIter next(list) ; 
       TParameter<double> * p ; 
-      while ( (p = dynamic_cast<TParameter<double>*>(next()) ) ) {
+      while ( (p = static_cast<TParameter<double>*>(next()) ) ) {
         varlist.Append(p->GetName()) ; 
         varlist.Append(":") ; 
         fMaxRawVar++ ; 
@@ -140,10 +141,8 @@ void AliCorrQADataMakerRec::InitRaws()
   if (fMaxRawVar == 0) { 
     AliWarning("NTUPLE not created") ; 
   } else {
-    for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
-      char * name = Form("%s_%s", AliQA::GetQACorrName(), AliRecoParam::GetEventSpecieName(specie)) ; 
-      fCorrNt[specie] = new TNtupleD(name, "Raws data correlation among detectors", varlist.Data()) ;  
-    }
+    char * name = Form("%s_%s", AliQAv1::GetQACorrName(), AliRecoParam::GetEventSpecieName(fEventSpecie)) ; 
+    fCorrNt[AliRecoParam::AConvert(fEventSpecie)] = new TNtupleD(name, "Raws data correlation among detectors", varlist.Data()) ;  
   }  
 }
 
@@ -160,22 +159,26 @@ void AliCorrQADataMakerRec::MakeESDs(AliESDEvent * /*esd*/)
 void AliCorrQADataMakerRec::MakeRaws(AliRawReader *)
 {
   //Fill prepared histograms with Raw digit properties
+  
+  if ( ! fCorrNt[AliRecoParam::AConvert(fEventSpecie)])
+      InitRaws() ; 
+  
   if ( fMaxRawVar > 0 ) {
     const Int_t kSize = fMaxRawVar ; 
     Double_t  *varvalue = new Double_t[kSize] ;
     Int_t index = 0 ;
-    for ( Int_t detIndex = 0 ; detIndex < AliQA::kNDET ; detIndex++ ) {
+    for ( Int_t detIndex = 0 ; detIndex < AliQAv1::kNDET ; detIndex++ ) {
       AliQADataMaker * qadm = fqadm[detIndex] ; 
       if ( ! qadm ) 
         continue ;
       TList * list = qadm->GetParameterList() ; 
       TIter next(list) ; 
       TParameter<double> * p ; 
-      while ( (p = dynamic_cast<TParameter<double>*>(next()) ) ) {
+      while ( (p = static_cast<TParameter<double>*>(next()) ) ) {
         varvalue[index++] = p->GetVal() ; 
       }
     }
-    (dynamic_cast<TNtupleD*>(fCorrNt[(Int_t)TMath::Log2(fEventSpecie)]))->Fill(varvalue);
+    static_cast<TNtupleD*>(fCorrNt[AliRecoParam::AConvert(fEventSpecie)])->Fill(varvalue);
     delete [] varvalue;
   }
 }