Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CDSimpleMC.h

Go to the documentation of this file.
00001 
00002 
00003 // Program name: CDSimpleMC.h 
00004 //                                                                     
00005 // Package: CalDetTracker
00006 //                                                                    
00007 // Coded by Jeff Hartnell Mar/2004          
00008 //                                                                    
00009 // Purpose: To allow a simple MC simulation of stopping muons 
00010 //                                                                    
00011 // Contact: jeffrey.hartnell@physics.ox.ac.uk                         
00012 //  Modified by ADM in April 2006 to use MinosMaterial  (in Conventions) rather than
00013 //  StandardMaterial in MuELoss
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   //methods that modify the object
00036   void RunMC();
00037   void CalcRatioScToFe();
00038   void SetThkFe(Double_t thkFe);
00039   void SetParticleMomentum(Double_t pMom) {fParticleMomentum=pMom;}
00040   
00041   //methods that do not modify the object
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   //data members
00050   //must make these private sometime...
00051   std::vector<Double_t> fEn;
00052   std::vector<Double_t> fMom;//muon momentum
00053   std::vector<Double_t> fMomGeV;//muon momentum
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;//muon energy in the scintillator 
00080   std::vector<Double_t> fMomSc;//muon momentum in the scintillator 
00081   std::vector<Double_t> fMomScGeV;//muon momentum in the scintillator 
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   //vectors to store the energy deposited in both Al and TiO2 layers
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   //methods that do modify the object
00100   void CalcPlaneThk();
00101 
00102   //methods that do not modify the object
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   //data members
00111   Double_t fParticleMomentum;
00112   Double_t fTotalScEnLoss;
00113   Double_t fTotalNumScPlanesHit;
00114   std::string fS;//general purpose string
00115 
00116   //hold standard materials
00117   MinosMaterial::StdMaterial_t fStdMatFe;
00118   MinosMaterial::StdMaterial_t fStdMatAl;
00119   MinosMaterial::StdMaterial_t fStdMatSc;
00120   MinosMaterial::StdMaterial_t fStdMatScTiO2;
00121 
00122   //hold the process to use to calc dE_dx etc
00123   Process::Process_t fELossProcess;
00124 
00125   //all the densities
00126   Float_t fRoFe;
00127   Float_t fRoAl;
00128   Float_t fRoScTiO2;
00129   Float_t fRoSc;
00130   
00131   Float_t fMuMass;
00132   
00133   //variables to hold the thicknesses of materials
00134   Float_t fThkFe;
00135   Float_t fThkAl;
00136   Float_t fThkSc;
00137   Float_t fThkScTiO2;
00138   Float_t fThkAir;
00139   Float_t fThkPlane;//whole plane thickness
00140   
00141   //standard materials
00142   Material* fFe;
00143   Material* fAl;
00144   Material* fSc;
00145   
00146   //energyLoss objects
00147   MuEnergyLoss* fIonFe;
00148   MuEnergyLoss* fIonAl;
00149   MuEnergyLoss* fIonSc;
00150   MuEnergyLoss* fIonScTiO2;
00151 
00152   Int_t fSlices;//number of slices to use in traversing material
00153   ModelSelector fModelSelector;//use default model selections
00154 
00155   ClassDef(CDSimpleMC,0)
00156 };
00157 
00158 #endif // CDSIMPLEMC_H

Generated on Mon Feb 15 11:06:30 2010 for loon by  doxygen 1.3.9.1