Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef SimG4CMSForwardZdcSD_h
0002 #define SimG4CMSForwardZdcSD_h
0003 ///////////////////////////////////////////////////////////////////////////////
0004 // File: ZdcSD.h
0005 // Date: 02.04
0006 // Description: Stores hits of Zdc in appropriate  container
0007 //
0008 ///////////////////////////////////////////////////////////////////////////////
0009 #include "SimG4CMS/Calo/interface/CaloSD.h"
0010 #include "SimG4CMS/Forward/interface/ZdcShowerLibrary.h"
0011 #include "SimG4CMS/Forward/interface/ZdcNumberingScheme.h"
0012 #include "FWCore/Framework/interface/Frameworkfwd.h"
0013 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h"
0014 
0015 class ZdcSD : public CaloSD {
0016 public:
0017   ZdcSD(const std::string &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *);
0018 
0019   ~ZdcSD() override = default;
0020   bool ProcessHits(G4Step *step, G4TouchableHistory *tHistory) override;
0021   uint32_t setDetUnitId(const G4Step *step) override;
0022 
0023 protected:
0024   double getEnergyDeposit(const G4Step *) override;
0025   bool getFromLibrary(const G4Step *) override;
0026   void initRun() override;
0027 
0028   double calculateCherenkovDeposit(const G4Step *);
0029   double calculateMeanNumberOfPhotons(double, double, double);
0030   double photonEnergyDist(double, double, double);
0031   double generatePhotonEnergy(double, double, double);
0032   double pmtEfficiency(double);
0033   double convertEnergyToWavelength(double);
0034 
0035   double calculateN2InvIntegral(double);
0036   double evaluateFunction(const std::vector<double> &, const std::vector<double> &, double);
0037   double linearInterpolation(double, double, double, double, double);
0038 
0039   int setTrackID(const G4Step *step) override;
0040 
0041 private:
0042   int verbosity;
0043   bool useShowerLibrary, useShowerHits;
0044   double thFibDir;
0045   double zdcHitEnergyCut;
0046   std::unique_ptr<ZdcShowerLibrary> showerLibrary;
0047   std::unique_ptr<ZdcNumberingScheme> numberingScheme;
0048 
0049   std::vector<ZdcShowerLibrary::Hit> hits;
0050 };
0051 
0052 #endif  // ZdcSD_h