/* This file is part of MAUS: http://micewww.pp.rl.ac.uk:8080/projects/maus * * MAUS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MAUS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MAUS. If not, see . * */ #ifndef SciFiSD_h #define SciFiSD_h 1 // C headers #include #include // other headers #include "Geant4/G4TransportationManager.hh" #include "Geant4/G4FieldManager.hh" #include "Geant4/G4Field.hh" #include "Geant4/G4HCofThisEvent.hh" #include "Geant4/G4Step.hh" #include "Geant4/G4ThreeVector.hh" #include "Geant4/G4SDManager.hh" #include "Geant4/G4ios.hh" #include "json/json.h" #include "Interface/MICEEvent.hh" #include "src/legacy/Config/MiceModule.hh" #include "DetModel/MAUSSD.hh" #include "src/common_cpp/DataStructure/Hit.hh" /** @brief The Scintilating Fibre Sensitive Detector * SciFiSD is the sensitive detector for GEANT4 that handles the Scintillating * Fibre tracker simulation. */ class SciFiSD : public MAUS::MAUSSD { public: /** @brief Constructor */ explicit SciFiSD(MiceModule* mod); /** @brief Processes all hits in this detector */ G4bool ProcessHits(G4Step*, G4TouchableHistory*); /** True if the SD has at least one hit in its _hits array */ bool isHit(); /** Returns the number of hits in the Sensitive Detector */ int GetNHits(); /** Clears all hits in the sensitive detector */ void ClearHits(); /** Hand ownership of the detector hits to MCEvent */ void TakeHits(MAUS::MCEvent* event); /** @brief Code that is called at the end of processing of an event * Does nothing. */ void EndOfEvent(G4HCofThisEvent* HCE); private: std::vector* _hits; }; #endif