changes from fzhou
[u/mrichter/AliRoot.git] / TRD / AliTRDsimTR.h
CommitLineData
cb2f9e9b 1#ifndef ALITRDSIMTR_H
2#define ALITRDSIMTR_H
46d29e70 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
3bc9d03e 8////////////////////////////////////////////////////////////////////////////
9// //
10// TRD simulation - multimodule (regular rad.) //
11// //
12////////////////////////////////////////////////////////////////////////////
0a29d0f1 13
46d29e70 14#include <TObject.h>
090026bf 15#include <TMath.h>
46d29e70 16
17class TH1D;
18
19class AliModule;
20
cb2f9e9b 21class AliTRDsimTR : public TObject {
46d29e70 22
23 public:
24
cb2f9e9b 25 AliTRDsimTR();
26 AliTRDsimTR(const AliTRDsimTR &s);
27 AliTRDsimTR(AliModule *mod, Int_t foil, Int_t gap);
28 virtual ~AliTRDsimTR();
29 AliTRDsimTR &operator=(const AliTRDsimTR &s);
46d29e70 30
3bc9d03e 31 virtual void Copy(TObject &s) const;
32 virtual void Init();
33 virtual Int_t CreatePhotons(Int_t pdg, Float_t p
34 , Int_t &nPhoton, Float_t *ePhoton);
35 virtual Int_t TrPhotons(Float_t p, Float_t mass
36 , Int_t &nPhoton, Float_t *ePhoton);
37 virtual Double_t Sigma(Double_t energykeV);
38 virtual Double_t Interpolate(Double_t energyMeV
2e32a5ae 39 , Double_t *en, const Double_t * const mu, Int_t n);
3bc9d03e 40 virtual Int_t Locate(Double_t *xv, Int_t n, Double_t xval
41 , Int_t &kl, Double_t &dx);
42 virtual Double_t Omega(Float_t rho, Float_t z, Float_t a) { return (28.8 * TMath::Sqrt(rho * z / a)); };
c8ab4518 43 virtual Int_t SelectNFoils(Float_t p) const;
3bc9d03e 44
45 void SetFoilThick(Float_t t) { fFoilThick = t;
46 SetSigma(); };
47 void SetGapThick(Float_t t) { fGapThick = t;
48 SetSigma(); };
49 void SetFoilDens(Float_t d) { fFoilDens = d;
50 fFoilOmega = Omega(fFoilDens,fFoilZ,fFoilA);
51 SetSigma(); };
52 void SetFoilZ(Float_t z) { fFoilZ = z;
53 fFoilOmega = Omega(fFoilDens,fFoilZ,fFoilA); };
54 void SetFoilA(Float_t a) { fFoilA = a;
55 fFoilOmega = Omega(fFoilDens,fFoilZ,fFoilA); };
56 void SetGapDens(Float_t d) { fGapDens = d;
57 fGapOmega = Omega(fGapDens ,fGapZ ,fGapA );
58 SetSigma(); };
59 void SetGapZ(Float_t z) { fGapZ = z;
60 fGapOmega = Omega(fGapDens ,fGapZ ,fGapA ); };
61 void SetGapA(Float_t a) { fGapA = a;
62 fGapOmega = Omega(fGapDens ,fGapZ ,fGapA ); };
63 void SetTemp(Float_t t) { fTemp = t;
64 SetSigma(); };
65 void SetSigma();
66
67 virtual Double_t GetMuPo(Double_t energyMeV);
68 virtual Double_t GetMuCO(Double_t energyMeV);
69 virtual Double_t GetMuXe(Double_t energyMeV);
f2979d08 70 virtual Double_t GetMuAr(Double_t energyMeV);
3bc9d03e 71 virtual Double_t GetMuMy(Double_t energyMeV);
72 virtual Double_t GetMuN2(Double_t energyMeV);
73 virtual Double_t GetMuO2(Double_t energyMeV);
74 virtual Double_t GetMuHe(Double_t energyMeV);
75 virtual Double_t GetMuAi(Double_t energyMeV);
76
77 Float_t GetFoilThick() const { return fFoilThick; };
78 Float_t GetGapThick() const { return fGapThick; };
79 Float_t GetFoilDens() const { return fFoilDens; };
80 Float_t GetGapDens() const { return fGapDens; };
81 Double_t GetFoilOmega() const { return fFoilOmega; };
82 Double_t GetGapOmega() const { return fGapOmega; };
83 Float_t GetTemp() const { return fTemp / 273.16; };
84 TH1D *GetSpectrum() const { return fSpectrum; };
46d29e70 85
86 protected:
87
3bc9d03e 88 Int_t fNFoilsDim; // Dimension of the NFoils array
89 Int_t *fNFoils; //[fNFoilsDim] Number of foils in the radiator stack
90 Double_t *fNFoilsUp; //[fNFoilsDim] Upper momenta for a given number of foils
91 Float_t fFoilThick; // Thickness of the foils (cm)
92 Float_t fGapThick; // Thickness of the gaps between the foils (cm)
46d29e70 93
3bc9d03e 94 Float_t fFoilDens; // Density of the radiator foils (g/cm^3)
95 Float_t fGapDens; // Density of the gas in the radiator gaps (g/cm^3)
46d29e70 96
3bc9d03e 97 Double_t fFoilOmega; // Plasma frequency of the radiator foils
98 Double_t fGapOmega; // Plasma frequency of the gas in the radiator gaps
46d29e70 99
3bc9d03e 100 Float_t fFoilZ; // Z of the foil material
101 Float_t fGapZ; // Z of the gas in the gaps
46d29e70 102
3bc9d03e 103 Float_t fFoilA; // A of the foil material
104 Float_t fGapA; // A of the gas in the gaps
46d29e70 105
3bc9d03e 106 Float_t fTemp; // Temperature of the radiator gas (Kelvin)
46d29e70 107
3bc9d03e 108 Int_t fSpNBins; // Number of bins of the TR spectrum
109 Float_t fSpRange; // Range of the TR spectrum
110 Float_t fSpBinWidth; // Bin width of the TR spectrum
111 Float_t fSpLower; // Lower border of the TR spectrum
112 Float_t fSpUpper; // Upper border of the TR spectrum
46d29e70 113
3bc9d03e 114 Double_t *fSigma; //[fSpNBins] Array of sigma values
46d29e70 115
3bc9d03e 116 TH1D *fSpectrum; //! TR photon energy spectrum
46d29e70 117
cb2f9e9b 118 ClassDef(AliTRDsimTR,1) // Simulates TR photons
46d29e70 119
120};
121#endif