File indexing completed on 2024-04-06 12:29:47
0001 #ifndef SimG4CMS_HFFibre_h
0002 #define SimG4CMS_HFFibre_h 1
0003
0004
0005
0006
0007
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0010 #include "Geometry/HcalCommonData/interface/HcalDDDSimConstants.h"
0011 #include "CondFormats/GeometryObjects/interface/HcalSimulationParameters.h"
0012
0013 #include "G4ThreeVector.hh"
0014
0015 #include <vector>
0016 #include <string>
0017 #include <array>
0018
0019 class HFFibre {
0020 public:
0021
0022 HFFibre(const HcalDDDSimConstants* hcons, const HcalSimulationParameters* hps, edm::ParameterSet const& p);
0023
0024 double attLength(double lambda) const;
0025 double tShift(const G4ThreeVector& point, int depth, int fromEndAbs = 0) const;
0026 double zShift(const G4ThreeVector& point, int depth, int fromEndAbs = 0) const;
0027
0028 struct Params {
0029 Params() = default;
0030 Params(double iFractionOfSpeedOfLightInFibre,
0031 const HcalDDDSimConstants* hcons,
0032 const HcalSimulationParameters* hps);
0033 double fractionOfSpeedOfLightInFibre_;
0034 std::vector<double> gParHF_;
0035 std::vector<double> rTableHF_;
0036 std::vector<double> shortFibreLength_;
0037 std::vector<double> longFibreLength_;
0038 std::vector<double> attenuationLength_;
0039 std::array<double, 2> lambdaLimits_;
0040 };
0041
0042 HFFibre(Params iP);
0043
0044 private:
0045 double cFibre_;
0046 std::vector<double> gpar_, radius_;
0047 std::vector<double> shortFL_, longFL_;
0048 std::vector<double> attL_;
0049 int nBinR_, nBinAtt_;
0050 std::array<double, 2> lambLim_;
0051 };
0052 #endif