Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:47

0001 #ifndef SimG4CMS_HFShower_h
0002 #define SimG4CMS_HFShower_h
0003 ///////////////////////////////////////////////////////////////////////////////
0004 // File: HFShower.h
0005 // Description: Generates hits for HF with Cerenkov photon code
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 #include "SimG4CMS/Calo/interface/HFCherenkov.h"
0013 #include "SimG4CMS/Calo/interface/HFFibre.h"
0014 
0015 #include "G4ThreeVector.hh"
0016 #include "G4String.hh"
0017 
0018 class G4Step;
0019 
0020 #include <vector>
0021 
0022 class HFShower {
0023 public:
0024   HFShower(const std::string &name,
0025            const HcalDDDSimConstants *hcons,
0026            const HcalSimulationParameters *hps,
0027            edm::ParameterSet const &p,
0028            int chk = 0);
0029 
0030 public:
0031   struct Hit {
0032     Hit() {}
0033     int depth;
0034     double time;
0035     double wavelength;
0036     double momentum;
0037     G4ThreeVector position;
0038   };
0039 
0040   std::vector<Hit> getHits(const G4Step *aStep, double weight);
0041   std::vector<Hit> getHits(const G4Step *aStep, bool forLibrary);
0042   std::vector<Hit> getHits(const G4Step *aStep, bool forLibraryProducer, double zoffset);
0043 
0044 private:
0045   HFCherenkov cherenkov_;
0046   HFFibre fibre_;
0047 
0048   int chkFibre_;
0049   bool applyFidCut_;
0050   bool equalizeTimeShift_;
0051   double probMax_;
0052   std::vector<double> gpar_;
0053 };
0054 
0055 #endif  // HFShower_h