Fixes from P2. Allow pre-setting cuts and factor in display.
authorcholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 13 Jul 2009 19:51:02 +0000 (19:51 +0000)
committercholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 13 Jul 2009 19:51:02 +0000 (19:51 +0000)
FMD/AliFMDDisplay.cxx
FMD/AliFMDDisplay.h
FMD/AliFMDInput.cxx
FMD/AliFMDPattern.cxx
FMD/scripts/dqm/PatternCalib.C

index 4aa9173..e968660 100644 (file)
@@ -131,7 +131,10 @@ AliFMDDisplay::AliFMDDisplay(Bool_t onlyFMD, const char* gAliceFile)
     fAux(0), 
     fReturn(kFALSE), 
     fContinous(kFALSE),
-    fTimeout("gApplication->StopIdleing()", 10)
+    fTimeout("gApplication->StopIdleing()", 10), 
+    fInitialMin(0), 
+    fInitialMax(1), 
+    fInitialFactor(3/10.)
 {
   // Constructor of an FMD display object. 
   // Must be called 
@@ -181,8 +184,9 @@ AliFMDDisplay::MakeCanvas(const char** which)
     xb = .66;
     fFactor = new TSlider("pedFactor", "Pedestal Factor", xb+.01, 0, 1, yb);
     fFactor->SetMethod("AliFMDDisplay::Instance()->ChangeFactor()");
-    fFactor->SetRange(3./10, 1);
+    fFactor->SetRange(fInitialFactor, 1);
     fFactor->Draw();
+    fFactor->SetMinimum(fInitialFactor);
     TSliderBox *sbox = 
       static_cast<TSliderBox*>(fFactor->GetListOfPrimitives()->
                               FindObject("TSliderBox"));
@@ -200,7 +204,7 @@ AliFMDDisplay::MakeCanvas(const char** which)
     yb = .05;
     fSlider = new TSlider("genCut", "Multiplicity cut", 0, 0, xb, yb);
     fSlider->SetMethod("AliFMDDisplay::Instance()->ChangeCut()");
-    fSlider->SetRange(0,1);
+    fSlider->SetRange(fInitialMin,fInitialMax);
     fSlider->Draw();
     TSliderBox *sbox = 
       static_cast<TSliderBox*>(fSlider->GetListOfPrimitives()->
@@ -209,6 +213,9 @@ AliFMDDisplay::MakeCanvas(const char** which)
       sbox->SetToolTipText("Adjust lower and upper limit on data signal");
     }
   }
+  // fCanvas->Modified();
+  // fCanvas->Update();
+  // fCanvas->cd();
   Float_t      x0 = 0;
   Float_t      dx = 1. / n;
   p               = which;
