Go to the documentation of this file.00001 #ifndef SingleParticleEvent_h
00002 #define SingleParticleEvent_h
00003
00004
00005
00006
00007
00008 #include "GeneratorInterface/CosmicMuonGenerator/interface/CosmicMuonParameters.h"
00009 #include "GeneratorInterface/CosmicMuonGenerator/src/Point5MaterialMap.cc"
00010 #include <iostream>
00011
00012
00013 class SingleParticleEvent{
00014 public:
00015
00016 SingleParticleEvent(){
00017 ID = 0;
00018 Px = 0.; Py = 0.; Pz = 0.; E = 0.; M = 0.;
00019 Vx = 0.; Vy = 0.; Vz = 0.; T0 = 0.;
00020 ID_in = 0;
00021 Px_in = 0.; Py_in = 0.; Pz_in = 0.; E_in = 0.; M_in = 0.;
00022 Vx_in = 0.; Vy_in = 0.; Vz_in = 0.; T0_in = 0.;
00023 HitTarget = false;
00024 PlugVx = PlugOnShaftVx;
00025 PlugVz = PlugOnShaftVz;
00026 RhoAir = 0.;
00027 RhoWall = 0.;
00028 RhoRock = 0.;
00029 RhoClay = 0.;
00030 RhoPlug = 0.;
00031 ClayWidth = DefaultClayWidth;
00032 }
00033
00034 ~SingleParticleEvent(){}
00035 private:
00036 int ID;
00037 double Px; double Py; double Pz; double E; double M;
00038 double Vx; double Vy; double Vz; double T0;
00039 int ID_in;
00040 double Px_in; double Py_in; double Pz_in; double E_in; double M_in;
00041 double Vx_in; double Vy_in; double Vz_in; double T0_in;
00042 bool HitTarget;
00043 bool MTCC;
00044
00045
00046 double dX; double dY; double dZ;
00047 double tmpVx; double tmpVy; double tmpVz;
00048
00049 void update(double stepSize);
00050
00051 void updateTmp(double stepSize);
00052 void subtractEloss(double waterEquivalents);
00053 double absVzTmp();
00054 double rVxyTmp();
00055
00056
00057 public:
00058
00059 void create(int id, double px, double py, double pz, double e, double m, double vx, double vy, double vz, double t0);
00060
00061 void propagate(double ElossScaleFac, double RadiusTarget, double Z_DistTarget, double Z_CentrTarget, bool TrackerOnly, bool MTCCHalf);
00062 double Eloss(double waterEquivalents, double Energy);
00063
00064 bool hitTarget();
00065
00066
00067 int id_in();
00068 double px_in();
00069 double py_in();
00070 double pz_in();
00071 double e_in();
00072 double m_in();
00073 double vx_in();
00074 double vy_in();
00075 double vz_in();
00076 double t0_in();
00077 double WaterEquivalents();
00078
00079
00080 int id();
00081 double px();
00082 double py();
00083 double pz();
00084 double e();
00085 double m();
00086 double vx();
00087 double vy();
00088 double vz();
00089 double t0();
00090
00091 double phi();
00092 double theta();
00093 double absmom();
00094 double absVz();
00095 double rVxy();
00096
00097 void setEug(double Eug);
00098 double Eug();
00099 double deltaEmin(double Energy);
00100 void SurfProj(double Vx_in, double Vy_in, double Vz_in,
00101 double Px_in, double Py_in, double Pz_in,
00102 double& Vx_up, double& Vy_up, double& Vz_up);
00103
00104 double PlugVx;
00105 double PlugVz;
00106 double RhoAir;
00107 double RhoWall;
00108 double RhoRock;
00109 double RhoClay;
00110 double RhoPlug;
00111 double ClayWidth;
00112 double waterEquivalents;
00113 double E_ug;
00114 };
00115 #endif