gibuu is hosted by Hepforge, IPPP Durham
GiBUU

TABLE OF CONTENTS


/AnaEvent [ Modules ]

[ Top ] [ Modules ]

NAME

module AnaEvent

PURPOSE

This module handles the type "tAnaEvent". It can be used for analyzing your particle vector. See e.g. lowElectronAnalysis.f90 for usage.

This module includes several subroutines to print out cross sections when given an array of events.

The routines given in this module decay into two categories. The first category are the more low-level routines, which act on building up an single tAnaEvent or dumping a list of tAnaEvent types, as e.g.:

On the other hand we have routines as:

which fill histograms by looping over a given list of tAnaEvent types. These are very complex.

INPUTS

No Namelist available.

NOTES

%perweight should not include any dOmega or the such. The sum of all perweight should simply return the total cross section.


AnaEvent/particleIDs [ Global module-variables ]

[ Top ] [ AnaEvent ] [ Global module-variables ]

PURPOSE

The ID's of the particles we consider "stable": public is necessary because it is used in LArAnalysis

SOURCE

  integer, dimension(1:numStableParts),parameter, public :: particleIDs=(/ &
       & pion, eta, kaon, kaonBar, DMeson, dBar, nucleon, &
       & lambda, sigmaResonance, Xi, OmegaResonance/)

AnaEvent/particleIDs_flag [ Global module-variables ]

[ Top ] [ AnaEvent ] [ Global module-variables ]

SOURCE

  logical, dimension(1:numStableParts),save :: particleIDs_flag=.true.

PURPOSE

Flags to switch on/off output of special ID's, e.g. particleIDs_flag(1)=.false. means that there is no output for pions


