CMS 3D CMS Logo

TrajectoryManager.h

Go to the documentation of this file.
00001 #ifndef TRAJECTORYMANAGER_H
00002 #define TRAJECTORYMANAGER_H
00003 
00004 //DataFormats
00005 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
00006 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
00007 
00008 //FAMOS Headers
00009 #include "FastSimulation/MaterialEffects/interface/MaterialEffects.h"
00010 
00034 #include <vector>
00035 #include <map>
00036 
00037 class Pythia6Decays;
00038 class TrackerInteractionGeometry;
00039 class TrackerLayer;
00040 class ParticlePropagator;
00041 class FSimEvent;
00042 //class Histos;
00043 class RandomEngine;
00044 class TrajectoryStateOnSurface;
00045 class DetLayer;
00046 class GeomDet;
00047 class GeomDetUnit;
00048 class MagneticField;
00049 class MagneticFieldMap;
00050 class GeometricSearchTracker;
00051 class TrackerGeometry;
00052 
00053 namespace edm { 
00054   class ParameterSet;
00055 }
00056 
00057 class TrajectoryManager
00058 
00059 {
00060  public:
00061 
00063   TrajectoryManager() {;}
00064 
00066   TrajectoryManager(FSimEvent* aSimEvent, 
00067                     const edm::ParameterSet& matEff,
00068                     const edm::ParameterSet& simHits,
00069                     const edm::ParameterSet& decays,
00070                     const RandomEngine* engine);
00071 
00073   ~TrajectoryManager();
00074   
00076   void reconstruct();
00077 
00079   void createPSimHits(const TrackerLayer& layer,
00080                       const ParticlePropagator& P_before,
00081                       std::map<double,PSimHit>& theHitMap,
00082                       int trackID, int partID);
00083 
00085   void propagateToCalorimeters(ParticlePropagator& PP, 
00086                                int fsimi);
00087 
00088 
00091   bool propagateToLayer(ParticlePropagator& PP,unsigned layer);
00092 
00094   const TrackerInteractionGeometry* theGeometry();
00095 
00097   void initializeRecoGeometry(const GeometricSearchTracker* geomSearchTracker,
00098                               const TrackerInteractionGeometry* interactionGeometry,
00099                               const MagneticFieldMap* aFieldMap);
00100 
00102   void initializeTrackerGeometry(const TrackerGeometry* geomTracker);
00103 
00104   // load container from edm::Event
00105   void loadSimHits(edm::PSimHitContainer & c) const;
00106 
00107  private:
00108 
00110   void updateWithDaughters(ParticlePropagator& PP, int fsimi);
00111 
00113   void initializeLayerMap();
00114 
00116   TrajectoryStateOnSurface makeTrajectoryState( const DetLayer* layer, 
00117                                                 const ParticlePropagator& pp,
00118                                                 const MagneticField* field) const;
00119 
00121   void makePSimHits( const GeomDet* det, const TrajectoryStateOnSurface& ts,
00122                      std::map<double,PSimHit>& theHitMap,
00123                      int tkID, float el, float thick, int pID);
00125   std::pair<double,PSimHit> makeSinglePSimHit( const GeomDetUnit& det,
00126                                                const TrajectoryStateOnSurface& ts, 
00127                                                int tkID, float el, float thick, int pID) const;
00128 
00130   const DetLayer* detLayer( const TrackerLayer& layer, float zpos) const;
00131 
00132  private:
00133 
00134   FSimEvent* mySimEvent;
00135 
00136   const TrackerInteractionGeometry* _theGeometry;
00137   const MagneticFieldMap* _theFieldMap;
00138   
00139   MaterialEffects* theMaterialEffects;
00140 
00141   Pythia6Decays* myDecayEngine;
00142   double distCut;
00143 
00144   double pTmin;
00145   bool firstLoop;
00146   std::map<unsigned,std::map<double,PSimHit> > thePSimHits;
00147 
00148   const TrackerGeometry*                      theGeomTracker;
00149   const GeometricSearchTracker*               theGeomSearchTracker;
00150   std::vector<const DetLayer*>                theLayerMap;
00151   int                                         theNegLayerOffset;
00152 
00153   //  Histos* myHistos;
00154 
00155   const RandomEngine* random;
00156 
00157 };
00158 #endif

Generated on Tue Jun 9 17:35:17 2009 for CMSSW by  doxygen 1.5.4