Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-07-27 14:07:55

0001 #ifndef SimG4CMS_HFNoseSD_h
0002 #define SimG4CMS_HFNoseSD_h
0003 ///////////////////////////////////////////////////////////////////////////////
0004 // File: HFNoseSD.h
0005 // Description: Stores hits of the High Granularity Calorimeter (HGC) in the
0006 //              appropriate container (post TDR version)
0007 ///////////////////////////////////////////////////////////////////////////////
0008 
0009 #include "SimG4CMS/Calo/interface/CaloSD.h"
0010 #include "SimG4Core/Notification/interface/BeginOfJob.h"
0011 #include "SimG4CMS/Calo/interface/HFNoseNumberingScheme.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 HFNoseSD : public CaloSD, public Observer<const BeginOfJob *> {
0021 public:
0022   HFNoseSD(const std::string &,
0023            const HGCalDDDConstants *,
0024            const SensitiveDetectorCatalog &,
0025            edm::ParameterSet const &,
0026            const SimTrackManager *);
0027   ~HFNoseSD() 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<HFNoseNumberingScheme> numberingScheme_;
0044   std::unique_ptr<HGCMouseBite> mouseBite_;
0045   std::string nameX_;
0046   HGCalGeometryMode::GeometryMode geom_mode_;
0047   double eminHit_, slopeMin_, weight_;
0048   double mouseBiteCut_, distanceFromEdge_;
0049   int levelT1_, levelT2_, cornerMinMask_;
0050   bool storeAllG4Hits_;
0051   bool fiducialCut_, rejectMB_, waferRot_;
0052   const double tan30deg_;
0053   std::vector<double> angles_;
0054 };
0055 
0056 #endif  // HFNoseSD_h