]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TDPMjet/TDPMjet.cxx
Cable length delays and time-of-flight measurements: added during the raw data writin...
[u/mrichter/AliRoot.git] / TDPMjet / TDPMjet.cxx
index 652c1c2dd513d66a20a29e35ec837c42603e5157..aa3524960c9b63f39ddc534f0e1651b8ef929587 100644 (file)
@@ -39,8 +39,9 @@
 #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.
@@ -57,6 +58,7 @@
 # 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
@@ -68,6 +70,7 @@
 # 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
 
@@ -83,6 +86,7 @@ extern "C" void   type_of_call dt_rndm(Int_t &);
 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
 
@@ -90,36 +94,48 @@ extern "C" void   type_of_call dt_rndmou(Int_t &, Int_t &, Int_t &, Int_t &, Int
 
 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;
 }
 
 
@@ -237,22 +253,44 @@ void TDPMjet::Initialize()
 //
     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");
@@ -261,6 +299,8 @@ void TDPMjet::Initialize()
     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)
@@ -446,7 +486,11 @@ Int_t TDPMjet::GetTargSpectators() const
 {
        return DTGLCP.nwtbac;
 }
-
+//______________________________________________________________________________
+Int_t TDPMjet::GetProcessCode() const
+{
+               return POPRCS.iproce;
+}
 //______________________________________________________________________________
 void TDPMjet::Dt_Rndm(int idummy)
 {