File indexing completed on 2022-06-29 02:26:07
0001 #ifndef SimG4CMS_HGCalSD_h
0002 #define SimG4CMS_HGCalSD_h
0003
0004
0005
0006
0007
0008
0009 #include "SimG4CMS/Calo/interface/CaloSD.h"
0010 #include "SimG4Core/Notification/interface/BeginOfJob.h"
0011 #include "SimG4CMS/Calo/interface/HGCalNumberingScheme.h"
0012 #include "SimG4CMS/Calo/interface/HGCMouseBite.h"
0013
0014 #include <string>
0015
0016 class HGCalDDDConstants;
0017 class G4LogicalVolume;
0018 class G4Step;
0019
0020 class HGCalSD : public CaloSD, public Observer<const BeginOfJob *> {
0021 public:
0022 HGCalSD(const std::string &,
0023 const HGCalDDDConstants *,
0024 const SensitiveDetectorCatalog &,
0025 edm::ParameterSet const &,
0026 const SimTrackManager *);
0027 ~HGCalSD() override = default;
0028
0029 uint32_t setDetUnitId(const G4Step *step) override;
0030
0031 protected:
0032 double getEnergyDeposit(const G4Step *) override;
0033 using CaloSD::update;
0034 void update(const BeginOfJob *) override;
0035 void initRun() override;
0036 bool filterHit(CaloG4Hit *, double) override;
0037
0038 private:
0039 uint32_t setDetUnitId(int, int, int, int, G4ThreeVector &);
0040 bool isItinFidVolume(const G4ThreeVector &);
0041
0042 const HGCalDDDConstants *hgcons_;
0043 std::unique_ptr<HGCalNumberingScheme> numberingScheme_;
0044 std::unique_ptr<HGCMouseBite> mouseBite_;
0045 DetId::Detector mydet_;
0046 std::string nameX_;
0047 HGCalGeometryMode::GeometryMode geom_mode_;
0048 double eminHit_, slopeMin_, distanceFromEdge_;
0049 double mouseBiteCut_, weight_;
0050 int levelT1_, levelT2_, cornerMinMask_;
0051 bool storeAllG4Hits_;
0052 bool fiducialCut_, rejectMB_, waferRot_;
0053 int useSimWt_;
0054 const double tan30deg_;
0055 std::vector<double> angles_;
0056 };
0057
0058 #endif