From 3a242b1f99a46ad67f6a000a844451f1878dd5a6 Mon Sep 17 00:00:00 2001 From: morsch Date: Tue, 4 May 2004 12:14:50 +0000 Subject: [PATCH] Local and global quantum efficiency maxima are stored. --- TFluka/TFlukaCerenkov.cxx | 16 +++++++++++++++- TFluka/TFlukaCerenkov.h | 23 ++++++++++++++--------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/TFluka/TFlukaCerenkov.cxx b/TFluka/TFlukaCerenkov.cxx index a4945a350f9..e662a001aaf 100644 --- a/TFluka/TFlukaCerenkov.cxx +++ b/TFluka/TFlukaCerenkov.cxx @@ -1,5 +1,7 @@ #include "TFlukaCerenkov.h" +Double_t TFlukaCerenkov::fgGlobalMaximumEfficiency = 0.; + ClassImp(TFlukaCerenkov); @@ -11,7 +13,8 @@ TFlukaCerenkov::TFlukaCerenkov() fWaveLength(0), fAbsorptionCoefficient(0), fQuantumEfficiency(0), - fRefractionIndex(0) + fRefractionIndex(0), + fMaximumEfficiency(0.) { // Default constructor } @@ -26,6 +29,7 @@ TFlukaCerenkov::TFlukaCerenkov(Int_t npckov, Float_t *ppckov, Float_t *absco, Fl fAbsorptionCoefficient = new Float_t[fSamples]; fRefractionIndex = new Float_t[fSamples]; fQuantumEfficiency = new Float_t[fSamples]; + for (Int_t i = 0; i < fSamples; i++) { fEnergy[i] = ppckov[i]; fWaveLength[i] = khc / ppckov[i]; @@ -37,9 +41,19 @@ TFlukaCerenkov::TFlukaCerenkov(Int_t npckov, Float_t *ppckov, Float_t *absco, Fl fRefractionIndex[i] = rindex[i]; fQuantumEfficiency[i] = effic[i]; // + // Find local maximum quantum efficiency + if (effic[i] > fMaximumEfficiency) fMaximumEfficiency = effic[i]; + // // Flag is sensitive if quantum efficiency 0 < eff < 1 for at least one value. if (effic[i] < 1. && effic[i] > 0.) fIsSensitive = 1; } + // Find global maximum quantum efficiency + if (fMaximumEfficiency > GetGlobalMaximumEfficiency()) { + SetGlobalMaximumEfficiency(fMaximumEfficiency); + } + printf("Maximum eff. %f\n", GetGlobalMaximumEfficiency()); + + } Float_t TFlukaCerenkov::GetAbsorptionCoefficient(Float_t energy) diff --git a/TFluka/TFlukaCerenkov.h b/TFluka/TFlukaCerenkov.h index afe2b1c4ac5..3af83890273 100644 --- a/TFluka/TFlukaCerenkov.h +++ b/TFluka/TFlukaCerenkov.h @@ -42,19 +42,24 @@ public: virtual Int_t GetNSamples() {return fSamples;} virtual Bool_t IsMetal() {return fIsMetal;} virtual Bool_t IsSensitive() {return fIsSensitive;} - + virtual Double_t GetMaximumEfficiency() const {return fMaximumEfficiency;} + static Double_t GetGlobalMaximumEfficiency() {return fgGlobalMaximumEfficiency;} + static void SetGlobalMaximumEfficiency(Double_t eff) {fgGlobalMaximumEfficiency = eff;} protected: virtual Float_t Interpolate(Float_t energy, Float_t* array1, Float_t* array2); protected: - Int_t fSamples; // Number of sampling points - Bool_t fIsMetal; // Flag for metals - Bool_t fIsSensitive; // Flag for metals - Float_t* fEnergy; // [fSamples] Energy (GeV) - Float_t* fWaveLength; // [fSamples] Wafelength (cm) - Float_t* fAbsorptionCoefficient; // [fSamples] Absorption Coefficient (1/cm) - Float_t* fQuantumEfficiency; // [fSamples] Quantum efficiency - Float_t* fRefractionIndex; // [fSamples] Refraction Index + Int_t fSamples; // Number of sampling points + Bool_t fIsMetal; // Flag for metals + Bool_t fIsSensitive; // Flag for metals + Float_t* fEnergy; // [fSamples] Energy (GeV) + Float_t* fWaveLength; // [fSamples] Wafelength (cm) + Float_t* fAbsorptionCoefficient; // [fSamples] Absorption Coefficient (1/cm) + Float_t* fQuantumEfficiency; // [fSamples] Quantum efficiency + Float_t* fRefractionIndex; // [fSamples] Refraction Index + Double_t fMaximumEfficiency; // Local maximum quantum efficiency + // static + static Double_t fgGlobalMaximumEfficiency; // Global maximum quantum efficiency ClassDef(TFlukaCerenkov, 1) // CerenkovProperties }; -- 2.39.3