00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016 #ifndef CDSIMPLEMC_H
00017 #define CDSIMPLEMC_H
00018
00019 #include <map>
00020 #include <string>
00021 #include <vector>
00022
00023 #include "TMaterial.h"
00024
00025 #include "MuELoss/MuEnergyLoss.h"
00026
00027 class CDSimpleMC : public TObject
00028 {
00029
00030 public:
00031
00032 CDSimpleMC();
00033 ~CDSimpleMC();
00034
00035
00036 void RunMC();
00037 void CalcRatioScToFe();
00038 void SetThkFe(Double_t thkFe);
00039 void SetParticleMomentum(Double_t pMom) {fParticleMomentum=pMom;}
00040
00041
00042 Double_t GetParticleEnergy() const;
00043 Double_t GetThkFe() {return fThkFe;}
00044 Double_t GetTotalNumScPlanesHit() {return fTotalNumScPlanesHit;}
00045 Double_t GetTotalScEnLoss() {return fTotalScEnLoss;}
00046 void PrintDensities() const;
00047 void PrintThicknesses() const;
00048
00049
00050
00051 std::vector<Double_t> fEn;
00052 std::vector<Double_t> fMom;
00053 std::vector<Double_t> fMomGeV;
00054 std::vector<Double_t> fdE_dxFe;
00055 std::vector<Double_t> fdE_dxAl;
00056 std::vector<Double_t> fdE_dxSc;
00057
00058 std::vector<Double_t> fEnDeposited;
00059 std::vector<Double_t> fX;
00060 std::vector<Double_t> fXPlanes;
00061
00062 std::vector<Double_t> fEnFeDeposited;
00063 std::vector<Double_t> fXFe;
00064 std::vector<Double_t> fXFePlanes;
00065
00066 std::vector<Double_t> fEnAlDeposited;
00067 std::vector<Double_t> fXAl;
00068 std::vector<Double_t> fXAlPlanes;
00069
00070 std::vector<Double_t> fEnScTiO2Deposited;
00071 std::vector<Double_t> fXScTiO2;
00072 std::vector<Double_t> fXScTiO2Planes;
00073
00074 std::vector<Double_t> fEnNotScDeposited;
00075 std::vector<Double_t> fXNotSc;
00076 std::vector<Double_t> fXNotScPlanes;
00077
00078 std::vector<Double_t> fEnScDeposited;
00079 std::vector<Double_t> fEnSc;
00080 std::vector<Double_t> fMomSc;
00081 std::vector<Double_t> fMomScGeV;
00082 std::vector<Double_t> fXSc;
00083 std::vector<Double_t> fXScPlanes;
00084
00085 std::vector<Double_t> fEnDepositedPl;
00086
00087 std::vector<Double_t> fEnRatio;
00088 std::vector<Double_t> fXRatio;
00089 std::vector<Double_t> fXPlanesRatio;
00090
00091
00092 std::vector<Double_t> fEnTiO2x2Deposited;
00093 std::vector<Double_t> fXTiO2x2;
00094 std::vector<Double_t> fEnAlx2Deposited;
00095 std::vector<Double_t> fXAlx2;
00096
00097 private:
00098
00099
00100 void CalcPlaneThk();
00101
00102
00103 Double_t dE_dxIterative(MuEnergyLoss& mat,
00104 Double_t energyRemaining,
00105 Double_t totalThk,
00106 Double_t rho,
00107 Double_t energyCutOff,
00108 Int_t slices,
00109 Double_t& fractionThrough) const;
00110
00111 Double_t fParticleMomentum;
00112 Double_t fTotalScEnLoss;
00113 Double_t fTotalNumScPlanesHit;
00114 std::string fS;
00115
00116
00117 MinosMaterial::StdMaterial_t fStdMatFe;
00118 MinosMaterial::StdMaterial_t fStdMatAl;
00119 MinosMaterial::StdMaterial_t fStdMatSc;
00120 MinosMaterial::StdMaterial_t fStdMatScTiO2;
00121
00122
00123 Process::Process_t fELossProcess;
00124
00125
00126 Float_t fRoFe;
00127 Float_t fRoAl;
00128 Float_t fRoScTiO2;
00129 Float_t fRoSc;
00130
00131 Float_t fMuMass;
00132
00133
00134 Float_t fThkFe;
00135 Float_t fThkAl;
00136 Float_t fThkSc;
00137 Float_t fThkScTiO2;
00138 Float_t fThkAir;
00139 Float_t fThkPlane;
00140
00141
00142 Material* fFe;
00143 Material* fAl;
00144 Material* fSc;
00145
00146
00147 MuEnergyLoss* fIonFe;
00148 MuEnergyLoss* fIonAl;
00149 MuEnergyLoss* fIonSc;
00150 MuEnergyLoss* fIonScTiO2;
00151
00152 Int_t fSlices;
00153 ModelSelector fModelSelector;
00154
00155 ClassDef(CDSimpleMC,0)
00156 };
00157
00158 #endif // CDSIMPLEMC_H