Additional protections, corrected ownership of the reco. parameters (needed to run...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 17 Jul 2011 23:10:09 +0000 (23:10 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 17 Jul 2011 23:10:09 +0000 (23:10 +0000)
ACORDE/AliACORDEQADataMakerRec.cxx
STEER/STEER/AliQADataMaker.cxx
STEER/STEER/AliQADataMakerRec.cxx
TRD/AliTRDQAChecker.cxx
TRD/AliTRDQADataMakerRec.cxx

index 7eaeb5e..e68ea9e 100755 (executable)
@@ -117,7 +117,9 @@ void AliACORDEQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObj
     //\r
     for (int itc=-1;itc<GetNTrigClasses();itc++) { // RS Loop over the trigger classes\r
       //\r
-      TObjArray &harr = *GetRawsDataOfTrigClass(itc);\r
+      TObjArray * parr = GetRawsDataOfTrigClass(itc);\r
+      if (!parr) continue;\r
+      TObjArray &harr = *parr;\r
       //\r
       TH1* h0 = (TH1*)harr[0];\r
       TH1* h1 = (TH1*)harr[1];\r
index 95c6255..5f92534 100644 (file)
@@ -152,7 +152,7 @@ Int_t AliQADataMaker::Add2List(TH1 * hist, const Int_t index, TObjArray ** list,
       if ( fParameterList[AliRecoParam::AConvert(fEventSpecie)] == NULL )
       {
         fParameterList[AliRecoParam::AConvert(fEventSpecie)] = new TList() ; 
-        fParameterList[AliRecoParam::AConvert(fEventSpecie)]->SetOwner(kTRUE);
+       //        fParameterList[AliRecoParam::AConvert(fEventSpecie)]->SetOwner(kTRUE);
       }
       fParameterList[AliRecoParam::AConvert(fEventSpecie)]->Add(p) ;
     }
@@ -519,8 +519,11 @@ Int_t AliQADataMaker::FillData(TObjArray ** list, Int_t index, double x)
 {
   // fills single histo or its trigger-dependent clones, return number of histos filled
   TObjArray* arr = GetMatchingHistos(list,index);
-  int count = arr->GetEntriesFast();
-  for (int ih=count;ih--;) ((TH1*)arr->At(ih))->Fill(x);
+  int count = 0;
+  if (arr) {
+    count = arr->GetEntriesFast();
+    for (int ih=count;ih--;) ((TH1*)arr->At(ih))->Fill(x);
+  }
   return count;
 }
 
@@ -529,8 +532,11 @@ Int_t AliQADataMaker::FillData(TObjArray ** list, Int_t index, double x, double
 {
   // fills single histo or its trigger-dependent clones, return number of histos filled
   TObjArray* arr = GetMatchingHistos(list,index);
-  int count = arr->GetEntriesFast();
-  for (int ih=count;ih--;) ((TH1*)arr->At(ih))->Fill(x,y);
+  int count = 0;
+  if (arr) {
+    count = arr->GetEntriesFast();
+    for (int ih=count;ih--;) ((TH1*)arr->At(ih))->Fill(x,y);
+  }
   return count;
 }
 
@@ -539,8 +545,11 @@ Int_t AliQADataMaker::FillData(TObjArray ** list, Int_t index, double x, double
 {
   // fills single histo or its trigger-dependent clones, return number of histos filled
   TObjArray* arr = GetMatchingHistos(list,index);
-  int count = arr->GetEntriesFast();
-  for (int ih=count;ih--;) ((TH2*)arr->At(ih))->Fill(x,y,z);
+  int count = 0;
+  if (arr) {
+    count = arr->GetEntriesFast();
+    for (int ih=count;ih--;) ((TH2*)arr->At(ih))->Fill(x,y,z);
+  }
   return count;
 }
 
@@ -549,8 +558,11 @@ Int_t AliQADataMaker::SetDataBinContent(TObjArray ** list, Int_t index, int bin,
 {
   // set bin content of single histo or its trigger-dependent clones, return number of histos filled
   TObjArray* arr = GetMatchingHistos(list,index);
-  int count = arr->GetEntriesFast();
-  for (int ih=count;ih--;) ((TH2*)arr->At(ih))->SetBinContent(bin,w);
+  int count = 0;
+  if (arr) {
+    count = arr->GetEntriesFast();
+    for (int ih=count;ih--;) ((TH2*)arr->At(ih))->SetBinContent(bin,w);
+  }
   return count;
 }
 
@@ -559,8 +571,11 @@ Int_t AliQADataMaker::SetDataBinContent(TObjArray ** list, Int_t index, int binX
 {
   // set bin content of single histo or its trigger-dependent clones, return number of histos filled
   TObjArray* arr = GetMatchingHistos(list,index);
-  int count = arr->GetEntriesFast();
-  for (int ih=count;ih--;) ((TH2*)arr->At(ih))->SetBinContent(binX,binY,w);
+  int count = 0;
+  if (arr) {
+    count = arr->GetEntriesFast();
+    for (int ih=count;ih--;) ((TH2*)arr->At(ih))->SetBinContent(binX,binY,w);
+  }
   return count;
 }
 
@@ -569,8 +584,11 @@ Int_t AliQADataMaker::SetDataBinError(TObjArray ** list, Int_t index, int bin, d
 {
   // set bin content of single histo or its trigger-dependent clones, return number of histos filled
   TObjArray* arr = GetMatchingHistos(list,index);
-  int count = arr->GetEntriesFast();
-  for (int ih=count;ih--;) ((TH2*)arr->At(ih))->SetBinError(bin,err);
+  int count = 0;
+  if (arr) {
+    count = arr->GetEntriesFast();
+    for (int ih=count;ih--;) ((TH2*)arr->At(ih))->SetBinError(bin,err);
+  }
   return count;
 }
 
@@ -579,8 +597,11 @@ Int_t AliQADataMaker::SetDataBinError(TObjArray ** list, Int_t index, int binX,
 {
   // set bin content of single histo or its trigger-dependent clones, return number of histos filled
   TObjArray* arr = GetMatchingHistos(list,index);
-  int count = arr->GetEntriesFast();
-  for (int ih=count;ih--;) ((TH2*)arr->At(ih))->SetBinError(binX,binY,err);
+  int count = 0;
+  if (arr) {
+    count = arr->GetEntriesFast();
+    for (int ih=count;ih--;) ((TH2*)arr->At(ih))->SetBinError(binX,binY,err);
+  }
   return count;
 }
 
@@ -589,8 +610,11 @@ Int_t AliQADataMaker::ResetData(TObjArray ** list, Int_t index, Option_t* option
 {
   // reset content of single histo or its trigger-dependent clones, return number of histos processed
   TObjArray* arr = GetMatchingHistos(list,index);
-  int count = arr->GetEntriesFast();
-  for (int ih=count;ih--;) ((TH2*)arr->At(ih))->Reset(option);
+  int count = 0;
+  if (arr) {
+    count = arr->GetEntriesFast();
+    for (int ih=count;ih--;) ((TH2*)arr->At(ih))->Reset(option);
+  }
   return count;
 }
 
@@ -599,8 +623,11 @@ Int_t AliQADataMaker::ResetStatsData(TObjArray ** list, Int_t index)
 {
   // reset stats of single histo or its trigger-dependent clones, return number of histos processed
   TObjArray* arr = GetMatchingHistos(list,index);
-  int count = arr->GetEntriesFast();
-  for (int ih=count;ih--;) ((TH2*)arr->At(ih))->ResetStats();
+  int count = 0;
+  if (arr) {
+    count = arr->GetEntriesFast();
+    for (int ih=count;ih--;) ((TH2*)arr->At(ih))->ResetStats();
+  }
   return count;
 }
 
@@ -663,6 +690,7 @@ TObjArray* AliQADataMaker::GetDataOfTrigClass(TObjArray ** list, Int_t specieInd
   // get all histos for cloneID-th trigger class (-1 is for original "all-triggers" histos) in 
   // a single array (if dest is not provided, use its own static array). 
   // Existing histos are attached at their original positions
+  if (!list) return 0x0;
   TObjArray* arr = list[specieIndex] ;
   return GetDataOfTrigClass(arr, cloneID, dest);
 }
index 4d679ab..7bb825d 100644 (file)
@@ -329,13 +329,13 @@ void AliQADataMakerRec::InitRecoParams()
       AliDebug(AliQAv1::GetQADebugLevel(), Form("Couldn't find RecoParam entry in OCDB for detector %s",GetName()));
     }
     else {
-      entry->SetOwner(kTRUE);
+      //      entry->SetOwner(kTRUE);
       TObject * recoParamObj = entry->GetObject() ; 
       if ( strcmp(recoParamObj->ClassName(), "TObjArray") == 0 ) {
         // The detector has only one set of reco parameters
         AliDebug(AliQAv1::GetQADebugLevel(), Form("Array of reconstruction parameters found for detector %s",GetName()));
         TObjArray *recoParamArray = static_cast<TObjArray*>(recoParamObj) ;
-        recoParamArray->SetOwner(kTRUE);
+       //        recoParamArray->SetOwner(kTRUE);
         for (Int_t iRP=0; iRP<recoParamArray->GetEntriesFast(); iRP++) {
           fRecoParam = static_cast<AliDetectorRecoParam*>(recoParamArray->At(iRP)) ;
           if (!fRecoParam) 
index bf3b85e..57845f6 100644 (file)
@@ -48,6 +48,7 @@ void AliTRDQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArray
 
   // Super-basic check on the QA histograms on the input list: 
 
+  if (!list) return;
   for(Int_t i=0; i<AliRecoParam::kNSpecies; i++) test[i] = 0.5; 
 
   //Int_t count[AliRecoParam::kNSpecies] = { 0 }; 
@@ -58,8 +59,10 @@ void AliTRDQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArray
   const Double_t highAmp = 50;
 
   for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
-    
-    TH1D *hist = (TH1D*) list[specie]->At(12);
+
+    TObjArray * arr = list[specie];
+    if (!arr) continue;
+    TH1D *hist = (TH1D*) arr->At(12);
     if (!hist) continue;
     
     Double_t value = hist->Integral(hist->FindBin(lowAmp), hist->FindBin(highAmp));
index 956a3cd..89c5e57 100644 (file)
@@ -905,7 +905,12 @@ void AliTRDQADataMakerRec::MakeRecPoints(TTree * clustersTree)
       FillRecPointsData(7,c->GetPadRow(), c->GetPadCol());
       FillRecPointsData(8,c->GetPadTime());
       //
-      for (int ih=hists3D->GetEntriesFast();ih--;) ((TH3F*)hists3D->UncheckedAt(ih))->Fill(iDet, c->GetPadTime(), c->GetQ());
+      if (hists3D) {
+       for (int ih=hists3D->GetEntriesFast();ih--;) {
+         TH3F * ahist = dynamic_cast<TH3F*>(hists3D->At(ih));
+         if (ahist) ahist->Fill(iDet, c->GetPadTime(), c->GetQ());
+       }
+      }
       
       Int_t iSM = iDet / 30;
       FillRecPointsData(50+iSM,c->GetPadTime());