#ifndef Strasse_h #define Strasse_h 1 /***************************************************************************** * Copyright (C) 2009-2020 this file is part of the NPTool Project * * * * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * * For the list of contributors see $NPTOOL/Licence/Contributors * *****************************************************************************/ /***************************************************************************** * Original Author: F. Flavigny contact address: flavigny@lpccaen.in2p3.fr * * * * Creation Date : July 2020 * * Last update : * *---------------------------------------------------------------------------* * Decription: * * This class describe Strasse simulation * * * *---------------------------------------------------------------------------* * Comment: * * * *****************************************************************************/ // C++ header #include #include using namespace std; // G4 headers #include "G4ThreeVector.hh" #include "G4RotationMatrix.hh" #include "G4LogicalVolume.hh" #include "G4MultiFunctionalDetector.hh" // NPTool header #include "NPSVDetector.hh" #include "TStrasseData.h" #include "NPInputParser.h" class Strasse : public NPS::VDetector{ //////////////////////////////////////////////////// /////// Default Constructor and Destructor ///////// //////////////////////////////////////////////////// public: Strasse() ; virtual ~Strasse() ; //////////////////////////////////////////////////// /////// Specific Function of this Class /////////// //////////////////////////////////////////////////// public: // Cartesian void AddDetector(G4ThreeVector POS); // Spherical void AddDetector(double R,double Theta,double Phi); G4LogicalVolume* BuildTrapezoidDetector(); private: G4LogicalVolume* m_TrapezoidDetector; //////////////////////////////////////////////////// ////// Inherite from NPS::VDetector class ///////// //////////////////////////////////////////////////// public: // Read stream at Configfile to pick-up parameters of detector (Position,...) // Called in DetecorConstruction::ReadDetextorConfiguration Method void ReadConfiguration(NPL::InputParser) ; // Construct detector and inialise sensitive part. // Called After DetecorConstruction::AddDetector Method void ConstructDetector(G4LogicalVolume* world) ; // Add Detector branch to the EventTree. // Called After DetecorConstruction::AddDetector Method void InitializeRootOutput() ; // Read sensitive part and fill the Root tree. // Called at in the EventAction::EndOfEventAvtion void ReadSensitive(const G4Event* event) ; public: // Scorer // Initialize all Scorer used by the MUST2Array void InitializeScorers() ; // Associated Scorer G4MultiFunctionalDetector* m_InnerScorer ; G4MultiFunctionalDetector* m_OutterScorer ; //////////////////////////////////////////////////// ///////////Event class to store Data//////////////// //////////////////////////////////////////////////// private: TStrasseData* m_Event ; //////////////////////////////////////////////////// ///////////////Private intern Data////////////////// //////////////////////////////////////////////////// private: // Geometry // Detector Coordinate vector m_R; vector m_Theta; vector m_Phi; // Visualisation Attribute //G4VisAttributes* m_VisTrap; // Needed for dynamic loading of the library public: static NPS::VDetector* Construct(); }; #endif