]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
QA for shifters revisited - Custom object removed
authorcheynis <cheynis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 30 Oct 2009 11:00:46 +0000 (11:00 +0000)
committercheynis <cheynis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 30 Oct 2009 11:00:46 +0000 (11:00 +0000)
VZERO/AliVZEROQADataMakerRec.cxx
VZERO/AliVZEROQADataMakerRec.h
VZERO/AliVZEROTrending.cxx
VZERO/AliVZEROTrending.h

index e6a480c39aa087195059932f278a4c95246f8471..5df8888871218e05aa4b872c9ec571da522cf19e 100644 (file)
@@ -55,7 +55,15 @@ ClassImp(AliVZEROQADataMakerRec)
   AliVZEROQADataMakerRec::AliVZEROQADataMakerRec() : 
        AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kVZERO), "VZERO Quality Assurance Data Maker"),
        fCalibData(0x0),
-    fEvent(0), fNTotEvents(0), fNSubEvents(0), fTrendingUpdateEvent(0), fTrendingUpdateTime(0), fCycleStartTime(0), fCycleStopTime(0), fMonitorRate(0.)
+        fEvent(0), 
+        fNTotEvents(0), 
+        fNSubEvents(0), 
+        fTrendingUpdateEvent(0), 
+        fNTrendingUpdates(0), 
+        fTrendingUpdateTime(0), 
+        fCycleStartTime(0), 
+        fCycleStopTime(0), 
+        fMonitorRate(0.)
     
 {
    // Constructor
@@ -67,7 +75,12 @@ ClassImp(AliVZEROQADataMakerRec)
   }
    for(Int_t i=0; i<64; i++){  
        fEven[i] = 0;   
-       fOdd[i]  = 0;  }
+       fOdd[i]  = 0;
+          fChargePerChannel[i] = 0.;  
+          fFlagPerChannel[i] = 0.;  
+          fMeanChargePerChannel[i] = 0.;  
+          fMeanFlagPerChannel[i] = 0.;  
+  }
   
    for(Int_t i=0; i<128; i++){  
        fADCmean[i] = 0.0;   }  
@@ -77,7 +90,15 @@ ClassImp(AliVZEROQADataMakerRec)
   AliVZEROQADataMakerRec::AliVZEROQADataMakerRec(const AliVZEROQADataMakerRec& qadm) :
   AliQADataMakerRec(),
        fCalibData(0x0),
