DQM histograms fixed
authormrodrigu <mrodrigu@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 16 Oct 2011 13:56:08 +0000 (13:56 +0000)
committermrodrigu <mrodrigu@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 16 Oct 2011 13:56:08 +0000 (13:56 +0000)
ACORDE/AliACORDEQAChecker.cxx
ACORDE/AliACORDEQAChecker.h
ACORDE/AliACORDEQADataMakerRec.cxx
ACORDE/AliACORDEQADataMakerRec.h

index 01e2bf2..ecbf16b 100755 (executable)
@@ -29,7 +29,8 @@
 #include <TIterator.h> 
 #include <TKey.h> 
 #include <TFile.h> 
-
+#include <TPaveText.h>
+#include <TLine.h>
 // --- Standard library ---
 
 // --- AliRoot header files ---
 #include "AliCDBEntry.h"
 #include "AliQAManager.h"
 
+/*************************************************************************
+   Last update: Oct. 10th 2011 from Mario RC, <mrodrigu@mail.cern.ch>
+       |-> Adding the checker class for raw and esd index
+       |-> Setting the threshold lines and box for DQM shifter
+
+*************************************************************************/
+
 ClassImp(AliACORDEQAChecker)
 
 //____________________________________________________________________________
+
+AliACORDEQAChecker::AliACORDEQAChecker()  :
+AliQACheckerBase("ACORDE","ACORDE Quality Assurance Data Maker"),
+fTextDQMShifterInfo(new TPaveText(35,0.5,55,0.7,"T")),
+fMax(new TLine(0,0.9,60,0.9)),
+fMin(new TLine(0,0.3,60,0.3))
+{
+       // default constructor
+       fMax->SetLineColor(kGreen);
+       fMax->SetLineWidth(3);
+       fMin->SetLineColor(kGreen);
+       fMax->SetLineWidth(3);
+}
+//____________________________________________________________________________
+AliACORDEQAChecker::~AliACORDEQAChecker()
+{
+       // destructor
+       delete fTextDQMShifterInfo;
+       delete fMax;
+       delete fMin;
+}
+//____________________________________________________________________________
+AliACORDEQAChecker::AliACORDEQAChecker(const AliACORDEQAChecker& qac) :
+AliQACheckerBase(qac.GetName(), qac.GetTitle()),
+fTextDQMShifterInfo(new TPaveText(35,0.5,55,0.7,"T")),
+fMax(static_cast<TLine*>(qac.fMax->Clone())),
+fMin(static_cast<TLine*>(qac.fMin->Clone()))
+{
+       //
+}
+//____________________________________________________________________________
+AliACORDEQAChecker& AliACORDEQAChecker::operator = (const AliACORDEQAChecker &qac)
+{
+       
+       fTextDQMShifterInfo = new TPaveText(35,0.5,55,0.7,"T");
+       fMax = static_cast<TLine*>(qac.fMax->Clone());
+       fMin = static_cast<TLine*>(qac.fMin->Clone());
+       return *this;
+}
+//____________________________________________________________________________
 void AliACORDEQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t /*index*/)
 {
   for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) 
@@ -71,7 +119,12 @@ void AliACORDEQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t /*index*/, TO
                                if(hdata->GetEntries()>0) rv=1; 
                                AliDebug(AliQAv1::GetQADebugLevel(), Form("%s -> %f", hdata->GetName(), rv)) ; 
                                TString hdataName = hdata->GetName();
-                               
+                               if (hdata->GetListOfFunctions()->GetEntries() == 0  && (hdataName.Contains("HitsSL0_DQM")||(hdataName.Contains("HitsAMU_DQM")))){
+                                       hdata->GetListOfFunctions()->Add(fTextDQMShifterInfo);
+                                        hdata->GetListOfFunctions()->Add(fMax);
+                                        hdata->GetListOfFunctions()->Add(fMin);
+
+                               }
                                // Here we use the QAref ACORDE data from fRefOCDBSubDir
                                
                                if ( (fRefOCDBSubDir[specie]) && (hdataName.Contains("ACORDEBitPattern")) ) 
@@ -80,30 +133,52 @@ void AliACORDEQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t /*index*/, TO
                                        if (fRefSubDir) href = static_cast<TH1*>(fRefSubDir->Get(hdata->GetName()));
                                        else if (fRefOCDBSubDir[specie]) href = static_cast<TH1*>(fRefOCDBSubDir[specie]->FindObject(hdata->GetName()));
                                        test[specie] = CheckAcordeRefHits(href,hdata);
