#include "TDPMjet.h"
//*KEEP,DPMCOMMON.
#include "DPMcommon.h"
-//*KEEP,TParticle,T=C++.
+//*KEEP,TParticle,T=C++
#include "TParticle.h"
+#include "TClonesArray.h"
//*KEND.
//*KEEP,TROOT.
# define dt_rndmst dt_rndmst_
# define dt_rndmin dt_rndmin_
# define dt_rndmou dt_rndmou_
+# define dpmjet_openinp dpmjet_openinp_
# define type_of_call
#else
# define dt_dtuini DT_DTUINI
# define dt_rndmst DT_RNDMST
# define dt_rndmin DT_RNDMIN
# define dt_rndmou DT_RNDMOU
+# define dpmjet_openinp DPMJET_OPENINP
# define type_of_call _stdcall
#endif
extern "C" void type_of_call dt_rndmst(Int_t &, Int_t &, Int_t &, Int_t &);
extern "C" void type_of_call dt_rndmin(Int_t &, Int_t &, Int_t &, Int_t &, Int_t &, Int_t &);
extern "C" void type_of_call dt_rndmou(Int_t &, Int_t &, Int_t &, Int_t &, Int_t &, Int_t &);
+extern "C" void type_of_call dpmjet_openinp();
#else
ClassImp(TDPMjet)
+
//______________________________________________________________________________
-TDPMjet::TDPMjet() : TGenerator("dpmjet","dpmjet")
+ TDPMjet::TDPMjet() :
+ TGenerator("dpmjet","dpmjet"),
+ fNEvent(0),
+ fIp(0),
+ fIpz(0),
+ fIt(0),
+ fItz(0),
+ fEpn(0.),
+ fPpn(0.),
+ fCMEn(0.),
+ fIdp(0),
+ fBmin(0.),
+ fBmax(0.),
+ fFCentr(0),
+ fPi0Decay(0),
+ fProcess(kDpmMb)
{
- fNEvent = 0;
- fIp = 0;
- fIpz = 0;
- fIt = 0;
- fItz = 0;
- fEpn = 0;
- fCMEn = 0;
- fIdp = 0;
- fProcess = kDpmMb;
+// Default Constructor
}
//______________________________________________________________________________
TDPMjet::TDPMjet(DpmProcess_t iproc, Int_t Ip=208, Int_t Ipz=82, Int_t It=208, Int_t Itz=82,
- Double_t Epn=2700., Double_t CMEn=5400.)
- : TGenerator("dpmjet","dpmjet")
+ Double_t Epn=2700., Double_t CMEn=5400.)
+ : TGenerator("dpmjet","dpmjet"),
+ fNEvent(0),
+ fIp(Ip),
+ fIpz(Ipz),
+ fIt(It),
+ fItz(Itz),
+ fEpn(Epn),
+ fPpn(0.),
+ fCMEn(CMEn),
+ fIdp(0),
+ fBmin(0.),
+ fBmax(0.),
+ fFCentr(0),
+ fPi0Decay(0),
+ fProcess(iproc)
{
printf("TDPMJet Constructor %d %d %d %d \n", Ip, Ipz, It, Itz);
-
- fNEvent = 0;
- fIp = Ip;
- fIpz = Ipz;
- fIt = It;
- fItz = Itz;
- fEpn = Epn;
- fCMEn = CMEn;
- fIdp = 0;
- fProcess = iproc;
}
//
FILE* out = fopen("dpmjet.inp","w");
// Projectile and Target definition
- fprintf(out, "PROJPAR %10.1f%10.1f%10.1f%10.1f%10.1f%10.1f\n", (Float_t) fIp, (Float_t) fIpz, 0., 0., 0., 0.);
- fprintf(out, "TARPAR %10.1f%10.1f%10.1f%10.1f%10.1f%10.1f\n", (Float_t) fIt, (Float_t) fItz, 0., 0., 0., 0.);
+ if (fIp == 1 && fIpz ==1) {
+ fprintf(out, "PROJPAR PROTON\n");
+ } else if (fIp == 1 && fIpz == -1) {
+ fprintf(out, "PROJPAR APROTON\n");
+ } else {
+ fprintf(out, "PROJPAR %10.1f%10.1f%10.1f%10.1f%10.1f%10.1f\n", (Float_t) fIp, (Float_t) fIpz, 0., 0., 0., 0.);
+ }
+
+ if (fIt == 1 && fItz ==1) {
+ fprintf(out, "TARPAR PROTON\n");
+ } else if (fIt == 1 && fItz == -1) {
+ fprintf(out, "TARPAR APROTON\n");
+ } else {
+ fprintf(out, "TARPAR %10.1f%10.1f%10.1f%10.1f%10.1f%10.1f\n", (Float_t) fIt, (Float_t) fItz, 0., 0., 0., 0.);
+ }
+
// Beam energy and crossing-angle
fprintf(out, "BEAM %10.1f%10.1f%10.1f%10.1f%10.1f%10.1f\n",fEpn, fEpn, 0., 0., 0., 0.);
// Centrality
fprintf(out, "CENTRAL %10.1f%10.1f%10.1f%10.1f%10.1f%10.1f\n",-1., fBmin, fBmax, 0., 0., 0.);
-
+// Particle decays
+ if (fPi0Decay)
+ fprintf(out, "PARDECAY %10.1f%10.1f%10.1f%10.1f%10.1f%10.1f\n", 2., 0., 0., 0., 0., 0.);
//
// PHOJET specific
fprintf(out, "PHOINPUT\n");
fprintf(out, "DEBUG 0 0 0 \n");
-
+
if (fProcess == kDpmMb) {
fprintf(out, "PROCESS 1 0 1 1 1 1 1 1\n");
} else if (fProcess == kDpmMbNonDiffr) {
fprintf(out, "PROCESS 1 0 1 1 0 0 0 1\n");
+ } else if (fProcess == kDpmDiffr) {
+ fprintf(out, "PROCESS 0 0 0 0 1 1 1 0\n");
+ }else if (fProcess == kDpmSingleDiffr) {
+ fprintf(out, "PROCESS 0 0 0 0 1 1 0 0\n");
+ }else if (fProcess == kDpmDoubleDiffr) {
+ fprintf(out, "PROCESS 0 0 0 0 0 0 1 0\n");
}
fprintf(out, "ENDINPUT\n");
fprintf(out, "START 1.0 0.0\n");
fprintf(out, "STOP\n");
fclose(out);
+ dpmjet_openinp();
+
//
// Call DPMJET initialisation
Int_t iemu = 0; // No emulsion (default)
{
return DTGLCP.nwtbac;
}
-
+//______________________________________________________________________________
+Int_t TDPMjet::GetProcessCode() const
+{
+ return POPRCS.iproce;
+}
//______________________________________________________________________________
void TDPMjet::Dt_Rndm(int idummy)
{