4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
9 ///////////////////////////////////////////////////////////////////////////////
12 // Class that gives access to optical properties for Cerenkov photon //
13 // production and transport //
16 ///////////////////////////////////////////////////////////////////////////////
22 const Double_t khc = 2. * TMath::Pi() * 0.1973269602e-13; // GeV cm
25 class TFlukaCerenkov : public TObject
31 TFlukaCerenkov(Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex);
32 TFlukaCerenkov(Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex, Float_t* rfl);
33 virtual Float_t GetAbsorptionCoefficient(Float_t energy);
34 virtual Float_t GetQuantumEfficiency(Float_t energy);
35 virtual Float_t GetRefractionIndex(Float_t energy);
36 virtual Float_t GetReflectivity(Float_t energy);
37 virtual Float_t GetAbsorptionCoefficientByWaveLength(Float_t energy);
38 virtual Float_t GetQuantumEfficiencyByWaveLength(Float_t energy);
39 virtual Float_t GetRefractionIndexByWaveLength(Float_t energy);
40 virtual Float_t GetReflectivityByWaveLength(Float_t energy);
41 virtual Float_t GetMinimumEnergy() {return fEnergy[0];}
42 virtual Float_t GetMaximumEnergy() {return fEnergy[fSamples-1];}
43 virtual Float_t GetMinimumWavelength() {return khc / fEnergy[fSamples-1];}
44 virtual Float_t GetMaximumWavelength() {return khc / fEnergy[0];}
45 virtual Int_t GetNSamples() {return fSamples;}
46 virtual Bool_t IsMetal() {return fIsMetal;}
47 virtual Bool_t IsSensitive() {return fIsSensitive;}
48 virtual Double_t GetMaximumEfficiency() const {return fMaximumEfficiency;}
49 static Double_t GetGlobalMaximumEfficiency() {return fgGlobalMaximumEfficiency;}
50 static void SetGlobalMaximumEfficiency(Double_t eff) {fgGlobalMaximumEfficiency = eff;}
54 virtual Float_t Interpolate(Float_t energy, Float_t* array1, Float_t* array2);
57 Int_t fSamples; // Number of sampling points
58 Bool_t fIsMetal; // Flag for metals
59 Bool_t fIsSensitive; // Flag for metals
60 Float_t* fEnergy; // [fSamples] Energy (GeV)
61 Float_t* fWaveLength; // [fSamples] Wafelength (cm)
62 Float_t* fAbsorptionCoefficient; // [fSamples] Absorption Coefficient (1/cm)
63 Float_t* fQuantumEfficiency; // [fSamples] Quantum efficiency
64 Float_t* fRefractionIndex; // [fSamples] Refraction Index
65 Float_t* fReflectivity; // [fSamples] Reflectivity
66 Double_t fMaximumEfficiency; // Local maximum quantum efficiency
68 static Double_t fgGlobalMaximumEfficiency; // Global maximum quantum efficiency
71 // Copy constructor and operator= declared but not implemented (-Weff++ flag)
72 TFlukaCerenkov(const TFlukaCerenkov&);
73 TFlukaCerenkov& operator=(const TFlukaCerenkov&);
75 ClassDef(TFlukaCerenkov, 1) // CerenkovProperties