Ions have to be added to root particle database.
[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;}
70f12a9d 51 protected:
52 virtual Float_t Interpolate(Float_t energy, Float_t* array1, Float_t* array2);
53
54 protected:
3a242b1f 55 Int_t fSamples; // Number of sampling points
56 Bool_t fIsMetal; // Flag for metals
57 Bool_t fIsSensitive; // Flag for metals
58 Float_t* fEnergy; // [fSamples] Energy (GeV)
59 Float_t* fWaveLength; // [fSamples] Wafelength (cm)
60 Float_t* fAbsorptionCoefficient; // [fSamples] Absorption Coefficient (1/cm)
61 Float_t* fQuantumEfficiency; // [fSamples] Quantum efficiency
62 Float_t* fRefractionIndex; // [fSamples] Refraction Index
b2be0e73 63 Float_t* fReflectivity; // [fSamples] Reflectivity
3a242b1f 64 Double_t fMaximumEfficiency; // Local maximum quantum efficiency
65 // static
66 static Double_t fgGlobalMaximumEfficiency; // Global maximum quantum efficiency
70f12a9d 67
68 ClassDef(TFlukaCerenkov, 1) // CerenkovProperties
69};
70
71#endif
72