// ------------------------------------------------------------------------- // ----- CbmTrdRadiator header file ----- // ----- Created 10/11/04 by M.Kalisky ----- // ------------------------------------------------------------------------- /** CbmTrdRadiator.h *@author M.Kalisky ** ** Serves for Transition Radiation computation for regular radiator ** The output is energy loss of an electron via Transition Radiation **/ #ifndef CBMTRDRADIATOR_H #define CBMTRDRADIATOR_H #include "CbmTask.h" #include "TClonesArray.h" #include "TLorentzVector.h" #include "TVector3.h" #include "TRandom.h" #include "TH1.h" class CbmTrdRadiator : public CbmTask { public: /** Default constructor **/ CbmTrdRadiator(); /** Constructor **/ CbmTrdRadiator(const char *name, const char *title="Cbm Task"); /** Destructor **/ virtual ~CbmTrdRadiator(); /** TEST FUNCTION **/ virtual InitStatus Init(); /** Init function **/ //virtual void Init(TLorentzVector mom, TLorentzVector pos); virtual void Init(Bool_t SimpleTR, Int_t Nfoils, Float_t FoilThick, Float_t GapTick); /** Spectra production **/ virtual void ProduceSpectra(); /** Final energy loss computation **/ Int_t ELoss(Int_t index); /** Main function for TR production **/ virtual void ProcessTR(); /** Compute the TR spectrum **/ virtual Int_t TRspectrum(); /** Compute the TR spectrum in the Mylar foil **/ virtual Int_t MyTRspectrum(); /** Compute the TR sdpectrum in the Detector **/ virtual Int_t DetTRspectrum(); /** Compute the gamma factor **/ virtual Float_t GammaF(); /** Compute the sigma coeff. for one-gap-one-foil radiator **/ virtual Float_t Sigma(Float_t energykeV); /** Compute the sigma coeff. for the mylar foil **/ virtual Float_t SigmaMy(Float_t energykeV); /** Compute the sigma coeff. for the detector gas **/ virtual Float_t SigmaDet(Float_t energykeV); /** Computation of photon absorption cross sections **/ virtual Float_t GetMuPo(Float_t energyMeV); virtual Float_t GetMuAir(Float_t energyMeV); virtual Float_t GetMuXe(Float_t energyMeV); virtual Float_t GetMuCO2(Float_t energyMeV); virtual Float_t GetMuMy(Float_t energyMeV); virtual Float_t GetTR(TVector3 mom); /** Interpolate between given points of table **/ virtual Float_t Interpolate(Float_t energyMeV , Float_t *en, Float_t *mu, Int_t n); /** Locate a point in 1-dim grid **/ virtual Int_t Locate(Float_t *xv, Int_t n, Float_t xval , Int_t &kl, Float_t &dx); void SetNFoils(Int_t n) { fNFoils = n; } void SetFoilThick(Float_t t) { fFoilThick = t; } void SetGapThick(Float_t t) { fGapThick = t; } void SetDetThick(Float_t t) {fDetThick = t; } void SetSigma(Int_t fSigmaT); private: Bool_t fSimpleTR; // mode of the TR production Int_t fNFoils; // Number of foils in the radiator stack Float_t fFoilThick; // Thickness of the foils (cm) Float_t fGapThick; // Thickness of gaps between the foils (cm) Float_t fFoilDens; // Density of the radiator foils (g/cm^3) Float_t fGapDens; // Dens. of gas in the radiator gaps (g/cm^3) Float_t fFoilOmega; // Plasma frequency of the radiator foils Float_t fGapOmega; // Plasma freq. of gas Float_t fGasThick; // Thickness of hte active gas volume // after correction of the angle of the particle Float_t fFoilThickCorr; Float_t fGapThickCorr; Float_t fGasThickCorr; Float_t fnTRprod; // produced Float_t fnTRab; // absorbed Int_t fSigmaT; // set the absorption material Float_t fMyDens; Float_t fMyThick; Float_t fDetThick; Float_t fCom1; // first component of the gas Float_t fCom2; // second component of the gas Int_t fSpNBins; // Float_t fSpRange; // Float_t fSpBinWidth; // Float_t fSpLower; // Float_t fSpUpper; // Float_t* fSigma; // [fSpNBins] Array of sigma values Float_t* fSigmaMy; // [fSpNBins] Array of sigma values Float_t* fSigmaDet; // [fSpNBins] Array of sigma values TH1D* fSpectrum; // TR photon energy spectrum TH1D* fMySpectrum; // TR spectra in Mylar foil TH1D* fDetSpectrumA; // TR absorbed in Detector TH1D* fDetSpectrum; // TR passed through Detector TH1D* fFinal[6]; // Absorption spectra for different E Float_t fELoss; // The real result - in GeV TRandom* fRnd; TVector3 fMom; // momentum of the electron Bool_t fInitialised; //! for histograms Double_t fNormPhi; //! norm constant for the phi angle ClassDef(CbmTrdRadiator,1) }; #endif