StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
THijing.h
1 /**********************************************************************
2  *
3  * Author: Chunhui Han
4  *
5  **********************************************************************/
6 extern "C" {
7  void hijset_(float *efrm, char *frame, char *proj, char *targ, int *iap, int *izp, int *iat, int *izt);
8  void hijing_(char *frame, float *bmin, float *bmax);
9  void rluxgo_(int *lux,int *iseed, int *k1, int *k2);
10  void rluxat_(int *lux,int *iseed, int *k1, int *k2);
11  void rluxut_(int *ivec);
12  void rluxin_(int *ivec);
13  void hijev_();
14  // definition for the common blocks in Hijing
15  extern struct {
16  int length;
17  char fileName[256];
18  } hfilename_;
19  extern struct {
20  int natt;
21  float eatt;
22  int jatt;
23  int nt;
24  int np;
25  int n0;
26  int n01;
27  int n10;
28  int n11;
29  } himain1_;
30  extern struct {
31  int katt[6][130000];
32  float patt[5][130000];
33  } himain2_;
34  extern struct{
35  float hipr1[100];
36  int ihpr2[50];
37  float hint1[100];
38  int ihnt2[50];
39  } hiparnt_;
40  extern struct {
41  int npj[300];
42  int kfpj[500][300];
43  float pjpx[500][300];
44  float pjpy[500][300]; //
45  float pjpz[500][300];
46  float pjpe[500][300];
47  float pjpm[500][300];
48  int ntj[300];
49  int kftj[500][300];
50  float pjtx[500][300];
51  float pjty[500][300];
52  float pjtz[500][300];
53  float pjte[500][300];
54  float pjtm[500][300];
55  } hijjet1_;
56  extern struct {
57  int nsg;
58  int njsg[900];
59  int iasg[3][900];
60  int k1sg[100][900];
61  int k2sg[100][900];
62  float pxsg[100][900];
63  float pysg[100][900];
64  float pzsg[100][900];
65  float pesg[100][900];
66  float pmsg[100][900];
67  } hijjet2_;
68  // definition of the common block used in hijev.f
69  extern struct {
70  float psshep[5];
71  float vsshep[4];
72  int ifirst;
73  int irun;
74  } headpss_;
75 }
76 
77 class THijing {
78  void init();
79  int mNevent;
80  public:
81  THijing( const char *paramFile );
82  ~THijing();
83  void SetRandomSeed(int iseed, int k1=0, int k2=0);
84  void GetRandomSeed(int *lux, int *iseed, int *k1, int *k2);
85  void SaveRandomSeeds(int *ivec);
86  void RestoreRandomSeeds(int *ivec);
87  void GenerateEvent();
88  int EventsToDo() const { return int(headpss_.vsshep[3]); }
89  int EventsGenerated() const { return mNevent; }
90  void writeOut() const;
91  int GetNParticles() const { return himain1_.natt; }
92  float GetPx(int i) const { return (i < himain1_.natt) ? himain2_.patt[0][i] : 0.; }
93  float GetPy(int i) const { return (i < himain1_.natt) ? himain2_.patt[1][i] : 0.; }
94  float GetPz(int i) const { return (i < himain1_.natt) ? himain2_.patt[2][i] : 0.; }
95  float GetVx(int i) const { return 0.; }
96  float GetVy(int i) const { return 0.; }
97  float GetVz(int i) const { return 0.; }
98  float GetE(int i) const { return (i < himain1_.natt) ? himain2_.patt[3][i] : 0.; }
99  int GetPdg(int i) const { return (i < himain1_.natt) ? himain2_.katt[0][i] : 0; }
100  int GetStatus(int i) const { return (i < himain1_.natt) ? himain2_.katt[3][i] : 0; }
101  int GetOrigin(int i) const { return (i < himain1_.natt) ? himain2_.katt[1][i] : -1; }
102  int GetNStableParticles() const { return himain1_.natt; }
103  int GetNWoundedTargNucleons() const { return himain1_.nt; }
104  int GetNWoundedProjNucleons() const { return himain1_.np; }
105  int GetParticipants() const { return himain1_.np+himain1_.nt; }
106  int GetBinaryCollisions() const {
107  return himain1_.n0+himain1_.n01+himain1_.n10+himain1_.n11;
108  }
109  float GetImpactParameter() const { return hiparnt_.hint1[18]; }
110  float GetOrientation() const { return hiparnt_.hint1[19]; }
111 };