00001 #ifndef SimG4CMS_HFFibre_h 00002 #define SimG4CMS_HFFibre_h 1 00004 // File: HFFibre.h 00005 // Description: Calculates attenuation length 00007 00008 #include "DetectorDescription/Core/interface/DDsvalues.h" 00009 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00010 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00011 00012 #include "G4ThreeVector.hh" 00013 00014 #include <vector> 00015 #include <string> 00016 00017 class DDCompactView; 00018 00019 class HFFibre { 00020 00021 public: 00022 00023 //Constructor and Destructor 00024 HFFibre(std::string & name, const DDCompactView & cpv, 00025 edm::ParameterSet const & p); 00026 ~HFFibre(); 00027 00028 double attLength(double lambda); 00029 double tShift(G4ThreeVector point, int depth, 00030 bool fromEndAbs=false); 00031 00032 protected: 00033 00034 std::vector<double> getDDDArray(const std::string&, 00035 const DDsvalues_type&, int&); 00036 00037 private: 00038 00039 double cFibre; 00040 std::vector<double> gpar, radius; 00041 std::vector<double> shortFL, longFL; 00042 std::vector<double> attL; 00043 int nBinR, nBinAtt; 00044 double lambLim[2]; 00045 00046 }; 00047 #endif