#include "TFlukaCerenkov.h"
+Double_t TFlukaCerenkov::fgGlobalMaximumEfficiency = 0.;
+
ClassImp(TFlukaCerenkov);
fWaveLength(0),
fAbsorptionCoefficient(0),
fQuantumEfficiency(0),
- fRefractionIndex(0)
+ fRefractionIndex(0),
+ fMaximumEfficiency(0.)
{
// Default constructor
}
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];
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)
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
};