AnaEvent/set_particleIDs_flag [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine set_particleIDs_flag(flags)

PURPOSE

Set the variable set_particleIDs_flag to a new value

INPUTS

  • logical, dimension(1:numStableParts) :: flags

OUTPUT

  • sets particleIds_flag=flags


AnaEvent/event_getMultiplicities [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

logical function event_getMultiplicities(L,ID,Charge,N)

PURPOSE

Output the multiplicities of an event.

INPUTS

OUTPUT

  • integer :: N -- Multiplicity of particle species "ID" with charge "charge" in the event L
  • function value -- true if "ID" was counted seperately, false if "ID"-Multiplicities were included in the general multiplicities, then "N" ist the number of all particles not being defined in the array particleIDs (see above).

NOTES

  • This routine is not suited to return the multiplicities of anti-particles.
  • We count explicitly all "particles" (NOT ANTIPARTICLES) with IDs given in the array "particleIDs".


AnaEvent/event_sigma [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_sigma(E,sigma,newInit,runNumber,identifier)

PURPOSE

  • Output for single particle production sigma(total), e.g. pi+, pi-
  • Output for double particle production sigma(total), e.g. 2pi, 2N
  • Output for three particle production sigma(total), e.g. 3pi, 3N
  • Output for four particle production sigma(total), e.g. 4pi, 4N

INPUTS

  • type(tAnaEvent), dimension(:) :: E -- List of events
  • real, dimension(1:dimSigma,1:2),intent(inout),optional :: sigma -- List of Xsection which is being updated in this routine First index: : channel Second index : 1=sum over runs( Xsection of each run), 2=sum over runs(( Xsection of each run)**2)
  • logical,intent(inout),optional :: newInit
  • integer,intent(inout),optional :: runNumber
  • real, optional :: identifier -- Plotted in column 1 of the output file, if not present than we plot runNumber there

The optional input variable sigma returns the evaluated cross sections.

If newInit=.true., then the input sigma is initialized again (=0). If newInit=.false., then the input is used as a result of earlier runs and the results of the present run are just added.

If .true. then we assume that runNumber is the number to use as a normalization for the histogram results; We assume that the Xsection contain the results of "runNumber" runs.

NOTES

  • If there are more than one particle of the same species produced, then the event is not considered for the "single particle cross section". e.g. a pi^+ pi^0 event does not contribute to any of those cross sections.
  • If there are more than two particles of the same species produced, then the event is not considered for the "double particle cross section".
  • If there are more than three particles of the same species produced, then the event is not considered for the "three particle cross section".
  • If there are more than four particles of the same species produced, then the event is not considered for the "four particle cross section".

Note that e.g. 2pi/3pi means that two/three pions, no matter which charge, where found.

Note also that, e.g., "pi+ X" means that one piPlus was found. And if there is another particle of the same species, but with another charge, then we still count the event. E.g. for pi^+ pi^0 the event contributes both to "pi+ + X" and "pi0 + X"

OUTPUT


AnaEvent/sigma.dat [ Output files ]

[ Top ] [ AnaEvent ] [ Output files ]

NAME

file sigma.dat

PURPOSE

  • First column : Naming for different runs or runNumber
  • Columns 2-... : Single and multiparticle cross sections. The header of the file names the explicit channels.

NOTES

Cf. documenation in AnaEvent/event_sigma for the definition of "single" and "multi" particle cross sections. Especially note the exclusive aspects.


AnaEvent/event_dSigma_dOmega [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_dSigma_dOmega(E, dTheta, dPhi, string, runNumber, hists_theta, hists_phi, hists2D, initHists, makeOutputIn, sameFileNameIn)

PURPOSE

Output for single particle production dsigma/dTheta and dsigma/dTheta/dPhi with dTheta,dPhi in units of sr=radian for all particle-IDs includede in "particleIDs" (see above) and all charge states.

INPUTS

  • type(tAnaEvent), dimension(:) :: E -- List of events
  • real :: dTheta,dPhi -- Delta(Theta) and Delta(Phi) in [Radian]
  • character(*) :: string -- used as prefix for all output file
  • integer :: runNumber -- number of the run =1,2,3,4...

Optional:

  • type(histogram) intent(inout), dimension(lBound(particleIDs,dim=1):uBound(particleIDs,dim=1),-2:2) :: hists_theta,hists_phi
  • type(histogram2D), intent(inout), dimension(lBound(particleIDs,dim=1):uBound(particleIDs,dim=1),-2:2) :: hists2D
  • logical, intent(in) :: initHists
  • logical :: makeOutputIn -- Flag to switch off output (.false.=no output)
  • logical, intent(in) :: sameFileNameIn -- .true. = always print to same filenames, .false. = different files for different runs

These optional input variables return the evaluated histograms. In hists_theta you will find the dsigma_dtheta histograms, in hists_phi you will find the dsigma_dphi histograms and in hists2D dsigma_dOmega. They must be given all together, to make an effect on the program.

If initHists=.true., then the input histograms "hists_theta","hists_phi" and "hists2D" are initialized again. If inithists=.false. then the input histograms are used as results of earlier runs and the results of the present run are just added. If .true. then we assume that runNumber is the number to use as a normalization for the histogram results = We assume that the histograms contain the results of "runNumber" runs.

The fourth column in the histogram defines the error of the 2nd column (only if optional input is given!)

NOTES

If there are more than one particle of the same species produced, then the event is not considered for this "single particle cross section".

OUTPUT

  • filenames 'STRING_dsigma_dTheta...*.#.dat', 'STRING_dsigma_dTheta_Phi...*.#.dat' where #=1,2,3,... is given by runNumber and "STRING" by the input string.


AnaEvent/event_dSigma_dE [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_dSigma_dE(E, eMin, eMax, dE, string, runNumber, hists, initHists, makeOutputIn, sameFileNameIn, histsMulti, hists1X, hists2X)

PURPOSE

Output for single particle production dsigma_dE for all particle IDs included in the array "particleIDs" (see above) and all charge states.

INPUTS

  • type(tAnaEvent), dimension(:) :: E -- List of events
  • real :: eMin, eMax, dE -- Minimal/Maximal Ekin, Delta(Ekin) in [GeV]
  • character(*) :: string -- used as prefix for all output files
  • integer :: runNumber -- number of the run

Optional:

  • type(histogram), intent(inout), dimension(lBound(particleIDs,dim=1):uBound(particleIDs,dim=1),-2:2) :: hists
  • logical, intent(in) :: initHists
  • logical :: makeOutputIn -- Flag to switch off output (.false.=no output)
  • logical, intent(in) :: sameFileNameIn -- .true. = always print to same filenames, .false. = different files for different runs

These optional input variables return the evaluated histograms. In hists you will find the dsigma_dE.

If initHists=.true., then the input histograms "hists" and "histsMulti" are initialized again. If inithists=.false., then the input histograms are used as results of earlier runs and the results of the present run are just added. If .true. then we assume that runNumber is the number to use as a normalization for the histogram results = We assume that the histograms contain the results of "runNumber" runs.

NOTES

If there are more than one particle of the same species produced, then the event is not considered for the "single particle cross section", but for the "multi particle cross section".

OUTPUT

  • filenames 'STRING_dsigma_dEkin...*.#.dat' where #=1,2,3,... is given by runNumber and "STRING" by the input string.


AnaEvent/event_dSigma_dEcostheta [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_dSigma_dEcostheta(E, EcosthetaMin, EcosthetaMax, dEcostheta, string, runNumber, hists, hists_c, hists_MULTI, hists_c_MULTI, initHists, makeOutputIn, sameFileNameIn)

PURPOSE

Output for single particle production dsigma/d(E(1-cosTheta)) for all particle-IDs includede in "particleIDs" (see above) and all charge states. Theta is the angle of the outgoing particle with respect to the neutrino beam direction

The output is also given for dsigma/dcosTheta

INPUTS

  • type(tAnaEvent), dimension(:) :: E -- List of events
  • real ::
  • character(*), intent(in) :: string -- used as prefix for all output file
  • integer, intent(in) :: runNumber -- number of the run =1,2,3,4...

Optional:

  • type(histogram), intent(inout), dimension(lBound(particleIDs,dim=1):uBound(particleIDs,dim=1),-2:2) :: hists
  • logical, intent(in) :: initHists
  • logical ::makeOutputIn -- Flag to switch off output (.false.=no output)
  • logical , intent(in), optional ::sameFileNameIn -- .true. = always print to same filenames, .false. = different files for different runs

These optional input variables return the evaluated histograms.

If initHists=.true., then the input histograms are initialized again. If inithists=.false. then the input histograms are used as results of earlier runs and the results of the present run are just added. If .true. then we assume that runNumber is the number to use as a normalization for the histogram results = We assume that the histograms contain the results of "runNumber" runs.

The fourth column in the histogram defines the error of the 2nd column (only if optional input is given!)

NOTES

If there are more than one particle of the same species produced, then the event is not considered for this "single particle cross section".

OUTPUT

  • filenames 'STRING_dsigma_dEcostheta...*.#.dat', where #=1,2,3,... is given by runNumber and "STRING" by the input string.


AnaEvent/event_dSigma_dInvMass [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_dSigma_dInvMass(E, string, runNumber, dW_Npi, Wmin_Npi, Wmax_Npi, histsW_nucleon_pion, dW_mupi, Wmin_mupi, Wmax_mupi, histsW_muon_pion, dW_muN, Wmin_muN, Wmax_muN, histsW_muon_nucleon, initHists, makeOutputIn, sameFileNameIn)

PURPOSE

Output dsigma_d(InvariantMass) for 1 pion production process for 3 invariant masses: W(pion-nucleon'), W(muon-nucleon'), W(pion-nucleon') can be compared with the corresponding ANL and BNL data

INPUTS

  • type(tAnaEvent), dimension(:) :: E -- List of events
  • real :: dInvMass -- Delta(InvMass) in [GeV]
  • character(*) :: string -- used as prefix for all output files
  • integer :: runNumber -- number of the run

Optional:

  • type(histogram), intent(inout), dimension(lBound(particleIDs,dim=1):uBound(particleIDs,dim=1),-2:2) :: hists
  • logical, intent(in) :: initHists
  • logical :: makeOutputIn -- Flag to switch off output (.false.=no output)
  • logical, intent(in) :: sameFileNameIn -- .true. = always print to same filenames, .false. = different files for different runs

These optional input variables return the evaluated histograms. In hists you will find the dsigma_dInvMass.

If initHists=.true., then the input histograms "hists" is initialized again. If inithists=.false., then the input histograms are used as results of earlier runs and the results of the present run are just added. If .true. then we assume that runNumber is the number to use as a normalization for the histogram results = We assume that the histograms contain the results of "runNumber" runs.

OUTPUT

  • filenames 'STRING_dsigma_W...*.#.dat' where #=1,2,3,... is given by runNumber and "STRING" by the input string.


AnaEvent/event_dSigma_dLeptonVariables [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_dSigma_dLeptonVariables(E, eMin, eMax, dE, string, runNumber, hist_Enu, hist_E, hist_cos, hist_Q2, initHists, makeOutputIn, sameFileNameIn, specificEvent)

PURPOSE

Output dsi/dEkin, dsi/dcostheta for outgoing lepton and dsi/dQ^2

INPUTS

  • type(tAnaEvent), dimension(:) :: E -- List of events
  • real :: eMin, eMax, dE -- Minimal/Maximal Ekin, Delta(Ekin) in [GeV]
  • character(*) :: string -- used as prefix for all output files
  • integer :: runNumber -- number of the run

Optional:

  • type(histogram), intent(inout), dimension(lBound(particleIDs,dim=1):uBound(particleIDs,dim=1),-2:2) :: hist_Enu, hist_E, hist_cos, hist_Q2
  • logical, intent(in) :: initHists
  • logical :: makeOutputIn -- Flag to switch off output (.false.=no output)
  • logical, intent(in) :: sameFileNameIn -- .true. = always print to same filenames, .false. = different files for different runs
  • integer, intent(in) :: specificEvent -- specify final state (see subroutine SpecificEvent_Name)

These optional input variables return the evaluated histograms. In hist_E you will find the dsigma_dE(kinetic energy of the outgoing lepton). In hist_cos you will find the dsigma_dcostheta(angle of the outgoing lepton relative to incoming neutrino). In hist_Q2 you will find the dsigma_dQ^2.

If initHists=.true., then the input histograms "hists" and "histsMulti" are initialized again. If inithists=.false., then the input histograms are used as results of earlier runs and the results of the present run are just added. If .true. then we assume that runNumber is the number to use as a normalization for the histogram results = We assume that the histograms contain the results of "runNumber" runs.

OUTPUT

  • filenames 'STRING_dsigma_dEkin_lepton.#.dat'
  • filenames 'STRING_dsigma_dcos_lepton.#.dat'
  • filenames 'STRING_dsigma_dQ2_lepton.#.dat' where #=1,2,3,... is given by runNumber and "STRING" by the input string.


AnaEvent/event_Print [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_Print(L)

PURPOSE

Output the event.

INPUTS

  • type(tAnaEvent) :: L -- The event
  • integer :: iFile -- The number of the buffer to output into


AnaEvent/event_dump [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_dump(L,filename,onlyFreeParticles)

PURPOSE

Output a list of events.

INPUTS

  • type(tAnaEvent),dimension(:), intent(in) :: L -- The eventlist
  • character(100),intent(in) :: FileName -- The file name to write to
  • logical, optional :: onlyFreeParticles -- if .true. then only "free particles" are dumped. Here "free" means that p(0)^2-m_free^2 > 0. So far this is only implemented for nucleons.


AnaEvent/event_INIT [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_INIT(L)

PURPOSE

Set the multiplicity counters back to zero.

INPUTS

  • type(tAnaEvent) :: L -- The event

OUTPUT

(none)


AnaEvent/event_CLEAR [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_CLEAR(L)

PURPOSE

Reset the event: Delete the particleList and clear its memory. Set the multiplicity counters back to zero.

INPUTS

  • type(tAnaEvent) :: L -- The event

OUTPUT

(none)


AnaEvent/event_add [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_add(L,V)

PURPOSE

Adds the particle (which V points at) to the event.

INPUTS

  • type(tAnaEvent) :: L -- The event
  • type(particle), POINTER :: V -- The particle to add

OUTPUT

(none)


AnaEvent/event_getParticle [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

function event_getParticle(E,ID,Charge,n,P,antiparticle) RESULT (success)

PURPOSE

Search in the particle list of the event "E" the "n"-th particle in the list with %ID="ID". This particle "P" is then returned.

INPUTS

  • type(tAnaEvent) :: E -- The event
  • integer :: ID -- ID of particle which shall be returned
  • integer :: Charge -- charge of particle which shall be returned
  • integer :: n -- We return the n-th particle in the list with %ID=ID
  • logical, optional :: antiparticle -- Whether the particle should be an antiparticle, if not specified, then we search for a particle.

OUTPUT

  • type(particle) :: P -- n-th particle with wished ID
  • logical :: success -- True if it was possible to find n-Particles with the wished ID, False otherwise


AnaEvent/makeError_hist [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine makeError_hist(a,b)

PURPOSE

Set b%y(:,3)=a%y(:,3)+( b%y(:,1)- a%y(:,1))**2

Mainly useful for error calculations. Usually performed to the histogram after a run with a being the histogram before the run and b being the histogram after the run.

INPUTS

  • type(histogram), optional :: a -- Histogram of last run
  • type(histogram), intent(inOut) :: b -- Histogram now

If a is missing then we assume that the histogram was 0 at the last run

OUTPUT

  • type(histogram), intent(inOut) :: b -- Histogram now


AnaEvent/setError_hist [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine setError_hist(a,numRuns)

PURPOSE

Asume that a%yval(:,1) contains the following : sum over all runs(xSection of run). And asume that a%yval(:,3) contains the following : sum over all runs(xSection of run**2). The number of runs is given by numRuns.

Sets a%yval(:,3) to the statistical error of a%yval(:,1) times the number of runs (This is done because a%yval(:,1) is the mean value times the number of runs, too.

INPUTS

  • type(histogram), intent(inout) :: a --
  • integer,intent(in) :: numRuns --

OUTPUT


AnaEvent/event_DumpNumbers [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_DumpNumbers

PURPOSE

...

INPUTS

  • type(tAnaEvent) :: E ! The event

OUTPUT

  • to stdout


AnaEvent/event_pairPhotons [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_pairPhotons(L,filename,dsigma_dm_threeGammas,Hist_massPhotons)

PURPOSE

Outputs number of photons in one event and a histogram which gives the mass of all possible pairs of photons versus the mass of all possible triples. Additionally a cross section dsigma/dm_{3\gammas} is generated.

This is meant to reproduce an analysis procedure by the TAPS group.

INPUTS

  • type(tAnaEvent),dimension(:) :: L -- The eventlist
  • character(100) :: fileName_data,fileName_statistics -- The file name to write to


AnaEvent/event_hadronicEnergy [ Subroutines ]

[ Top ] [ AnaEvent ] [ Subroutines ]

NAME

subroutine event_hadronicEnergy(L,filename,Ehad_versusNu, dSigdNu, dSigdEhad)

PURPOSE

Outputs histograms:

  • Ehad_versusNu (2D) --- transferred energy (col#1) hadronic energy(col#2) xsec(col#3)
  • dSigdNu --- dsi/dnu
  • dSigdEhad --- dsi/dEhad
  • Enurestored_versusEnu --- neutrino energy(col#1) restored neutrino energy (col#2) xsec(col#3)
  • dSigdEnu --- dsi/dEnu
  • dSigdEnurestored --- dsi/dEnurestored

Additionally info "prod_id Enu Enu_restored nu Ehad perweight" for all events is written in the file

This is meant to reproduce the calorimetric analysis by the MINOS group.

NOTES

The results are averaged over num_Energies (and, of course, also over num_Runs_sameEnergy)

INPUTS

  • type(tAnaEvent),dimension(:) :: L -- The eventlist
  • real :: numin, numax, nubin -- min, max and bin for the nu,Ehad-related histograms
  • real :: Enumin, Enumax, Enubin -- min, max and bin for the Enu,Enurestored-related histograms

OUTPUT

  • type(histogram),dimension(0:5) :: Ehad_versusNu, dSigdNu, dSigdEhad
  • type(histogram),dimension(0:5) :: Enurestored_versusEnu, dSigdEnu, dSigdEnurestored where 0=all events, 1=QE, 2=Delta, 3=highRES, 4=bgr, 5=DIS