]>
Commit | Line | Data |
---|---|---|
70f12a9d | 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); | |
b2be0e73 | 32 | TFlukaCerenkov(Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex, Float_t* rfl); |
70f12a9d | 33 | virtual Float_t GetAbsorptionCoefficient(Float_t energy); |
34 | virtual Float_t GetQuantumEfficiency(Float_t energy); | |
35 | virtual Float_t GetRefractionIndex(Float_t energy); | |
b2be0e73 | 36 | virtual Float_t GetReflectivity(Float_t energy); |
70f12a9d | 37 | virtual Float_t GetAbsorptionCoefficientByWaveLength(Float_t energy); |
38 | virtual Float_t GetQuantumEfficiencyByWaveLength(Float_t energy); | |
39 | virtual Float_t GetRefractionIndexByWaveLength(Float_t energy); | |
b2be0e73 | 40 | virtual Float_t GetReflectivityByWaveLength(Float_t energy); |
70f12a9d | 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;} | |
058fcd99 | 47 | virtual Bool_t IsSensitive() {return fIsSensitive;} |
3a242b1f | 48 | virtual Double_t GetMaximumEfficiency() const {return fMaximumEfficiency;} |
49 | static Double_t GetGlobalMaximumEfficiency() {return fgGlobalMaximumEfficiency;} | |
50 | static void SetGlobalMaximumEfficiency(Double_t eff) {fgGlobalMaximumEfficiency = eff;} | |
4aba9d66 | 51 | |
70f12a9d | 52 | protected: |
4aba9d66 | 53 | |
70f12a9d | 54 | virtual Float_t Interpolate(Float_t energy, Float_t* array1, Float_t* array2); |
4aba9d66 | 55 | |
70f12a9d | 56 | protected: |
3a242b1f | 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 | |
b2be0e73 | 65 | Float_t* fReflectivity; // [fSamples] Reflectivity |
3a242b1f | 66 | Double_t fMaximumEfficiency; // Local maximum quantum efficiency |
67 | // static | |
68 | static Double_t fgGlobalMaximumEfficiency; // Global maximum quantum efficiency | |
4aba9d66 | 69 | |
70 | private: | |
71 | // Copy constructor and operator= declared but not implemented (-Weff++ flag) | |
72 | TFlukaCerenkov(const TFlukaCerenkov&); | |
73 | TFlukaCerenkov& operator=(const TFlukaCerenkov&); | |
74 | ||
70f12a9d | 75 | ClassDef(TFlukaCerenkov, 1) // CerenkovProperties |
76 | }; | |
77 | ||
78 | #endif | |
79 |