CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/FastSimulation/MaterialEffects/src/MaterialEffectsSimulator.cc

Go to the documentation of this file.
00001 
00002 #include "FastSimulation/MaterialEffects/interface/MaterialEffectsSimulator.h"
00003 //#include "FastSimulation/Utilities/interface/RandomEngine.h"
00004 
00005 #include <list>
00006 
00007 using std::list;
00008 using std::pair;
00009 
00010 MaterialEffectsSimulator:: MaterialEffectsSimulator(const RandomEngine* engine,
00011                                                     double A, double Z, 
00012                                                     double density, double radLen) :
00013   A(A), Z(Z), density(density), radLen(radLen)
00014 { 
00015   random = engine;
00016   _theUpdatedState.clear(); 
00017 }
00018 
00019 MaterialEffectsSimulator::~MaterialEffectsSimulator() {
00020   // Don't delete the objects contained in the list
00021   _theUpdatedState.clear();
00022 }
00023 
00024 void MaterialEffectsSimulator::updateState(ParticlePropagator & Particle,
00025                                            double radlen)
00026 {
00027 
00028   _theUpdatedState.clear();
00029   theClosestChargedDaughterId = -1;
00030 
00031   radLengths = radlen;
00032   if ( radLengths > 0. ) compute(Particle);
00033 
00034 }
00035 
00036 XYZVector 
00037 MaterialEffectsSimulator::orthogonal(const XYZVector& aVector) const { 
00038 
00039   double x = fabs(aVector.X());
00040   double y = fabs(aVector.Y());
00041   double z = fabs(aVector.Z());
00042 
00043   if ( x < y ) 
00044     return x < z ? 
00045       XYZVector(0.,aVector.Z(),-aVector.Y()) :
00046       XYZVector(aVector.Y(),-aVector.X(),0.);
00047   else
00048     return y < z ? 
00049       XYZVector(-aVector.Z(),0.,aVector.X()) :
00050       XYZVector(aVector.Y(),-aVector.X(),0.);
00051 
00052 }
00053