Ruben found reason of T0DQM agent crashes. Here is fix
authoralla <alla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 8 Nov 2011 14:46:54 +0000 (14:46 +0000)
committeralla <alla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 8 Nov 2011 14:46:54 +0000 (14:46 +0000)
T0/AliT0QAChecker.cxx
T0/AliT0QADataMakerRec.cxx

index 96c3a36..7e6e6ae 100644 (file)
@@ -145,26 +145,38 @@ Double_t AliT0QAChecker::CheckRaw(TObjArray *listrec) const
         }
     }
      
-   TLine *linelowyellow = new TLine(0, 0.7, 24, 0.7);    
-   linelowyellow->SetLineColor(5);
-   linelowyellow->SetLineStyle(3);
-   linelowyellow->SetLineWidth(4);
-   TLine *linelowred = new TLine(0, 0.2, 24, 0.2);    
-   linelowred->SetLineColor(2);
-   linelowred->SetLineStyle(3);
-   linelowred->SetLineWidth(4);
+   TLine linelowyellow(0, 0.7, 24, 0.7);    
+   linelowyellow.SetLineColor(5);
+   linelowyellow.SetLineStyle(3);
+   linelowyellow.SetLineWidth(4);
+   TLine linelowred(0, 0.2, 24, 0.2);    
+   linelowred.SetLineColor(2);
+   linelowred.SetLineStyle(3);
+   linelowred.SetLineWidth(4);
 
    Float_t thryell = 0.7;
-   //   TPaveText* text = new TPaveText(0.30,0.50,0.99,0.99,"NDC");    
+   //   TPaveText text(0.30,0.50,0.99,0.99,"NDC");    
    Float_t thrred = 0.2;
    Float_t chcont =0;
     for (Int_t ih= 0; ih<4; ih++)
      { 
+       // clean objects added at previous checks
+       TList* lstF = fhRawEff[ih]->GetListOfFunctions();
+       if (lstF) {
+        TObject *stats = lstF->FindObject("stats");
+        lstF->Remove(stats);
+        TObject *obj;
+        while ((obj = lstF->First())) {
+          while(lstF->Remove(obj)) { }
+          delete obj;
+        }
+        if (stats) lstF->Add(stats);
+       } 
        fhRawEff[ih]->SetLineWidth(2);
        fhRawEff[ih]->SetMaximum(2.);
        fhRawEff[ih]->SetMinimum(0.);
-       fhRawEff[ih]->GetListOfFunctions()->Add(linelowyellow);
-       fhRawEff[ih]->GetListOfFunctions()->Add(linelowred);
+       fhRawEff[ih]->GetListOfFunctions()->Add((TLine*)linelowyellow.Clone());
+       fhRawEff[ih]->GetListOfFunctions()->Add((TLine*)linelowred.Clone());
 
        Int_t nbins= fhRawEff[ih]->GetNbinsX();
        Bool_t yell = kFALSE;
@@ -180,31 +192,28 @@ Double_t AliT0QAChecker::CheckRaw(TObjArray *listrec) const
        if (! yell && !red) {
         AliDebug(AliQAv1::GetQADebugLevel(), Form(" efficiency in all channes %s  is good", fhRawEff[ih]->GetName() ));
         checkr=1.;
-        //      text->AddText(Form("T0 RUN %d ",AliCDBManager::Instance()->GetRun()));
-        //      text->AddText(Form(" No problems "));
-        //      text->SetFillColor(3);
+        //      text.AddText(Form("T0 RUN %d ",AliCDBManager::Instance()->GetRun()));
+        //      text.AddText(Form(" No problems "));
+        //      text.SetFillColor(3);
        }
        
        if(red ) {
         checkr = 0.;
         AliDebug(AliQAv1::GetQADebugLevel(), Form(" efficiency in all channes %s  is not so good", fhRawEff[ih]->GetName() ));
-        //      text->AddText(Form("T0 RUN %d ",AliCDBManager::Instance()->GetRun()));
-        //      text->AddText(Form("Very serious problem, call expert "));
-        //      text->SetFillColor(2);
+        //      text.AddText(Form("T0 RUN %d ",AliCDBManager::Instance()->GetRun()));
+        //      text.AddText(Form("Very serious problem, call expert "));
+        //      text.SetFillColor(2);
        }
        
        if ( yell && !red) {
         AliDebug(AliQAv1::GetQADebugLevel(), Form(" efficiency in all channes %s  is not so good", fhRawEff[ih]->GetName() ));
         checkr=0.75;
-        //      text->AddText(Form("T0 RUN %d ",AliCDBManager::Instance()->GetRun()));
-        //      text->AddText(Form("Some problems "));
-        //      text->SetFillColor(5);
+        //      text.AddText(Form("T0 RUN %d ",AliCDBManager::Instance()->GetRun()));
+        //      text.AddText(Form("Some problems "));
+        //      text.SetFillColor(5);
       }
-       // fhRawEff[ih]->GetListOfFunctions()->Add(text);       
-
+       // fhRawEff[ih]->GetListOfFunctions()->Add((TPaveText*)text.Clone());          
      }
-    delete linelowyellow;
-    delete linelowred;
     return checkr;
   
 }
@@ -224,33 +233,45 @@ Double_t AliT0QAChecker::CheckESD(TObjArray *listrec ) const
     Double_t par[3];
     f1->GetParameters(&par[0]);
     
-    TPaveText* text = new TPaveText(0.30,0.50,0.99,0.99,"NDC");
+    TPaveText text(0.30,0.50,0.99,0.99,"NDC");
     
