]>
Commit | Line | Data |
---|---|---|
1 | #ifndef TFLUKACERENKOV | |
2 | #define TFLUKACERENKOV | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | /* $Id$ */ | |
8 | ||
9 | /////////////////////////////////////////////////////////////////////////////// | |
10 | // // | |
11 | // // | |
12 | // Class that gives access to optical properties for Cerenkov photon // | |
13 | // production and transport // | |
14 | // // | |
15 | // // | |
16 | /////////////////////////////////////////////////////////////////////////////// | |
17 | ||
18 | ||
19 | #include <TObject.h> | |
20 | #include <TMath.h> | |
21 | ||
22 | const Double_t khc = 2. * TMath::Pi() * 0.1973269602e-13; // GeV cm | |
23 | ||
24 | ||
25 | class TFlukaCerenkov : public TObject | |
26 | { | |
27 | ||
28 | public: | |
29 | // constructors | |
30 | TFlukaCerenkov(); | |
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;} | |
51 | ||
52 | protected: | |
53 | ||
54 | virtual Float_t Interpolate(Float_t energy, Float_t* array1, Float_t* array2); | |
55 | ||
56 | protected: | |
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 | |
67 | // static | |
68 | static Double_t fgGlobalMaximumEfficiency; // Global maximum quantum efficiency | |
69 | ||
70 | private: | |
71 | // Copy constructor and operator= declared but not implemented (-Weff++ flag) | |
72 | TFlukaCerenkov(const TFlukaCerenkov&); | |
73 | TFlukaCerenkov& operator=(const TFlukaCerenkov&); | |
74 | ||
75 | ClassDef(TFlukaCerenkov, 1) // CerenkovProperties | |
76 | }; | |
77 | ||
78 | #endif | |
79 |