-    fEvent(0), fNTotEvents(0), fNSubEvents(0), fTrendingUpdateEvent(0), fTrendingUpdateTime(0), fCycleStartTime(0), fCycleStopTime(0), fMonitorRate(0.)
+        fEvent(0), 
+        fNTotEvents(0), 
+        fNSubEvents(0), 
+        fTrendingUpdateEvent(0), 
+        fNTrendingUpdates(0), 
+        fTrendingUpdateTime(0), 
+        fCycleStartTime(0), 
+        fCycleStopTime(0), 
+        fMonitorRate(0.)
   
 {
   // Copy constructor 
@@ -234,7 +255,7 @@ void AliVZEROQADataMakerRec::InitESDs()
  void AliVZEROQADataMakerRec::InitRaws()
  {
    // Creates RAW histograms in Raws subdir
-   
+
    const Bool_t expert   = kTRUE ; 
    const Bool_t saveCorr = kTRUE ; 
    const Bool_t image    = kTRUE ; 
@@ -439,12 +460,52 @@ void AliVZEROQADataMakerRec::InitESDs()
        sprintf(name,"TREND_MeanChargePerRing");
        sprintf(title,"Mean Charge per Event and per Ring versus time ");
        trend = new AliVZEROTrending(name, title);
-       Add2RawsList(trend,kRawMeanChargePerRing, !expert, !image, !saveCorr); iHisto++;
+       Add2RawsList(trend,kRawMeanChargePerRing, expert, !image, !saveCorr); iHisto++;
         
        sprintf(name,"TREND_MeanFlagPerRing");
        sprintf(title,"Mean Flag per Event and per Ring versus time ");
        trend = new AliVZEROTrending(name, title);
-       Add2RawsList(trend,kRawMeanFlagPerRing, !expert, !image, !saveCorr); iHisto++;
+       Add2RawsList(trend,kRawMeanFlagPerRing, expert, !image, !saveCorr); iHisto++;
+        
+       sprintf(name,"H1D_DQMFlag");
+       sprintf(title,"Current Flag per Event / Mean Flag per Event ");
+       h1d = new TH1D(name, title, kNChannelBins, kChannelMin, kChannelMax);
+       h1d->SetFillColor(29);
+       h1d->SetLineWidth(2);
+       h1d->GetXaxis()->SetLabelSize(0.06);
+    h1d->GetXaxis()->SetNdivisions(808,kFALSE);
+       h1d->GetXaxis()->SetBinLabel(4, "V0C");h1d->GetXaxis()->SetBinLabel(5, "R0");
+       h1d->GetXaxis()->SetBinLabel(12, "V0C");h1d->GetXaxis()->SetBinLabel(13, "R1");
+       h1d->GetXaxis()->SetBinLabel(20, "V0C");h1d->GetXaxis()->SetBinLabel(21, "R2");
+       h1d->GetXaxis()->SetBinLabel(28, "V0C");h1d->GetXaxis()->SetBinLabel(29, "R3");
+       h1d->GetXaxis()->SetBinLabel(36, "V0A");h1d->GetXaxis()->SetBinLabel(37, "R0");
+       h1d->GetXaxis()->SetBinLabel(44, "V0A");h1d->GetXaxis()->SetBinLabel(45, "R1");
+       h1d->GetXaxis()->SetBinLabel(52, "V0A");h1d->GetXaxis()->SetBinLabel(53, "R2");
+       h1d->GetXaxis()->SetBinLabel(60, "V0A");h1d->GetXaxis()->SetBinLabel(61, "R3");
+       h1d->GetXaxis()->CenterTitle();
+    h1d->GetXaxis()->SetTitleOffset(0.8);
+    h1d->GetXaxis()->SetNdivisions(808,kFALSE);
+       Add2RawsList(h1d,kRawDQMFlag, !expert, image, !saveCorr); iHisto++;
+        
+       sprintf(name,"H1D_DQMCharge");
+       sprintf(title,"Current Charge per Event / Mean Charge per Event ");
+       h1d = new TH1D(name, title, kNChannelBins, kChannelMin, kChannelMax);
+       h1d->SetFillColor(29);
+       h1d->SetLineWidth(2);
+       h1d->GetXaxis()->SetLabelSize(0.06);
+    h1d->GetXaxis()->SetNdivisions(808,kFALSE);
+       h1d->GetXaxis()->SetBinLabel(4, "V0C");h1d->GetXaxis()->SetBinLabel(5, "R0");
+       h1d->GetXaxis()->SetBinLabel(12, "V0C");h1d->GetXaxis()->SetBinLabel(13, "R1");
+       h1d->GetXaxis()->SetBinLabel(20, "V0C");h1d->GetXaxis()->SetBinLabel(21, "R2");
+       h1d->GetXaxis()->SetBinLabel(28, "V0C");h1d->GetXaxis()->SetBinLabel(29, "R3");
+       h1d->GetXaxis()->SetBinLabel(36, "V0A");h1d->GetXaxis()->SetBinLabel(37, "R0");
+       h1d->GetXaxis()->SetBinLabel(44, "V0A");h1d->GetXaxis()->SetBinLabel(45, "R1");
+       h1d->GetXaxis()->SetBinLabel(52, "V0A");h1d->GetXaxis()->SetBinLabel(53, "R2");
+       h1d->GetXaxis()->SetBinLabel(60, "V0A");h1d->GetXaxis()->SetBinLabel(61, "R3");
+       h1d->GetXaxis()->CenterTitle();
+    h1d->GetXaxis()->SetTitleOffset(0.8);
+    h1d->GetXaxis()->SetNdivisions(808,kFALSE);
+       Add2RawsList(h1d,kRawDQMCharge, !expert, image, !saveCorr); iHisto++;
         
        AliDebug(AliQAv1::GetQADebugLevel(), Form("%d Histograms has been added to the Raws List",iHisto));
  }
@@ -674,10 +735,14 @@ void AliVZEROQADataMakerRec::MakeESDs(AliESDEvent * esd)
 
           int side = offlineCh/32;
           int ring = (offlineCh - 32*side) / 8;
-          if(BBFlag) fFlagPerRing[side*4 + ring] += 1;
+          if(BBFlag) {
+                       fFlagPerRing[side*4 + ring] += 1;
+                       fFlagPerChannel[offlineCh] += 1;
+          }    
 
           if(charge<1023 && chargeEoI > 5.*sigma){ 
                   fChargePerRing[side*4 + ring] += chargeEoI;  
+                  fChargePerChannel[offlineCh] += chargeEoI;
                   ((TH2I*)GetRawsData((integrator == 0 ? kChargeEoICycleInt0 : kChargeEoICycleInt1)))->Fill(offlineCh,chargeEoI);
                   ((TH2D*)GetRawsData(kRawMIPChannel))->Fill(offlineCh,mipEoI);
                   if(offlineCh<32) {
@@ -853,7 +918,8 @@ void AliVZEROQADataMakerRec::StartOfDetectorCycle()
 
 //-------------------------------------------------------------------------------------------------
 void AliVZEROQADataMakerRec::AddTrendingEntry(){   
-     printf("AddTrendingEntry\n");
+     //printf("AddTrendingEntry\n");
+       fNTrendingUpdates++;
        
        // Normalize to the number of events
        for(int i=0; i<8;i++){
@@ -863,6 +929,24 @@ void AliVZEROQADataMakerRec::AddTrendingEntry(){
                fFlagPerRing[i] /= fTrendingUpdateEvent;
        }
        
+       GetRawsData(kRawDQMCharge)->Reset();
+       GetRawsData(kRawDQMFlag)->Reset();
+
+       for(int i=0; i<64;i++){
+               fChargePerChannel[i] /= fTrendingUpdateEvent;
+               fFlagPerChannel[i] /= fTrendingUpdateEvent;
+               
+               if(fMeanChargePerChannel[i]) GetRawsData(kRawDQMCharge)->Fill(i,fChargePerChannel[i]/fMeanChargePerChannel[i]);
+               else GetRawsData(kRawDQMCharge)->Fill(i,0.);
+               
+               if(fMeanFlagPerChannel[i]) GetRawsData(kRawDQMFlag)->Fill(i,fFlagPerChannel[i]/fMeanFlagPerChannel[i]);
+               else GetRawsData(kRawDQMFlag)->Fill(i,0.);
+               
+               fMeanChargePerChannel[i] = (fMeanChargePerChannel[i] * (fNTrendingUpdates-1) + fChargePerChannel[i]) / fNTrendingUpdates;
+               fMeanFlagPerChannel[i] = (fMeanFlagPerChannel[i] * (fNTrendingUpdates-1) + fFlagPerChannel[i]) / fNTrendingUpdates;
+               
+       }
+       
        TTimeStamp currentTime;
        ((AliVZEROTrending*)GetRawsData(kRawMeanChargePerRing))->AddEntry(fChargePerRing,  currentTime.GetSec());
        ((AliVZEROTrending*)GetRawsData(kRawMeanFlagPerRing))->AddEntry(fFlagPerRing,  currentTime.GetSec());
@@ -873,6 +957,10 @@ void AliVZEROQADataMakerRec::AddTrendingEntry(){
                fChargePerRing[i] = 0.;
                fFlagPerRing[i] = 0.;
        }
+       for(int i=0; i<64;i++){
+               fChargePerChannel[i] = 0.;
+               fFlagPerChannel[i] = 0.;
+       }
        
 }
 
index 42a274517b9f63ef33e70e96123695c9cab60bad..8b2ec941d0f53ca758bbe390aaaaccd2220eb9ea 100644 (file)
@@ -36,7 +36,7 @@ public:
                  ,kMultiV0A,kMultiV0C,kChargeV0A,kChargeV0C,kChargeV0 
                  ,kV0ATime,kV0CTime,kDiffTime
                  ,kRawMIPV0A,kRawMIPV0C,kRawMIPV0,kRawMIPChannel
-                 ,kRawMeanChargePerRing,kRawMeanFlagPerRing} ;
+                 ,kRawMeanChargePerRing,kRawMeanFlagPerRing,kRawDQMCharge,kRawDQMFlag} ;
        
  enum HESDType_t {kCellMultiV0A,kCellMultiV0C,kMIPMultiV0A,kMIPMultiV0C,kMIPMultiChannel
                  ,kBBFlag,kBGFlag,kChargeChannel,kTimeChannel
@@ -72,14 +72,19 @@ private:
   size_t fNTotEvents;
   size_t fNSubEvents;
   size_t fTrendingUpdateEvent;
+  size_t fNTrendingUpdates;
   size_t fTrendingUpdateTime;
   UInt_t fCycleStartTime;
   UInt_t fCycleStopTime;
   Double_t fMonitorRate;
   Double_t fChargePerRing[8];
   Double_t fFlagPerRing[8];
+  Double_t fChargePerChannel[64];
+  Double_t fFlagPerChannel[64];
+  Double_t fMeanChargePerChannel[64];
+  Double_t fMeanFlagPerChannel[64];
 
-  ClassDef(AliVZEROQADataMakerRec,1)  // description 
+  ClassDef(AliVZEROQADataMakerRec,2)  // description 
 
 };
 
index 55dff47a67b5551fcd4e4dbb3463f84985036ad4..cf822e57c15c8610047ec545dadc9e76ff992706 100644 (file)
@@ -21,6 +21,9 @@
 //  These histo are the one which will be looked at by QA Shifter\r
 // \r
 #include "TGraph.h"\r
+#include "TMultiGraph.h"\r
+#include "TLegend.h"\r
+#include "TString.h"\r
 \r
 #include "AliLog.h"\r
 #include "AliVZEROTrending.h"\r
 ClassImp(AliVZEROTrending)\r
 \r
 //_____________________________________________________________________________\r
-AliVZEROTrending::AliVZEROTrending() : TH1(), fNEntries(0)\r
+AliVZEROTrending::AliVZEROTrending() : TH1(), fNEntries(0), fMultiGraphs(NULL)\r
 {\r
        // Default constructor\r
+       for(int i=0; i<8;i++) fGraphs[i] = NULL;\r
 }\r
 //_____________________________________________________________________________\r
-AliVZEROTrending::AliVZEROTrending(const char* name, const char* title) : TH1(), fNEntries(0)\r
+AliVZEROTrending::AliVZEROTrending(const char* name, const char* title) : TH1(), fNEntries(0), fMultiGraphs(NULL)\r
 {\r
        SetName(name);\r
        SetTitle(title);\r
+       for(int i=0; i<8;i++) fGraphs[i] = NULL;\r
 }\r
 //_____________________________________________________________________________\r
 AliVZEROTrending::AliVZEROTrending(const AliVZEROTrending &trend) : \r
-       TH1(), fNEntries(trend.fNEntries)\r
+       TH1(), fNEntries(trend.fNEntries), fMultiGraphs(NULL)\r
 {\r
        // Copy constructor\r
+       for(int i=0; i<8;i++) fGraphs[i] = NULL;\r
        SetName(trend.GetName());\r
        SetTitle(trend.GetTitle());\r
        for (int i = 0; i < kDataSize; i++) {\r
@@ -55,7 +61,8 @@ AliVZEROTrending::AliVZEROTrending(const AliVZEROTrending &trend) :
 \r
 //_____________________________________________________________________________\r
 AliVZEROTrending::~AliVZEROTrending(){\r
-       // Destructor\r
+       delete [] fGraphs;\r
+       delete fMultiGraphs;\r
 }\r
 // -----------------------------------------------------------------                   \r
 void AliVZEROTrending::AddEntry(Double_t * data, UInt_t time)\r
@@ -83,9 +90,9 @@ void AliVZEROTrending::AddEntry(Double_t * data, UInt_t time)
                }\r
                \r
        }\r
-       //printf("sizeof UInt_t Double_t %d %d\n",sizeof(UInt_t),sizeof(Double_t));\r
-       //printf("Add Entry %d @ %f : %f %f %f %f %f %f %f %f \n",fNEntries,fTime[fNEntries-1], \r
-       //      data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7]);\r
+//     printf("sizeof UInt_t Double_t %d %d\n",sizeof(UInt_t),sizeof(Double_t));\r
+//     printf("Add Entry %d @ %f : %f %f %f %f %f %f %f %f \n",fNEntries,fTime[fNEntries-1], \r
+//             data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7]);\r
 }                      \r
 // -----------------------------------------------------------------                   \r
 void AliVZEROTrending::PrintEntry(UInt_t entry)\r
@@ -99,3 +106,33 @@ void AliVZEROTrending::PrintEntry(UInt_t entry)
 \r
        }\r
 }                      \r
