//____________________________________________________________________________ /*! \class genie::BinParam, genie::GenParam \brief Data structure for gSeaGen \author Carla Distefano LNS-INFN, Catania Included modifications by Alfonso Garcia NIKHEF, Amsterdam (January 2019) \created May 13, 2012 \cpright Copyright (c) 2012-2019, The KM3NeT Collaboration For the full text of the license see $GSEAGEN/LICENSE */ //____________________________________________________________________________ #ifndef _GBINPARAM_H__ #define _GBINPARAM_H__ #include "TGraph.h" #include "TDatime.h" #include "TRotation.h" #include "SeaNuDrivers/GSeaSystParam.h" #include using namespace std; struct BinParam { double NEvBin, NEvBinSW, NEvBinSR; int NEvBinScal, NEvBinGen; int NEvBinScalSW, NEvBinGenSW; int NEvBinScalSR, NEvBinGenSR; double EneMin, EneMax, RT, RL; double X0,Y0,Z0; double ProbScale, ProbScaleSW, ProbScaleSR; double RVol, HSeaWater, HRock, RockCenter, SeaCenter; string geometry; }; class FluxFileStr : public TObject { public: int NuType; string FluxSimul; vector FileNames; FluxFileStr(){}; ~FluxFileStr(){}; ClassDef(FluxFileStr,1); }; // GenParam class contains all inputs used in the simulation. // Some of these inputs are computed by the code itself (e.g. cross sections enetring in the weights) // Members of this class are filled by different classes at initializzation class GenParam : public TObject { public: int RunNu; // Run number int RanSeed; // random number seed string EventGeneratorList; // list of interaction channels string InpXSecFile; // cross-section splines double NTot; // Total number of generated neutrinos double EvMin, EvMax; // Generated neutrino energy range double CtMin, CtMax; // Generated neutrino cosTheta range float Alpha; // Generation spectral index int Primary; // [CORSIKA-specific] primary particle PDG ID float EPrimMin, EPrimMax; // [CORSIKA-specific] Generated primary energy range float PrimCtMin, PrimCtMax; // [CORSIKA-specific] Generated primary cosTheta range float EmuMin; // [CORSIKA-specific] muon E threshold string CRModel; // [CORSIKA-specific] CR Flux model used for weighting; default: GST3 int NBin; // number of energy bins double Can1, Can2, Can3; // Zmin Zmax and Rad of detector can double OriginX, OriginY, OriginZ; // Coordinates of can orgin in the detector reference system in meters double HRock, HSeaWater, RVol; // interaction volume: height in rock and water and radius double RockCenter, SeaCenter; // interaction volume: z level of rock and water center double HBedRock; // height of the bedrock to add below the can to take into account that some particles may escape into the ocean and create visible Cherenkov light double NAbsLength; double AbsLength; double SiteDepth; double SiteLatitude; // detector latitude in rad double SiteLongitude; // detector longitude in rad double SiteDeclination; // detector declination in rad double UTMConvergeAngle; // convergence angle of UTM system, in rad bool UseUTMSystem; // if true use the UTM reference system double SeaBottomRadius; double GlobalGenWeight; double RhoSW, RhoSR; double TGen; // simulated interval time in seconds int TrackEvts; // if >0 propagator code is initialized int WriteParticlesMode; // 0,1,2 for increasingly more particles bool SaveMu; // [CORSIKA-specific] save muons for further propagation bool SaveNu; // [CORSIKA-specific] save neutrinos for further propagation bool SaveOther; // [CORSIKA-specific] save all other particles for further propagation int ChancesPerShower; // [CORSIKA-specific] number of extra chances to hit the can for a shower double CustomRotation[3]; // [CORSIKA-specific] custom rotation for sea-level CORSIKA showers int WeightOpt; //0,1,2 wieghting options in GMCJDriver (GENIE) string RTOpt; // RT definition opt: can, vol or set by hand string GenCode; // if genie or other generator string PropCode, PropCodeVer; // name and versione of the propagater code string GenMode; // DIFFUSE, POINT, EVT or BIN string SourceFile; bool GenMJD; string SourceName; double Declination,RightAscension,SourceRadius; double MJDStart, MJDStop; unsigned int TimeStampStart, TimeStampStop; map SeaWaterComp, RockComp, MantleComp, CoreComp; map XSecWater; map XSecTotSW; ///< CC cross sections per nucleon in m^2 (seawater) map XSecTotSR; ///< CC cross sections per nucleon in m^2 (rock/crust) map XSecTotMantle; ///< CC cross sections per nucleon in m^2 (mantle) map XSecTotCore; ///< CC cross sections per nucleon in m^2 (core) double MolarMassSW, MolarMassSR, MolarMassMantle, MolarMassCore; // molar mass of target media int NNucleonsSW, NNucleonsSR, NNucleonsMantle, NNucleonsCore; // number of nucleons in target media int NElectronsSW, NElectronsSR, NElectronsMantle, NElectronsCore; // number of electrons in target media TGraph RangeSW,RangeSR; string detector; // detector geometry file (for can definition) vector NuList; // list of generated neutrino type vector FluxFiles; TRotation Rotation; // coordinate rotation matrix: topocentric horizontal -> user-defined topocentric system string EvFilePrefix; bool NativeOutput; // if true write the native generator output file bool PropMode; // true if propagation through the Earth string Drawing; // if surface or volume drawing string gSeaGenVer; // code version for gSeaGen string GenieVer; // code version for GENIE float CORSIKAVer; // code version for CORSIKA int CORSIKADate; // yyddmm date on which the CORSIKA RUN started int CORSIKASeed[2]; // seeds used in CORSIKA string CORSIKAHadronicModelLE; // LE hadronic interaction model used in CORSIKA string CORSIKAHadronicModelHE; // HE hadronic interaction model used in CORSIKA string GenTune; // generator tune, required for genie version >=3 time_t RunTime; // running time SystInput SystParams; GenParam(){}; ~GenParam(){}; ClassDef(GenParam,1); }; #endif // _GBINPARAM_H__