From e1a9aea4fc25ed42164ccc4fdb3a7972b27f3cf2 Mon Sep 17 00:00:00 2001 From: cholm Date: Mon, 13 Jul 2009 19:51:02 +0000 Subject: [PATCH] Fixes from P2. Allow pre-setting cuts and factor in display. --- FMD/AliFMDDisplay.cxx | 45 ++++++++++++++++++++++++++++------ FMD/AliFMDDisplay.h | 10 ++++++-- FMD/AliFMDInput.cxx | 15 +++++++++++- FMD/AliFMDPattern.cxx | 6 ++--- FMD/scripts/dqm/PatternCalib.C | 2 ++ 5 files changed, 64 insertions(+), 14 deletions(-) diff --git a/FMD/AliFMDDisplay.cxx b/FMD/AliFMDDisplay.cxx index 4aa91730de8..e9686603cd4 100644 --- a/FMD/AliFMDDisplay.cxx +++ b/FMD/AliFMDDisplay.cxx @@ -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(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(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(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,11 +561,25 @@ 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() @@ -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 " diff --git a/FMD/AliFMDDisplay.h b/FMD/AliFMDDisplay.h index b8bd0e7b494..b3801192fc3 100644 --- a/FMD/AliFMDDisplay.h +++ b/FMD/AliFMDDisplay.h @@ -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; diff --git a/FMD/AliFMDInput.cxx b/FMD/AliFMDInput.cxx index dcbcd480588..20b759b61c9 100644 --- a/FMD/AliFMDInput.cxx +++ b/FMD/AliFMDInput.cxx @@ -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); diff --git a/FMD/AliFMDPattern.cxx b/FMD/AliFMDPattern.cxx index ab4569f10cc..800ee2b66f6 100644 --- a/FMD/AliFMDPattern.cxx +++ b/FMD/AliFMDPattern.cxx @@ -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(); diff --git a/FMD/scripts/dqm/PatternCalib.C b/FMD/scripts/dqm/PatternCalib.C index 7840a9c3700..e0512f25fe8 100644 --- a/FMD/scripts/dqm/PatternCalib.C +++ b/FMD/scripts/dqm/PatternCalib.C @@ -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(); } -- 2.43.0