//____________________________________________________________________________ /*! \class genie::GGenerateEventGenieGenie \brief A GENIE generation driver for an under-water neutrino telescope \author Carla Distefano LNS-INFN, Catania Included modifications by Alfonso Garcia NIKHEF, Amsterdam (January 2019) \created July 19, 2017 \cpright Copyright (c) 2017-2019, The KM3NeT Collaboration For the full text of the license see $GSEAGEN/LICENSE */ //____________________________________________________________________________ #ifndef _GGENERATEEVENTGENIE__ #define _GGENERATEEVENTGENIE__ #include #include #include #include #include #include #include #ifdef _GENIEVERSIONGTEQ3__ #include "Framework/EventGen/GEVGDriver.h" #include "Framework/EventGen/GMCJDriver.h" #include "Framework/EventGen/GMCJMonitor.h" #include "Framework/GHEP/GHepParticle.h" #include "Framework/GHEP/GHepStatus.h" #ifndef __CINT__ #include "Framework/Messenger/Messenger.h" #endif #include "Framework/Ntuple/NtpWriter.h" #include "Framework/Numerical/Spline.h" #include "Framework/Utils/AppInit.h" #include "Framework/Utils/PrintUtils.h" #include "Framework/Utils/RunOpt.h" #include "Framework/Utils/UnitUtils.h" #include "Framework/Utils/XSecSplineList.h" #include "Tools/Geometry/ROOTGeomAnalyzer.h" #else #include "EVGDrivers/GEVGDriver.h" #include "EVGDrivers/GMCJDriver.h" #include "EVGDrivers/GMCJMonitor.h" #include "GHEP/GHepParticle.h" #ifndef __CINT__ #include "Messenger/Messenger.h" #endif #include "Ntuple/NtpWriter.h" #include "Numerical/Spline.h" #include "Geo/ROOTGeomAnalyzer.h" #include "Utils/AppInit.h" #include "Utils/PrintUtils.h" #include "Utils/RunOpt.h" #include "Utils/UnitUtils.h" #include "Utils/XSecSplineList.h" #endif #include "SeaEvent/GBinParam.h" #include "SeaEvent/GSeaEvent.h" #include "SeaNuDrivers/GSeaSyst.h" #include "SeaNuDrivers/GGenerateEvent.h" using namespace std; using namespace genie; using namespace genie::flux; using namespace genie::constants; namespace genie { class GGenerateEventGenie: public GGenerateEvent { public : GGenerateEventGenie(GenParam * GenPar); ~GGenerateEventGenie(); EventRecord* event; vector GetGeneratorTracks (void); void Initialize (void); void Configure (int NTot); double GlobProbScale (void){return fMcjDriver->GlobProbScale();}; void SetGeometry (string RootGeomFile); TLorentzVector GetVertex (void){return *event->Vertex();} double GetGlobalGenWeight (void){return fGenPar->GlobalGenWeight;}; void FillSeaEvent (GSeaEvent * SeaEvent); void ComputeWeights (GSeaEvent * SeaEvt); void InitGenBin (double Emin, double Emax, double RL, double RT, double X0, double Y0, double Z0); double GetNFluxNeutrinos (void); void GenerateEvent (void); void WriteNative (GSeaEvent * SeaEvt); void CleanEvent (void); void CalcXSecWater (void); map CalcXsecTot (map MediaComp); protected: GMCJDriver * fMcjDriver; GSeaSyst * fSeaSyst; GMCJMonitor * fMcjMonitor; NtpWriter * fNtpw; int fNTot; GSeaTrack gEarthNeutrino; }; } // genie namespace #endif //_GGENERATEEVENTGENIE__