ROOT logo
#ifndef ALITRDSIMTR_H
#define ALITRDSIMTR_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  TRD simulation - multimodule (regular rad.)                           //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include <TObject.h>
#include <TMath.h>

class TH1D;

class AliModule;

class AliTRDsimTR : public TObject {

 public:

  AliTRDsimTR();
  AliTRDsimTR(const AliTRDsimTR &s);
  AliTRDsimTR(AliModule *mod, Int_t foil, Int_t gap);
  virtual ~AliTRDsimTR();
  AliTRDsimTR &operator=(const AliTRDsimTR &s);

  virtual void     Copy(TObject &s) const;
  virtual void     Init();
  virtual Int_t    CreatePhotons(Int_t pdg, Float_t p
                               , Int_t &nPhoton, Float_t *ePhoton);
  virtual Int_t    TrPhotons(Float_t p, Float_t mass
                           , Int_t &nPhoton, Float_t *ePhoton);
  virtual Double_t Sigma(Double_t energykeV);
  virtual Double_t Interpolate(Double_t energyMeV
                             , Double_t *en, const Double_t * const mu, Int_t n);
  virtual Int_t    Locate(Double_t *xv, Int_t n, Double_t xval
                        , Int_t &kl, Double_t &dx);
  virtual Double_t Omega(Float_t rho, Float_t z, Float_t a)  { return (28.8 * TMath::Sqrt(rho * z / a)); };
  virtual Int_t    SelectNFoils(Float_t p) const;

          void     SetFoilThick(Float_t t)                   { fFoilThick = t;
                                                               SetSigma();                                  };
          void     SetGapThick(Float_t t)                    { fGapThick  = t;
                                                               SetSigma();                                  };
          void     SetFoilDens(Float_t d)                    { fFoilDens  = d; 
                                                               fFoilOmega = Omega(fFoilDens,fFoilZ,fFoilA);
                                                               SetSigma();                                  };
          void     SetFoilZ(Float_t z)                       { fFoilZ     = z; 
                                                               fFoilOmega = Omega(fFoilDens,fFoilZ,fFoilA); };
          void     SetFoilA(Float_t a)                       { fFoilA     = a; 
                                                               fFoilOmega = Omega(fFoilDens,fFoilZ,fFoilA); };
          void     SetGapDens(Float_t d)                     { fGapDens   = d;
                                                               fGapOmega  = Omega(fGapDens ,fGapZ ,fGapA );
                                                               SetSigma();                                  };
          void     SetGapZ(Float_t z)                        { fGapZ      = z;
                                                               fGapOmega  = Omega(fGapDens ,fGapZ ,fGapA ); };
          void     SetGapA(Float_t a)                        { fGapA      = a;
                                                               fGapOmega  = Omega(fGapDens ,fGapZ ,fGapA ); };
          void     SetTemp(Float_t t)                        { fTemp      = t; 
                                                               SetSigma();                                  };
          void     SetSigma();

  virtual Double_t GetMuPo(Double_t energyMeV);
  virtual Double_t GetMuCO(Double_t energyMeV);
  virtual Double_t GetMuXe(Double_t energyMeV);
  virtual Double_t GetMuAr(Double_t energyMeV);
  virtual Double_t GetMuMy(Double_t energyMeV);
  virtual Double_t GetMuN2(Double_t energyMeV);
  virtual Double_t GetMuO2(Double_t energyMeV);
  virtual Double_t GetMuHe(Double_t energyMeV);
  virtual Double_t GetMuAi(Double_t energyMeV);

          Float_t  GetFoilThick() const                      { return fFoilThick;     };
          Float_t  GetGapThick() const                       { return fGapThick;      };
          Float_t  GetFoilDens() const                       { return fFoilDens;      };
          Float_t  GetGapDens() const                        { return fGapDens;       };
          Double_t GetFoilOmega() const                      { return fFoilOmega;     };
          Double_t GetGapOmega() const                       { return fGapOmega;      };
          Float_t  GetTemp() const                           { return fTemp / 273.16; };
          TH1D    *GetSpectrum() const                       { return fSpectrum;      };

 protected:

          Int_t     fNFoilsDim;            //  Dimension of the NFoils array
          Int_t    *fNFoils;               //[fNFoilsDim] Number of foils in the radiator stack
          Double_t *fNFoilsUp;             //[fNFoilsDim] Upper momenta for a given number of foils
          Float_t   fFoilThick;            //  Thickness of the foils (cm)
          Float_t   fGapThick;             //  Thickness of the gaps between the foils (cm)

          Float_t   fFoilDens;             //  Density of the radiator foils (g/cm^3) 
          Float_t   fGapDens;              //  Density of the gas in the radiator gaps (g/cm^3)

          Double_t  fFoilOmega;            //  Plasma frequency of the radiator foils
          Double_t  fGapOmega;             //  Plasma frequency of the gas in the radiator gaps

          Float_t   fFoilZ;                //  Z of the foil material
          Float_t   fGapZ;                 //  Z of the gas in the gaps

          Float_t   fFoilA;                //  A of the foil material
          Float_t   fGapA;                 //  A of the gas in the gaps

          Float_t   fTemp;                 //  Temperature of the radiator gas (Kelvin)