-    text->AddText(Form("T0 RUN %d ",AliCDBManager::Instance()->GetRun()));
+    text.AddText(Form("T0 RUN %d ",AliCDBManager::Instance()->GetRun()));
     
     AliDebug(AliQAv1::GetQADebugLevel(), Form("numentries %d mean %f  #sigma %f", (int)fhESD->GetEntries(),par[1], par[2]));
     
     
     if (par[2] > 0.07 && par[2] < 1.) {
       checkr=0.5;
-       text->AddText(Form("not good resolution :\n %f ns\n", par[2] ));
-       text->SetFillColor(5);
+       text.AddText(Form("not good resolution :\n %f ns\n", par[2] ));
+       text.SetFillColor(5);
        printf("T0 detector resolution is not good enouph: %f ns\n",par[2] );
     }
     if(TMath::Abs(par[1])>0.05) {
       checkr = 0.5;
-      text->AddText(Form(" Check clock shift on %f ns", par[1]));
-      text->SetFillColor(5);
+      text.AddText(Form(" Check clock shift on %f ns", par[1]));
+      text.SetFillColor(5);
     }
     if (par[2] >  1. || TMath::Abs(par[1])>0.1) {
       checkr = 0.25;
-      text->AddText(Form(" Bad resolution:\n mean %f ns sigma %f ns", par[1], par[2]));
-      text->SetFillColor(2);
-      
-      fhESD->GetListOfFunctions()->Add(text);  
-       AliDebug(AliQAv1::GetQADebugLevel(),
-               Form("Please, check calibration: shift= %f resolution %f test=%f\n",
-                    par[1], par[2], checkr) ) ; 
+      text.AddText(Form(" Bad resolution:\n mean %f ns sigma %f ns", par[1], par[2]));
+      text.SetFillColor(2);
+      { // RS Clean previous additions
+       TList* lstF = fhESD->GetListOfFunctions();
+       if (lstF) {
+         TObject *stats = lstF->FindObject("stats");
+         lstF->Remove(stats);
+         TObject *obj;
+         while ((obj = lstF->First())) {
+           while(lstF->Remove(obj)) { }
+           delete obj;
+         }
+         if (stats) lstF->Add(stats);
+       } 
+      }
+      fhESD->GetListOfFunctions()->Add((TPaveText*)text.Clone());      
+      AliDebug(AliQAv1::GetQADebugLevel(),
+              Form("Please, check calibration: shift= %f resolution %f test=%f\n",
+                   par[1], par[2], checkr) ) ; 
     }
   }
   else
index 0830147..c948b58 100644 (file)
@@ -71,8 +71,11 @@ AliT0QADataMakerRec::AliT0QADataMakerRec(const AliT0QADataMakerRec& qadm) :
 
 {
   //copy ctor 
- SetName((const char*)qadm.GetName()) ; 
-  SetTitle((const char*)qadm.GetTitle()); 
+  SetName((const char*)qadm.GetName()) ; 
+  SetTitle((const char*)qadm.GetTitle());
+  for(Int_t i=0; i<24; i++){ 
+     fMeans[i]=qadm.fMeans[i];
+  }//FK// 
 }
 
 //__________________________________________________________________
@@ -166,6 +169,8 @@ void AliT0QADataMakerRec::InitRaws()
   fhRefPoint->SetLabelSize(0.02);
   Add2RawsList( fhRefPoint,0, expert, !image, !saveCorr);
 
+  TH1F* fhRefPointcal = new TH1F("hRefPointcal","Ref Point laser", 5000, 0 ,20000);
+  Add2RawsList( fhRefPointcal,250, expert, !image, !saveCorr);
 
   TH1F *fhRawCFD[24]; 
   TH1F * fhRawLEDamp[24];
@@ -211,10 +216,7 @@ void AliT0QADataMakerRec::InitRaws()
       
   TH1F* fhRawTrigger = new TH1F("hRawTrigger"," triggers;Trigger ;Counts",6,0,6);
   for (Int_t itr=0; itr<6; itr++) fhRawTrigger->Fill(triggers[itr], 0); // RS Modified to allow cloning (no fNumTriggers member anymore)
-  fhRawTrigger->SetMinimum(0);
-  fhRawTrigger->SetMaximum(2);
-   Add2RawsList(fhRawTrigger ,169, !expert, image, !saveCorr);
-  
+  Add2RawsList(fhRawTrigger ,169, !expert, image, !saveCorr);
   TH1F* fhRawMean = new TH1F("hRawMean","online mean signal, physics event;",Int_t((high[170]-low[170])/4),low[170],high[170]);
   Add2RawsList( fhRawMean,170, expert, !image, !saveCorr);
 
@@ -454,7 +456,7 @@ void AliT0QADataMakerRec::MakeRaws( AliRawReader* rawReader)
     for (Int_t iHit=0; iHit<5; iHit++)
       allData[i][iHit]= start->GetData(i,iHit);
   
-  //if ( allData[0][0] > 0  && (type == 7))
+  if ( allData[0][0] > 0  && (type == 7))
     FillRawsData(0, allData[0][0]);
   refpoint = allData[refPointParam][0];
   if (refPointParam <  0 ) refpoint=0; 
@@ -595,7 +597,6 @@ void AliT0QADataMakerRec::MakeRaws( AliRawReader* rawReader)
       for (Int_t ik=0; ik<24; ik++) {
        //
        TH1* hik = (TH1*) GetRawsData(ik+1,itrID); if (!hik) continue; 
-       if ( hik -> GetEntries() < 100) continue;
        hik->GetXaxis()->SetRangeUser(2000, 3000);
        int  maxBin  =  hik->GetMaximumBin(); 
        double   meanEstimate  =  hik->GetBinCenter( maxBin);