-                               }else if (hdataName.Contains("ACORDEBitPattern"))
+                               }else if (hdataName.Contains("ACORDEBitPattern")||hdataName.Contains("HitsSL0_DQM")||hdataName.Contains("HitsAMU_DQM"))
                                // Here we use an inner QA Checher without the QAref data
                                {
                                        Float_t acoDataMax = hdata->GetMaximum();
+                                       Int_t flagAcoQAChecker = 0;
                                        Int_t flagAcoQA = 0;
-                                       if (acoDataMax!=0)
+                                       if (acoDataMax == 0) continue;
+                                       for(Int_t i=0;i<60;i++)
                                        {
-                                               for(Int_t i=0;i<60;i++)
-                                               {
-                                                       if ((hdata->GetBinContent(i)/acoDataMax) < 0.75) flagAcoQA++; 
+                                               if ((hdata->GetBinContent(i)/acoDataMax) < 0.75) flagAcoQAChecker++; 
+                                               if (hdataName.Contains("HitsSL0_DQM")||hdataName.Contains("HitsAMU_DQM")){
+                                                       if (hdata->GetBinContent(i)<0.29) flagAcoQA++;
                                                }
                                        }
-                                       Double_t simpleFlag = 1.-flagAcoQA/60.;
-                                       if ( (simpleFlag >= 0.90) && (simpleFlag <= 1.0) ) test[specie] = 0.75; // INFO
-                                       if ( (simpleFlag >= 0.70) && (simpleFlag < 0.90) ) test[specie] = 0.50; // WARNING
-                                       if ( (simpleFlag >= 0.25) && (simpleFlag < 0.70) ) test[specie] = 0.25; // ERROR
-                                       if ( (simpleFlag >= 0.0) && (simpleFlag < 0.25) )  test[specie] = -1.0; // FATAL
+                                       if (hdataName.Contains("ACORDEBitPattern")){
+                                               Double_t simpleFlag = 1.-flagAcoQAChecker/60.;
+                                               if ( (simpleFlag >= 0.90) && (simpleFlag <= 1.0) ) test[specie] = 0.75; // INFO
+                                               if ( (simpleFlag >= 0.70) && (simpleFlag < 0.90) ) test[specie] = 0.50; // WARNING
+                                               if ( (simpleFlag >= 0.25) && (simpleFlag < 0.70) ) test[specie] = 0.25; // ERROR
+                                               if ( (simpleFlag >= 0.0) && (simpleFlag < 0.25) )  test[specie] = -1.0; // FATAL
+                                       } else if (hdataName.Contains("HitsSL0_DQM")||hdataName.Contains("HitsAMU_DQM")){
+                                               if (flagAcoQA < 30) test[specie] = 0.75;
+                                               else test[specie] = 0.3;
+                                       }
+
+
                                }       
+
                                // Setting Warning message for possible Empty Events with the ACORDE-Trigger
                                        
                                if (hdataName.Contains("ACORDEMultiplicity") && (hdata->GetBinContent(0)!=0)) AliWarning("Empty event registered with ACORDE Trigger !!!");
                                        
                                
                        }else AliError("Data type cannot be processed") ;
+                       if (fTextDQMShifterInfo)
+                       {
+                               fTextDQMShifterInfo->Clear();
+                               if (test[specie] > 0.3){
+                                       fTextDQMShifterInfo->SetFillColor(kGreen);
+                                       fTextDQMShifterInfo->AddText("ACORDE: O.K.");
+                               }else{
+                                       fTextDQMShifterInfo->SetFillColor(kRed);
+                                       fTextDQMShifterInfo->AddText("ACORDE: Not, O.K.");
+                                       fTextDQMShifterInfo->AddText("CALL THE EXPERTS");
+                               }
+                       }
                                
                }
        }
index 5e3351d..47f7ccd 100755 (executable)
@@ -19,6 +19,8 @@
 class TFile ; 
 class TH1F ; 
 class TObjArray ;
+class TLine;
+class TPaveText;
 
 // --- Standard library ---
 