+\r
+// -----------------------------------------------------------------                   \r
+void AliVZEROTrending::Draw(Option_t *option){\r
+    TString opt = option;      \r
+       fMultiGraphs = new TMultiGraph();\r
+       fMultiGraphs->SetTitle(GetTitle());\r
+       \r
+       for(int i=0;i<8;i++) {\r
+               fGraphs[i] = new TGraph(GetNEntries(), GetTime(), GetChannel(i));\r
+               fGraphs[i]->SetLineWidth(2);\r
+               fGraphs[i]->SetLineColor(i<4 ? i+1 : i -3);\r
+               fGraphs[i]->SetLineStyle(i<4 ? 1 : 2);\r
+               fMultiGraphs->Add(fGraphs[i]);\r
+       }\r
+\r
+       fMultiGraphs->Draw("AL");\r
+       fMultiGraphs->GetXaxis()->SetTimeDisplay(1);\r
+       fMultiGraphs->GetXaxis()->SetNdivisions(505,kFALSE);\r
+       fMultiGraphs->Draw("AL");\r
+       TLegend * legend = new TLegend(0.7,0.65,0.86,0.88);\r
+       legend->AddEntry(fGraphs[4],"V0A - Ring0","l");\r
+       legend->AddEntry(fGraphs[5],"V0A - Ring1","l");\r
+       legend->AddEntry(fGraphs[6],"V0A - Ring2","l");\r
+       legend->AddEntry(fGraphs[7],"V0A - Ring3","l");\r
+       legend->AddEntry(fGraphs[0],"V0C - Ring0","l");\r
+       legend->AddEntry(fGraphs[1],"V0C - Ring1","l");\r
+       legend->AddEntry(fGraphs[2],"V0C - Ring2","l");\r
+       legend->AddEntry(fGraphs[3],"V0C - Ring3","l");\r
+       legend->Draw();\r
+}\r
index cd5a3ce7a6e01a569f36193598e8cdb9a16947e8..afd3268d2851a417da6cea87dcf844769b1b9fcf 100644 (file)
@@ -19,6 +19,7 @@
 #include <TH1.h>\r
 \r
 class TGraph;\r
+class TMultiGraph;\r
 \r
 class AliVZEROTrending  : public TH1 {\r
 public:\r
@@ -34,6 +35,7 @@ public:
        UInt_t GetNEntries(){return fNEntries;};\r
        void AddEntry(Double_t * data, UInt_t time);\r
        void PrintEntry(UInt_t entry);  \r
+       virtual void Draw(Option_t  *option="");\r
 \r
 private:\r
        \r
@@ -42,12 +44,12 @@ private:
        Double_t fData[8][kDataSize];\r
        Double_t fTime[kDataSize];\r
        UInt_t fNEntries;\r
+       TMultiGraph *fMultiGraphs;\r
+       TGraph * fGraphs[8];\r
        \r
-       \r
-       ClassDef( AliVZEROTrending, 1 )  \r
+       ClassDef( AliVZEROTrending, 2 )  \r
        \r
 };\r
 \r
 #endif // ALIVZEROTRENDING_H\r
 \r
-\r