CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
MuonSensitiveDetector.h
Go to the documentation of this file.
1 #ifndef SimG4CMS_Muon_MuonSensitiveDetector_h
2 #define SimG4CMS_Muon_MuonSensitiveDetector_h
3 
24 
25 #include <string>
26 
27 class MuonSlaveSD;
29 class MuonFrameRotation;
30 class UpdatablePSimHit;
31 class MuonSubDetector;
32 class MuonG4Numbering;
33 class SimHitPrinter;
34 class G4Step;
36 class SimTrackManager;
37 
38 class MuonSensitiveDetector : public SensitiveTkDetector, public Observer<const BeginOfEvent*> {
39 public:
40  explicit MuonSensitiveDetector(const std::string&,
41  const MuonOffsetMap*,
42  const MuonGeometryConstants&,
44  double ePersistentCutGeV,
45  bool allMuonsPersistent,
46  bool aPrintHits,
47  bool dd4hep,
48  const SimTrackManager*);
49  ~MuonSensitiveDetector() override;
50  G4bool ProcessHits(G4Step*, G4TouchableHistory*) override;
51  uint32_t setDetUnitId(const G4Step*) override;
52  void EndOfEvent(G4HCofThisEvent*) override;
53 
54  void fillHits(edm::PSimHitContainer&, const std::string&) override;
55  void clearHits() override;
56 
57  const MuonSlaveSD* GetSlaveMuon() const { return slaveMuon; }
58 
59 protected:
60  void update(const BeginOfEvent*) override;
61 
62 private:
63  inline Local3DPoint cmsUnits(const Local3DPoint& v) { return Local3DPoint(v.x() * 0.1, v.y() * 0.1, v.z() * 0.1); }
64 
70 
71  bool newHit(const G4Step*);
72  void createHit(const G4Step*);
73  void updateHit(const G4Step*);
74  void saveHit();
75 
81  Local3DPoint InitialStepPositionVsParent(const G4Step* currentStep, G4int levelsUp);
82  Local3DPoint FinalStepPositionVsParent(const G4Step* currentStep, G4int levelsUp);
83 
84  const G4VPhysicalVolume* thePV;
86  uint32_t theDetUnitId;
87  uint32_t newDetUnitId;
89 
90  bool printHits;
92 
93  //--- SimTracks cuts
96 
98 
100 };
101 
102 #endif // MuonSensitiveDetector_h
const G4VPhysicalVolume * thePV
Local3DPoint FinalStepPositionVsParent(const G4Step *currentStep, G4int levelsUp)
G4bool ProcessHits(G4Step *, G4TouchableHistory *) override
void updateHit(const G4Step *)
T y() const
Definition: PV3DBase.h:60
MuonSensitiveDetector(const std::string &, const MuonOffsetMap *, const MuonGeometryConstants &, const SensitiveDetectorCatalog &, double ePersistentCutGeV, bool allMuonsPersistent, bool aPrintHits, bool dd4hep, const SimTrackManager *)
MuonSubDetector * detector
void fillHits(edm::PSimHitContainer &, const std::string &) override
Local3DPoint cmsUnits(const Local3DPoint &v)
tuple dd4hep
Definition: dd4hep_cff.py:3
void createHit(const G4Step *)
G4ProcessTypeEnumerator * theG4ProcessTypeEnumerator
T z() const
Definition: PV3DBase.h:61
bool newHit(const G4Step *)
const MuonFrameRotation * theRotation
const SimTrackManager * theManager
const MuonSlaveSD * GetSlaveMuon() const
uint32_t setDetUnitId(const G4Step *) override
void EndOfEvent(G4HCofThisEvent *) override
MuonSimHitNumberingScheme * numbering
void update(const BeginOfEvent *) override
This routine will be called when the appropriate signal arrives.
std::vector< PSimHit > PSimHitContainer
T x() const
Definition: PV3DBase.h:59
Local3DPoint InitialStepPositionVsParent(const G4Step *currentStep, G4int levelsUp)
UpdatablePSimHit * theHit
MuonG4Numbering * g4numbering
Point3DBase< float, LocalTag > Local3DPoint
Definition: LocalPoint.h:9