@@ -28,8 +30,10 @@ class TObjArray ;
 class AliACORDEQAChecker: public AliQACheckerBase {
 
 public:
-  AliACORDEQAChecker() : AliQACheckerBase("ACORDE","ACORDE Quality Assurance Data Checker") {;}          // constructor
-  virtual ~AliACORDEQAChecker() {;} // destructor
+  AliACORDEQAChecker();        // constructor
+  AliACORDEQAChecker(const AliACORDEQAChecker& qac);
+  AliACORDEQAChecker& operator = (const AliACORDEQAChecker& qac);
+  virtual ~AliACORDEQAChecker(); // destructor
   virtual void Check(Double_t *, AliQAv1::ALITASK_t /*index*/) ;
   virtual void Check(Double_t *, AliQAv1::ALITASK_t /*index*/, TObjArray ** list, const AliDetectorRecoParam * /* recoParam*/) ;
 
@@ -37,6 +41,11 @@ public:
 
 private:
 
+  // for DQM shifter plots
+
+  TPaveText * fTextDQMShifterInfo; //! Pave text for alarm in DQM plots
+  TLine * fMax; //! Maximum hits allowed per module (normalized data)
+  TLine * fMin; //! Minimum hits allowed per module (normalized data)
   
   ClassDef(AliACORDEQAChecker,1)  // description 
 
index 07cacf8..13eeea3 100755 (executable)
 ClassImp(AliACORDEQADataMakerRec)\r
            \r
 //____________________________________________________________________________ \r
- AliACORDEQADataMakerRec::AliACORDEQADataMakerRec():AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kACORDE), "ACORDE Quality Assurance Data Maker"),\r
-  fhACOMean(new TLine(0.,4.,60.,4.)),\r
-  fhACOMin(new TLine(0.,4.,60.,4.)),\r
-  fhACOMax(new TLine(0.,4.,60.,4.)),\r
-  fhACOMulti(new TLine(0.,4.,60.,4.)),\r
-  fhACOMeanAMU(new TLine(0.,4.,60.,4.)),\r
-  fhACOMinAMU(new TLine(0.,4.,60.,4.)),\r
-  fhACOMaxAMU(new TLine(0.,4.,60.,4.)),\r
-  fhACOMultiAMU(new TLine(0.,4.,60.,4.))\r
+ AliACORDEQADataMakerRec::AliACORDEQADataMakerRec():AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kACORDE), "ACORDE Quality Assurance Data Maker")\r
 {\r
 \r
 }\r
 //____________________________________________________________________________ \r
 AliACORDEQADataMakerRec::AliACORDEQADataMakerRec(const AliACORDEQADataMakerRec& qadm):\r
