GENIEGenerator
Loading...
Searching...
No Matches
gtestFluxAstro.cxx File Reference
#include <TFile.h>
#include <TNtuple.h>
#include "Framework/Conventions/Constants.h"
#include "Framework/Conventions/Units.h"
#include "Tools/Flux/GAstroFlux.h"
#include "Framework/Messenger/Messenger.h"
#include "Framework/ParticleData/PDGCodes.h"
Include dependency graph for gtestFluxAstro.cxx:

Go to the source code of this file.

Functions

int main (int, char **)

Variables

const unsigned int kNEvents = 1000000

Function Documentation

◆ main()

int main ( int ,
char **  )

Definition at line 34 of file gtestFluxAstro.cxx.

35{
36 const double pi = constants::kPi;
37
38 const double latitude = pi/5;
39 const double longitude = pi/4;
40 const double depth = 3.0*units::km;
41 const double size = 2.0*units::km;
42
44
45 difflx->ForceMinEnergy(1E+2);
46 difflx->ForceMaxEnergy(1E+8);
47 difflx->GenerateWeighted(true);
48 difflx->SetDetectorPosition(latitude,longitude,depth,size);
49 difflx->SetRelNuPopulations(1,2,0,1,2,0);
50 difflx->SetEnergyPowLawIdx(3.5);
51
52 TNtuple * fluxntp =
53 new TNtuple("fluxntp", "flux", "x:y:z:t:px:py:pz:E:pdgc:wght");
54
55 unsigned int ievent = 0;
56 while(ievent++ < kNEvents) {
57 LOG("test", pINFO) << "Event number: " << ievent;
58 difflx->GenerateNext();
59 int pdgc = difflx->PdgCode();
60 double wght = difflx->Weight();
61 const TLorentzVector & x4 = difflx->Position();
62 const TLorentzVector & p4 = difflx->Momentum();
63 fluxntp->Fill(
64 x4.X(), x4.Y(), x4.Z(), x4.T(),
65 p4.Px(), p4.Py(), p4.Pz(), p4.E(), pdgc, wght);
66 }
67
68 TFile f("./genie-astro-flux.root","recreate");
69 fluxntp->Write();
70 f.Close();
71
72 LOG("test", pINFO) << "Done!";
73
74 return 0;
75}
#define pINFO
Definition Messenger.h:62
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
Definition Messenger.h:96
virtual const TLorentzVector & Position(void)
returns the flux neutrino 4-position (note: expect SI rather than physical units)
Definition GAstroFlux.h:140
void ForceMaxEnergy(double emax)
void SetEnergyPowLawIdx(double n)
virtual int PdgCode(void)
returns the flux neutrino pdg code
Definition GAstroFlux.h:137
void ForceMinEnergy(double emin)
virtual void GenerateWeighted(bool gen_weighted)
set whether to generate weighted or unweighted neutrinos
virtual bool GenerateNext(void)
generate the next flux neutrino (return false in err)
void SetRelNuPopulations(double nnue=1, double nnumu=2, double nnutau=0, double nnuebar=1, double nnumubar=2, double nnutaubar=0)
virtual double Weight(void)
returns the flux neutrino weight (if any)
Definition GAstroFlux.h:138
virtual const TLorentzVector & Momentum(void)
returns the flux neutrino 4-momentum
Definition GAstroFlux.h:139
void SetDetectorPosition(double latitude, double longitude, double depth, double size)
const unsigned int kNEvents
static constexpr double km
Definition Units.h:64

References genie::flux::GAstroFlux::ForceMaxEnergy(), genie::flux::GAstroFlux::ForceMinEnergy(), genie::flux::GAstroFlux::GenerateNext(), genie::flux::GAstroFlux::GenerateWeighted(), genie::units::km, kNEvents, genie::constants::kPi, LOG, genie::flux::GAstroFlux::Momentum(), genie::flux::GAstroFlux::PdgCode(), pINFO, genie::flux::GAstroFlux::Position(), genie::flux::GAstroFlux::SetDetectorPosition(), genie::flux::GAstroFlux::SetEnergyPowLawIdx(), genie::flux::GAstroFlux::SetRelNuPopulations(), and genie::flux::GAstroFlux::Weight().

Variable Documentation

◆ kNEvents

const unsigned int kNEvents = 1000000

Definition at line 31 of file gtestFluxAstro.cxx.

Referenced by createFluxNtuple(), and main().