Use fluka routine usrdci to get ion properties.
[u/mrichter/AliRoot.git] / TFluka / TFlukaCerenkov.h
CommitLineData
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
22const Double_t khc = 2. * TMath::Pi() * 0.1973269602e-13; // GeV cm
23
24
25class TFlukaCerenkov : public TObject
26{
27
28public:
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