-  AliQADataMakerRec(),\r
-  fhACOMean(qadm.fhACOMean),\r
-  fhACOMin(qadm.fhACOMin),\r
-  fhACOMax(qadm.fhACOMax),\r
-  fhACOMulti(qadm.fhACOMulti),\r
-  fhACOMeanAMU(qadm.fhACOMeanAMU),\r
-  fhACOMinAMU(qadm.fhACOMinAMU),\r
-  fhACOMaxAMU(qadm.fhACOMaxAMU),\r
-  fhACOMultiAMU(qadm.fhACOMultiAMU)\r
+  AliQADataMakerRec()\r
 {\r
   SetName((const char*)qadm.GetName()) ; \r
   SetTitle((const char*)qadm.GetTitle()); \r
@@ -88,14 +72,6 @@ AliACORDEQADataMakerRec::AliACORDEQADataMakerRec(const AliACORDEQADataMakerRec&
 //__________________________________________________________________\r
 AliACORDEQADataMakerRec::~AliACORDEQADataMakerRec()\r
 {\r
-  delete fhACOMean;\r
-  delete fhACOMin;\r
-  delete fhACOMax;\r
-  delete fhACOMulti;\r
-  delete fhACOMeanAMU;\r
-  delete fhACOMinAMU;\r
-  delete fhACOMaxAMU;\r
-  delete fhACOMultiAMU;\r
 }\r
 \r
 //__________________________________________________________________\r
@@ -115,26 +91,6 @@ void AliACORDEQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObj
   // Update for DQM GUI\r
   //\r
 \r
-  // Thresholds and alarms definitions\r
-  /*******************************************************************************************\r
-\r
-       We check the performance of the ACORDE's modules respect to the mean\r
-       value over the integral for hits for all the modules (in SL0 and AMU), then\r
-       for the threshold lines we don't use a fixed threshold value.\r
-\r
-       For the alarms, we need two fixed values (one for each configuration, SL0 and AMU):\r
-\r
-          -) SL0_ThresholdAlarm: minimum number of ACORDE's modules woriking properly\r
-           -) AMU_ThresholdAlarm: minimum number of ACORDE's modules woriking properly\r
-\r
-       This should work for p-p*, HI* and cosmic** data taking.\r
-\r
-       * only as readout detector (if ACORDE is triggering, in some rare trigger cluster, \r
-                                   an improvement should be done)\r
-       ** as readout and trigger detector.\r
-\r
-  *********************************************************************************************/\r
-\r
   for (Int_t specie = 0; specie < AliRecoParam::kNSpecies ; specie++) {\r
     if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) ) continue ;\r
     // \r
@@ -147,235 +103,52 @@ void AliACORDEQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObj
        if (!parr) continue;\r
        TObjArray &harr = *parr;\r
        TH1* h0 = (TH1*)harr[0];\r
-       TH1* h1 = (TH1*)harr[1];\r
-       if (!h0 || !h1) continue;\r
        TH1* h2 = (TH1*)harr[2];\r
-       TH1* h3 = (TH1*)harr[3];\r
-       if (!h2 || !h3) continue;\r
+       if (!h0 || !h2) continue;\r
 \r
        Double_t integralSL0 = 0;\r
        Double_t integralAMU = 0;\r
 \r
-       // maximimum and minimum for Pads\r
-\r
-       Double_t maxPad = h0->GetMaximum();\r
-       \r
-       if ((itc==-1 && !(integralAMU=h2->Integral()) || h2->GetMaximum()==0)||(itc==-1 && !(integralSL0=h0->Integral()) || h0->GetMaximum()==0)) { // default clone\r
-               printf("No entries in ACORDE Hits histograms for trigger class %d, fatal error, please check !!!\n",itc);\r
-               Float_t maxPadAMU = h3->GetMaximum();\r
-               TPaveText *acoBoxFatalAMU = new TPaveText(35,0,55,1,"b");\r
-               acoBoxFatalAMU->SetFillColor(kRed);\r
-               acoBoxFatalAMU->SetLineColor(kRed);\r
-               acoBoxFatalAMU->SetLineWidth(2);\r
-               acoBoxFatalAMU->AddText("ACO: Not O.K.");\r
-               acoBoxFatalAMU->AddText("Call the experts");\r
-\r
-               TPaveText *acoBoxFatalMultiAMU = new TPaveText(35,0,55,maxPadAMU,"b");\r
-               acoBoxFatalMultiAMU->SetFillColor(kRed);\r
-               acoBoxFatalMultiAMU->SetLineColor(kRed);\r
-               acoBoxFatalMultiAMU->SetLineWidth(2);\r
-               acoBoxFatalMultiAMU->AddText("ACO: Not O.K.");\r
-               acoBoxFatalMultiAMU->AddText("Call the experts");\r
-\r
-               h2->GetListOfFunctions()->Add(acoBoxFatalAMU);\r
-               h3->GetListOfFunctions()->Add(acoBoxFatalMultiAMU);\r
-\r
-               Float_t maxPadSL0 = h1->GetMaximum();\r
-\r
-               printf("No entries in ACORDE Hits histograms for trigger class %d, fatal error, please check !!!\n",itc);\r
-               TPaveText *acoBoxFatal = new TPaveText(35,0,55,1,"b");\r
-               acoBoxFatal->SetFillColor(kRed);\r
-               acoBoxFatal->SetLineColor(kRed);\r
-               acoBoxFatal->SetLineWidth(2);\r
-               acoBoxFatal->AddText("ACO: Not O.K.");\r
-               acoBoxFatal->AddText("Call the experts");\r
-\r
-               TPaveText *acoBoxFatalMulti = new TPaveText(35,0,55,maxPadSL0,"b");\r
-               acoBoxFatalMulti->SetFillColor(kRed);\r
-               acoBoxFatalMulti->SetLineColor(kRed);\r
-               acoBoxFatalMulti->SetLineWidth(2);\r
-               acoBoxFatalMulti->AddText("ACO: Not O.K.");\r
-               acoBoxFatalMulti->AddText("Call the experts");\r
-\r
-               h0->GetListOfFunctions()->Add(acoBoxFatal);\r
-               h1->GetListOfFunctions()->Add(acoBoxFatalMulti);\r
-               continue;\r
-       }\r
-      \r
-       // Check DQM\r
-\r
-       // setting the thresholds\r
+       if (itc==-1 && (integralAMU=h2->Integral()==0)||(integralSL0=h0->Integral()==0)) continue;\r
 \r
-       Int_t SL0_ThresholdAlarm = 45; // default value until the creation of AliACORDEThreshold class\r
-       Int_t AMU_ThresholdAlarm = 45; // default value until the creation of AliACORDEThreshold class\r
+       Float_t maxSL0 = 1.1*h0->GetMaximum();\r
+       Float_t scaleSL0 = 0.;\r
+       if (maxSL0!=0) scaleSL0 = 1./maxSL0;\r
+       else scaleSL0 = 1.;\r
+       h0->Scale(scaleSL0);\r
 \r
-       // SL0 - histograms\r
 \r
+       Float_t maxAMU = 1.1*h2->GetMaximum();\r
+       Float_t scaleAMU = 0.;\r
+       if (maxAMU!=0) scaleAMU = 1./maxAMU;\r
+       else scaleAMU = 1.;\r
+       h2->Scale(scaleAMU);\r
+      \r
        Int_t indexActiveModuleSL0 = 0;\r
-        for(Int_t iModule=0;iModule<60;iModule++){     \r
-               if (h0->GetBinContent(iModule)>0) indexActiveModuleSL0++;\r
+       Int_t indexActiveModuleAMU = 0;\r
+\r
+       for(Int_t iModule = 0; iModule < 60; iModule++){\r
+               if (h0->GetBinContent(iModule) > 0) indexActiveModuleSL0++;\r
+               if (h2->GetBinContent(iModule) > 0) indexActiveModuleAMU++;\r
        }\r
        \r
        Float_t meanHitsSL0 = 0.;\r
-       if (indexActiveModuleSL0!=0) meanHitsSL0=h0->Integral()/indexActiveModuleSL0;\r
-\r
-       Int_t indexSL0 = 0;\r
-       \r
-       // set the threshold lines: minimum, maximum and mean\r
-\r
-       fhACOMean->SetX1(0);\r
-       fhACOMean->SetY1(meanHitsSL0);\r
-       fhACOMean->SetX2(59);\r
-       fhACOMean->SetY2(meanHitsSL0);\r
-       \r
-       fhACOMin->SetX1(0);\r
-       fhACOMin->SetX2(59);\r
-       fhACOMin->SetY1(meanHitsSL0-0.80*meanHitsSL0);\r
-       fhACOMin->SetY2(meanHitsSL0-0.80*meanHitsSL0);\r
-\r
-       fhACOMax->SetX1(0);\r
-       fhACOMax->SetX2(59);\r
-       fhACOMax->SetY1(meanHitsSL0+0.80*meanHitsSL0);\r
-       fhACOMax->SetY2(meanHitsSL0+0.80*meanHitsSL0);\r
-\r
-       fhACOMulti->SetX1(0);\r
-       fhACOMulti->SetY1(0);\r
-       fhACOMulti->SetX2(0);\r
-       Float_t maxMulti = 0;\r
-       if (h1->GetMaximum()>0) maxMulti = h1->GetMaximum();\r
-       fhACOMulti->SetY2(maxMulti);\r
-\r
-       TPaveText *acoBoxOkHitsSL0 = new TPaveText(35,meanHitsSL0+0.5*meanHitsSL0,55,maxPad,"b");\r
-       acoBoxOkHitsSL0->SetFillColor(kGreen);\r
-       acoBoxOkHitsSL0->SetLineColor(kGreen);\r
-       acoBoxOkHitsSL0->SetLineWidth(2);\r
-       acoBoxOkHitsSL0->AddText("ACO: O.K.");\r
-\r
-       TPaveText *acoBoxErrorHitsSL0 = new TPaveText(35,meanHitsSL0+0.5*meanHitsSL0,55,maxPad,"b");\r
-       acoBoxErrorHitsSL0->SetFillColor(kRed);\r
-       acoBoxErrorHitsSL0->SetLineColor(kRed);\r
-       acoBoxErrorHitsSL0->SetLineWidth(2);\r
-       acoBoxErrorHitsSL0->AddText("ACO: Not O.K.");\r
-\r
-       Float_t maxPadMulti = h1->GetMaximum();\r
-\r
-       TPaveText *acoBoxOkMultiSL0 = new TPaveText(35,maxPadMulti-0.3*maxPadMulti,55,maxPadMulti,"b");\r
-       acoBoxOkMultiSL0->SetFillColor(kGreen);\r
-       acoBoxOkMultiSL0->SetLineColor(kGreen);\r
-       acoBoxOkMultiSL0->SetLineWidth(2);\r
-       acoBoxOkMultiSL0->AddText("ACO: O.K.");\r
-\r
-       TPaveText *acoBoxErrorMultiSL0 = new TPaveText(35,maxPadMulti-0.3*maxPadMulti,55,maxPadMulti,"b");\r
-       acoBoxErrorMultiSL0->SetFillColor(kRed);\r
-       acoBoxErrorMultiSL0->SetLineColor(kRed);\r
-       acoBoxErrorMultiSL0->SetLineWidth(2);\r
-       acoBoxErrorMultiSL0->AddText("ACO: Not O.K.");\r
-        TH1* h4 = (TH1*)harr[4];\r
-\r
-       for (Int_t iModule = 0; iModule < 60; iModule++){\r
-               if (meanHitsSL0!=0){\r
-                       if (TMath::Abs(h0->GetBinContent(iModule)/meanHitsSL0-1) < 1) indexSL0++;\r
-                       if (h4){\r
-                               h4->Fill(h0->GetBinContent(iModule)/meanHitsSL0-1);\r
-                       }\r
-               }\r
-       }\r
-\r
-       if (indexSL0>=SL0_ThresholdAlarm){\r
-               h0->GetListOfFunctions()->Add(acoBoxOkHitsSL0);\r
-               h1->GetListOfFunctions()->Add(acoBoxOkMultiSL0);\r
-       }\r
-       else{\r
-               h0->GetListOfFunctions()->Add(acoBoxErrorHitsSL0);\r
-               h1->GetListOfFunctions()->Add(acoBoxErrorMultiSL0);\r
-       }\r
-\r
-\r
-       // AMU - histograms     \r
-\r
-       Int_t indexActiveModuleAMU = 0;\r
-        for(Int_t iModule=0;iModule<60;iModule++){\r
-               if (h2->GetBinContent(iModule)>0) indexActiveModuleAMU++;\r
-       }\r
-\r
        Float_t meanHitsAMU = 0.;\r
-       if (indexActiveModuleAMU!=0) meanHitsAMU=h2->Integral()/indexActiveModuleAMU;\r
-\r
-       // setting the line's thresholds: min, max and mean of hits\r
+       if ((indexActiveModuleSL0==0) || (indexActiveModuleAMU == 0)) continue;\r
 \r
-       fhACOMeanAMU->SetX1(0);\r
-       fhACOMeanAMU->SetY1(meanHitsAMU);\r
-       fhACOMeanAMU->SetX2(59);\r
-       fhACOMeanAMU->SetY2(meanHitsAMU);\r
+       meanHitsSL0 = h0->Integral()/indexActiveModuleSL0;\r
+       meanHitsAMU = h2->Integral()/indexActiveModuleAMU;\r
 \r
-       fhACOMinAMU->SetX1(0);\r
-       fhACOMinAMU->SetX2(59);\r
-       fhACOMinAMU->SetY1(meanHitsAMU-0.80*meanHitsAMU);\r
-       fhACOMinAMU->SetY2(meanHitsAMU-0.80*meanHitsAMU);\r
-\r
-\r
-       fhACOMaxAMU->SetX1(0);\r
-       fhACOMaxAMU->SetX2(59);\r
-       fhACOMaxAMU->SetY1(meanHitsAMU+0.80*meanHitsAMU);\r
-       fhACOMaxAMU->SetY2(meanHitsAMU+0.80*meanHitsAMU);\r
-\r
-\r
-       fhACOMultiAMU->SetX1(0);\r
-       fhACOMultiAMU->SetY1(0);\r
-       fhACOMultiAMU->SetX2(0);\r
-       Float_t maxMultiAMU = 0;\r
-       if (h3->GetMaximum()>0) maxMultiAMU = h3->GetMaximum();\r
-       fhACOMultiAMU->SetY2(maxMultiAMU);\r
-       \r
-       // setting the alarms\r
-\r
-       TPaveText *acoBoxOkHitsAMU = new TPaveText(35,meanHitsAMU+0.5*meanHitsAMU,55,maxPad,"b");\r
-       acoBoxOkHitsAMU->SetFillColor(kGreen);\r
-       acoBoxOkHitsAMU->SetLineColor(kGreen);\r
-       acoBoxOkHitsAMU->SetLineWidth(2);\r
-       acoBoxOkHitsAMU->AddText("ACO: O.K.");\r
-\r
-       TPaveText *acoBoxErrorHitsAMU = new TPaveText(35,meanHitsAMU+0.5*meanHitsAMU,55,maxPad,"b");\r
-       acoBoxErrorHitsAMU->SetFillColor(kRed);\r
-       acoBoxErrorHitsAMU->SetLineColor(kRed);\r
-       acoBoxErrorHitsAMU->SetLineWidth(2);\r
-       acoBoxErrorHitsAMU->AddText("ACO: Not O.K.");\r
-\r
-       Float_t maxPadMultiAMU = h3->GetMaximum();\r
-\r
-       TPaveText *acoBoxOkMultiAMU = new TPaveText(35,maxPadMultiAMU-0.3*maxPadMultiAMU,55,maxPadMultiAMU,"b");\r
-       acoBoxOkMultiAMU->SetFillColor(kGreen);\r
-       acoBoxOkMultiAMU->SetLineColor(kGreen);\r
-       acoBoxOkMultiAMU->SetLineWidth(2);\r
-       acoBoxOkMultiAMU->AddText("ACO: O.K.");\r
-\r
-       TPaveText *acoBoxErrorMultiAMU = new TPaveText(35,maxPadMultiAMU-0.3*maxPadMultiAMU,55,maxPadMultiAMU,"b");\r
-       acoBoxErrorMultiAMU->SetFillColor(kRed);\r
-       acoBoxErrorMultiAMU->SetLineColor(kRed);\r
-       acoBoxErrorMultiAMU->SetLineWidth(2);\r
-       acoBoxErrorMultiAMU->AddText("ACO: Not O.K.");\r
+        TH1* h4 = (TH1*)harr[4];\r
         TH1* h5 = (TH1*)harr[5];\r
 \r
-       Int_t indexAMU=0;\r
-\r
-       for (Int_t iModule = 0; iModule < 60; iModule++){\r
-               if (meanHitsAMU!=0){\r
-                       if (TMath::Abs(h2->GetBinContent(iModule)/meanHitsAMU-1) < 1) indexAMU++;\r
-                       if (h5){\r
-                               h5->Fill(h2->GetBinContent(iModule)/meanHitsAMU-1);\r
-                       }\r
+       if (h4 && h5 && meanHitsAMU!=0 && meanHitsSL0!=0){\r
+               for (Int_t iModule = 0; iModule < 60; iModule++){\r
+                       h4->Fill(h0->GetBinContent(iModule)/meanHitsSL0-1);\r
+                       h5->Fill(h2->GetBinContent(iModule)/meanHitsAMU-1);\r
                }\r
        }\r
 \r
-       if (indexAMU>=AMU_ThresholdAlarm) {\r
-               h2->GetListOfFunctions()->Add(acoBoxOkHitsAMU);\r
-               h3->GetListOfFunctions()->Add(acoBoxOkMultiAMU);\r
-       }\r
-       else{\r
-               h2->GetListOfFunctions()->Add(acoBoxErrorHitsAMU);\r
-               h3->GetListOfFunctions()->Add(acoBoxErrorMultiAMU);\r
-       }\r
-      \r
     } // end of trigger classes loop\r
   } // end specie loop\r
   // QA Checker standar (to be updated)\r
@@ -402,8 +175,8 @@ void AliACORDEQADataMakerRec::InitRaws()
         TH1F * fhACORDEMultiplicitySL0DQM = new TH1F("ACOMultiSL0_DQM_Shifter","Multiplicity of ACORDE fired modules for DQM shifter; No. of fired modules; No. of events",62,-1,60); // Multiplicity histo. for QA-shifter ACO-SL0 trigger mode\r
         TH1F * fhACORDEBitPatternAMUDQM = new TH1F("ACOHitsAMU_DQM_Shifter","Distribution of ACORDE fired modules for DQM shifter; No. of module; Counts",60,-0.5,59.5);// Hits histogram for QA-shifter ACO-SL0 trigger mode\r
         TH1F * fhACORDEMultiplicityAMUDQM = new TH1F("ACOMultiAMU_DQM_Shifter","Multiplicity of ACORDE fired modules for DQM shifter; No. of fired modules; No. of events",62,-1,60); // Multiplicity histo. for QA-shifter ACO-SL0 trigger mode\r
-        TH1F * fhACORDEBitPatternCheckDQMSL0 = new TH1F("ACOHitsTriggerCheck_DQMExpertSL0","Check the activity of ACORDE's modules; |Hits per module/mean of Hits - 1|; Counts",100,-3,5); // Check the trigger status of ACORDE (SL0 vs AMU)\r
-        TH1F * fhACORDEBitPatternCheckDQMAMU = new TH1F("ACOHitsTriggerCheck_DQMExpertAMU","Check the activity of ACORDE's modules; |Hits per module/mean of Hits - 1|; Counts",100,-3,5); // Check the trigger status of ACORDE (SL0 vs AMU)\r
+        TH1F * fhACORDEBitPatternCheckDQMSL0 = new TH1F("ACOHitsTriggerCheck_DQMExpertSL0","Check the activity of ACORDE's modules; Hits per module/mean of Hits; Counts",100,-3,5); // Check the trigger status of ACORDE (SL0 vs AMU)\r
+        TH1F * fhACORDEBitPatternCheckDQMAMU = new TH1F("ACOHitsTriggerCheck_DQMExpertAMU","Check the activity of ACORDE's modules; Hits per module/mean of Hits; Counts",100,-3,5); // Check the trigger status of ACORDE (SL0 vs AMU)\r
          // Expert histograms\r
          // Check the hits multiplicity from trigger configuration\r
          Add2RawsList(fhACORDEBitPatternCheckDQMSL0,4,expert,image,!saveCorr);\r
@@ -424,26 +197,10 @@ void AliACORDEQADataMakerRec::InitRaws()
          // For Hits distribution on ACORDE\r
  \r
          fhACORDEBitPatternDQM->SetFillColor(kMagenta+2);\r
-         fhACOMean->SetLineColor(kBlue);\r
-         fhACOMean->SetLineStyle(2);\r
-         fhACOMean->SetLineWidth(4);\r
-         fhACORDEBitPatternDQM->GetListOfFunctions()->Add(fhACOMean);\r
-         fhACOMin->SetLineColor(kGreen);\r
-         fhACOMin->SetLineStyle(2);\r
-         fhACOMin->SetLineWidth(4);\r
-         fhACORDEBitPatternDQM->GetListOfFunctions()->Add(fhACOMin);\r
-         fhACOMax->SetLineColor(kGreen);\r
-         fhACOMax->SetLineStyle(2);\r
-         fhACOMax->SetLineWidth(4);\r
-         fhACORDEBitPatternDQM->GetListOfFunctions()->Add(fhACOMax);\r
  \r
          // For ACORDE Multiplicity distribution of fired modules\r
  \r
          fhACORDEMultiplicitySL0DQM->SetFillColor(kMagenta);\r
-         fhACOMulti->SetLineColor(kMagenta);\r
-         fhACOMulti->SetLineStyle(2);\r
-         fhACOMulti->SetLineWidth(4);\r
-         fhACORDEMultiplicitySL0DQM->GetListOfFunctions()->Add(fhACOMulti);\r
  \r
          // For AMU ACO trigger mode\r
  \r
@@ -453,26 +210,10 @@ void AliACORDEQADataMakerRec::InitRaws()
          // For Hits distribution on ACORDE\r
  \r
          fhACORDEBitPatternAMUDQM->SetFillColor(kViolet+7);\r
-         fhACOMeanAMU->SetLineColor(kBlue);\r
-         fhACOMeanAMU->SetLineStyle(2);\r
-         fhACOMeanAMU->SetLineWidth(4);\r
-         fhACORDEBitPatternAMUDQM->GetListOfFunctions()->Add(fhACOMeanAMU);\r
-         fhACOMinAMU->SetLineColor(kGreen);\r
-         fhACOMinAMU->SetLineStyle(2);\r
-         fhACOMinAMU->SetLineWidth(4);\r
-         fhACORDEBitPatternAMUDQM->GetListOfFunctions()->Add(fhACOMinAMU);\r
-         fhACOMaxAMU->SetLineColor(kGreen);\r
-         fhACOMaxAMU->SetLineStyle(2);\r
-         fhACOMaxAMU->SetLineWidth(4);\r
-         fhACORDEBitPatternAMUDQM->GetListOfFunctions()->Add(fhACOMaxAMU);\r
  \r
          // For ACORDE Multiplicity distribution of fired modules\r
  \r
          fhACORDEMultiplicityAMUDQM->SetFillColor(kViolet+6);\r
-         fhACOMultiAMU->SetLineColor(kAzure-2);\r
-         fhACOMultiAMU->SetLineStyle(2);\r
-         fhACOMultiAMU->SetLineWidth(4);\r
-         fhACORDEMultiplicityAMUDQM->GetListOfFunctions()->Add(fhACOMultiAMU);\r
  \r
   //\r
   ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line\r
index 14778cc..4552042 100755 (executable)
@@ -49,17 +49,6 @@ private:
   virtual void   EndOfDetectorCycle(AliQAv1::TASKINDEX_t, TObjArray ** list) ;
   virtual void   StartOfDetectorCycle();
   //
-  //For DQM shifter histogram
-  // SL0 ACO trigger mode
-  TLine* fhACOMean;
-  TLine* fhACOMin;
-  TLine* fhACOMax;
-  TLine* fhACOMulti;
-  // AMU trigger mode
-  TLine* fhACOMeanAMU;
-  TLine* fhACOMinAMU;
-  TLine* fhACOMaxAMU;
-  TLine* fhACOMultiAMU;
   //
   ClassDef(AliACORDEQADataMakerRec,1)  // description