@@ -394,7 +401,8 @@ AliFMDDisplay::MakeAux()
   if (!range) return;
   
   if (!fAux) {
-    fAux = new TCanvas("aux", "Aux");
+    fAux = new TCanvas(Form("aux_%s", GetName()), 
+                      Form("Aux - %s", GetTitle()));
     fAux->SetLogy();
     fAux->SetFillColor(kWhite);
     fAux->SetBorderMode(0);
@@ -403,11 +411,17 @@ AliFMDDisplay::MakeAux()
     fSpec = new TH1D("spec", "Spectra", range->fNbins, 
                     range->fLow-dBin/2, range->fHigh+dBin/2);
     fSpecCut = static_cast<TH1*>(fSpec->Clone("specCut"));
-    fSpec->SetXTitle("signal");
+    TString xTitle((TESTBIT(fTreeMask, kRawCalib) || 
+                   TESTBIT(fTreeMask, kESD)) ? "#Delta E/#Delta E_{mip}" :
+                  (TESTBIT(fTreeMask, kDigits) ||
+                   TESTBIT(fTreeMask, kSDigits) || 
+                   TESTBIT(fTreeMask, kRaw)) ? "ADC [counts]" :
+                  TESTBIT(fTreeMask, kHits) ? "Hits" : "signal");
+    fSpec->SetXTitle(xTitle.Data());
     fSpec->SetYTitle("events");
     fSpec->SetFillColor(2);
     fSpec->SetFillStyle(3001);
-    fSpecCut->SetXTitle("signal");
+    fSpecCut->SetXTitle(xTitle.Data());
     fSpecCut->SetYTitle("events");
     fSpecCut->SetFillColor(4);
     fSpecCut->SetFillStyle(3001);
@@ -547,13 +561,27 @@ void
 AliFMDDisplay::SetCut(Float_t l, Float_t h) 
 {
   // Change the cut on the slider. 
-  fSlider->SetMinimum(l);
-  fSlider->SetMaximum(h);
+  fInitialMin = l;
+  fInitialMax = h;
+  if (!fSlider) return;
+  fSlider->SetMinimum(fInitialMin);
+  fSlider->SetMaximum(fInitialMax);
   ChangeCut();
 }
 
 //____________________________________________________________________
 void
+AliFMDDisplay::SetFactor(Float_t f) 
+{
+  // Change the cut on the slider. 
+  fInitialFactor = f / 10;
+  if (!fFactor) return;
+  fFactor->SetMinimum(fInitialFactor);
+  ChangeFactor();
+}
+
+//____________________________________________________________________
+void
 AliFMDDisplay::ChangeCut() 
 {
   // Change the cut on the slider. 
@@ -811,6 +839,7 @@ AliFMDDisplay::ProcessRawCalibDigit(AliFMDDigit* digit)
   //   Double_t edep = ((counts * parm->GetEdepMip() / 
   //               (gain * parm->GetDACPerMIP()));
   Double_t mult = (counts-ped) / (gain * parm->GetDACPerMIP());
+  if (gain < 0.1 || gain > 10) mult = 0;
   
 
   AliFMDDebug(10, ("FMD%d%c[%02d,%03d] adc %4d "
index b8bd0e7..b380119 100644 (file)
@@ -130,6 +130,7 @@ public:
 
   /** Set range of displayed values */
   virtual void SetCut(Float_t l=0., Float_t h=1.); //*MENU*
+  virtual void SetFactor(Float_t f=1);
 protected:
   /** Copy constructor 
       @param o Object to copy from  */
@@ -159,7 +160,10 @@ protected:
       fAux(0),
       fReturn(kFALSE),
       fContinous(kFALSE), 
-      fTimeout()
+      fTimeout(), 
+      fInitialMin(0), 
+      fInitialMax(1), 
+      fInitialFactor(3./10)
   { } 
   /** Assignment operator 
       @return Reference to this object */
@@ -223,7 +227,9 @@ protected:
   Bool_t                fReturn;    // Stop 
   Bool_t                fContinous;
   TTimer                fTimeout;
-  
+  Float_t               fInitialMin;
+  Float_t               fInitialMax;
+  Float_t               fInitialFactor;
 
   struct Range_t { 
     UInt_t  fNbins;
index dcbcd48..20b759b 100644 (file)
@@ -37,6 +37,7 @@
 #include "AliRawReaderFile.h"   // ALIRAWREADERFILE_H
 #include "AliRawReaderRoot.h"   // ALIRAWREADERROOT_H
 #include "AliRawReaderDate.h"   // ALIRAWREADERDATE_H
+#include "AliRawEventHeaderBase.h" 
 #include "AliFMD.h"             // ALIFMD_H
 #include "AliFMDHit.h"         // ALIFMDHIT_H
 #include "AliFMDDigit.h"       // ALIFMDDigit_H
@@ -443,7 +444,19 @@ AliFMDInput::Begin(Int_t event)
   if (TESTBIT(fTreeMask, kRaw) || TESTBIT(fTreeMask, kRawCalib)) {
     // AliInfo("Getting FMD raw data digits");
     std::cout << "Waiting for event ..." << std::endl;
-    if (!fReader->NextEvent()) return kFALSE;
+    do { 
+      if (!fReader->NextEvent()) { 
+       if (fRawFile.Contains("mem://")) { 
+         gSystem->Sleep(3);
+         continue;
+       }
+       return kFALSE;
+      }
+      UInt_t eventType = fReader->GetType();
+      if(eventType == AliRawEventHeaderBase::kPhysicsEvent ||
+        eventType == AliRawEventHeaderBase::kCalibrationEvent) 
+       break;
+    } while (true);
     // AliFMDRawReader r(fReader, 0);
     fArrayA->Clear();
     fFMDReader->ReadAdcs(fArrayA);
index ab4569f..800ee2b 100644 (file)
@@ -477,19 +477,19 @@ AliFMDPattern::AtEnd()
   
   fFMD1.End();
   fFMD1Pad->Modified();
-  fFMD1Sum.SetTitle(Form("# hits in FMD1: %5d (%7.5f /cm^{2})", 
+  fFMD1Sum.SetTitle(Form("# hits in FMD1: %5d   (%4.2f /cm^{2})", 
                         fFMD1.Total(), fFMD1.Total()/fFMD1Area));
   total += fFMD1.Total();
 
   fFMD2.End();
   fFMD2Pad->Modified();
-  fFMD2Sum.SetTitle(Form("# hits in FMD2: %5d (%7.5f /cm^{2})", 
+  fFMD2Sum.SetTitle(Form("# hits in FMD2: %5d   (%4.2f /cm^{2})", 
                         fFMD2.Total(), fFMD2.Total()/fFMD2Area));
   total += fFMD2.Total();
 
   fFMD3.End();
   fFMD3Pad->Modified();
-  fFMD3Sum.SetTitle(Form("# hits in FMD3: %5d (%7.5f /cm^{2})", 
+  fFMD3Sum.SetTitle(Form("# hits in FMD3: %5d   (%4.2f /cm^{2})", 
                         fFMD3.Total(), fFMD3.Total()/fFMD3Area));
   total += fFMD3.Total();
 
index 7840a9c..e0512f2 100644 (file)
@@ -82,6 +82,8 @@ PatternCalib(const char* file="raw.root", Int_t runno=0)
   d->SetRawFile(file);
   d->SetName("rawCalib");
   d->SetTitle("Calibrated Raw");
+  d->SetFactor(5);
+  d->SetCut(0.02, 1);
   d->Run();
 }