#ifndef Epic_h #define Epic_h 1 /***************************************************************************** * Copyright (C) 2009-2024 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: Audrey Chatillon contact address: audrey.chatillon@cea.fr * * * * Creation Date : décembre 2024 * * Last update : * *---------------------------------------------------------------------------* * Decription: * * This class describe Epic simulation * * * *---------------------------------------------------------------------------* * Comment: * * * *****************************************************************************/ // C++ header #include <string> #include <vector> using namespace std; // G4 headers #include "G4ThreeVector.hh" #include "G4RotationMatrix.hh" #include "G4LogicalVolume.hh" #include "G4MultiFunctionalDetector.hh" #include "G4AssemblyVolume.hh" // NPTool header #include "NPSVDetector.hh" #include "TEpicData.h" #include "NPInputParser.h" class Epic : public NPS::VDetector{ //////////////////////////////////////////////////// /////// Default Constructor and Destructor ///////// //////////////////////////////////////////////////// public: Epic() ; virtual ~Epic() ; //////////////////////////////////////////////////// /////// Specific Function of this Class /////////// //////////////////////////////////////////////////// public: // Cartesian void AddDetector(G4ThreeVector POS); G4AssemblyVolume* BuildEpic(); void BuildAnode(double PosZ); void BuildCathode(double PosZ); private: G4AssemblyVolume* m_EpicVolume; //////////////////////////////////////////////////// ////// 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_EpicScorer ; //////////////////////////////////////////////////// ///////////Event class to store Data//////////////// //////////////////////////////////////////////////// private: TEpicData* m_Event ; //////////////////////////////////////////////////// ///////////////Private intern Data////////////////// //////////////////////////////////////////////////// private: // Geometry // Detector Coordinate vector<double> m_R; vector<double> m_Theta; vector<double> m_Phi; string m_GasMaterial; double m_Pressure; double m_Distance_AK; double m_InterDistance_KK; int m_nA; // number of anodes // Visualisation Attribute G4VisAttributes* m_VisFCWall; G4VisAttributes* m_VisAl; G4VisAttributes* m_VisCu; G4VisAttributes* m_VisGasAK; G4VisAttributes* m_VisGasKK; G4VisAttributes* m_VisTi; G4VisAttributes* m_VisRogers4003C; // Needed for dynamic loading of the library public: static NPS::VDetector* Construct(); }; #endif