Files
geant4/examples/extended/hadronic/Hadr02/include/G4HIJING_Interface.hh
2025-12-05 08:54:02 +01:00

285 lines
7.8 KiB
C++

//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file G4HIJING_Interface.hh
/// \brief Definition of the G4HIJING_Interface class
#ifndef G4HIJING_Interface_hh
#define G4HIJING_Interface_hh
//
// MODULE: G4HIJING_Model.hh
//
// Version: 1.B
// Date: 10/09/2013
// Author: Khaled Abdel-Waged
// Institute: Umm Al-Qura University
// Country: SAUDI ARABIA
//
// First: 1-COMMON BLOCK FOR OPTIONS AND PARAMETERS
//-----
// HIPARNT
// input parameters
// HIPR1, HIPR2 for event options
// HINT1, HINT2 of current event
//---------------------------------
struct cchijinghiparnt
{
float hipr1[100];
G4int ihpr2[50];
float hint1[100];
G4int ihnt2[50];
};
//****************************************************************************
// Second: 5-COMMON BLOCKS FOR EVENT INFORMATION
//----------------------------------------------------------------------------
//
// HIMAIN1-> Global information of the events are defined
//
struct cchijinghimain1
{
G4int natt;
float eatt;
G4int jatt, nt, np, n0, n01, n10, n11;
};
//-----------
// HIMAIN2->information of produced stable and undecayed particles
//-------
struct cchijinghimain2
{
G4int katt[4][130000];
float patt[4][130000];
};
//--------
// HIJJET1-> information about produced partons which
// are connected with the valence quarks, diquarks,...
//--------
struct cchijinghijjet1
{
G4int npj[300], kfpj[500][300];
float pjpx[500][300], pjpy[500][300], pjpz[500][300], pjpe[500][300];
float pjpm[500][300];
G4int ntj[300], kftj[500][300];
float pjtx[500][300], pjty[500][300], pjtz[500][300];
float pjte[500][300], pjtm[500][300];
};
//--------
// HIJJET1-> information about produced partons which
// will form string systems without being connected with
// valence quarks, diquarks,...
// ------
struct cchijinghijjet2
{
G4int nsg, njsg[900], iasg[3][900], k1sg[100][900];
G4int k2sg[100][900];
float pxsg[100][900], pysg[100][900], pzsg[100][900];
float pesg[100][900], pmsg[100][900];
};
//------
// HISTRNG
// contain information about the projectile and target nucleons
//-----
struct cchijinghistrng
{
G4int nfp[15][300];
float pp[15][300];
G4int nft[15][300];
float pt[15][300];
};
//****************************************************************************
// third: 2-COMMON BLOCKS which contain specific information
//----------------------------------------------------------------------------
struct cchijinghijjet4
{
G4int ndr, iadr[2][900], kfdr[900];
float pdr[5][900];
};
struct cchijinghijcrdn
{
float yp[300][3], yt[300][3];
};
//---------------------------------------------------------
// fourth: 5-Other common blocks
// --------------------------------------------------------
struct cchijingbveg1
{
float xl, xu, acc;
G4int ndim, ncall, itmx, nprn;
};
struct cchijingseedvax
{
G4int num1;
};
struct cchijingranseed
{
float nseed;
};
struct cchijinghijdat
{
float hidat0[10][10], hidat[10];
};
struct cchijinghipyint
{
G4int mint4, mint5;
float atco[20][200], atxs[200 + 1];
};
// hijing
extern "C"
{
// initialize HIJING for specified event type,
// collision frame and energy
// extern void hijset_ (float*,
//// const char*, const char*,const char*,
// G4int*, G4int*, G4int*, G4int*);
extern void hijset_(float*);
// to generate a complete event as specified by sybroutine HIJSET
// extern void hijing_ (const char*,
// float*, float*);
extern void hijing_(float*, float*);
extern float ulmass_(G4int*);
// reset all relevant common blocks and variables and initialize HIJING
// for each event
extern void hijini_();
// calculate cross sections for minijet production, cross section of
// the triggered processes, elastic, inelastic, total cross section..
extern void hijcrs_();
//
// initialize program for generating hard scattering
// as specified by parameters and options
extern void jetini_(G4int*, G4int*, G4int*);
//
// re-initiate PYTHIA for the triggered hard processe
// or simulate one hard scattering among the multiple jet production
// per NN-collision
extern void hijhrd_(G4int*, G4int*, G4int*, G4int*, G4int*);
//
// generate soft interaction for each binary NN-collision
extern void hijsft_(G4int*, G4int*, G4int*);
// rearrange gluon jets in a string system according to their rapidities
extern void hijsrt_(G4int*, G4int*);
// perform jet quenching by allowing final state interaction of produced jet
// inside excited strings
extern void quench_(G4int*, G4int*);
//
// arrange produced partons together with the valence quarks and diquarks
extern void hijfrg_(G4int*, G4int*, G4int*);
// perform soft radiation according to the Lund dipole approx.
extern void attrad_(G4int*);
// generate flavor codes of the valence quark (diquark)
// inside a given nucleon (hadron).
extern void attflv_(G4int*, G4int*, G4int*);
// perform elastic scattering and possible elastic NN cascading
extern void hijcsc_(G4int*, G4int*);
// three parameter Wood-Sax distribution
extern void hijwds_(G4int*, G4int*, float*);
// gives profile function of 2 colliding nuclei at a given impact parameter
extern float profile_(float*);
// transform the produced particles from c.m to lab frame
extern void hiboost_();
//----------------------------------------
// the default values of the parametrs and options to initialize
// the event record common blocks
extern void g4hijingblockdata_();
// ----------------------
// random generator
extern void rlu_(G4int*);
//-----------------------------------------
extern struct cchijinghiparnt hiparnt_;
extern struct cchijinghimain1 himain1_;
extern struct cchijinghimain2 himain2_;
extern struct cchijinghijjet1 hijjet1_;
extern struct cchijinghijjet2 hijjet2_;
extern struct cchijinghistrng histrng_;
extern struct cchijinghijjet4 hijjet4_;
extern struct cchijinghijcrdn hijcrdn_;
extern struct cchijingbveg1 bveg1_;
extern struct cchijingseedvax seedvax_;
extern struct cchijingranseed ranseed_;
extern struct cchijinghijdat hijdat_;
extern struct cchijinghipyint hipyint_;
}
#endif