00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef PYTHIA_TPythia6
00013 #define PYTHIA_TPythia6
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 #ifndef ROOT_TPythia6Calls
00079 #include "TPythia6Calls.h"
00080 #endif
00081
00082 #ifndef ROOT_TGenerator
00083 #include "TGenerator.h"
00084 #endif
00085
00086 #ifndef ROOT_TObjArray
00087 #include "TObjArray.h"
00088 #endif
00089
00090 class TPythia6 : public TGenerator {
00091
00092 protected:
00093 static TPythia6* fgInstance;
00094
00095 Pyjets_t* fPyjets;
00096 Pydat1_t* fPydat1;
00097 Pydat2_t* fPydat2;
00098 Pydat3_t* fPydat3;
00099 Pydat4_t* fPydat4;
00100 Pydatr_t* fPydatr;
00101 Pysubs_t* fPysubs;
00102 Pypars_t* fPypars;
00103 Pyint1_t* fPyint1;
00104 Pyint2_t* fPyint2;
00105 Pyint3_t* fPyint3;
00106 Pyint4_t* fPyint4;
00107 Pyint5_t* fPyint5;
00108 Pyint6_t* fPyint6;
00109 Pyint7_t* fPyint7;
00110 Pyint8_t* fPyint8;
00111 Pyint9_t* fPyint9;
00112 Pymssm_t* fPymssm;
00113 Pyssmt_t* fPyssmt;
00114 Pyints_t* fPyints;
00115 Pybins_t* fPybins;
00116
00117 class TPythia6Cleaner {
00118 public:
00119 TPythia6Cleaner();
00120 ~TPythia6Cleaner();
00121 };
00122 friend class TPythia6Cleaner;
00123
00124 TPythia6(const TPythia6&);
00125 TPythia6& operator=(const TPythia6&);
00126
00127 public:
00128
00129 TPythia6();
00130 virtual ~TPythia6();
00131
00132 static TPythia6 *Instance();
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142 Pyjets_t* GetPyjets () { return fPyjets; }
00143 int GetN () { return fPyjets->N; }
00144 int GetNPAD () { return fPyjets->NPAD; }
00145 int GetK(int ip, int i) { return fPyjets->K[i-1][ip-1]; }
00146 double GetP(int ip, int i) { return fPyjets->P[i-1][ip-1]; }
00147 double GetV(int ip, int i) { return fPyjets->V[i-1][ip-1]; }
00148
00149 void SetN (int n) { fPyjets->N = n; }
00150 void SetNPAD (int n) { fPyjets->NPAD = n; }
00151 void SetK(int ip, int i, int k) { fPyjets->K[i-1][ip-1] = k; }
00152 void SetP(int ip, int i, double p) { fPyjets->P[i-1][ip-1] = p; }
00153 void SetV(int ip, int i, double v) { fPyjets->V[i-1][ip-1] = v; }
00154
00155
00156
00157 Pydat1_t* GetPydat1 () { return fPydat1; }
00158 int GetMSTU(int i) { return fPydat1->MSTU[i-1]; }
00159 double GetPARU(int i) { return fPydat1->PARU[i-1]; }
00160 int GetMSTJ(int i) { return fPydat1->MSTJ[i-1]; }
00161 double GetPARJ(int i) { return fPydat1->PARJ[i-1]; }
00162
00163 void SetMSTU(int i, int m ) { fPydat1->MSTU[i-1] = m; }
00164 void SetPARU(int i, double p) { fPydat1->PARU[i-1] = p; }
00165 void SetMSTJ(int i, int m ) { fPydat1->MSTJ[i-1] = m; }
00166 void SetPARJ(int i, double p) { fPydat1->PARJ[i-1] = p; }
00167
00168
00169
00170 Pydat2_t* GetPydat2 () { return fPydat2; }
00171 int GetKCHG(int ip, int i) { return fPydat2->KCHG[i-1][ip-1]; }
00172 double GetPMAS(int ip, int i) { return fPydat2->PMAS[i-1][ip-1]; }
00173 double GetPARF (int i) { return fPydat2->PARF[i-1]; }
00174 double GetVCKM(int i, int j) { return fPydat2->VCKM[j-1][i-1]; }
00175
00176 void SetKCHG(int ip, int i, int k ) { fPydat2->KCHG[i-1][ip-1] = k; }
00177 void SetPMAS(int ip, int i, double m) { fPydat2->PMAS[i-1][ip-1] = m; }
00178 void SetPARF (int i, double p) { fPydat2->PARF[i-1] = p; }
00179 void SetVCKM (int i, int j, double v) { fPydat2->VCKM[j-1][i-1] = v; }
00180
00181
00182
00183 Pydat3_t* GetPydat3() { return fPydat3; }
00184 int GetMDCY(int i, int j) { return fPydat3->MDCY[j-1][i-1]; }
00185 int GetMDME(int i, int j) { return fPydat3->MDME[j-1][i-1]; }
00186 double GetBRAT (int i) { return fPydat3->BRAT[i-1]; }
00187 int GetKFDP(int i, int j) { return fPydat3->KFDP[j-1][i-1]; }
00188
00189 void SetMDCY(int i, int j, int m) { fPydat3->MDCY[j-1][i-1] = m; }
00190 void SetMDME(int i, int j, int m) { fPydat3->MDME[j-1][i-1] = m; }
00191 void SetBRAT(int i, double b) { fPydat3->BRAT[i-1] = b; }
00192 void SetKFDP(int i, int j, int k) { fPydat3->KFDP[j-1][i-1] = k; }
00193
00194
00195
00196 Pydat4_t* GetPydat4() { return fPydat4; }
00197
00198
00199
00200 Pydatr_t* GetPydatr () { return fPydatr; }
00201 int GetMRPY(int i) { return fPydatr->MRPY[i-1]; }
00202 double GetRRPY(int i) { return fPydatr->RRPY[i-1]; }
00203
00204 void SetMRPY(int i, int m) { fPydatr->MRPY[i-1] = m; }
00205 void SetRRPY(int i, double r) { fPydatr->RRPY[i-1] = r; }
00206
00207
00208
00209 Pysubs_t* GetPysubs () { return fPysubs; }
00210 int GetMSEL () { return fPysubs->MSEL; }
00211 int GetMSELPD () { return fPysubs->MSELPD; }
00212 int GetMSUB (int i) { return fPysubs->MSUB[i-1]; }
00213 double GetCKIN (int i) { return fPysubs->CKIN[i-1]; }
00214 Int_t GetKFIN(int i, int j) {return fPysubs->KFIN[j+40][i-1]; }
00215
00216 void SetMSEL (int m) { fPysubs->MSEL = m; }
00217 void SetMSELPD (int m) { fPysubs->MSELPD = m; }
00218 void SetMSUB (int i, int m) { fPysubs->MSUB[i-1] = m; }
00219 void SetCKIN (int i, double c) { fPysubs->CKIN[i-1] = c; }
00220 void SetKFIN(int i, int j, Int_t kfin=1) { fPysubs->KFIN[j+40][i-1] = kfin; }
00221
00222
00223
00224 Pypars_t* GetPypars() { return fPypars; }
00225 int GetMSTP(int i) { return fPypars->MSTP[i-1]; }
00226 double GetPARP(int i) { return fPypars->PARP[i-1]; }
00227 int GetMSTI(int i) { return fPypars->MSTI[i-1]; }
00228 double GetPARI(int i) { return fPypars->PARI[i-1]; }
00229
00230 void SetMSTP (int i, int m) { fPypars->MSTP[i-1] = m; }
00231 void SetPARP (int i, double p) { fPypars->PARP[i-1] = p; }
00232 void SetMSTI (int i, int m) { fPypars->MSTI[i-1] = m; }
00233 void SetPARI (int i, double p) { fPypars->PARI[i-1] = p; }
00234
00235
00236
00237 Pyint1_t* GetPyint1() { return fPyint1; }
00238 int GetMINT(int i) { return fPyint1->MINT[i-1]; }
00239 double GetVINT(int i) { return fPyint1->VINT[i-1]; }
00240
00241 void SetMINT(int i, int m ) { fPyint1->MINT[i-1] = m; }
00242 void SetVINT(int i, double v) { fPyint1->VINT[i-1] = v; }
00243
00244
00245
00246 Pyint2_t* GetPyint2() { return fPyint2; }
00247 Pyint3_t* GetPyint3() { return fPyint3; }
00248
00249
00250
00251 Pyint4_t* GetPyint4() { return fPyint4; }
00252 int GetMWID (int i) { return fPyint4->MWID[i-1]; }
00253 double GetWIDS(int i,int j) { return fPyint4->WIDS[j-1][i-1]; }
00254
00255 void SetMWID(int i, int m) { fPyint4->MWID[i-1] = m; }
00256 void SetWIDS(int i, int j, double w) { fPyint4->WIDS[j-1][i-1] = w; }
00257
00258
00259
00260 Pyint5_t* GetPyint5() { return fPyint5; }
00261 int GetNGENPD() { return fPyint5->NGENPD; }
00262 void SetNGENPD(int n) { fPyint5->NGENPD = n; }
00263
00264
00265
00266 Pyint6_t* GetPyint6 () { return fPyint6; }
00267 char* GetPROC(int i) { fPyint6->PROC[i][27]=0; return fPyint6->PROC[i]; }
00268
00269 Pyint7_t* GetPyint7() { return fPyint7; }
00270 Pyint8_t* GetPyint8() { return fPyint8; }
00271 Pyint9_t* GetPyint9() { return fPyint9; }
00272
00273
00274
00275
00276 Pymssm_t* GetPymssm() { return fPymssm; }
00277 int GetIMSS(int i) { return fPymssm->IMSS[i]; }
00278 double GetRMSS(int i) { return fPymssm->RMSS[i]; }
00279
00280 void SetIMSS(int i, int m) { fPymssm->IMSS[i] = m; }
00281 void SetRMSS(int i, double r) { fPymssm->RMSS[i] = r; }
00282
00283
00284
00285 Pyssmt_t* GetPyssmt() { return fPyssmt; }
00286 double GetZMIX(int i, int j) { return fPyssmt->ZMIX[j-1][i-1]; }
00287 double GetUMIX(int i, int j) { return fPyssmt->UMIX[j-1][i-1]; }
00288 double GetVMIX(int i, int j) { return fPyssmt->VMIX[j-1][i-1]; }
00289 double GetSMZ (int i) { return fPyssmt->SMZ[i-1]; }
00290 double GetSMW (int i) { return fPyssmt->SMW[i-1]; }
00291
00292 void SetZMIX(int i, int j, double z) { fPyssmt->ZMIX[j-1][i-1] = z; }
00293 void SetUMIX(int i, int j, double u) { fPyssmt->UMIX[j-1][i-1] = u; }
00294 void SetSMZ (int i, double s) { fPyssmt->SMZ[i-1] = s; }
00295 void SetSMW (int i, double s) { fPyssmt->SMW[i-1] = s; }
00296
00297 Pyints_t* GetPyints() { return fPyints; }
00298 Pybins_t* GetPybins() { return fPybins; }
00299
00300
00301
00302 void GenerateEvent();
00303
00304 void Initialize(const char *frame, const char *beam, const char *target, float win);
00305
00306 Int_t ImportParticles(TClonesArray *particles, Option_t *option="");
00307 TObjArray *ImportParticles(Option_t *option="");
00308
00309 void OpenFortranFile(int lun, char* name);
00310 void CloseFortranFile(int lun);
00311 int Pychge(int kf);
00312 int Pycomp(int kf);
00313 void Pydiff();
00314 void Pyedit(int medit);
00315 void Pyevnt();
00316 void Py1ent(Int_t line, Int_t kf, Double_t pe, Double_t theta, Double_t phi);
00317 void Pyexec();
00318 void Pyhepc(int mconv);
00319 void Pygive(const char *param);
00320 void Pyinit(char* frame, char* beam, char* target, double wint);
00321 void Pylist(int flag);
00322 double Pymass(int kf);
00323 void Pyname(int kf, char* name);
00324 double Pyr(int idummy);
00325 void Pyrget(int lun, int move);
00326 void Pyrset(int lun, int move);
00327 void Pystat(int flag);
00328 void Pytest(int flag);
00329 void Pytune(int itune);
00330 void Pyupda(int mupda, int lun);
00331 void SetupTest();
00332
00333 ClassDef(TPythia6,0)
00334 };
00335
00336 #endif