From 8ec606c2642d3da4ec714cf94002e246252ed8ce Mon Sep 17 00:00:00 2001 From: hristov Date: Sun, 16 Apr 2006 21:09:52 +0000 Subject: [PATCH] Patch from Christian Holm --- FMD/AliFMDBaseDigitizer.cxx | 4 +++- FMD/AliFMDCalibFaker.cxx | 18 ++++++++++++------ FMD/AliFMDParameters.cxx | 33 ++++++++++++++++++++++++++++++--- FMD/Config.C | 1 - FMD/Simulate.C | 1 + FMD/scripts/DrawDigitsRecs.C | 3 ++- FMD/scripts/DrawHits.C | 3 ++- FMD/scripts/DrawHitsDigits.C | 8 +++++--- FMD/scripts/DrawHitsRecs.C | 1 + FMD/scripts/GetMedia.C | 3 ++- FMD/scripts/MakeCalibration.C | 3 ++- 11 files changed, 60 insertions(+), 18 deletions(-) diff --git a/FMD/AliFMDBaseDigitizer.cxx b/FMD/AliFMDBaseDigitizer.cxx index 7eb02c9e6c7..62ea4c0a873 100644 --- a/FMD/AliFMDBaseDigitizer.cxx +++ b/FMD/AliFMDBaseDigitizer.cxx @@ -479,7 +479,9 @@ AliFMDBaseDigitizer::ConvertToCount(Float_t edep, // In case we don't oversample, just return the end value. if (rate == 1) { - counts[0] = UShort_t(TMath::Min(edep * convF + ped, Float_t(size))); + counts[0] = UShort_t(TMath::Min(edep * convF + ped, Float_t(maxAdc))); + AliDebug(2, Form("FMD%d%c[%2d,%3d]: converting ELoss %f to ADC %d (%f)", + detector,ring,sector,strip,edep,counts[0],convF)); return; } diff --git a/FMD/AliFMDCalibFaker.cxx b/FMD/AliFMDCalibFaker.cxx index d7491c9e032..baf9369793d 100644 --- a/FMD/AliFMDCalibFaker.cxx +++ b/FMD/AliFMDCalibFaker.cxx @@ -88,7 +88,7 @@ AliFMDCalibFaker::Exec(Option_t*) // Make the objects. AliCDBManager* cdb = AliCDBManager::Instance(); AliFMDParameters* param = AliFMDParameters::Instance(); - Float_t maxADC = param->GetAltroChannelSize(); + Float_t maxADC = 1.F*param->GetAltroChannelSize(); TObjArray cleanup; if (GetTitle() && GetTitle()[0] != '\0') { @@ -99,8 +99,12 @@ AliFMDCalibFaker::Exec(Option_t*) AliCDBMetaData* meta = 0; if (TESTBIT(fMask, kPulseGain)) { - if (fGain <= 0) - fGain = (param->GetVA1MipRange() * param->GetEdepMip() / maxADC); + // Info("Exec","Default gain to %f = %d * %f / %d", + // (param->GetVA1MipRange() * param->GetEdepMip() / maxADC), + // param->GetVA1MipRange(), param->GetEdepMip(), Int_t(maxADC)); + if (fGain <= 0) { + fGain = (param->GetVA1MipRange() * param->GetEdepMip() / maxADC); + } fThreshold = fThresholdFactor * param->GetEdepMip(); AliFMDCalibGain* gain = MakePulseGain(); AliCDBId id(AliFMDParameters::PulseGainPath(), fRunMin, fRunMax); @@ -114,7 +118,7 @@ AliFMDCalibFaker::Exec(Option_t*) fPedestalMin = TMath::Max(TMath::Min(fPedestalMin, maxADC), 0.F); fPedestalMax = TMath::Max(TMath::Min(fPedestalMax, maxADC), fPedestalMin); AliFMDCalibPedestal* pedestal = MakePedestal(); - AliCDBId id(AliFMDParameters::PedestalPath(), fRunMin, fRunMax); + AliCDBId id(AliFMDParameters::PedestalPath(),fRunMin,fRunMax); MAKE_META(meta); meta->SetProperty("key1", pedestal); cdb->Put(pedestal, id, meta); @@ -145,7 +149,8 @@ AliFMDCalibFaker::Exec(Option_t*) if (TESTBIT(fMask, kSampleRate)) { fRate = TMath::Max(TMath::Min(fRate, UShort_t(8)), UShort_t(1)); AliFMDCalibSampleRate* rate = MakeSampleRate(); - AliCDBId id(AliFMDParameters::SampleRatePath(),fRunMin,fRunMax); + AliCDBId id(AliFMDParameters::SampleRatePath(), + fRunMin,fRunMax); MAKE_META(meta); meta->SetProperty("key1", rate); cdb->Put(rate, id, meta); @@ -155,7 +160,8 @@ AliFMDCalibFaker::Exec(Option_t*) if (TESTBIT(fMask, kStripRange)) { fRate = TMath::Max(TMath::Min(fRate, UShort_t(8)), UShort_t(1)); AliFMDCalibStripRange* range = MakeStripRange(); - AliCDBId id(AliFMDParameters::StripRangePath(),fRunMin,fRunMax); + AliCDBId id(AliFMDParameters::StripRangePath(), + fRunMin,fRunMax); MAKE_META(meta); meta->SetProperty("key1", range); cdb->Put(range, id, meta); diff --git a/FMD/AliFMDParameters.cxx b/FMD/AliFMDParameters.cxx index 43ed7b7f808..5cf64f50dde 100644 --- a/FMD/AliFMDParameters.cxx +++ b/FMD/AliFMDParameters.cxx @@ -39,6 +39,7 @@ #include // ALICDBMANAGER_H #include // ALICDBMANAGER_H #include +#include //==================================================================== ClassImp(AliFMDParameters) @@ -120,6 +121,32 @@ AliFMDParameters::Print(Option_t* option) const // If option contains an 'A' then everything is printed. TString opt(option); Bool_t showStrips = opt.Contains("a", TString::kIgnoreCase); + if (opt.Contains("fmd",TString::kIgnoreCase)) { + size_t i = opt.Index("fmd",TString::kIgnoreCase); + size_t j = opt.Index("]",TString::kIgnoreCase); + UShort_t det, sec, str; + Char_t ring, lbrack, rbrack, comma; + UInt_t ddl, addr; + Detector2Hardware(det, ring, sec, str, ddl, addr); + std::stringstream s(opt(i+4, j-i-3).Data()); + s >> det >> ring >> lbrack >> sec >> comma >> str >> rbrack; + std::cout + << " Strip | Pedestal | Gain | ZS thr. | Address\n" + << "--------------+-------------------+------------+---------+---------" + << "\nFMD" << det << ring << "[" << std::setw(2) << sec << "," + << std::setw(3) << str << "] | " + << std::setw(7) << GetPedestal(det, ring, sec, str) + << "+/-" << std::setw(7) + << GetPedestalWidth(det, ring, sec, str) + << " | " << std::setw(10) + << GetPulseGain(det, ring, sec, str) + << " | " << std::setw(7) + << GetZeroSuppression(det, ring, sec, str) + << " | 0x" << std::hex << std::setw(4) + << std::setfill('0') << ddl << ",0x" << std::setw(3) + << addr << std::dec << std::setfill(' ') << std::endl; + return; + } for (UShort_t det=1 ; det <= 3; det++) { std::cout << "FMD" << det << std::endl; Char_t rings[] = { 'I', (det == 1 ? '\0' : 'O'), '\0' }; @@ -137,8 +164,8 @@ AliFMDParameters::Print(Option_t* option) const << rate << std::endl; if (!showStrips) continue; std::cout - << " Strip | Pedestal | Gain | ZS thr. | Address\n" - << "--------+-------------------+----------+---------+---------" + << " Strip | Pedestal | Gain | ZS thr. | Address\n" + << "--------+-------------------+------------+---------+---------" << std::endl; for (UShort_t str = 0; str < nStr; str++) { std::cout << " " << std::setw(3) << str << " | "; @@ -151,7 +178,7 @@ AliFMDParameters::Print(Option_t* option) const std::cout << std::setw(7) << GetPedestal(det, *ring, sec, str) << "+/-" << std::setw(7) << GetPedestalWidth(det, *ring, sec, str) - << " | " << std::setw(8) + << " | " << std::setw(10) << GetPulseGain(det, *ring, sec, str) << " | " << std::setw(5) << GetZeroSuppression(det, *ring, sec, str) diff --git a/FMD/Config.C b/FMD/Config.C index 32f1c103115..fee5cfea8ba 100644 --- a/FMD/Config.C +++ b/FMD/Config.C @@ -659,7 +659,6 @@ Config() if (useFMD) { // =================== FMD parameters ============================ AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); - AliLog::SetModuleDebugLevel("FMD", 1); // FMD->UseDetailed(kFALSE); // FMD->UseAssembly(); // FMD->UseOld(); diff --git a/FMD/Simulate.C b/FMD/Simulate.C index a529c6b2a38..d18d3216f82 100644 --- a/FMD/Simulate.C +++ b/FMD/Simulate.C @@ -31,6 +31,7 @@ Simulate() TClonesArray* array = dynamic_cast(align->GetObject()); if (array) sim.SetAlignObjArray(array); } + AliLog::SetModuleDebugLevel("FMD", 2); sim.SetConfigFile("$(ALICE_ROOT)/FMD/Config.C"); // sim.SetMakeSDigits("FMD"); sim.SetMakeDigits("FMD"); diff --git a/FMD/scripts/DrawDigitsRecs.C b/FMD/scripts/DrawDigitsRecs.C index 839d7ae4cd4..b053cfef28b 100644 --- a/FMD/scripts/DrawDigitsRecs.C +++ b/FMD/scripts/DrawDigitsRecs.C @@ -34,7 +34,7 @@ @endcode @ingroup FMD_script */ -class DrawDigitsRecs : public AliFMDInputDigits +class DrawDigitsRecs : public AliFMDInput { private: TH2D* fAdcVsSingle; // Histogram @@ -57,6 +57,7 @@ public: DrawDigitsRecs(Int_t m=1100, Double_t amin=-0.5, Double_t amax=1099.5, Int_t n=105, Double_t mmin=-0.5, Double_t mmax=20.5) { + AddLoad(kDigits); AddLoad(kRecPoints); fAdcVsSingle = new TH2D("adcVsSingle", "ADC vs. Multiplicity (strip)", m, amin, amax, n, mmin, mmax); diff --git a/FMD/scripts/DrawHits.C b/FMD/scripts/DrawHits.C index 95522502de6..af07e62dbc4 100644 --- a/FMD/scripts/DrawHits.C +++ b/FMD/scripts/DrawHits.C @@ -29,7 +29,7 @@ @endcode @ingroup FMD_script */ -class DrawHits : public AliFMDInputHits +class DrawHits : public AliFMDInput { private: TH2D* fElossVsPMQ; // Histogram @@ -59,6 +59,7 @@ public: : fPdg(pdg) { AddLoad(kKinematics); + AddLoad(kHits); TArrayF tkine(MakeLogScale(n, tmin, tmax)); TArrayF eloss(MakeLogScale(m, emin, emax)); TString name(Form("elossVsP%s", (fPdg == 0 ? "MQ" : ""))); diff --git a/FMD/scripts/DrawHitsDigits.C b/FMD/scripts/DrawHitsDigits.C index 2ee1d09e6f2..05d286f1e71 100644 --- a/FMD/scripts/DrawHitsDigits.C +++ b/FMD/scripts/DrawHitsDigits.C @@ -19,6 +19,7 @@ #include #include #include +#include /** @class DrawHitsDigits @brief Draw hit energy loss versus digit ADC @@ -30,7 +31,7 @@ @endcode @ingroup FMD_script */ -class DrawHitsDigits : public AliFMDInputHits +class DrawHitsDigits : public AliFMDInput { private: TH2D* fElossVsAdc; // Histogram @@ -54,6 +55,7 @@ public: Int_t m=1100, Double_t amin=-0.5, Double_t amax=1099.5) { AddLoad(kDigits); + AddLoad(kHits); TArrayF eloss(MakeLogScale(n, emin, emax)); TArrayF adcs(m+1); adcs[0] = amin; @@ -70,7 +72,7 @@ public: Bool_t Begin(Int_t ev) { fMap.Reset(); - return AliFMDInputHits::Begin(ev); + return AliFMDInput::Begin(ev); } //__________________________________________________________________ Bool_t ProcessHit(AliFMDHit* hit, TParticle*) @@ -92,7 +94,7 @@ public: //__________________________________________________________________ Bool_t ProcessDigit(AliFMDDigit* digit) { - if (!digit) continue; + if (!digit) return kFALSE; UShort_t det = digit->Detector(); Char_t rng = digit->Ring(); UShort_t sec = digit->Sector(); diff --git a/FMD/scripts/DrawHitsRecs.C b/FMD/scripts/DrawHitsRecs.C index 2cf6680f710..f12cc89c963 100644 --- a/FMD/scripts/DrawHitsRecs.C +++ b/FMD/scripts/DrawHitsRecs.C @@ -72,6 +72,7 @@ public: { fPrimary = primary; AddLoad(kRecPoints); + AddLoad(kHits); if (fPrimary) AddLoad(kKinematics); TArrayF eloss(MakeLogScale(n, emin, emax)); TArrayF mults(m+1); diff --git a/FMD/scripts/GetMedia.C b/FMD/scripts/GetMedia.C index daedba85d10..cb98f4be214 100644 --- a/FMD/scripts/GetMedia.C +++ b/FMD/scripts/GetMedia.C @@ -106,7 +106,7 @@ struct Media : public TNamed @endcode @ingroup FMD_script */ -class GetMedia : public AliFMDInputHits +class GetMedia : public AliFMDInput { private: TString fModList; @@ -124,6 +124,7 @@ public: : fModList(modlist) { AddLoad(kGeometry); + AddLoad(kHits); AddLoad(kKinematics); fOutput = TFile::Open(output, "RECREATE"); diff --git a/FMD/scripts/MakeCalibration.C b/FMD/scripts/MakeCalibration.C index faf4829ec8c..e787d464e1c 100644 --- a/FMD/scripts/MakeCalibration.C +++ b/FMD/scripts/MakeCalibration.C @@ -20,7 +20,8 @@ MakeCalibration() gSystem->Load("libFMDutil.so"); AliFMDCalibFaker f(AliFMDCalibFaker::kAll, 0); - f.SetGainSeed(30); + f.SetRunRange(0,0); + f.SetGainSeed(.002272); f.SetThresholdFactor(3); f.SetPedestalRange(20,40); f.SetDeadChance(0); -- 2.43.0