CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/FastSimulation/ParticlePropagator/interface/MagneticFieldMap.h

Go to the documentation of this file.
00001 #ifndef FastSimulation_ParticlePropagator_MagneticFieldMap_H
00002 #define FastSimulation_ParticlePropagator_MagneticFieldMap_H
00003 
00004 // Framework Headers
00005 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00006 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00007 
00008 // Famos headers
00009 #include "FastSimulation/TrackerSetup/interface/TrackerLayer.h"
00010 
00011 #include <vector>
00012 #include <string>
00013 
00014 class MagneticField;
00015 class TrackerInteractionGeometry;
00016 class TH1;
00017 
00018 class MagneticFieldMap {
00019 
00020 public:
00021 
00022   // Constructor from a TrackerInteractionGeometry*
00023   MagneticFieldMap(const MagneticField* pmF,
00024                    const TrackerInteractionGeometry* myGeo);
00025 
00026   const GlobalVector inTesla( const GlobalPoint& ) const;
00027   const GlobalVector inKGauss( const GlobalPoint& ) const;
00028   const GlobalVector inInverseGeV( const GlobalPoint& ) const;
00029   const GlobalVector inTesla(const TrackerLayer& aLayer, double coord, int success) const;
00030   double inTeslaZ(const GlobalPoint&) const;
00031   double inKGaussZ(const GlobalPoint&) const;
00032   double inInverseGeVZ(const GlobalPoint&) const;
00033   double inTeslaZ(const TrackerLayer& aLayer, double coord, int success) const;
00034 
00035   const MagneticField& magneticField() const {return *pMF_;}
00036 
00037 private:
00038 
00039   void initialize();
00040 
00041   const std::vector<double>* theFieldEndcapHisto(unsigned layer) const
00042     { return &(fieldEndcapHistos[layer]); } 
00043 
00044   const std::vector<double>* theFieldBarrelHisto(unsigned layer) const
00045     { return &(fieldBarrelHistos[layer]); } 
00046 
00047   const MagneticField* pMF_;
00048   const TrackerInteractionGeometry* geometry_;
00049   unsigned bins;
00050   std::vector<std::vector<double> > fieldBarrelHistos;
00051   std::vector<std::vector<double> > fieldEndcapHistos;
00052   std::vector<double> fieldBarrelBinWidth;
00053   std::vector<double> fieldBarrelZMin;
00054   std::vector<double> fieldEndcapBinWidth;
00055   std::vector<double> fieldEndcapRMin;
00056 
00057 };
00058 
00059 #endif // FastSimulation_ParticlePropagator_MagneticFieldMap_H