          Int_t     fSpNBins;              //  Number of bins of the TR spectrum
          Float_t   fSpRange;              //  Range of the TR spectrum
          Float_t   fSpBinWidth;           //  Bin width of the TR spectrum
          Float_t   fSpLower;              //  Lower border of the TR spectrum
          Float_t   fSpUpper;              //  Upper border of the TR spectrum

          Double_t *fSigma;                //[fSpNBins] Array of sigma values

          TH1D     *fSpectrum;             //! TR photon energy spectrum

  ClassDef(AliTRDsimTR,1)                  //  Simulates TR photons

};
#endif
 AliTRDsimTR.h:1
 AliTRDsimTR.h:2
 AliTRDsimTR.h:3
 AliTRDsimTR.h:4
 AliTRDsimTR.h:5
 AliTRDsimTR.h:6
 AliTRDsimTR.h:7
 AliTRDsimTR.h:8
 AliTRDsimTR.h:9
 AliTRDsimTR.h:10
 AliTRDsimTR.h:11
 AliTRDsimTR.h:12
 AliTRDsimTR.h:13
 AliTRDsimTR.h:14
 AliTRDsimTR.h:15
 AliTRDsimTR.h:16
 AliTRDsimTR.h:17
 AliTRDsimTR.h:18
 AliTRDsimTR.h:19
 AliTRDsimTR.h:20
 AliTRDsimTR.h:21
 AliTRDsimTR.h:22
 AliTRDsimTR.h:23
 AliTRDsimTR.h:24
 AliTRDsimTR.h:25
 AliTRDsimTR.h:26
 AliTRDsimTR.h:27
 AliTRDsimTR.h:28
 AliTRDsimTR.h:29
 AliTRDsimTR.h:30
 AliTRDsimTR.h:31
 AliTRDsimTR.h:32
 AliTRDsimTR.h:33
 AliTRDsimTR.h:34
 AliTRDsimTR.h:35
 AliTRDsimTR.h:36
 AliTRDsimTR.h:37
 AliTRDsimTR.h:38
 AliTRDsimTR.h:39
 AliTRDsimTR.h:40
 AliTRDsimTR.h:41
 AliTRDsimTR.h:42
 AliTRDsimTR.h:43
 AliTRDsimTR.h:44
 AliTRDsimTR.h:45
 AliTRDsimTR.h:46
 AliTRDsimTR.h:47
 AliTRDsimTR.h:48
 AliTRDsimTR.h:49
 AliTRDsimTR.h:50
 AliTRDsimTR.h:51
 AliTRDsimTR.h:52
 AliTRDsimTR.h:53
 AliTRDsimTR.h:54
 AliTRDsimTR.h:55
 AliTRDsimTR.h:56
 AliTRDsimTR.h:57
 AliTRDsimTR.h:58
 AliTRDsimTR.h:59
 AliTRDsimTR.h:60
 AliTRDsimTR.h:61
 AliTRDsimTR.h:62
 AliTRDsimTR.h:63
 AliTRDsimTR.h:64
 AliTRDsimTR.h:65
 AliTRDsimTR.h:66
 AliTRDsimTR.h:67
 AliTRDsimTR.h:68
 AliTRDsimTR.h:69
 AliTRDsimTR.h:70
 AliTRDsimTR.h:71
 AliTRDsimTR.h:72
 AliTRDsimTR.h:73
 AliTRDsimTR.h:74
 AliTRDsimTR.h:75
 AliTRDsimTR.h:76
 AliTRDsimTR.h:77
 AliTRDsimTR.h:78
 AliTRDsimTR.h:79
 AliTRDsimTR.h:80
 AliTRDsimTR.h:81
 AliTRDsimTR.h:82
 AliTRDsimTR.h:83
 AliTRDsimTR.h:84
 AliTRDsimTR.h:85
 AliTRDsimTR.h:86
 AliTRDsimTR.h:87
 AliTRDsimTR.h:88
 AliTRDsimTR.h:89
 AliTRDsimTR.h:90
 AliTRDsimTR.h:91
 AliTRDsimTR.h:92
 AliTRDsimTR.h:93
 AliTRDsimTR.h:94
 AliTRDsimTR.h:95
 AliTRDsimTR.h:96
 AliTRDsimTR.h:97
 AliTRDsimTR.h:98
 AliTRDsimTR.h:99
 AliTRDsimTR.h:100
 AliTRDsimTR.h:101
 AliTRDsimTR.h:102
 AliTRDsimTR.h:103
 AliTRDsimTR.h:104
 AliTRDsimTR.h:105
 AliTRDsimTR.h:106
 AliTRDsimTR.h:107
 AliTRDsimTR.h:108
 AliTRDsimTR.h:109
 AliTRDsimTR.h:110
 AliTRDsimTR.h:111
 AliTRDsimTR.h:112
 AliTRDsimTR.h:113
 AliTRDsimTR.h:114
 AliTRDsimTR.h:115
 AliTRDsimTR.h:116
 AliTRDsimTR.h:117
 AliTRDsimTR.h:118
 AliTRDsimTR.h:119
 AliTRDsimTR.h:120
 AliTRDsimTR.h:121