Fixed warnings, coding conventions, updates (Ionut, Ludmila)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 9 Jun 2009 08:28:15 +0000 (08:28 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 9 Jun 2009 08:28:15 +0000 (08:28 +0000)
18 files changed:
TUHKMgen/AliGenUHKM.cxx
TUHKMgen/AliGenUHKM.h
TUHKMgen/PYQUEN/progs_fortran.f
TUHKMgen/TUHKMgen.cxx
TUHKMgen/TUHKMgen.h
TUHKMgen/UHKM/DatabasePDG.cxx
TUHKMgen/UHKM/HYJET_COMMONS.h
TUHKMgen/UHKM/HadronDecayer.cxx
TUHKMgen/UHKM/InitialState.cxx
TUHKMgen/UHKM/InitialStateHydjet.cxx
TUHKMgen/UHKM/InitialStateHydjet.h
TUHKMgen/UHKM/Particle.cxx
TUHKMgen/UHKM/Particle.h
TUHKMgen/UHKM/ParticlePDG.cxx
TUHKMgen/UHKM/ParticlePDG.h
TUHKMgen/UHKM/particles.data
TUHKMgen/UHKM/tabledecay.txt
TUHKMgen/libTUHKMgen.pkg

index e7cdb27..42a89ba 100755 (executable)
@@ -14,7 +14,7 @@
 //                                                                         //
 ////////////////////////////////////////////////////////////////////////////
 
-#include <TUHKMgen.h>
+#include "TUHKMgen.h"
 #ifndef DATABASE_PDG
 #include "DatabasePDG.h"
 #endif
 #include <string>
 using namespace std;
 
+//class TClonesArray;
+//enum TMCProcess;
+//class AliRun;
+//class TSystem;
+//class AliDecayer; 
+
 ClassImp(AliGenUHKM)
 
 //_______________________________________
@@ -49,14 +55,11 @@ AliGenUHKM::AliGenUHKM()
    fTrials(0),
    fUHKMgen(0),
    fHydjetParams(),
-   fStableFlagged(0),
-   fUseCharmParticles(kFALSE),
-   fMinWidth(0.0),
-   fMaxWidth(10.0),
-   fMinMass(0.0001),
-   fMaxMass(10.0)
+   fStableFlagged(0)
 {
-  cout << "AliGenUHKM::AliGenUHKM() IN" << endl;
+  // Default constructor setting up default reasonable parameter values
+  // for central Pb+Pb collisions at 5.5TeV 
+  //  cout << "AliGenUHKM::AliGenUHKM() IN" << endl;
   
   // LHC
   fHydjetParams.fSqrtS=5500; //LHC
@@ -129,7 +132,7 @@ AliGenUHKM::AliGenUHKM()
   }
   fStableFlagged = 0;
 
-  cout << "AliGenUHKM::AliGenUHKM() OUT" << endl;
+  //  cout << "AliGenUHKM::AliGenUHKM() OUT" << endl;
 }
 
 //_______________________________________
@@ -138,18 +141,15 @@ AliGenUHKM::AliGenUHKM(Int_t npart)
    fTrials(0),
    fUHKMgen(0),
    fHydjetParams(),
-   fStableFlagged(0),
-   fUseCharmParticles(kFALSE),
-   fMinWidth(0.0),
-   fMaxWidth(10.0),
-   fMinMass(0.0001),
-   fMaxMass(10.0)
+   fStableFlagged(0)
 {
-  cout << "AliGenUHKM::AliGenUHKM(Int_t) IN" << endl;
+  // Constructor specifying the size of the particle table
+  // and setting up default reasonable parameter values
+  // for central Pb+Pb collisions at 5.5TeV
+  //  cout << "AliGenUHKM::AliGenUHKM(Int_t) IN" << endl;
   fName = "UHKM";
   fTitle= "Particle Generator using UHKM 3.0";
 
-  // Constructor specifying the size of the particle table
   fNprimaries = 0;   
 
   //LHC
@@ -223,15 +223,19 @@ AliGenUHKM::AliGenUHKM(Int_t npart)
   }
   fStableFlagged = 0;  
 
-  cout << "AliGenUHKM::AliGenUHKM(Int_t) OUT" << endl;
+  //  cout << "AliGenUHKM::AliGenUHKM(Int_t) OUT" << endl;
 }
 
 //__________________________________________
 AliGenUHKM::~AliGenUHKM()
-{}
+{
+  // Destructor, do nothing
+}
 
 void AliGenUHKM::SetAllParametersRHIC() 
 {
+  // Set reasonable default parameters for 0-5% central Au+Au collisions
+  // at 200 GeV at RHIC
   SetEcms(200.0);                // RHIC top energy
   SetAw(197);                    // Au+Au
   SetBmin(0.0);                  // 0%
@@ -250,7 +254,7 @@ void AliGenUHKM::SetAllParametersRHIC()
   SetEtaRMax(1.1);               // Umax = 1.1
   SetMomAsymmPar(0.0);           // delta = 0.0
   SetCoordAsymmPar(0.0);         // epsilon = 0.0
-  SetFlagWeakDecay(0);           // weak decay on (<0 off !!!)
+  //  SetFlagWeakDecay(0);           // weak decay on (<0 off !!!)
   SetEtaType(1);                 // gaus distributed with fYmax dispersion (0 means boost invariant)
   SetGammaS(1.0);                // gammaS = 1.0 (no strangeness canonical suppresion)
   SetPyquenNhsel(2);             // hydro on, jets on, jet quenching on
@@ -265,6 +269,8 @@ void AliGenUHKM::SetAllParametersRHIC()
 
 void AliGenUHKM::SetAllParametersLHC()
 {
+  // Set reasonable default parameters for 0-5% central Pb+Pb collisions
+  // at 5.5 TeV at LHC
   SetEcms(5500.0);               // LHC
   SetAw(207);                    // Pb+Pb
   SetBmin(0.0);                  // 0%
@@ -283,7 +289,7 @@ void AliGenUHKM::SetAllParametersLHC()
   SetEtaRMax(1.1);               // Umax = 1.1
   SetMomAsymmPar(0.0);           // delta = 0.0
   SetCoordAsymmPar(0.0);         // epsilon = 0.0
-  SetFlagWeakDecay(0);           // weak decay on (<0 off !!!)
+  //  SetFlagWeakDecay(0);           // weak decay on (<0 off !!!)
   SetEtaType(1);                 // gaus distributed with fYmax dispersion (0 means boost invariant)
   SetGammaS(1.0);                // gammaS = 1.0 (no strangeness canonical suppresion)
   SetPyquenNhsel(2);             // hydro on, jets on, jet quenching on
@@ -299,27 +305,32 @@ void AliGenUHKM::SetAllParametersLHC()
 //_________________________________________
 void AliGenUHKM::Init()
 {
-  cout << "AliGenUHKM::Init() IN" << endl;
+  // Initialization of the TGenerator::TUHKMgen interface object. 
+  // Model input parameters are transmited to the TUHKMgen object which forwards them
+  // further to the model.
+  // HYDJET++ is initialized (average multiplicities are calculated, particle species definitions and decay
+  // channels are loaded, etc.)
+  //  cout << "AliGenUHKM::Init() IN" << endl;
 
   SetMC(new TUHKMgen());
   fUHKMgen = (TUHKMgen*) fMCEvGen;
   SetAllParameters();
-
+  
   AliGenMC::Init();
 
   fUHKMgen->Initialize();
-  CheckPDGTable();
+  CheckPDGTable();    //
 
-  fUHKMgen->Print();
-  cout << "AliGenUHKM::Init() OUT" << endl;
+  fUHKMgen->Print();  //
+  //  cout << "AliGenUHKM::Init() OUT" << endl;
 }
 
-
-
 //________________________________________
 void AliGenUHKM::Generate()
 {
-  cout << "AliGenUHKM::Generate() IN" << endl;
+  // Generate one HYDJET++ event, get the output and push particles further 
+  // to AliRoot's stack 
+  //  cout << "AliGenUHKM::Generate() IN" << endl;
   Float_t polar[3] = {0,0,0};
   Float_t origin[3]   = {0,0,0};
   Float_t origin0[3]  = {0,0,0};
@@ -340,7 +351,7 @@ void AliGenUHKM::Generate()
   fUHKMgen->ImportParticles(&fParticles,"All");
 
   Int_t np = fParticles.GetEntriesFast();
-  cout << "AliGenUHKM::Generate() GetEntries  " <<np<< endl;
+  //  cout << "AliGenUHKM::Generate() GetEntries  " <<np<< endl;
 
 
   Int_t* idsOnStack = new Int_t[np];
@@ -355,20 +366,21 @@ void AliGenUHKM::Generate()
     // -1 is the trivial code (when it does not exist)
     // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     TParticle *iparticle = (TParticle*)fParticles.At(i);
-//    cout << "AliGenUHKM::Generate() particle #" << i << " in fParticles *********************"<< endl;
+    //   cout << "AliGenUHKM::Generate() particle #" << i << " in fParticles *********************"<< endl;
 
     Int_t kf = iparticle->GetPdgCode();
-//    cout << "AliGenUHKM::Generate() PDG = " << kf << endl;
+    //    if(kf==130 || kf==-130)
+    //      cout << "AliGenUHKM::Generate() PDG = " << kf << endl;
 
     Bool_t hasMother = (iparticle->GetFirstMother() >= 0);
 
-//    cout << "AliGenUHKM::Generate() mother index in fParticles = " 
-//      << (iparticle->GetFirstMother()==-1 ? -1 : iparticle->GetFirstMother()+1)  
-//      << " ; hasMother = " << hasMother << endl;
-
+    //    cout << "AliGenUHKM::Generate() mother index in fParticles = " 
+    //  << (iparticle->GetFirstMother()==-1 ? -1 : iparticle->GetFirstMother()+1)  
+    //  << " ; hasMother = " << hasMother << endl;
+    //    cout << "AliGenUHKM::Generate() type (0-hydro;1-jet) = " << iparticle->GetStatusCode() << endl;
     Bool_t hasDaughter = (iparticle->GetNDaughters() > 0);
 
-   // cout << "AliGenUHKM::Generate() n.daughters = " << iparticle->GetNDaughters() 
+    // cout << "AliGenUHKM::Generate() n.daughters = " << iparticle->GetNDaughters() 
     //<< " ; hasDaughter = " << hasDaughter << endl;
 
 
@@ -376,7 +388,7 @@ void AliGenUHKM::Generate()
       //      cout << "AliGenUHKM::Generate() decayed particle (not trackable)" << endl;
       // This particle has decayed
       // It will not be tracked
-      // Add it only once with coordiinates not
+      // Add it only once with coordinates not
       // smeared with primary vertex position
       Float_t p[3] = {p[0] = iparticle->Px(),
                       p[1] = iparticle->Py(),
@@ -388,34 +400,34 @@ void AliGenUHKM::Generate()
       v[2] = iparticle->Vz();
       Float_t time = iparticle->T();
 
-      Int_t type    = iparticle->GetStatusCode(); //j1/h0
+      //      if(kf==130 || kf==-130) cout << "type = " << iparticle->GetStatusCode() << endl; //j1/h0
 
       Int_t imo = -1;
       if(hasMother) {
         imo = iparticle->GetFirstMother(); //index of mother particle in fParticles
       } // if has mother
-      Bool_t trackFlag = (!hasDaughter);   // tFlag is kFALSE --> do not track the particle
+      Bool_t trackFlag = kFALSE;   // tFlag is kFALSE --> do not track the particle
 
-//      printf("Pushing Track %d with status %d mother %d\n", kf, trackFlag, imo>=0?idsOnStack[imo]:imo);
+      //      printf("Pushing Track %d with status %d mother %d\n", kf, trackFlag, imo>=0?idsOnStack[imo]:imo);
       PushTrack(trackFlag, (imo>=0 ? idsOnStack[imo+1] : imo), kf,
                 p[0], p[1], p[2], energy,
                 v[0], v[1], v[2], time,
                 polar[0], polar[1], polar[2],
                 (hasMother ? kPDecay : kPNoProcess), nt);
-    //  cout << "AliGenUHKM::Generate() pushed on stack with stack index = " << nt 
-//        << "; mother index on stack = " << (imo>=0 ? idsOnStack[imo+1] : imo) << endl;
+      //      cout << "AliGenUHKM::Generate() pushed on stack with stack index = " << nt 
+      //          << "; mother index on stack = " << (imo>=0 ? idsOnStack[imo+1] : imo) << endl;
       idsOnStack[i] = nt;
       fNprimaries++;
       KeepTrack(nt);
     }
     else {
-      //      cout << "AliGenUHKM::Generate() final particle --> push it twice on the stack" << endl;
+      //            cout << "AliGenUHKM::Generate() final particle --> push it twice on the stack" << endl;
       // This is a final state particle
       // It will be tracked
       // Add it TWICE to the stack !!!
       // First time with event-wide coordinates (for femtoscopy) -
       //   this one will not be tracked
-      // Second time with event-wide ccordiantes and vertex smearing
+      // Second time with event-wide c0ordinates and vertex smearing
       //   this one will be tracked
       Float_t p[3] = {p[0] = iparticle->Px(),
                       p[1] = iparticle->Py(),
@@ -426,24 +438,24 @@ void AliGenUHKM::Generate()
       v[1] = iparticle->Vy();
       v[2] = iparticle->Vz();
 
-      Int_t type    = iparticle->GetStatusCode(); //j1/h0
+      Int_t type    = iparticle->GetStatusCode(); // 1-from jet / 0-from hydro 
+      //if(kf==130 || kf==-130) cout << "type = " << iparticle->GetStatusCode() << endl; //j1/h0
       Int_t coeffT=1;
-      if(type==1)coeffT=-1; //to separate particles from jets
+      if(type==1) coeffT=-1; //to separate particles from jets
 
       Int_t imo = -1;
       
       if(hasMother) {
         imo = iparticle->GetFirstMother();
       } // if has mother
-      Bool_t trackFlag = (hasDaughter);  // tFlag = kFALSE --> do not track this one, its for femtoscopy
-       
+      Bool_t trackFlag = kFALSE;  // tFlag = kFALSE --> do not track this one, its for femtoscopy
       PushTrack(trackFlag, (imo>=0 ? idsOnStack[imo+1] : imo), kf,
                 p[0], p[1], p[2], energy,
                 v[0], v[1], v[2], (iparticle->T())*coeffT,
                 polar[0], polar[1], polar[2],
                 hasMother ? kPDecay:kPNoProcess, nt);
-     // cout << "AliGenUHKM::Generate() pushed on stack with stack index = " << nt
-    //       << "; mother index on stack = " << (imo>=0 ? idsOnStack[imo+1] : imo) << endl;
+      //      cout << "AliGenUHKM::Generate() pushed on stack with stack index = " << nt
+      //           << "; mother index on stack = " << (imo>=0 ? idsOnStack[imo+1] : imo) << endl;
 
       idsOnStack[i] = nt;
       fNprimaries++;
@@ -454,16 +466,16 @@ void AliGenUHKM::Generate()
       origin[2] = origin0[2]+v[2];
       imo = nt;
       
-      trackFlag = (!hasDaughter);    // tFlag = kTRUE --> track this one
-      //cout << "AliGenUHKM::Generate() trackFlag = " << trackFlag << endl;
+      trackFlag = kTRUE;    // tFlag = kTRUE --> track this one
+      //      cout << "AliGenUHKM::Generate() trackFlag = " << trackFlag << endl;
 
       PushTrack(trackFlag, imo, kf,
                 p[0], p[1], p[2], energy,
                 origin[0], origin[1], origin[2], iparticle->T(),
                 polar[0], polar[1], polar[2],
                 hasMother ? kPDecay:kPNoProcess, nt);
-     // cout << "AliGenUHKM::Generate() pushed on stack with stack index = " << nt
-    //       << "; mother index on stack = " << imo << endl;
+      //      cout << "AliGenUHKM::Generate() pushed on stack with stack index = " << nt
+      //           << "; mother index on stack = " << imo << endl;
       fNprimaries++;
       KeepTrack(nt);
     }
@@ -498,8 +510,8 @@ void AliGenUHKM::Generate()
 
   //  gAlice->SetGenEventHeader(header);
 
-  printf(" Finish Generate .. %d ..\n",nt);
-  cout << "AliGenUHKM::Generate() OUT" << endl;
+  //  printf(" Finish Generate .. %d ..\n",nt);
+  //  cout << "AliGenUHKM::Generate() OUT" << endl;
 }
 
 void AliGenUHKM::Copy(TObject &) const
@@ -508,7 +520,9 @@ void AliGenUHKM::Copy(TObject &) const
 }
 
 void AliGenUHKM::SetAllParameters() {
-  cout << "AliGenUHKM::SetAllParameters() IN" << endl;
+  // Forward all input parameters to the TGenerator::TUHKMgen object
+
+  //  cout << "AliGenUHKM::SetAllParameters() IN" << endl;
 
   fUHKMgen->SetEcms(fHydjetParams.fSqrtS);
   fUHKMgen->SetBmin(fHydjetParams.fBmin);
@@ -549,12 +563,19 @@ void AliGenUHKM::SetAllParameters() {
 
   fUHKMgen->SetPDGParticleFile(fParticleFilename);
   fUHKMgen->SetPDGDecayFile(fDecayFilename);
-  for(Int_t i=0; i<fStableFlagged; i++) fUHKMgen->SetPDGParticleStable(fStableFlagPDG[i], fStableFlagStatus[i]);
-  fUHKMgen->SetUseCharmParticles(fUseCharmParticles);
-  fUHKMgen->SetMinimumWidth(fMinWidth);
-  fUHKMgen->SetMaximumWidth(fMaxWidth);
-  fUHKMgen->SetMinimumMass(fMinMass);
-  fUHKMgen->SetMaximumMass(fMaxMass);
+  //  fUHKMgen->SetUseCharmParticles(fUseCharmParticles);
+  //  fUHKMgen->SetMinimumWidth(fMinWidth);
+  //  fUHKMgen->SetMaximumWidth(fMaxWidth);
+  //  fUHKMgen->SetMinimumMass(fMinMass);
+  //  fUHKMgen->SetMaximumMass(fMaxMass);
+
+  cout << "AliGenUHKM::Init() no. stable flagged particles = " << fStableFlagged << endl;
+  for(Int_t i=0; i<fStableFlagged; i++) {
+    cout << "AliGenUHKM::Init() flag no. " << i
+         << " PDG = " << fStableFlagPDG[i]
+         << " flag = " << fStableFlagStatus[i] << endl;
+    fUHKMgen->SetPDGParticleStable(fStableFlagPDG[i], fStableFlagStatus[i]);
+  }
 
  cout<<" Print all parameters "<<endl;
  cout<<" SqrtS = "<<fHydjetParams.fSqrtS<<endl;
@@ -600,34 +621,35 @@ cout<<" --------Flags------ "<<endl;
   cout<<" Ienglu= "<<fHydjetParams.fIenglu<<endl;
   cout<<" Ianglu= "<<fHydjetParams.fIanglu<<endl;
 
-  cout<<"----PDG table parameters---"<<endl;
+  //  cout<<"----PDG table parameters---"<<endl;
   
-  cout<<" UseCharmParticles= "<<fUseCharmParticles<<endl;
-  cout<<" MinimumWidth= "<<fMinWidth<<endl;
-  cout<<" MaximumWidth= "<<fMaxWidth<<endl;
-  cout<<" MinimumMass= "<<fMinMass<<endl;
-  cout<<" MaximumMass= "<<fMaxMass<<endl;
-
+  //  cout<<" UseCharmParticles= "<<fUseCharmParticles<<endl;
+  //  cout<<" MinimumWidth= "<<fMinWidth<<endl;
+  //  cout<<" MaximumWidth= "<<fMaxWidth<<endl;
+  //  cout<<" MinimumMass= "<<fMinMass<<endl;
+  //  cout<<" MaximumMass= "<<fMaxMass<<endl;
 
-
-  cout << "AliGenUHKM::SetAllParameters() OUT" << endl;
+  //  cout << "AliGenUHKM::SetAllParameters() OUT" << endl;
 }
 
 // add the additional PDG codes from UHKM(SHARE table) to ROOT's table
 void AliGenUHKM::CheckPDGTable() {
-  cout << "AliGenUHKM::CheckPDGTable()   IN" << endl;
+  // Add temporarely all particle definitions from HYDJET++ which miss in the ROOT's PDG tables
+  // to the TDatabasePDG table.
+
+  //  cout << "AliGenUHKM::CheckPDGTable()   IN" << endl;
   //TDabasePDG *rootPDG  = TDatabasePDG::Instance();         // ROOT's PDG table
   DatabasePDG *uhkmPDG = fUHKMgen->PDGInfo();              // UHKM's PDG table
   TParticlePDG *rootTestParticle;
   ParticlePDG *uhkmTestParticle;
-
-  cout << "particles with good status in UHKM table = " << uhkmPDG->GetNParticles() << endl;
+  
+  //  cout << "particles with good status in UHKM table = " << uhkmPDG->GetNParticles() << endl;
   // loop over all particles in the SHARE table
   for(Int_t i=0; i<uhkmPDG->GetNParticles(); i++) {
-    cout << "particle #" << i << " ================" << endl;
+    //    cout << "particle #" << i << " ================" << endl;
     // get a particle specie
     uhkmTestParticle = uhkmPDG->GetPDGParticleByIndex(i);
-    cout << "PDG = " << uhkmTestParticle->GetPDG() << endl;
+    //    cout << "PDG = " << uhkmTestParticle->GetPDG() << endl;
     // check if this code exists in ROOT's table
     rootTestParticle = TDatabasePDG::Instance()->GetParticle(uhkmTestParticle->GetPDG());
     if(!rootTestParticle) {    // if not then add it to the ROOT's PDG database
@@ -638,13 +660,14 @@ void AliGenUHKM::CheckPDGTable() {
                                            uhkmTestParticle->GetWidth(), 
                                            (Int_t(uhkmTestParticle->GetBaryonNumber())==0 ? "meson" : "baryon"),
                                            uhkmTestParticle->GetPDG());    
-     cout << "Not found in ROOT's PDG database --> added now" << endl;
-    if(uhkmTestParticle->GetWidth()<1e-10) cout<<uhkmTestParticle->GetPDG()<<"its mass "<< 
-    TDatabasePDG::Instance()->GetParticle(uhkmTestParticle->GetPDG())->Mass()<<
-    TDatabasePDG::Instance()->GetParticle(uhkmTestParticle->GetPDG())->Width()<<endl;  
+      //      cout << "Not found in ROOT's PDG database --> added now" << endl;
+      if(uhkmTestParticle->GetWidth()<1e-10) 
+       cout << uhkmTestParticle->GetPDG() << "its mass "
+            << TDatabasePDG::Instance()->GetParticle(uhkmTestParticle->GetPDG())->Mass()
+            << TDatabasePDG::Instance()->GetParticle(uhkmTestParticle->GetPDG())->Width() << endl;  
     }
-    else
-      cout << "Found in ROOT's PDG database --> not added" << endl;
+    //    else
+      //      cout << "Found in ROOT's PDG database --> not added" << endl;
   }  // end for
-  cout << "AliGenUHKM::CheckPDGTable()   OUT" << endl;
+  //  cout << "AliGenUHKM::CheckPDGTable()   OUT" << endl;
 }
index b15af3b..07e3cf9 100755 (executable)
@@ -1,22 +1,48 @@
+// This class provides an interface between the HYDJET++ Monte-Carlo model
+// and AliRoot (by inheriting from the AliGenMC class).
+// This class uses the TUHKMgen class (which inherits from TGenerator) to
+// transmit parameters and receive output from the model.
+
 #ifndef ALIGENUHKM_H
 #define ALIGENUHKM_H
 
 #include "AliGenMC.h"
 #include <TString.h>
-
 #include "TUHKMgen.h"
 #ifndef INITIALSTATEHYDJET_INCLUDED
 #include "InitialStateHydjet.h"
 #endif
+#include "TParticle.h"
 
 #include <string>
 using namespace std;
 
-class TUHKMgen;
-class TParticle;
+//class TUHKMgen;
+//class TParticle;
+//class InitialStateHydjet;
 
 class AliGenUHKM : public AliGenMC
 {
+ protected:
+  Int_t       fTrials;         // Number of trials
+  TUHKMgen    *fUHKMgen;       // UHKM
+  
+  InitialParamsHydjet_t fHydjetParams;    // list of parameters for the initial state
+  // details for the PDG database
+  Char_t fParticleFilename[256];            // particle list filename
+  Char_t fDecayFilename[256];               // decay table filename
+  Int_t fStableFlagPDG[500];                // array of PDG codes flagged
+  Bool_t fStableFlagStatus[500];            // array of decay flag status
+  Int_t fStableFlagged;                     // number of toggled decay flags
+
+  void SetAllParameters();
+  void CheckPDGTable();
+  
+ private:
+  void Copy(TObject &rhs) const;
+  AliGenUHKM(const AliGenUHKM&);
+  AliGenUHKM & operator = (const AliGenUHKM &);
+  
  public:
   AliGenUHKM();
   AliGenUHKM(Int_t npart);
@@ -25,13 +51,13 @@ class AliGenUHKM : public AliGenMC
   virtual void    Generate();
   virtual void    Init();
   //  virtual void    AddHeader(AliGenEventHeader* header);
-
+  
   // Setters
   // set reasonable default parameters suited for central Au+Au collisions at RHIC(200GeV)
   void SetAllParametersRHIC();
   // set reasonable default parameters suited for central Pb+Pb collisions at LHC(5.5TeV)
   void SetAllParametersLHC();
-
+  
   void SetEcms(Double_t value) {fHydjetParams.fSqrtS = value;}          // CMS energy per nucleon [GeV] (<2.24 given temperature and ch pot are used)
   void SetAw(Double_t value) {fHydjetParams.fAw = value;}             // nuclei mass number
   void SetBmin(Double_t value) {fHydjetParams.fBmin = value;}           // Minimum impact parameter
@@ -54,7 +80,6 @@ class AliGenUHKM : public AliGenMC
   void SetMomAsymmPar(Double_t value) {fHydjetParams.fDelta = value;}          // Momentum asymmetry parameter
   void SetCoordAsymmPar(Double_t value) {fHydjetParams.fEpsilon = value;}        // Coordinate asymmetry parameter
 
-  void SetFlagWeakDecay(Int_t value) {fHydjetParams.fWeakDecay = value;} //flag to switch on/off weak hadron decays <0:decays off, >0: decays on, (default: 0)
   void SetEtaType(Int_t value) {fHydjetParams.fEtaType = value;} // flag to choose rapidity distribution, if fEtaType<=0,
                                                   //then uniform rapidity distribution in [-fYlmax,fYlmax] if fEtaType>0,
                                                   //then Gaussian with dispertion = fYlmax
@@ -81,80 +106,44 @@ class AliGenUHKM : public AliGenMC
                                                    //gluons (0: small-angular, 1: wide-angular, 2:collinear) (default: 0).
 
 
-  void SetPDGParticleFile(Char_t *name) {strcpy(fParticleFilename, name);}//Set the filename containing the particle PDG info
-  void SetPDGDecayFile(Char_t *name) {strcpy(fDecayFilename, name);} //Set the filename containing the PDG decay channels info
+  void SetPDGParticleFile(const Char_t *name) {strcpy(fParticleFilename, name);}//Set the filename containing the particle PDG info
+  void SetPDGDecayFile(const Char_t *name) {strcpy(fDecayFilename, name);} //Set the filename containing the PDG decay channels info
   void SetPDGParticleStable(Int_t pdg, Bool_t value) { // Turn on/off the decay flag for a PDG particle
     fStableFlagPDG[fStableFlagged] = pdg;
     fStableFlagStatus[fStableFlagged++] = value;
   }
-  void SetUseCharmParticles(Bool_t flag) {fUseCharmParticles = flag;}
-  void SetMinimumWidth(Double_t value) {fMinWidth = value;}
-  void SetMaximumWidth(Double_t value) {fMaxWidth = value;}
-  void SetMinimumMass(Double_t value) {fMinMass = value;}
-  void SetMaximumMass(Double_t value) {fMaxMass = value;}
 
   // Getters
-  Double_t GetEcms() {return fHydjetParams.fSqrtS;}
-  Double_t GetAw() {return fHydjetParams.fAw;}
-  Double_t GetBmin() {return fHydjetParams.fBmin;}
-  Double_t GetBmax() {return fHydjetParams.fBmax;}
-  Double_t GetChFrzTemperature() {return fHydjetParams.fT;}
-  Double_t GetMuB() {return fHydjetParams.fMuB;}
-  Double_t GetMuS() {return fHydjetParams.fMuS;}
-  Double_t GetMuQ() {return fHydjetParams.fMuI3;}
-  Double_t GetThFrzTemperature() {return fHydjetParams.fThFO;}
-  Double_t GetMuPionThermal() {return fHydjetParams.fMu_th_pip;}
-  Int_t    GetSeed() {return fHydjetParams.fSeed;}
-  Double_t GetTauB() {return fHydjetParams.fTau;}
-  Double_t GetSigmaTau() {return fHydjetParams.fSigmaTau;}
-  Double_t GetRmaxB() {return fHydjetParams.fR;}
-  Double_t GetYlMax() {return fHydjetParams.fYlmax;}
-  Double_t GetEtaRMax() {return fHydjetParams.fUmax;}
-  Double_t GetMomAsymmPar() {return fHydjetParams.fDelta;}
-  Double_t GetCoordAsymmPar() {return fHydjetParams.fEpsilon;}
-  Int_t    GetFlagWeakDecay() {return fHydjetParams.fWeakDecay;}
-  Int_t    GetEtaType() {return fHydjetParams.fEtaType;}
-  Double_t GetGammaS() {return fHydjetParams.fCorrS;}
-  Int_t    GetPyquenNhsel() {return fHydjetParams.fNhsel;}
-  Int_t    GetPyquenShad() {return fHydjetParams.fIshad;}
-  Double_t GetPyquenPtmin() {return fHydjetParams.fPtmin;}
-  Double_t GetPyquenT0() {return fHydjetParams.fT0;}
-  Double_t GetPyquenTau0() {return fHydjetParams.fTau0;}
-  Double_t GetPyquenNf() {return fHydjetParams.fNf;}
-  Double_t GetPyquenIenglu() {return fHydjetParams.fIenglu;}
-  Double_t GetPyquenIanglu() {return fHydjetParams.fIanglu;}
-  Char_t*  GetPDGParticleFile() {return fParticleFilename;}
-  Char_t*  GetPDGDecayFile() {return fDecayFilename;}
-  Bool_t   GetUseCharmParticles(){return fUseCharmParticles;}
-  Double_t GetMinimumWidth() {return fMinWidth;}
-  Double_t GetMaximumWidth() {return fMaxWidth;}
-  Double_t GetMinimumMass() {return fMinMass;}
-  Double_t GetMaximumMass() {return fMaxMass;}
-
- protected:
-  Int_t       fTrials;         // Number of trials
-  TUHKMgen    *fUHKMgen;       // UHKM
-
-  InitialParamsHydjet_t fHydjetParams;    // list of parameters for the initial state
-  // details for the PDG database
-  Char_t fParticleFilename[256];            // particle list filename
-  Char_t fDecayFilename[256];               // decay table filename
-  Int_t fStableFlagPDG[500];                // array of PDG codes flagged
-  Bool_t fStableFlagStatus[500];            // array of decay flag status
-  Int_t fStableFlagged;                     // number of toggled decay flags
-  Bool_t fUseCharmParticles;                   // flag to turn on/off the use of charm particles
-  Double_t fMinWidth;                          // minimum decay width for the particles to be used from the PDG database
-  Double_t fMaxWidth;                          // maximum ----
-  Double_t fMinMass;                           // minimum mass for the particles to be used from the PDG database
-  Double_t fMaxMass;                           // maximum ----
-
-  void SetAllParameters();
-  void CheckPDGTable();
-  
- private:
-  void Copy(TObject &rhs) const;
-  AliGenUHKM(const AliGenUHKM&);
-  AliGenUHKM & operator = (const AliGenUHKM &);
+  Double_t GetEcms() const {return fHydjetParams.fSqrtS;}
+  Double_t GetAw() const {return fHydjetParams.fAw;}
+  Double_t GetBmin() const {return fHydjetParams.fBmin;}
+  Double_t GetBmax() const {return fHydjetParams.fBmax;}
+  Double_t GetChFrzTemperature() const {return fHydjetParams.fT;}
+  Double_t GetMuB() const {return fHydjetParams.fMuB;}
+  Double_t GetMuS() const {return fHydjetParams.fMuS;}
+  Double_t GetMuQ() const {return fHydjetParams.fMuI3;}
+  Double_t GetThFrzTemperature() const {return fHydjetParams.fThFO;}
+  Double_t GetMuPionThermal() const {return fHydjetParams.fMu_th_pip;}
+  Int_t    GetSeed() const {return fHydjetParams.fSeed;}
+  Double_t GetTauB() const {return fHydjetParams.fTau;}
+  Double_t GetSigmaTau() const {return fHydjetParams.fSigmaTau;}
+  Double_t GetRmaxB() const {return fHydjetParams.fR;}
+  Double_t GetYlMax() const {return fHydjetParams.fYlmax;}
+  Double_t GetEtaRMax() const {return fHydjetParams.fUmax;}
+  Double_t GetMomAsymmPar() const {return fHydjetParams.fDelta;}
+  Double_t GetCoordAsymmPar() const {return fHydjetParams.fEpsilon;}
+  Int_t    GetEtaType() const {return fHydjetParams.fEtaType;}
+  Double_t GetGammaS() const {return fHydjetParams.fCorrS;}
+  Int_t    GetPyquenNhsel() const {return fHydjetParams.fNhsel;}
+  Int_t    GetPyquenShad() const {return fHydjetParams.fIshad;}
+  Double_t GetPyquenPtmin() const {return fHydjetParams.fPtmin;}
+  Double_t GetPyquenT0() const {return fHydjetParams.fT0;}
+  Double_t GetPyquenTau0() const {return fHydjetParams.fTau0;}
+  Double_t GetPyquenNf() const {return fHydjetParams.fNf;}
+  Double_t GetPyquenIenglu() const {return fHydjetParams.fIenglu;}
+  Double_t GetPyquenIanglu() const {return fHydjetParams.fIanglu;}
+  const Char_t*  GetPDGParticleFile() const {return fParticleFilename;}
+  const Char_t*  GetPDGDecayFile() const {return fDecayFilename;}
 
   ClassDef(AliGenUHKM, 6) // AliGenerator interface to UHKM
 };
index 059026d..e172238 100644 (file)
@@ -7,7 +7,7 @@ c*******************************************
       real p,v,plu
       external ludata,pydata
       double precision numpar,npar0,nbco0 
-      common /lujets/ n,k(150000,5),p(150000,5),v(150000,5)
+c      common /lujets/ n,k(150000,5),p(150000,5),v(150000,5)
       common /hyjets/ nhj,nhp,khj(150000,5),phj(150000,5),vhj(150000,5) 
       common /hyfpar/ bgen,nbcol,npart,npart0,npyt,nhyd
       common /hyflow/ ytfl,ylfl,Tf,fpart 
@@ -24,8 +24,8 @@ c*******************************************
 
       
       common /hypart/ppart(10,50000),bmin,bmax,njp
-      save /lujets/,/hyjets/,/hyflow/,/hyjpar/,/hyfpar/,/pyqpar/,
-     >     /pysubs/,/pypars/,/pydat1/
+c      save /lujets/,/hyjets/,/hyflow/,/hyjpar/,/hyfpar/,/pyqpar/,
+c     >     /pysubs/,/pypars/,/pydat1/
 
 * ----------- INITIALIZATION OF RUNDOM GENERATOR
       MRPY(1)=iseed_fromC 
@@ -119,8 +119,8 @@ c*******************************************
 
 *
 
-      save /pyint7/,/pypars/,/pysubs/,/hyjpar/,/hyipar/,/hypyin/,
-     >     /hyflow/,/hygeom/,/hythic/    
+c--      save /pyint7/,/pypars/,/pysubs/,/hyjpar/,/hyipar/,/hypyin/,
+c--     >     /hyflow/,/hygeom/,/hythic/    
             
 * start HYDJET initialization 
       init=1
@@ -303,7 +303,7 @@ c       write(*,*)" ipdg ", ipdg, " KC ",KC," delta ",delta
       real p,v, delta
       external hsin,hftaa,numpar,hyhard,hipsear,pyr,pymass,PYCOMP 
       external ludata 
-      common /lujets/ n,k(150000,5),p(150000,5),v(150000,5)
+c      common /lujets/ n,k(150000,5),p(150000,5),v(150000,5)
       common /hyjets/ nhj,nhp,khj(150000,5),phj(150000,5),vhj(150000,5)
       common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr
       common /hypyin/ ene,rzta,rnta,bfix,ifb,nh
@@ -314,22 +314,23 @@ c-ml
       common /hypart/ppart(10,50000),bmin,bmax,njp
       COMMON /PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
 
-      save/lujets/,/hyjets/,/hyipar/,/hyfpar/,/hyflow/,/hyjpar/,/hypyin/
+c--      save/lujets/,/hyjets/,/hyipar/,/hyfpar/,/hyflow/,/hyjpar/,/hypyin/
 
 
 * reset lujets and hyjets arrays before event generation 
 
-c      write(*,*)'in hyevnt 0'
+         write(*,*)'in hyevnt 0'
 
       n=0 
       nhj=0 
+      
       do ncl=1,150000
        do j=1,5
-        p(ncl,j)=0.
+c        p(ncl,j)=0.
         phj(ncl,j)=0.d0
-        v(ncl,j)=0. 
+c        v(ncl,j)=0. 
         vhj(ncl,j)=0.d0  
-        k(ncl,j)=0
+c        k(ncl,j)=0
         khj(ncl,j)=0 
        enddo
       end do 
@@ -352,7 +353,7 @@ c      write(*,*)'in hyevnt 0'
        bgen=bb1/RA 
       end if 
       
-c       write(*,*)'in hyevnt bminh bgen sigin',RA,bminh,bgen,sigin
+       write(*,*)'in hyevnt bminh bgen sigin',RA,bminh,bgen,sigin
                     
 * calculate # of nucelons-participants and binary NN sub-collisions 
       npart=numpar(b1)                          ! Npart(b) 
@@ -400,13 +401,13 @@ c--
      
 * fill array 'lujets' 
      
-      do ih=1,nhj
-       do jh=1,5
-        p(ih,jh)=phj(ih,jh)
-        k(ih,jh)=khj(ih,jh)                  
-        v(ih,jh)=vhj(ih,jh) 
-       end do
-      end do
+c      do ih=1,nhj
+c       do jh=1,5
+c        p(ih,jh)=phj(ih,jh)
+c        k(ih,jh)=khj(ih,jh)                  
+c        v(ih,jh)=vhj(ih,jh) 
+c       end do
+c      end do
       
 c-ml
 c-      call luedit(2)                      ! remove unstable particles and partons 
@@ -440,8 +441,8 @@ c-      call luedit(2)                      ! remove unstable particles and part
       common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr
       common /hyfpar/ bgen,nbcol,npart,npart0,npyt,nhyd 
       common /hypyin/ ene,rzta,rnta,bfix,ifb,nh
-      save /pyjets/,/pypars/,/pydat1/,/pydat2/,/pydat3/,/pysubs/,
-     +     /hyjets/,/parimp/,/hyjpar/,/hyipar/,/hyfpar/,/hypyin/
+c--      save /pyjets/,/pypars/,/pydat1/,/pydat2/,/pydat3/,/pysubs/,
+c--     +     /hyjets/,/parimp/,/hyjpar/,/hyipar/,/hyfpar/,/hypyin/
 
 * generate 'njet' PYTHIA events and fill arrays for partons and hadrons 
        
@@ -606,7 +607,7 @@ c       write(*,*)'in hyhard OUT'
       double precision npar0,nbco0 
       external hsin  
       common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr
-      save /hyipar/ 
+c--      save /hyipar/ 
       xmin=(bmaxh-bminh)*RA 
       
 c      write(*,*)'bmaxh bminh',bmaxh,bminh
@@ -628,7 +629,7 @@ c      write(*,*)'bmaxh bminh',bmaxh,bminh
       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
       external hftaa 
       common /hyjpar/ ptmin,sigin,sigjet,nhsel,ishad,njet   
-      save /hyjpar/ 
+c--      save /hyjpar/ 
       br=x 
       hsin=br*(1.d0-dexp(-0.1d0*hftaa(br)*sigin)) 
       return 
@@ -655,7 +656,7 @@ c      write(*,*)'bmaxh bminh',bmaxh,bminh
       external HFUNC2 
       common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr
       common /hynup1/ bp,xx
-      save /hyipar/  
+c--      save /hyipar/  
       if(init.eq.1) then 
        Rl=Rpb
       else 
@@ -678,7 +679,7 @@ c      write(*,*)'bmaxh bminh',bmaxh,bminh
       common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr
       common /hyjpar/ ptmin,sigin,sigjet,nhsel,ishad,njet 
       common /hynup1/ bp,x 
-      save /hyipar/,/hyjpar/ 
+c--      save /hyipar/,/hyjpar/ 
       r1=dsqrt(abs(y*y+bp*bp/4.d0+y*bp*dcos(x))) 
       r2=dsqrt(abs(y*y+bp*bp/4.d0-y*bp*dcos(x)))
       s=1.d0-dexp(-0.1d0*sigin*hythik(r2))
@@ -690,7 +691,7 @@ c      write(*,*)'bmaxh bminh',bmaxh,bminh
       double precision function hftaa(c)  
       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
       common /hythic/ BAB(110),TAB(110),TAAB(110)
-      save /hythic/ 
+c--      save /hythic/ 
       call parinv(c,BAB,TAAB,110,RES) 
       hftaa=RES 
       return 
@@ -702,7 +703,7 @@ c      write(*,*)'bmaxh bminh',bmaxh,bminh
       external HFUNC4 
       common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr
       common /hynup1/ bp,xx
-      save /hyipar/  
+c--      save /hyipar/  
       if(init.eq.1) then 
        Rl=Rpb
       else 
@@ -725,7 +726,7 @@ c      write(*,*)'bmaxh bminh',bmaxh,bminh
       common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr
       common /hyjpar/ ptmin,sigin,sigjet,nhsel,ishad,njet 
       common /hynup1/ bp,x 
-      save /hyipar/,/hyjpar/ 
+c--      save /hyipar/,/hyjpar/ 
       r1=dsqrt(abs(y*y+bp*bp/4.d0+y*bp*dcos(x))) 
       r2=dsqrt(abs(y*y+bp*bp/4.d0-y*bp*dcos(x)))
       HFUNC4=y*hythik(r1)*hythik(r2) 
@@ -736,7 +737,7 @@ c      write(*,*)'bmaxh bminh',bmaxh,bminh
        double precision function hythik(r)   
        IMPLICIT DOUBLE PRECISION(A-H, O-Z)
        common /hythic/ BAB(110),TAB(110),TAAB(110)
-       save /hythic/ 
+c--       save /hythic/ 
        call parinv(r,BAB,TAB,110,RES) 
        hythik=RES 
        return
@@ -748,7 +749,7 @@ c      write(*,*)'bmaxh bminh',bmaxh,bminh
        double precision npar0,nbco0 
        common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr
        common /hygeom/ BC 
-       save /hyipar/,/hygeom/ 
+c--       save /hyipar/,/hygeom/ 
        if(init.eq.1) then 
         Rl=Rpb
        else 
@@ -770,7 +771,7 @@ c      write(*,*)'bmaxh bminh',bmaxh,bminh
       common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr
       common /hyfpar/ bgen,nbcol,npart,npart0,npyt,nhyd 
       common /hyshad/ bbmin,bbmax,inuc 
-      save /hyipar/,/hyfpar/,/hyshad/ 
+c--      save /hyipar/,/hyfpar/,/hyshad/ 
       dimension res(2)
       kf=kfh 
       xbj=xbjh 
index 53650ff..e59e3ae 100755 (executable)
@@ -15,7 +15,7 @@
 //                                                                         //
 ////////////////////////////////////////////////////////////////////////////
 
-#ifndef TUHKMgen_H
+#ifndef TUHKMGEN_H
 #include "TUHKMgen.h"
 #endif
 #include "TObjArray.h"
@@ -30,6 +30,8 @@
 #include <iostream>
 using namespace std;
 
+//class TObjArray;
+
 ClassImp(TUHKMgen)
 
 TUHKMgen::TUHKMgen() : 
@@ -41,14 +43,16 @@ TUHKMgen::TUHKMgen() :
   fNPprim(0),
   fNPsec(0),
   fHydjetParams(),
-  fStableFlagged(0),
-  fUseCharmParticles(kFALSE),
-  fMinWidth(0.0),
-  fMaxWidth(10.0),
-  fMinMass(0.0001),
-  fMaxMass(10.0)
+  fStableFlagged(0)
+  //  fUseCharmParticles(kFALSE),
+  //  fMinWidth(0.0),
+  //  fMaxWidth(10.0),
+  //  fMinMass(0.0001),
+  //  fMaxMass(10.0)
 {
-  cout << "TUHKMgen::TUHKMgen() IN" << endl;
+  // default constructor setting reasonable defaults for initial parameters (central Pb+Pb at 5.5 TeV)
+
+  //  cout << "TUHKMgen::TUHKMgen() IN" << endl;
 
   // Set reasonable default values for LHC
   
@@ -129,20 +133,23 @@ TUHKMgen::TUHKMgen() :
     fStableFlagStatus[i] = kFALSE;
   }
   fStableFlagged = 0;
-  cout << "TUHKMgen::TUHKMgen() OUT" << endl;
+  //  cout << "TUHKMgen::TUHKMgen() OUT" << endl;
 }
 
 //______________________________________________________________________________
 TUHKMgen::~TUHKMgen()
 {
-  cout << "TUHKMgen::~TUHKMgen() IN" << endl;
+  // destructor, deletes the InitialStateHydjet object
+  //  cout << "TUHKMgen::~TUHKMgen() IN" << endl;
   if(fInitialState)
     delete fInitialState;
-  cout << "TUHKMgen::~TUHKMgen() OUT" << endl;
+  //  cout << "TUHKMgen::~TUHKMgen() OUT" << endl;
 }
 
 void TUHKMgen::SetAllParametersRHIC()
 {
+  // Set reasonable input parameters for 0-5% central Au+Au collisions
+  // at 200 GeV at RHIC
   SetEcms(200.0);                // RHIC top energy
   SetAw(197);                    // Au+Au
   SetIfb(1);
@@ -178,6 +185,7 @@ void TUHKMgen::SetAllParametersRHIC()
 
 void TUHKMgen::SetAllParametersLHC()
 {
+  // Set reasonable input parameters for 0-5% Pb+Pb collisions at 5.5 TeV at LHC
   SetEcms(5500.0);               // LHC
   SetAw(207);                    // Pb+Pb
   SetIfb(1);
@@ -211,14 +219,16 @@ void TUHKMgen::SetAllParametersLHC()
   SetPyquenIanglu(0);            // small gluon angular distribution
 }
 
-TObjArray* TUHKMgen::ImportParticles(Option_t *)
+TObjArray* TUHKMgen::ImportParticles(const Option_t *)
 {
-  cout << "TObjArray* TUHKMgen::ImportParticles(Option_t) IN" << endl;
+  // Function overloading the TGenerator::ImportParticles() member function.
+  // The particles from the local particle list (fSecondariesList) are
+  // forwarded to the TGenerator::fParticles 
+  //  cout << "TObjArray* TUHKMgen::ImportParticles(Option_t) IN" << endl;
   fParticles->Clear();
-  cout << "TObjArray* TUHKMgen::ImportParticles(Option_t): UHKM stack contains " << fNPsec << " particles." << endl;
+  //  cout << "TObjArray* TUHKMgen::ImportParticles(Option_t): UHKM stack contains " << fNPsec << " particles." << endl;
   Int_t nump = 0;
   LPIT_t it,e;
-  Double_t Fm2Gev = 1.;//0.197327; //UHKM has coordinates in fm
    
   for(it = fSecondariesList.begin(), e = fSecondariesList.end(); it != e; ++it) {
     TVector3 pos(it->Pos().Vect());
@@ -245,8 +255,8 @@ TObjArray* TUHKMgen::ImportParticles(Option_t *)
     TParticle* p = new TParticle(it->Encoding(), type,                         //pdg,stat
                                 im1, im2, id1, id2,                                            //m1,m2,d1,d2
                                 mom[0], mom[1], mom[2], TMath::Sqrt(mom.Mag2() + m1 * m1),     //px,py,pz,e
-                                pos[0]*1.e-13*Fm2Gev, pos[1]*1.e-13*Fm2Gev, pos[2]*1.e-13*Fm2Gev, 
-                                it->T()*1.e-13*Fm2Gev/3e10);                           //x,y,z,t
+                                pos[0]*1.e-13, pos[1]*1.e-13, pos[2]*1.e-13, 
+                                it->T()*1.e-13/3e10);                          //x,y,z,t
   
      p->SetUniqueID(nump);
      fParticles->Add(p);
@@ -254,14 +264,16 @@ TObjArray* TUHKMgen::ImportParticles(Option_t *)
  
   fAllocator.FreeList(fSourceList);
   fAllocator.FreeList(fSecondariesList);
-  cout << "TObjArray* TUHKMgen::ImportParticles(Option_t) OUT" << endl;
+  //  cout << "TObjArray* TUHKMgen::ImportParticles(Option_t) OUT" << endl;
   return fParticles;
 }
 
-Int_t TUHKMgen::ImportParticles(TClonesArray *particles,Option_t* option)
+Int_t TUHKMgen::ImportParticles(TClonesArray *particles, const Option_t* option)
 {
-  //z-start import
-  cout << "Int_t TUHKMgen::ImportParticles(TClonesArray*, Option_t) IN" << endl;
+  // Function overloading the TGenerator::ImportParticles() member function.
+  // The particles from the local particle list (fSecondariesList) are
+  // forwarded to the TGenerator::fParticles
+  //  cout << "Int_t TUHKMgen::ImportParticles(TClonesArray*, Option_t) IN" << endl;
   if(particles==0) return 0;
   TClonesArray &particlesR=*particles;
   particlesR.Clear();
@@ -270,15 +282,19 @@ Int_t TUHKMgen::ImportParticles(TClonesArray *particles,Option_t* option)
   Int_t numprim,numsec;  numprim=numsec=0;
   Int_t nump = 0;
   LPIT_t it,e;
-  Double_t Fm2Gev = 1.; //UHKM has coordinates in fm //0.197327;
-
-  cout << "TUHKMgen::ImportParticles() option(All or Sec) = " << option << endl;
+  
+  //  cout << "TUHKMgen::ImportParticles() option(All or Sec) = " << option << endl;
   for(it = fSecondariesList.begin(), e = fSecondariesList.end(); it != e; ++it) {
-    //      cout << "TUHKMgen::ImportParticles() import particle pdg(" << it->Encoding() << ")" << endl;
-    TVector3 pos(it->Pos().Vect());
-    TVector3 mom(it->Mom().Vect());
-    Float_t m1 = it->TableMass();
-    Int_t im1 = it->GetMother();
+    //!!! for(Int_t pp=0;pp<100;pp++) {
+       //      cout << "TUHKMgen::ImportParticles() import particle pdg(" << it->Encoding() << ")" << endl;
+    TVector3 pos(it->Pos().Vect());  //
+    //!!! TVector3 pos(0.0, 0.1, 0.2);
+    TVector3 mom(it->Mom().Vect());  //
+    //!!! TVector3 mom(-0.1, 0.1, 0.2);
+    Float_t m1 = it->TableMass();  //
+    //!!!    Float_t m1 = 0.139;
+    Int_t im1 = it->GetMother();  //
+    //!!!    Int_t im1 = (pp<50? -1 : pp-50);
     //    Int_t nd = 0;
     Int_t im2 = -1;
     Int_t id1 = -1;
@@ -286,7 +302,8 @@ Int_t TUHKMgen::ImportParticles(TClonesArray *particles,Option_t* option)
     
     //    nd = it->GetNDaughters();
 
-    Int_t type = it->GetType();  // 0-hydro, 1-jets
+    Int_t type = it->GetType();  //  // 0-hydro, 1-jets
+    //!!!    Int_t type = 0;
     
     if (im1> -1) {
       TParticle *mother = (TParticle*) (particlesR.UncheckedAt(im1+1));           
@@ -300,36 +317,45 @@ Int_t TUHKMgen::ImportParticles(TClonesArray *particles,Option_t* option)
     new (particlesR[nump]) TParticle(it->Encoding(), type,                                             //pdg,stat
                                     im1, im2, id1, id2,                                                //m1,m2,d1,d2
                                     mom[0], mom[1], mom[2], TMath::Sqrt(mom.Mag2() + m1 * m1), //px,py,pz,e
-                                    pos[0]*1.e-13*Fm2Gev, pos[1]*1.e-13*Fm2Gev, pos[2]*1.e-13*Fm2Gev, 
-                                    it->T()*1.e-13*Fm2Gev/3e10);                       //x,y,z,t
-
+                                    pos[0]*1.e-13, pos[1]*1.e-13, pos[2]*1.e-13, 
+                                    it->T()*1.e-13/3e10);                      //x,y,z,t
+    
+    /*!!! new (particlesR[nump]) TParticle(211, type,                                         //pdg,stat
+                                     im1, im2, id1, id2,                                                //m1,m2,d1,d2
+                                     mom[0], mom[1], mom[2], TMath::Sqrt(mom.Mag2() + m1 * m1), //px,py,pz,e
+                                     pos[0]*1.e-13, pos[1]*1.e-13, pos[2]*1.e-13,
+                                     0.0*1.e-13/3e10);                       //x,y,z,t
+    !!!*/
 
     particlesR[nump]->SetUniqueID(nump);
     numsec++;
   }//end for
   
-  fAllocator.FreeList(fSourceList);
-  fAllocator.FreeList(fSecondariesList);
-  printf("Scan and add prim %d sec %d and all %d particles\n",
-        numprim,numsec,nump);
-  cout << "Int_t TUHKMgen::ImportParticles(TClonesArray*, Option_t) OUT" << endl;
+  fAllocator.FreeList(fSourceList);  //
+  fAllocator.FreeList(fSecondariesList);  //
+  //  printf("Scan and add prim %d sec %d and all %d particles\n",
+  //    numprim,numsec,nump);
+  //  cout << "Int_t TUHKMgen::ImportParticles(TClonesArray*, Option_t) OUT" << endl;
   return nump;
 }
 
 //______________________________________________________________________________
 void TUHKMgen::Initialize()
 {
-  cout << "TUHKMgen::Initialize() IN" << endl;
-  fInitialState = new InitialStateHydjet();
-  SetAllParameters();
-  fInitialState->LoadPDGInfo();
+  // Function overloading the TGenerator::Initialize() member function.
+  // The Monte-Carlo model is initialized (input parameters are transmitted, 
+  // particle list and decay channels are loaded, average multiplicities are calculated, etc.)
+  //  cout << "TUHKMgen::Initialize() IN" << endl;
+  fInitialState = new InitialStateHydjet();  //
+  SetAllParameters();  //
+  fInitialState->LoadPDGInfo();  //
   // set the stable flags
-  for(Int_t i=0; i<fStableFlagged; i++) 
-    fInitialState->SetPDGParticleStable(fStableFlagPDG[i], fStableFlagStatus[i]);
+  for(Int_t i=0; i<fStableFlagged; i++) //
+    fInitialState->SetPDGParticleStable(fStableFlagPDG[i], fStableFlagStatus[i]); //
 
-  if(!fInitialState->MultIni())
-    Error("TUHKMgen::Initialize()", "Bad status return from MultIni(). Check it out!! \n");
-  cout << "TUHKMgen::Initialize() OUT" << endl;
+  if(!fInitialState->MultIni()) //
+    Error("TUHKMgen::Initialize()", "Bad status return from MultIni(). Check it out!! \n");  //
+  //  cout << "TUHKMgen::Initialize() OUT" << endl;
 }
 
 void TUHKMgen::Print(const Option_t*) const
@@ -339,24 +365,33 @@ void TUHKMgen::Print(const Option_t*) const
 
 void TUHKMgen::GenerateEvent()
 {
-  cout << "TUHKMgen::GenerateEvent() IN" << endl;
+  // Member function overloading the TGenerator::GenerateEvent()
+  // The HYDJET++ model is run and the particle lists (fSourceList and fSecondariesList) are filled
+  //  cout << "TUHKMgen::GenerateEvent() IN" << endl;
+ // cout << "TUHKMgen::GenerateEvent() IN fSourceList " <<endl;
+  //  cout<< " fInitialStrate "<<fInitialState<<endl;  //
+  //" fSourceList "<< fSourceList<<" fAllocator "<< fAllocator <<endl;
+  
   // Generate the initial particles
-  fInitialState->Initialize(fSourceList, fAllocator);
-  cout << "TUHKMgen::fInitialState->Initialize" << endl;
+  fInitialState->Initialize(fSourceList, fAllocator);  //
+  //  cout << "TUHKMgen::fInitialState->Initialize" << endl;
  
-  if(fSourceList.empty()) 
-    Error("TUHKMgen::GenerateEvent()", "Source particle list empty after fireball initialization!! \n");
+  if(fSourceList.empty()) //
+    Error("TUHKMgen::GenerateEvent()", "Source particle list empty after fireball initialization!! \n");  //
 
   // Run the decays
-  cout << "after Initilize: get_time, weak_decay_limit" <<fInitialState->GetTime()<<fInitialState->GetWeakDecayLimit()<< endl; 
-  if(fInitialState->GetTime() >= 0.)
-    fInitialState->Evolve(fSourceList, fSecondariesList, fAllocator, fInitialState->GetWeakDecayLimit());
-  cout << "TUHKMgen::GenerateEvent() OUT" << endl;
+
+  //  cout << "after Initilize: get_time, weak_decay_limit" <<fInitialState->GetTime()<<fInitialState->GetWeakDecayLimit()<< endl;   //
+  if(fInitialState->GetTime() >= 0.)  //
+    fInitialState->Evolve(fSourceList, fSecondariesList, fAllocator, fInitialState->GetWeakDecayLimit());  //
+  //  cout << "TUHKMgen::GenerateEvent() OUT" << endl;
 }
 
 void TUHKMgen::SetAllParameters() {
-  cout << "TUHKMgen::SetAllParameters() IN" << endl;
+  // forward all model input parameters to the InitialStateHydjet object
+  // which will handle all the Monte-Carlo simulation using HYDJET++ model
+
+  //  cout << "TUHKMgen::SetAllParameters() IN" << endl;
 
   fInitialState->fParams.fSqrtS = fHydjetParams.fSqrtS;
   fInitialState->fParams.fAw = fHydjetParams.fAw;
@@ -396,10 +431,11 @@ void TUHKMgen::SetAllParameters() {
 
   fInitialState->SetPDGParticleFilename(fParticleFilename);
   fInitialState->SetPDGDecayFilename(fDecayFilename);
-  fInitialState->SetUseCharmParticles(fUseCharmParticles);
-  fInitialState->SetWidthRange(fMinWidth, fMaxWidth);
-  fInitialState->SetMassRange(fMinMass, fMaxMass);
-  //for(Int_t i=0; i<fStableFlagged; i++) fInitialState->SetPDGParticleStable(fStableFlagPDG[i], fStableFlagStatus[i]);
-  cout << "TUHKMgen::SetAllParameters() OUT" << endl;
+  //  fInitialState->SetUseCharmParticles(fUseCharmParticles);
+  //  fInitialState->SetWidthRange(fMinWidth, fMaxWidth);
+  //  fInitialState->SetMassRange(fMinMass, fMaxMass);
+  //  for(Int_t i=0; i<fStableFlagged; i++) 
+  //    fInitialState->SetPDGParticleStable(fStableFlagPDG[i], fStableFlagStatus[i]);
+  //  cout << "TUHKMgen::SetAllParameters() OUT" << endl;
 }
 
index cb25fe8..4f84384 100755 (executable)
@@ -1,35 +1,62 @@
-// This class implements the FASTMC generator model into AliROOT.
-// For the aliroot implementation we make use only of the Bjorken-like
-// initial state.
+// This class provides an interface between the HYDJET++ Monte-Carlo model
+// and ROOT (by inheriting from the TGenerator class).
 // Please look into the FASTMC articles for more documentation on the 
 // needed parameters.
 
-#ifndef TUHKMgen_H
-#define TUHKMgen_H
+#ifndef TUHKMGEN_H
+#define TUHKMGEN_H
 
 #ifndef ROOT_TGenerator
 #include "TGenerator.h"
 #endif
 
 #ifndef INITIALSTATEHYDJET_INCLUDED
-#include "InitialStateHydjet.h"
+#include "UHKM/InitialStateHydjet.h"
 #endif
 
 #ifndef DATABASE_PDG
-#include "DatabasePDG.h"
+#include "UHKM/DatabasePDG.h"
 #endif
 
 #include <string>
 using namespace std;
 
+//class DatabasePDG;
+
 class TUHKMgen : public TGenerator {
+ protected:
+  InitialStateHydjet *fInitialState;     // HYDJET++ main class which handles the entire Monte-Carlo simulation
+  ParticleAllocator fAllocator;       // object which allocates/deallocates memory for the lists of particles
+  List_t fSourceList;             // list holding the initial particles generated by both soft and hard model components  
+  List_t fSecondariesList; // list holding the initial particles and the final state particles generated in resonance decays
+  Int_t  fNPprim;          // number of primary particles
+  Int_t  fNPsec;           // secondary particles
+  InitialParamsHydjet_t fHydjetParams;  // struct holding the list of parameters for the initial state
+  // details for the PDG database
+  Char_t fParticleFilename[256];               // particle list filename
+  Char_t fDecayFilename[256];                  // decay table filename
+  Int_t fStableFlagPDG[500];                   // array of PDG codes flagged to be stable
+  Bool_t fStableFlagStatus[500];               // array of decay flag status
+  Int_t fStableFlagged;                        // number of toggled decay flags
+  //  Bool_t fUseCharmParticles;               // flag to turn on/off the use of charm particles
+  //  Double_t fMinWidth;                      // minimum decay width for the particles to be used from the PDG database
+  //  Double_t fMaxWidth;                          // maximum ----
+  //  Double_t fMinMass;                           // minimum mass for the particles to be used from the PDG database
+  //  Double_t fMaxMass;                           // maximum ----
+
+  void SetAllParameters();
+
+ private:
+  TUHKMgen(const TUHKMgen&);
+  TUHKMgen& operator=(const TUHKMgen&);
+
  public:   
   TUHKMgen();
   virtual      ~TUHKMgen();
   virtual void  Initialize();
   virtual void  GenerateEvent();
-  virtual Int_t ImportParticles(TClonesArray *particles,Option_t* option="prim");
-  virtual TObjArray* ImportParticles(Option_t* option="prim");
+  virtual Int_t ImportParticles(TClonesArray *particles, const Option_t* option="prim");
+  virtual TObjArray* ImportParticles(const Option_t* option="prim");
   // this function makes available the PDG info in our database 
   virtual DatabasePDG* PDGInfo() const {return fInitialState->PDGInfo();}
 
@@ -69,7 +96,7 @@ class TUHKMgen : public TGenerator {
   void SetCoordAsymmPar(Double_t value)    {fHydjetParams.fEpsilon = value;}        // Coordinate asymmetry parameter
 
 
-  void SetFlagWeakDecay(Int_t value)    {fHydjetParams.fWeakDecay = value;} //flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0)
+  void SetFlagWeakDecay(Double_t value)    {fHydjetParams.fWeakDecay = value;} //flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0)
 
 
   void SetEtaType(Int_t value)    {fHydjetParams.fEtaType = value;}     // flag to choose rapidity distribution, if fEtaType<=0, 
@@ -104,88 +131,62 @@ class TUHKMgen : public TGenerator {
                                   // gluons (0: small-angular, 1: wide-angular, 2:collinear) (default: 0).
   
  
-  void SetPDGParticleFile(Char_t *name)              {strcpy(fParticleFilename, name);}     // Set the filename containing the particle PDG info
-  void SetPDGDecayFile(Char_t *name)                 {strcpy(fDecayFilename, name);}        // Set the filename containing the PDG decay channels info
+  void SetPDGParticleFile(const Char_t *name)              {strcpy(fParticleFilename, name);}     // Set the filename containing the particle PDG info
+  void SetPDGDecayFile(const Char_t *name)                 {strcpy(fDecayFilename, name);}        // Set the filename containing the PDG decay channels info
   void SetPDGParticleStable(Int_t pdg, Bool_t value) {                                      // Turn on/off the decay flag for a PDG particle
     fStableFlagPDG[fStableFlagged] = pdg;
     fStableFlagStatus[fStableFlagged++] = value;
   } 
-  void SetUseCharmParticles(Bool_t flag) {fUseCharmParticles = flag;}
-  void SetMinimumWidth(Double_t value) {fMinWidth = value;}
-  void SetMaximumWidth(Double_t value) {fMaxWidth = value;}
-  void SetMinimumMass(Double_t value) {fMinMass = value;}
-  void SetMaximumMass(Double_t value) {fMaxMass = value;}
+  //  void SetUseCharmParticles(Bool_t flag) {fUseCharmParticles = flag;}
+  //  void SetMinimumWidth(Double_t value) {fMinWidth = value;}
+  //  void SetMaximumWidth(Double_t value) {fMaxWidth = value;}
+  //  void SetMinimumMass(Double_t value) {fMinMass = value;}
+  //  void SetMaximumMass(Double_t value) {fMaxMass = value;}
 
   //Getters
    
-  Double_t GetEcms()             {return fHydjetParams.fSqrtS;}          
-  Double_t GetAw()               {return fHydjetParams.fAw;}        
-  Double_t GetIfb()              {return fHydjetParams.fIfb;}
-  Double_t GetBfix()             {return fHydjetParams.fBfix;}       
-  Double_t GetBmin()             {return fHydjetParams.fBmin;}       
-  Double_t GetBmax()             {return fHydjetParams.fBmax;}       
-  Double_t GetChFrzTemperature() {return fHydjetParams.fT;} 
-  Double_t GetMuB()              {return fHydjetParams.fMuB;}
-  Double_t GetMuS()              {return fHydjetParams.fMuS;}
-  Double_t GetMuQ()              {return fHydjetParams.fMuI3;}
-  Double_t GetThFrzTemperature() {return fHydjetParams.fThFO;}
-  Double_t GetMuPionThermal()    {return fHydjetParams.fMu_th_pip;}
-  Int_t    GetSeed()             {return fHydjetParams.fSeed;}  
-  Double_t GetTauB()             {return fHydjetParams.fTau;}
-  Double_t GetSigmaTau()         {return fHydjetParams.fSigmaTau;}
-  Double_t GetRmaxB()            {return fHydjetParams.fR;}
-  Double_t GetYlMax()            {return fHydjetParams.fYlmax;}
-  Double_t GetEtaRMax()          {return fHydjetParams.fUmax;}
-  Double_t GetMomAsymmPar()      {return fHydjetParams.fDelta;}
-  Double_t GetCoordAsymmPar()    {return fHydjetParams.fEpsilon;}
-  Int_t GetFlagWeakDecay()       {return fHydjetParams.fWeakDecay;} 
-  Int_t GetEtaType()          {return fHydjetParams.fEtaType;}
-  Double_t GetGammaS()           {return fHydjetParams.fCorrS;}  
-  Int_t    GetPyquenNhsel()      {return fHydjetParams.fNhsel;}
-  Int_t    GetPyquenShad()       {return fHydjetParams.fIshad;}
-  Double_t GetPyquenPtmin()      {return fHydjetParams.fPtmin;}
-  Double_t GetPyquenT0()         {return fHydjetParams.fT0;}
-  Double_t GetPyquenTau0()       {return fHydjetParams.fTau0;}
-  Double_t GetPyquenNf()         {return fHydjetParams.fNf;}      
-  Double_t GetPyquenIenglu()     {return fHydjetParams.fIenglu;}     
-  Double_t GetPyquenIanglu()     {return fHydjetParams.fIanglu;}  
+  Double_t GetEcms() const             {return fHydjetParams.fSqrtS;}          
+  Double_t GetAw() const               {return fHydjetParams.fAw;}        
+  Double_t GetIfb() const              {return fHydjetParams.fIfb;}
+  Double_t GetBfix() const             {return fHydjetParams.fBfix;}       
+  Double_t GetBmin() const             {return fHydjetParams.fBmin;}       
+  Double_t GetBmax() const             {return fHydjetParams.fBmax;}       
+  Double_t GetChFrzTemperature() const {return fHydjetParams.fT;} 
+  Double_t GetMuB() const              {return fHydjetParams.fMuB;}
+  Double_t GetMuS() const              {return fHydjetParams.fMuS;}
+  Double_t GetMuQ() const              {return fHydjetParams.fMuI3;}
+  Double_t GetThFrzTemperature() const {return fHydjetParams.fThFO;}
+  Double_t GetMuPionThermal() const    {return fHydjetParams.fMu_th_pip;}
+  Int_t    GetSeed() const             {return fHydjetParams.fSeed;}  
+  Double_t GetTauB() const             {return fHydjetParams.fTau;}
+  Double_t GetSigmaTau() const         {return fHydjetParams.fSigmaTau;}
+  Double_t GetRmaxB() const            {return fHydjetParams.fR;}
+  Double_t GetYlMax() const            {return fHydjetParams.fYlmax;}
+  Double_t GetEtaRMax() const          {return fHydjetParams.fUmax;}
+  Double_t GetMomAsymmPar() const      {return fHydjetParams.fDelta;}
+  Double_t GetCoordAsymmPar() const    {return fHydjetParams.fEpsilon;}
+  Double_t GetFlagWeakDecay() const    {return fHydjetParams.fWeakDecay;} 
+  Int_t GetEtaType() const             {return fHydjetParams.fEtaType;}
+  Double_t GetGammaS() const           {return fHydjetParams.fCorrS;}  
+  Int_t    GetPyquenNhsel() const      {return fHydjetParams.fNhsel;}
+  Int_t    GetPyquenShad() const       {return fHydjetParams.fIshad;}
+  Double_t GetPyquenPtmin() const      {return fHydjetParams.fPtmin;}
+  Double_t GetPyquenT0() const         {return fHydjetParams.fT0;}
+  Double_t GetPyquenTau0() const       {return fHydjetParams.fTau0;}
+  Double_t GetPyquenNf() const         {return fHydjetParams.fNf;}      
+  Double_t GetPyquenIenglu() const     {return fHydjetParams.fIenglu;}     
+  Double_t GetPyquenIanglu() const     {return fHydjetParams.fIanglu;}  
   
-  Char_t*  GetPDGParticleFile()  {return fParticleFilename;}
-  Char_t*  GetPDGDecayFile()     {return fDecayFilename;}
-  Bool_t   GetUseCharmParticles(){return fUseCharmParticles;}
-  Double_t GetMinimumWidth()     {return fMinWidth;}
-  Double_t GetMaximumWidth()     {return fMaxWidth;}
-  Double_t GetMinimumMass()      {return fMinMass;}
-  Double_t GetMaximumMass()      {return fMaxMass;}
+  const Char_t*  GetPDGParticleFile() const  {return fParticleFilename;}
+  const Char_t*  GetPDGDecayFile() const     {return fDecayFilename;}
+  //  Bool_t   GetUseCharmParticles(){return fUseCharmParticles;}
+  //  Double_t GetMinimumWidth()     {return fMinWidth;}
+  //  Double_t GetMaximumWidth()     {return fMaxWidth;}
+  //  Double_t GetMinimumMass()      {return fMinMass;}
+  //  Double_t GetMaximumMass()      {return fMaxMass;}
   
   void Print(const Option_t* opt="") const;
 
- protected:
-  InitialStateHydjet *fInitialState;
-  ParticleAllocator fAllocator;
-  List_t fSourceList;
-  List_t fSecondariesList;
-  Int_t  fNPprim;
-  Int_t  fNPsec;
-  InitialParamsHydjet_t fHydjetParams;       // list of parameters for the initial state
-  // details for the PDG database
-  Char_t fParticleFilename[256];               // particle list filename
-  Char_t fDecayFilename[256];                  // decay table filename
-  Int_t fStableFlagPDG[500];                   // array of PDG codes flagged to be stable
-  Bool_t fStableFlagStatus[500];               // array of decay flag status
-  Int_t fStableFlagged;                        // number of toggled decay flags
-  Bool_t fUseCharmParticles;                   // flag to turn on/off the use of charm particles
-  Double_t fMinWidth;                          // minimum decay width for the particles to be used from the PDG database
-  Double_t fMaxWidth;                          // maximum ----
-  Double_t fMinMass;                           // minimum mass for the particles to be used from the PDG database
-  Double_t fMaxMass;                           // maximum ----
-
-  void SetAllParameters();
-
- private:
-  TUHKMgen(const TUHKMgen&);
-  TUHKMgen& operator=(const TUHKMgen&);
-
   ClassDef(TUHKMgen, 3)  //Interface to FASTMC Event Generator
 };
 #endif
index 997dbf8..313fca6 100644 (file)
@@ -28,9 +28,9 @@ using std::ios;
 DatabasePDG::DatabasePDG():
   fNParticles(0),
   fUseCharmParticles(kTRUE),
-  fMinimumWidth(0.),
+  fMinimumWidth(0.0),
   fMaximumWidth(10.),
-  fMinimumMass(0.),
+  fMinimumMass(0.0001),
   fMaximumMass(10.)
 {
   
@@ -607,7 +607,7 @@ Bool_t DatabasePDG::IsChannelAllowed(DecayChannel *channel, Double_t motherMass)
   Double_t daughtersSumMass = 0.0;
   for(Int_t i=0; i<channel->GetNDaughters(); i++)
     daughtersSumMass += GetPDGParticle(channel->GetDaughterPDG(i))->GetMass();
-  if(daughtersSumMass<motherMass)
+  if(daughtersSumMass<=motherMass)
     return kTRUE;
   return kFALSE;
 }
index 3d734d5..b13c50d 100644 (file)
@@ -1,3 +1,7 @@
+// This header file declares structure objects for
+// accessing common blocks from the fortran side of HYDJET++ (PYQUEN and PYTHIA).
+// The input parameters and output information are transmitted 
+// through these structures.
 
 #ifndef HYJETCOMMON
 #define HYJETCOMMON
@@ -7,126 +11,128 @@ extern "C" {
 #define f2cFortran
 #include "cfortran.h"
 
-
-//----------------------------------------------------------------
-// common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr        
- typedef struct //HYIPAR
-   {
- Double_t bminh;
- Double_t bmaxh; 
- Double_t AW;
- Double_t RA;
- Double_t npar0;
- Double_t nbco0;
- Double_t Apb;
- Double_t Rpb;
- Double_t np;
- Int_t init;
- Int_t ipr;
-  }HYIPARCommon;
+  //----------------------------------------------------------------
+  // common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr        
+  typedef struct // for HYIPAR common block
+  {
+    Double_t bminh;  // minimum impact parameter in units of nucleus radius RA   
+    Double_t bmaxh;  // maximum impact parameter in units of nucleus radius RA
+    Double_t AW;     // beam and target nucleus atomic weight
+    Double_t RA;     // nucleus radius
+    Double_t npar0;  // number of participants  at "reference point" (Pb,b=0) 
+    Double_t nbco0;  // number of binary sub-collisions at "reference point" (Pb,b=0)
+    Double_t Apb;    // Apb=207
+    Double_t Rpb;    //Rpb=1.15*Apb^1/3
+    Double_t np;     //internal variable of HYDJET
+    Int_t init;      //internal flag to start HYDJET initialization
+    Int_t ipr;      //internal flag to start HYDJET initialization
+  } HYIPARCommon;
+  
 #define HYIPAR COMMON_BLOCK(HYIPAR,hyipar)
-COMMON_BLOCK_DEF(HYIPARCommon, HYIPAR);
-//----------------------------------------------------------------
-
-//      common/service/iseed_fromC,iPythDecay,parPYTH(100)
- typedef struct //SERVICE
-   {
- Int_t iseed_fromC; 
- Int_t iPythDecay;
- Double_t parPYTH[100];
-  }SERVICECommon;
+  COMMON_BLOCK_DEF(HYIPARCommon, HYIPAR);
+  //----------------------------------------------------------------
+
+  //      common/service/iseed_fromC,iPythDecay,parPYTH(100)
+  typedef struct // for SERVICE common block
+  {
+    Int_t iseed_fromC;      // random number generator seed
+    Int_t iPythDecay; //internal parameter for swith on/off PYTHIA decayer not used under ALIROOT 
+    Double_t parPYTH[100]; //array for PYTHIA internal parameters
+  } SERVICECommon;
  
 #define SERVICE COMMON_BLOCK(SERVICE,service)
-COMMON_BLOCK_DEF(SERVICECommon, SERVICE);
-//----------------------------------------------------------------
-
-//  common/SERVICEEV/ipdg,delta
-
- typedef struct //SERVICEEV
-   {
- Float_t delta;
- Int_t KC;
- Int_t ipdg;
+  COMMON_BLOCK_DEF(SERVICECommon, SERVICE);
+  //----------------------------------------------------------------
+
+  //  common/SERVICEEV/ipdg,delta
+ // variables for program MYDELTA which allows to transmit delta -limits for BW from PYTHIA to c++ part
+  typedef struct // for SERVICEEV common block
+  {
+    Float_t delta;    // limits for the resonance Breit-Wigner mass (from PYTHIA)
+    Int_t KC;  //PYTHIA internal compressed code of particle        
+    Int_t ipdg; //particle pdg code transmitted from from C++
   }SERVICEEVCommon;
  
 #define SERVICEEV COMMON_BLOCK(SERVICEEV,serviceev)
-COMMON_BLOCK_DEF(SERVICEEVCommon, SERVICEEV);
-
-//----------------------------------------------------------------
+  COMMON_BLOCK_DEF(SERVICEEVCommon, SERVICEEV);
 
+  //----------------------------------------------------------------
   // common /hyjpar/ ptmin,sigin,sigjet,nhsel,ishad,njet 
- typedef struct //HYJPAR
-   {
- Double_t ptmin;
- Double_t sigin;
- Double_t sigjet;
- Int_t nhsel;
- Int_t ishad;
- Int_t njet;
-  }HYJPARCommon;
+  typedef struct // for HYJPAR common block
+  {
+    Double_t ptmin;   // minimum pt for N-N collision in PYTHIA 
+    Double_t sigin;   // total inelastic NN cross section at given c.m.s. energy (in mb)
+    Double_t sigjet;  // hard scattering NN cross section at given ptmin and energy (in mb).
+    Int_t nhsel;      // nhsel parameter for the event type (0-hydro only; 1-hydro+unquenched jets; 
+                      //                 2-hydro+quenched jets; 3-unquenched jets only; 4-quenched jets only)
+    Int_t ishad;      // flag for turning on/off nuclear shadowing
+    Int_t njet;       // number of hard parton-parton scatterings with pt>ptmin in event
+  } HYJPARCommon;
  
 #define HYJPAR COMMON_BLOCK(HYJPAR,hyjpar)
-COMMON_BLOCK_DEF(HYJPARCommon, HYJPAR);
-//----------------------------------------------------------------
-
-
-//      common /hypyin/ ene,rzta,rnta,bfix,ifb,nh
- typedef struct //HYPYIN
-   {
- Double_t ene;
- Double_t rzta;
- Double_t rnta;
- Double_t bfix; 
- Int_t ifb;
- Int_t nh;
+  COMMON_BLOCK_DEF(HYJPARCommon, HYJPAR);
+  //----------------------------------------------------------------
+
+
+  //      common /hypyin/ ene,rzta,rnta,bfix,ifb,nh
+  typedef struct //for HYPYIN common block
+  {
+    Double_t ene; //CMS energy per nucleon [GeV]
+    Double_t rzta;//fraction of protons in nucleus
+    Double_t rnta;//fraction of neutrons in nucleus
+    Double_t bfix; //fix impact parameter
+    Int_t ifb; // flag of type of centrality generation 
+               // =0 impact parameter is fixed (bfix)  
+                // >0 or <0 impact parameter is generated with standard Glauber geometry 
+                //              between minimum (bmin) and maximum (bmax) values; 
+                              
+    Int_t nh; //mean soft mult. in central PbPb
   }HYPYINCommon;
+  
 #define HYPYIN COMMON_BLOCK(HYPYIN,hypyin)
-COMMON_BLOCK_DEF(HYPYINCommon, HYPYIN);
-
-
-//----------------------------------------------------------------
- //  common /hyfpar/ bgen,nbcol,npart,npyt,nhyd,npart0        
- typedef struct //HYFPAR
-   {
- Double_t bgen;
- Double_t nbcol;
- Double_t npart;
- Double_t npart0;
- Int_t npyt;
- Int_t nhyd;
+  COMMON_BLOCK_DEF(HYPYINCommon, HYPYIN);
+  
+  
+  //----------------------------------------------------------------
+  //  common /hyfpar/ bgen,nbcol,npart,npyt,nhyd,npart0        
+  typedef struct // for HYFPAR common block
+  {
+    Double_t bgen;
+    Int_t nbcol;
+    Double_t npart;
+    Double_t npart0;
+    Int_t npyt;
+    Int_t nhyd;
   }HYFPARCommon;
+  
 #define HYFPAR COMMON_BLOCK(HYFPAR,hyfpar)
-COMMON_BLOCK_DEF(HYFPARCommon, HYFPAR);
-
-//----------------------------------------------------------------
- typedef struct //HYPART
-   {
- Double_t ppart[50000][10];
- Double_t bmin;
- Double_t bmax;
- Int_t njp;
+  COMMON_BLOCK_DEF(HYFPARCommon, HYFPAR);
+  
+  //----------------------------------------------------------------
+  typedef struct //for HYPART common block
+  {
+    Double_t ppart[50000][10];   // particle information
+    Double_t bmin;
+    Double_t bmax;
+    Int_t njp;
   }HYPARTCommon;
+  
 #define HYPART COMMON_BLOCK(HYPART,hypart)
-COMMON_BLOCK_DEF(HYPARTCommon, HYPART);
-//----------------------------------------------------------------
-
-//      common /pyqpar/ T0,tau0,nf,ienglu,ianglu 
-
- typedef struct //PYQPAR
-   {
- Double_t T0;
- Double_t tau0;
- Int_t nf;
- Int_t ienglu; 
- Int_t ianglu;
+  COMMON_BLOCK_DEF(HYPARTCommon, HYPART);
+  //----------------------------------------------------------------
+
+  //      common /pyqpar/ T0,tau0,nf,ienglu,ianglu 
+  typedef struct // for PYQPAR common block
+  {
+    Double_t T0;     // initial temperature of QGP for central Pb+Pb collisions  
+    Double_t tau0;   // proper time of quark-gluon plasma formation 
+    Int_t nf;        // number of flavours
+    Int_t ienglu;    // type of energy loss
+    Int_t ianglu;    // type of angular distribution for emitted gluons
   }PYQPARCommon;
+  
 #define PYQPAR COMMON_BLOCK(PYQPAR,pyqpar)
-COMMON_BLOCK_DEF(PYQPARCommon, PYQPAR);
-
+  COMMON_BLOCK_DEF(PYQPARCommon, PYQPAR);
+  
 } 
 #endif                     
index f777b8d..cc2417d 100644 (file)
@@ -46,9 +46,13 @@ using std::endl;
 Double_t GetDecayTime(const Particle &parent, Double_t weakDecayLimit) {
   ParticlePDG *pDef = parent.Def(); 
   Double_t width = pDef->GetWidth(); //GeV
-  if(width > weakDecayLimit) {
+
+  // if particle is set to be stable then return 0
+  if(pDef->GetStableStatus())
+    return 0.;
+
+  if(width > weakDecayLimit && weakDecayLimit>=0.0) {
     const Double_t slope =  parent.E() * 0.1973 / (pDef->GetMass() * width);
-//    cout<<"get decay time"<<pDef->GetPDG()<<" "<<slope<<endl;
     return -slope * TMath::Log(gRandom->Rndm());//in fm/c
   }
 
@@ -61,10 +65,10 @@ extern SERVICEEVCommon SERVICEEV;
 
 void Decay(List_t &output, Particle &parent, ParticleAllocator &allocator, DatabasePDG* database) {
   // check if the parent particle has been decayed already
-  
+  //  std::cout << "HadronDecayer::Decay() IN" << std::endl;
   Int_t daughters = parent.GetNDaughters();
 
-//cout<<"in Decay pdg"<< parent.Def()->GetPDG()<<"daughters "<<daughters<<endl;
+  //cout<<"in Decay pdg"<< parent.Def()->GetPDG()<<"daughters "<<daughters<<endl;
 
   if(daughters>0)  // particle decayed already
     return;
@@ -91,6 +95,13 @@ void Decay(List_t &output, Particle &parent, ParticleAllocator &allocator, Datab
   Int_t iterations = 0;
   // Try to decay the particle
   while(!success) {
+    //    std::cout << "HadronDecayer::Decay() iteration #" << iterations << std::endl;
+    if(iterations>1000) {
+      std::cout << "HadronDecayer::Decay() more than 1000 iterations to decay particle with code " 
+               << pDef->GetPDG() << std::endl;
+      std::cout << "               Will be left undecayed ... check it out!" << std::endl;
+      return;
+    }
     // get a random mass using the Breit Wigner distribution 
     Double_t BWmass = gRandom->BreitWigner(PDGmass, pDef->GetWidth()); 
     //!!!!    
@@ -115,21 +126,32 @@ void Decay(List_t &output, Particle &parent, ParticleAllocator &allocator, Datab
       Delta=0.0;
     } 
       
+    // K0 decay into K0s or K0l
+    if(TMath::Abs(encoding)==311) {
+      BWmass=PDGmass;
+      Delta=0.0;
+    }
+
+    //    std::cout << "HadronDecayer::Decay() BWmass = " << BWmass << std::endl;
+    //    std::cout << "HadronDecayer::Decay() Delta = " << Delta << std::endl;
     //for particles from PYTHIA table only, if the BW mass is outside the cut range then quit this iteration and generate another BW mass
     if(ComprCodePyth!=0 && Delta>0 && (BWmass<PDGmass-Delta || BWmass>PDGmass+Delta)){
       //      std::cout<<"encoding"<<encoding<<"delta"<<Delta<<"width "<<pDef->GetWidth()<<"mass"<<BWmass<<std::endl;
+      iterations++;
+      //      std::cout << "HadronDecayer::Decay() BWmass outside cut, try again" << std::endl;
       continue;
     }    
     //----    
     
-    if(BWmass>5)
-      std::cout<<" > 5 encoding"<<encoding<<" pdgmass "<<PDGmass<<" delta "<<Delta<<"width "<<pDef->GetWidth()<<" mass "<<BWmass<<"CC"<<ComprCodePyth<<std::endl;
+    //    if(BWmass>5)
+    //      std::cout<<" > 5 encoding"<<encoding<<" pdgmass "<<PDGmass<<" delta "<<Delta<<"width "<<pDef->GetWidth()<<" mass "<<BWmass<<"CC"<<ComprCodePyth<<std::endl;
     
     // check how many decay channels are allowed with the generated mass
     Int_t nAllowedChannels = database->GetNAllowedChannels(pDef, BWmass);
     // if no decay channels are posible with this mass, then generate another BW mass
     if(nAllowedChannels==0) {    
       iterations++;
+      //      std::cout << "HadronDecayer::Decay() no decays allowed at this BW mass" << std::endl;
       continue;
     }
 
@@ -144,10 +166,14 @@ void Decay(List_t &output, Particle &parent, ParticleAllocator &allocator, Datab
     Int_t chosenChannel = 1000;
     Bool_t found = kFALSE;
     Int_t channelIterations = 0;
+    //    std::cout << "HadronDecayer::Decay() randValue = " << randValue  << std::endl;
     while(!found) {
+      //      std::cout << "HadronDecayer::Decay() channel iteration #" << channelIterations << std::endl;
       for(Int_t nChannel = 0; nChannel < nDecayChannel; ++nChannel) {
        randValue -= pDef->GetDecayChannel(nChannel)->GetBranching();
+       //      std::cout << "HadronDecayer::Decay() channel #" << nChannel << " randValue = " << randValue << std::endl;
        if(randValue <= 0. && database->IsChannelAllowed(pDef->GetDecayChannel(nChannel), BWmass)) {
+         //      std::cout << "HadronDecayer::Decay() channel found" << std::endl;
          chosenChannel = nChannel;
          found = kTRUE;
          break;
@@ -180,9 +206,12 @@ void Decay(List_t &output, Particle &parent, ParticleAllocator &allocator, Datab
     if(nSec == 1) {
       // initialize the daughter particle
       Particle p1(database->GetPDGParticle(dc->GetDaughterPDG(0)));
+      p1.Pos(parentBW.Pos());
+      p1.Mom(parent.Mom());
       p1.SetLastMotherPdg(parentBW.Encoding());
       p1.SetLastMotherDecayCoor(parentBW.Pos());
       p1.SetLastMotherDecayMom(parentBW.Mom());
+      p1.SetType(NB);
 
       // link the parent and daughters trough their indexes in the list
       Int_t parentIndex = -1;
@@ -233,14 +262,14 @@ void Decay(List_t &output, Particle &parent, ParticleAllocator &allocator, Datab
  
       if(deltaS>0.001) {
 
-       cout << "2-body decay kinematic check in lab system: " << pDef->GetPDG() << " --> " << p1.Encoding() << " + " << p2.Encoding() << endl;
-       cout << "Mother    (e,px,py,pz): " << parentBW.Mom().E() << "\t" << parentBW.Mom().X() << "\t" << parentBW.Mom().Y() << "\t" << parentBW.Mom().Z() << endl;
-       cout << "Mother    (x,y,z,t): " << parentBW.Pos().X() << "\t" << parentBW.Pos().Y() << "\t" << parentBW.Pos().Z() << "\t" << parentBW.Pos().T() << endl;
+       //      cout << "2-body decay kinematic check in lab system: " << pDef->GetPDG() << " --> " << p1.Encoding() << " + " << p2.Encoding() << endl;
+       //      cout << "Mother    (e,px,py,pz): " << parentBW.Mom().E() << "\t" << parentBW.Mom().X() << "\t" << parentBW.Mom().Y() << "\t" << parentBW.Mom().Z() << endl;
+       //      cout << "Mother    (x,y,z,t): " << parentBW.Pos().X() << "\t" << parentBW.Pos().Y() << "\t" << parentBW.Pos().Z() << "\t" << parentBW.Pos().T() << endl;
 
-       cout << "Daughter1 (e,px,py,pz): " << p1.Mom().E() << "\t" << p1.Mom().X() << "\t" << p1.Mom().Y() << "\t" << p1.Mom().Z() << endl;
-       cout << "Daughter2 (e,px,py,pz): " << p2.Mom().E() << "\t" << p2.Mom().X() << "\t" << p2.Mom().Y() << "\t" << p2.Mom().Z() << endl;     
-       cout << "2-body decay delta(sqrtS) = " << deltaS << endl;
-       cout << "Repeating the decay algorithm ..." << endl;
+       //      cout << "Daughter1 (e,px,py,pz): " << p1.Mom().E() << "\t" << p1.Mom().X() << "\t" << p1.Mom().Y() << "\t" << p1.Mom().Z() << endl;
+       //      cout << "Daughter2 (e,px,py,pz): " << p2.Mom().E() << "\t" << p2.Mom().X() << "\t" << p2.Mom().Y() << "\t" << p2.Mom().Z() << endl;     
+       //      cout << "2-body decay delta(sqrtS) = " << deltaS << endl;
+       //      cout << "Repeating the decay algorithm ..." << endl;
 
        iterations++;
        continue;
@@ -364,13 +393,13 @@ void Decay(List_t &output, Particle &parent, ParticleAllocator &allocator, Datab
       // if deltaS is too big then repeat the kinematic procedure
       if(deltaS>0.001) {
 
-       cout << "3-body decay kinematic check in lab system: " << pDef->GetPDG() << " --> " << p1.Encoding() << " + " << p2.Encoding() << " + " << p3.Encoding() << endl;
-       cout << "Mother    (e,px,py,pz): " << parentBW.Mom().E() << "\t" << parentBW.Mom().X() << "\t" << parentBW.Mom().Y() << "\t" << parentBW.Mom().Z() << endl;
-       cout << "Daughter1 (e,px,py,pz): " << p1.Mom().E() << "\t" << p1.Mom().X() << "\t" << p1.Mom().Y() << "\t" << p1.Mom().Z() << endl;
-       cout << "Daughter2 (e,px,py,pz): " << p2.Mom().E() << "\t" << p2.Mom().X() << "\t" << p2.Mom().Y() << "\t" << p2.Mom().Z() << endl;
-       cout << "Daughter3 (e,px,py,pz): " << p3.Mom().E() << "\t" << p3.Mom().X() << "\t" << p3.Mom().Y() << "\t" << p3.Mom().Z() << endl;
-       cout << "3-body decay delta(sqrtS) = " << deltaS << endl;
-       cout << "Repeating the decay algorithm..." << endl;
+       //      cout << "3-body decay kinematic check in lab system: " << pDef->GetPDG() << " --> " << p1.Encoding() << " + " << p2.Encoding() << " + " << p3.Encoding() << endl;
+       //      cout << "Mother    (e,px,py,pz): " << parentBW.Mom().E() << "\t" << parentBW.Mom().X() << "\t" << parentBW.Mom().Y() << "\t" << parentBW.Mom().Z() << endl;
+       //      cout << "Daughter1 (e,px,py,pz): " << p1.Mom().E() << "\t" << p1.Mom().X() << "\t" << p1.Mom().Y() << "\t" << p1.Mom().Z() << endl;
+       //      cout << "Daughter2 (e,px,py,pz): " << p2.Mom().E() << "\t" << p2.Mom().X() << "\t" << p2.Mom().Y() << "\t" << p2.Mom().Z() << endl;
+       //      cout << "Daughter3 (e,px,py,pz): " << p3.Mom().E() << "\t" << p3.Mom().X() << "\t" << p3.Mom().Y() << "\t" << p3.Mom().Z() << endl;
+       //      cout << "3-body decay delta(sqrtS) = " << deltaS << endl;
+       //      cout << "Repeating the decay algorithm..." << endl;
 
        iterations++;
        continue;
index bfe86a0..b5a08cc 100644 (file)
 #endif
 #include <iostream> 
 #include <fstream>
-
+using namespace std;
 // aic(2008/08/08): define the fLastIndex static variable 
 Int_t Particle::fLastIndex;
 
 void InitialState::Evolve(List_t &source, List_t &secondaries, ParticleAllocator &allocator, Double_t weakDecayLimit) {
+  cout << "InitialState::Evolve()  IN" << endl;
   LPIT_t it;
   LPIT_t e;
 
@@ -25,16 +26,23 @@ void InitialState::Evolve(List_t &source, List_t &secondaries, ParticleAllocator
   it = source.begin();
   it->InitIndexing();
 
+  //  cout << "InitialState::Evolve()  Loop over primaries" << endl;
   // Loop over source list (primary particles) 
   for(it = source.begin(), e = source.end(); it != e; ++it) {
+    //    cout << "InitialState::Evolve()  particle(in primary loop) code = " << it->Encoding() << endl;
+    //    if(GetPDGParticleStableStatus(it->Encoding())) {
+      //      cout << "InitialState::Evolve() its a stable marked particle, decay time should be 0" << endl;
+      //    }
     // calculate the decay time of the particle
     Double_t decayTime = GetDecayTime(*it, weakDecayLimit);
+    //    cout << "InitialState::Evolve()  decay time = " << decayTime << endl;
     TVector3 shift(it->Mom().BoostVector());
     shift *= decayTime;
     it->SetLastInterTime(it->T() + decayTime);
 
     // if the particle is unstable run the decayer 
     if(decayTime > 0.) {
+      //      cout << "InitialState::Evolve()  perform decay..." << endl;
       it->Pos(it->Pos() += TLorentzVector(shift, 0.));
       it->T(it->T() + decayTime);
       // perform the decay procedure
@@ -43,25 +51,37 @@ void InitialState::Evolve(List_t &source, List_t &secondaries, ParticleAllocator
     }
     // else just add the primary to the list of particles
     else {
+      //      cout << "InitialState::Evolve()  stable particle (just add it to the list of final particles)" << endl;
       it->SetIndex();
       allocator.AddParticle(*it, secondaries);
     }
   }
 
+  //  cout << "InitialState::Evolve()  Loop over secondaries" << endl;
   // Loop over the secondaries list and decay the cascades
   for(it = secondaries.begin(), e = secondaries.end(); it != e;) {
+    //    cout << "InitialState::Evolve()  particle(in secondaries loop) code " << it->Encoding() << endl;
+    if(GetPDGParticleStableStatus(it->Encoding())) {
+      //      cout << "InitialState::Evolve()  its a stable particle " << it->Encoding()
+      //          << "(already added to final list)"  << endl;
+      ++it;
+      continue;
+    }
     // the primaries are already decayed, so just ignore it
     if(it->GetMother()==-1) {  
+      //      cout << "InitialState::Evolve()  its a primary (already decayed)" << endl;
       ++it;
       continue;
     }
     Double_t decayTime = GetDecayTime(*it, weakDecayLimit);
+    //    cout << "InitialState::Evolve()  decay time = " << decayTime << endl;
     it->SetLastInterTime(it->T() + decayTime);
     TVector3 shift(it->Mom().BoostVector());
     shift *= decayTime; 
     
     // if the particle is unstable run the decays
     if(decayTime > 0.) {
+      //      cout << "InitialState::Evolve()  perform decay..." << endl;
       it->Pos(it->Pos() += TLorentzVector(shift, 0.));
       it->T(it->T() + decayTime);
       // The decay products are added to the list inside the Decay() function
@@ -71,7 +91,10 @@ void InitialState::Evolve(List_t &source, List_t &secondaries, ParticleAllocator
       ++it;
     }
     // else just continue
-    else
+    else {
+      //      cout << "InitialState::Evolve() no decay, continue to next particle" << endl;
       ++it;
+    }
   }
+  //  cout << "InitialState::Evolve()  OUT"<< endl;
 }
index d63e2e2..5a43fe3 100644 (file)
@@ -75,11 +75,10 @@ using std::cout;
 using std::endl;
 
 void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocator) {
+  // Generate initial particles from the soft and hard components
  
   //----- high-pt part------------------------------
   TLorentzVector partJMom, partJPos, zeroVec;
-
   HYJPAR.ishad  = fParams.fIshad;
   PYQPAR.T0     = fParams.fT0;
   PYQPAR.tau0   = fParams.fTau0;
@@ -87,32 +86,29 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
   PYQPAR.ienglu = fParams.fIenglu;
   PYQPAR.ianglu = fParams.fIanglu;
 
-  //std::cout<<"in InitialStateHydjet::Initialize nhsel"<<fParams.fNhsel<<std::endl;
+  //  cout<<"in InitialStateHydjet::Initialize nhsel"<<fParams.fNhsel<<endl;
 
+  // run a HYDJET event
+  hyevnt_(); 
+  //  std::cout<<"in InitialStateHydjet after hyevnt"<<std::endl;
+   
+  //get number of particles in jets
+  Int_t numbJetPart = HYPART.njp;  //
+  Double_t  Bgen = HYFPAR.bgen;
+  Int_t  Njet = HYJPAR.njet;
+  Int_t  Nbcol = HYFPAR.nbcol;
+  
+  //  std::cout<<"in InitialStateHydjet::Initialize bgen "<<Bgen<<" njet "<<Njet<<" "<<" Nbcol "<<Nbcol<<std::endl;
+  //  std::cout<<"in InitialStateHydjet::Initialize numb jet part"<<numbJetPart<<std::endl;
 
   if(fParams.fNhsel != 0) {   
-    //generate non-equilibrated part event
-
-    //std::cout<<"in InitialStateHydjet before hyevnt"<<std::endl;
-
-    hyevnt_();
-    
-    //std::cout<<"in InitialStateHydjet after hyevnt"<<std::endl;
-    
-    
-    //get number of particles in jets
     Int_t numbJetPart = HYPART.njp;
-//     Double_t  Bgen = HYFPAR.bgen;
-//     Int_t  Njet = HYJPAR.njet;
-//     Int_t  Nbcol = HYFPAR.nbcol;
-
- // std::cout<<"in InitialStateHydjet::Initialize bgen "<<Bgen<<" njet "<<Njet<<" "<<" Nbcol "<<Nbcol<<std::endl;
- // std::cout<<"in InitialStateHydjet::Initialize numb jet part"<<numbJetPart<<std::endl;
-
-
     for(Int_t i = 0; i <numbJetPart; ++i) {
       Int_t pdg = int(HYPART.ppart[i][1]);
-      if(pdg==310) pdg=311; //Kos Kol 130 we have no in the table, we do not put its in the list, the same for e,mu  
+      //      if(pdg==310) pdg=311; //Kos Kol 130 we have no in the table, we do not put its in the list, the same for e,mu  
+      //      if(pdg==130 || pdg==-130) continue;
+      //      if(pdg==311 || pdg==-311 || pdg=130 || pdg==-130 || pdg==310 || pdg==-310)
+      //       cout << "pdg = " << pdg << endl;
       Double_t px = HYPART.ppart[i][2];
       Double_t py = HYPART.ppart[i][3];
       Double_t pz = HYPART.ppart[i][4];
@@ -123,19 +119,27 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
       Double_t vt = HYPART.ppart[i][9];    
       partJMom.SetXYZT(px, py, pz, e); 
       partJPos.SetXYZT(vx, vy, vz, vt);
-      //  std::cout<<" --InitialStateHydjet  pdg "<<pdg<<" px "<<px<<" py "<<py<<" pz "<<pz<<" e"<<e<<std::endl;
-      //  std::cout<<" vx in fm "<<vx<<" vy "<<vy<<" vz "<<vz<<"vt"<<vt<<std::endl;
+      //std::cout<<" --InitialStateHydjet  pdg "<<pdg<<" px "<<px<<" py "<<py<<" pz "<<pz<<" e"<<e<<std::endl;
+      //        std::cout<<" vx in fm "<<vx<<" vy "<<vy<<" vz "<<vz<<"vt"<<vt<<std::endl;
       ParticlePDG *partDef = fDatabase->GetPDGParticle(pdg);
+      //      cout<<"after ParticlePDG"<<pdg<<" partDef"<<partDef<<endl;
+      
       Int_t type =1;                //from jet
-      if(partDef)allocator.AddParticle(Particle(partDef, partJPos, partJMom, 0, 0,type,-1, zeroVec, zeroVec), source); 
+      if(partDef)
+       allocator.AddParticle(Particle(partDef, partJPos, partJMom, 0, 0,type,-1, zeroVec, zeroVec), source);
+      //      else 
+      //       cout << "particle not added in output (no definition in DatabasePDG)" << endl;
     }
-  }  //nhsel !=0 not only hydro!             
+  }       //nhsel !=0 not only hydro!             
 
-  //std::cout<<"in InitialStateHydjet::Initialize 2"<<std::endl;
+  //  std::cout<<"in InitialStateHydjet::Initialize 2"<<std::endl;
 
          
   //----------HYDRO part------------------------------------------------
   if(fParams.fNhsel < 3) {
+   
+    //    cout<<"in HYDRO part 0"<<endl;
+  
     const Double_t  weightMax = 2*TMath::CosH(fParams.fUmax);
     const Int_t nBins = 100;
     Double_t probList[nBins];
@@ -149,32 +153,36 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
     //-------------------------------------
     // get impact parameter    
     //    Double_t impactParameter = HYFPAR.bgen;
+
+
+    //    cout<<"in HYDRO part 1"<<endl;
     
     //effective volume for central     
     double dYl= 2 * fParams.fYlmax; //uniform distr. [-Ylmax; Ylmax]  
     if(fParams.fEtaType >0) dYl = TMath::Sqrt(2 * TMath::Pi()) * fParams.fYlmax ;  //Gaussian distr. 
-    Double_t VolEffcent = 2 * TMath::Pi() * fParams.fTau * dYl * (fParams.fR * fParams.fR)/TMath::Power((fParams.fUmax),2)*((fParams.fUmax)*TMath::SinH((fParams.fUmax))-TMath::CosH((fParams.fUmax))+ 1);
+    Double_t volEffcent = 2 * TMath::Pi() * fParams.fTau * dYl * (fParams.fR * fParams.fR)/TMath::Power((fParams.fUmax),2)*((fParams.fUmax)*TMath::SinH((fParams.fUmax))-TMath::CosH((fParams.fUmax))+ 1);
+  
+    //    cout<<"in HYDRO part 2"<<HYFPAR.npart<<" " <<HYFPAR.npart0<<endl;
  
     //effective volume for non-central Simpson2 
-    Double_t VolEffnoncent = fParams.fTau * dYl * SimpsonIntegrator2(0., 2.*TMath::Pi());
-
-    fVolEff = VolEffcent * HYFPAR.npart/HYFPAR.npart0;
+    Double_t volEffnoncent = fParams.fTau * dYl * SimpsonIntegrator2(0., 2.*TMath::Pi());
+    fVolEff = volEffcent * HYFPAR.npart/HYFPAR.npart0;
 
-    Double_t coeff_RB = TMath::Sqrt(VolEffcent * HYFPAR.npart/HYFPAR.npart0/VolEffnoncent);
-    Double_t coeff_R1 = HYFPAR.npart/HYFPAR.npart0;
-    coeff_R1 = TMath::Power(coeff_R1, 0.333333);
+    Double_t coeffRB = TMath::Sqrt(volEffcent * HYFPAR.npart/HYFPAR.npart0/volEffnoncent);
+    Double_t coeffR1 = HYFPAR.npart/HYFPAR.npart0;
+    coeffR1 = TMath::Power(coeffR1, 0.333333);
 
-   //std::cout<<"HYFPAR.npart"<<HYFPAR.npart<<std::endl;
+    //    std::cout<<"HYFPAR.npart"<<HYFPAR.npart<<std::endl;
 
-    double Veff=fVolEff;
+    double veff=fVolEff;
 
-   std::cout<<"Veff "<<Veff<<std::endl;
+    //    std::cout<<"veff "<<veff<<std::endl;
    
     //------------------------------------
     //cycle on particles types
     for(Int_t i = 0; i < fParams.fNPartTypes; ++i) {
-      double Mparam = fParams.fPartMult[2 * i] * Veff;
-      Int_t multiplicity = gRandom->Poisson(Mparam);
+      Double_t mparam = fParams.fPartMult[2 * i] * veff;
+      Int_t multiplicity = gRandom->Poisson(mparam);
       const Int_t encoding = fParams.fPartEnc[i];
 
       if(multiplicity > 0) {
@@ -185,7 +193,7 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
        }
        //no charm now !
        if(partDef->GetCharmQNumber()!=0 || partDef->GetCharmAQNumber()!=0){
-         cout<<"charmed particle, don't use now ! "<<encoding<<endl;
+         //      cout<<"charmed particle, don't use now ! "<<encoding<<endl;
          continue;
        }
 
@@ -200,13 +208,13 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
        //prepare histogram to sample hadron energy: 
        Double_t h = (eMax - mass) / nBins;
        Double_t x = mass + 0.5 * h;
-       Int_t i;        
-       for(i = 0; i < nBins; ++i) {
-         if(x>=mu && fParams.fThFO>0)probList[i] = x * TMath::Sqrt(x * x - mass * mass) / 
+        Int_t ii; 
+       for(ii = 0; ii < nBins; ++ii) {
+         if(x>=mu && fParams.fThFO>0)probList[ii] = x * TMath::Sqrt(x * x - mass * mass) / 
                                        (TMath::Exp((x - mu) / (fParams.fThFO)) + d);
-         if(x>=mu && fParams.fThFO<=0)probList[i] = x * TMath::Sqrt(x * x - mass * mass) / 
+         if(x>=mu && fParams.fThFO<=0)probList[ii] = x * TMath::Sqrt(x * x - mass * mass) / 
                                         (TMath::Exp((x - mu) / (fParams.fT)) + d);                                                              
-         if(x<mu)probList[i] = 0.; 
+         if(x<mu)probList[ii] = 0.; 
          x += h;
        }
        arrayFunctDistE.PrepareTable(probList);
@@ -215,8 +223,8 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
        h = (fParams.fR) / nBins;
        x =  0.5 * h;
        Double_t param = (fParams.fUmax) / (fParams.fR);
-       for(i = 0; i < nBins; ++i) {
-         probList[i] = x * TMath::CosH(param*x);
+       for(ii = 0; ii < nBins; ++ii) {
+         probList[ii] = x * TMath::CosH(param*x);
          x += h;
        }
        arrayFunctDistR.PrepareTable(probList);
@@ -224,7 +232,7 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
        //loop over hadrons, assign hadron coordinates and momenta
        Double_t weight = 0., yy = 0., px0 = 0., py0 = 0., pz0 = 0.;
        Double_t e = 0., x0 = 0., y0 = 0., z0 = 0., t0 = 0., etaF = 0.; 
-       Double_t r, RB, phiF;
+       Double_t r, rB, phiF;
       
        for(Int_t j = 0; j < multiplicity; ++j) {               
          do {
@@ -234,17 +242,17 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
            if(TMath::Abs(etaF)>5.)continue;
            
            //old
-           //    double RBold = fParams.fR * TMath::Sqrt(1-fParams.fEpsilon);
+           //    double rBold = fParams.fR * TMath::Sqrt(1-fParams.fEpsilon);
            
-           RB = fParams.fR * coeff_RB * coeff_R1;
+           rB = fParams.fR * coeffRB * coeffR1;
                
            Double_t rho = TMath::Sqrt(gRandom->Rndm());
            Double_t phi = TMath::TwoPi() * gRandom->Rndm();
-           Double_t Rx =  TMath::Sqrt(1-fParams.fEpsilon)*RB; 
-           Double_t Ry =  TMath::Sqrt(1+fParams.fEpsilon)*RB;
+           Double_t rx =  TMath::Sqrt(1-fParams.fEpsilon)*rB; 
+           Double_t ry =  TMath::Sqrt(1+fParams.fEpsilon)*rB;
            
-           x0 = Rx * rho * TMath::Cos(phi);
-           y0 = Ry * rho * TMath::Sin(phi);
+           x0 = rx * rho * TMath::Cos(phi);
+           y0 = ry * rho * TMath::Sin(phi);
            r = TMath::Sqrt(x0*x0+y0*y0);
            phiF = TMath::Abs(TMath::ATan(y0/x0));
            
@@ -253,14 +261,14 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
            if(x0>0&&y0<0)phiF = 2.*TMath::Pi()-phiF;
            
            //proper time with emission duration                                                               
-           Double_t tau = coeff_R1 * fParams.fTau +  sqrt(2.) * fParams.fSigmaTau * coeff_R1 * (gRandom->Gaus());        
+           Double_t tau = coeffR1 * fParams.fTau +  sqrt(2.) * fParams.fSigmaTau * coeffR1 * (gRandom->Gaus());          
            z0 = tau  * TMath::SinH(etaF);                                                                             
            t0 = tau  * TMath::CosH(etaF);
          
-           Double_t rhou = fParams.fUmax * r / RB;
+           Double_t rhou = fParams.fUmax * r / rB;
 
-           //double_t rold= r/coeff_RB;
-           //Double_t rhou_old = fParams.fUmax * rold / RBold;
+           //double_t rold= r/coeffRB;
+           //Double_t rhou_old = fParams.fUmax * rold / rBold;
            //std::cout<<"rhou"<<rhou<<"rhou_old"<<rhou_old<<std::endl;
         
            Double_t uxf = TMath::SinH(rhou)*TMath::Sqrt(1+fParams.fDelta)*TMath::Cos(phiF); 
@@ -294,6 +302,8 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
          partPos.SetXYZT(x0, y0, z0, t0);
          partMom.Boost(vec3);
          Int_t type =0; //hydro
+
+         //           cout<<"before AddParticle in HYDRO part"<<endl;
          allocator.AddParticle(Particle(partDef, partPos, partMom, 0., 0, type, -1, zeroVec, zeroVec), source);
          
         } //nhsel==4 , no hydro part
@@ -301,12 +311,14 @@ void InitialStateHydjet::Initialize(List_t &source, ParticleAllocator & allocato
     } 
   }
   
-    std::cout<<"in InitialStateHydjet::Initialize OUT"<<std::endl;
+  //    std::cout<<"in InitialStateHydjet::Initialize OUT"<<std::endl;
 
 }
 
 Bool_t InitialStateHydjet::ReadParams() {     
-  std::cout<<"\nWelcome to Hydjet++ hadron freezeout generator!\nInput: \n\n"; 
+  // Read parameters from an input file in ascii 
+  //  std::cout<<"\nWelcome to Hydjet++ hadron freezeout generator!\nInput: \n\n"; 
   Float_t par[200] = {0.};
   Int_t i = 0; 
   std::string s(40,' '); 
@@ -415,6 +427,9 @@ Bool_t InitialStateHydjet::ReadParams() {
 }
 
 Bool_t InitialStateHydjet::MultIni() {
+  // Calculate average multiplicities, chemical potentials (if necessary),
+  // initialize pyquen 
+
   //check and redefine input parameters
   if(fParams.fTMuType>0 &&  fParams.fSqrtS > 2.24) {
     if(fParams.fSqrtS < 2.24){
@@ -436,7 +451,7 @@ Bool_t InitialStateHydjet::MultIni() {
     //compute strangeness potential
     if(fParams.fMuB > 0.01)
       fParams.fMuS = psp->CalculateStrangePotential();
-    cout << "fMuS = " << fParams.fMuS << endl;  
+    //    cout << "fMuS = " << fParams.fMuS << endl;  
     
     //if user choose fYlmax larger then allowed by kinematics at the specified beam energy sqrt(s)     
     if(fParams.fYlmax > TMath::Log(fParams.fSqrtS/0.94)){
@@ -448,8 +463,8 @@ Bool_t InitialStateHydjet::MultIni() {
     if(fParams.fCorrS <= 0.) {
       //see F. Becattini, J. Mannien, M. Gazdzicki, Phys Rev. C73 044905 (2006)
       fParams.fCorrS = 1. - 0.386* TMath::Exp(-1.23*fParams.fT/fParams.fMuB);
-      std::cout<<"The phenomenological f-la F. Becattini et al. PRC73 044905 (2006) for CorrS was used." << std::endl;
-      std::cout<<"Strangeness suppression parameter = "<<fParams.fCorrS << std::endl;
+      //      std::cout<<"The phenomenological f-la F. Becattini et al. PRC73 044905 (2006) for CorrS was used." << std::endl;
+      //      std::cout<<"Strangeness suppression parameter = "<<fParams.fCorrS << std::endl;
       
     }
     std::cout<<"The phenomenological f-la J. Cleymans et al. PRC73 034905 (2006) for Tch mu_B was used." << std::endl;
@@ -464,8 +479,8 @@ Bool_t InitialStateHydjet::MultIni() {
   }
   
   
-  std::cout<<"Used eta_max = "<<fParams.fYlmax<<  std::endl;
-  std::cout<<"maximal allowed eta_max TMath::Log(fParams.fSqrtS/0.94)=  "<<TMath::Log(fParams.fSqrtS/0.94)<<std::endl;
+  //  std::cout<<"Used eta_max = "<<fParams.fYlmax<<  std::endl;
+  //  std::cout<<"maximal allowed eta_max TMath::Log(fParams.fSqrtS/0.94)=  "<<TMath::Log(fParams.fSqrtS/0.94)<<std::endl;
   
   
   
@@ -489,7 +504,7 @@ Bool_t InitialStateHydjet::MultIni() {
   PYQPAR.ianglu = fParams.fIanglu;
   
   
-  myini_();
+  myini_();  //
   
   
   // calculation of  multiplicities of different particle species
@@ -508,16 +523,18 @@ Bool_t InitialStateHydjet::MultIni() {
   if (fParams.fEtaType >0) dYl = TMath::Sqrt(2 * TMath::Pi()) * fParams.fYlmax ;  //Gaussian distr.                                                                            
   fVolEff = 2 * TMath::Pi() * fParams.fTau * dYl * (fParams.fR * fParams.fR)/TMath::Power((fParams.fUmax),2) * 
     ((fParams.fUmax)*TMath::SinH((fParams.fUmax))-TMath::CosH((fParams.fUmax))+ 1);
-  std::cout <<"central Effective volume = " << fVolEff << " [fm^3]" << std::endl;
+  //  std::cout << "pion pointer = " << fDatabase->GetPDGParticle(211) << std::endl;
+  //  std::cout << "pion mass = " << (fDatabase->GetPDGParticle(211))->GetMass() << std::endl;
+  //  std::cout <<"central Effective volume = " << fVolEff << " [fm^3]" << std::endl;
   
   Double_t particleDensity_pi_ch=0;
   Double_t particleDensity_pi_th=0;
   //  Double_t particleDensity_th_0=0;
   
   if(fParams.fThFO != fParams.fT && fParams.fThFO > 0){
-    GrandCanonical gc_ch(15, fParams.fT, fParams.fMuB, fParams.fMuS, fParams.fMuI3);
-    GrandCanonical gc_pi_th(15, fParams.fThFO, 0., 0., fParams.fMu_th_pip);
-    GrandCanonical gc_th_0(15, fParams.fThFO, 0., 0., 0.);
+    //GrandCanonical gc_ch(15, fParams.fT, fParams.fMuB, fParams.fMuS, fParams.fMuI3);
+    //GrandCanonical gc_pi_th(15, fParams.fThFO, 0., 0., fParams.fMu_th_pip);
+    //GrandCanonical gc_th_0(15, fParams.fThFO, 0., 0., 0.);
     particleDensity_pi_ch = gc_ch.ParticleNumberDensity(fDatabase->GetPDGParticle(211));
     particleDensity_pi_th = gc_pi_th.ParticleNumberDensity(fDatabase->GetPDGParticle(211));
   }
@@ -527,11 +544,13 @@ Bool_t InitialStateHydjet::MultIni() {
     Int_t encoding = currParticle->GetPDG();
     //strangeness supression
     Double_t gammaS = 1;
-    Int_t S = Int_t(currParticle->GetStrangeness());
-    if(encoding == 333)S = 2;
-    if(fParams.fCorrS < 1. && S != 0)gammaS = TMath::Power(fParams.fCorrS,-TMath::Abs(S));
+    Int_t s = Int_t(currParticle->GetStrangeness());
+    if(encoding == 333) 
+      s = 2;
+    if(fParams.fCorrS < 1. && s != 0)
+      gammaS = TMath::Power(fParams.fCorrS,-TMath::Abs(s));
     //average densities      
-    Double_t particleDensity = gammaS*gc.ParticleNumberDensity(currParticle);
+    Double_t particleDensity = gc.ParticleNumberDensity(currParticle)/gammaS;
     
     //compute chemical potential for single f.o. mu==mu_ch
     Double_t mu = fParams.fMuB  * Int_t(currParticle->GetBaryonNumber()) + 
@@ -552,7 +571,14 @@ Bool_t InitialStateHydjet::MultIni() {
       particleDensity = numb_dens_bolt;         
     }
     
-     if(abs(encoding)==22)particleDensity=0;
+    // set particle number density to zero for some species
+    // photons
+    if(abs(encoding)==22)
+      particleDensity=0;
+    // K0L and K0S
+    if(abs(encoding)==130 || abs(encoding)==310) {
+      particleDensity=0;
+    }    
     
     if(particleDensity > 0.) {
       //      outMult<<encoding<< "         " <<particleDensity<< "      "<<mu<<std::endl;
@@ -568,18 +594,19 @@ Bool_t InitialStateHydjet::MultIni() {
 }
 
 Double_t InitialStateHydjet::SimpsonIntegrator2(Double_t a, Double_t b) {
+  // Simpson integration
   Int_t nsubIntervals=10000;
   Double_t h = (b - a)/nsubIntervals; //0-pi, phi
   Double_t s=0;
-  //  Double_t h2 = (fParams.fR)/nsubIntervals; //0-R maximal RB ?
+  //  Double_t h2 = (fParams.fR)/nsubIntervals; //0-R maximal rB ?
 
   Double_t x = 0; //phi
   for(Int_t j = 1; j < nsubIntervals; j++) {
     x += h; // phi
     Double_t e = fParams.fEpsilon;
     Double_t RsB = fParams.fR; //test: podstavit' *coefff_RB
-    Double_t RB = RsB *(TMath::Sqrt(1-e*e)/TMath::Sqrt(1+e*TMath::Cos(2*x))); //f-la7 RB    
-    Double_t sr = SimpsonIntegrator(0,RB,x);
+    Double_t rB = RsB *(TMath::Sqrt(1-e*e)/TMath::Sqrt(1+e*TMath::Cos(2*x))); //f-la7 rB    
+    Double_t sr = SimpsonIntegrator(0,rB,x);
     s += sr;
   }
   return s*h;
@@ -587,6 +614,7 @@ Double_t InitialStateHydjet::SimpsonIntegrator2(Double_t a, Double_t b) {
 }
 
 Double_t InitialStateHydjet::SimpsonIntegrator(Double_t a, Double_t b, Double_t phi) {
+  // Simpson integration
   Int_t nsubIntervals=100;
   Double_t h = (b - a)/nsubIntervals;
   Double_t s = f2(phi,a + 0.5*h);
@@ -606,6 +634,7 @@ Double_t InitialStateHydjet::SimpsonIntegrator(Double_t a, Double_t b, Double_t
 
 //f2=f(phi,r)
 Double_t InitialStateHydjet::f2(Double_t x, Double_t y) {
+  // formula
   Double_t RsB = fParams.fR; //test: podstavit' *coefff_RB
   Double_t rhou =  fParams.fUmax * y / RsB;
   Double_t ff = y*TMath::CosH(rhou)*
@@ -616,10 +645,11 @@ Double_t InitialStateHydjet::f2(Double_t x, Double_t y) {
 
 
 Double_t InitialStateHydjet::MidpointIntegrator2(Double_t a, Double_t b) {
+  // Perform integration through the mid-point method
   Int_t nsubIntervals=2000; 
   Int_t nsubIntervals2=1; 
   Double_t h = (b - a)/nsubIntervals; //0-pi , phi
-  Double_t h2 = (fParams.fR)/nsubIntervals; //0-R maximal RB ?
+  Double_t h2 = (fParams.fR)/nsubIntervals; //0-R maximal rB ?
 
   Double_t x = a + 0.5*h;
   Double_t y = 0;
@@ -632,9 +662,9 @@ Double_t InitialStateHydjet::MidpointIntegrator2(Double_t a, Double_t b) {
     x += h; // integr  phi
 
     Double_t RsB = fParams.fR; //test: podstavit' *coefff_RB
-    Double_t  RB = RsB *(TMath::Sqrt(1-e*e)/TMath::Sqrt(1+e*TMath::Cos(2*x))); //f-la7 RB
+    Double_t  rB = RsB *(TMath::Sqrt(1-e*e)/TMath::Sqrt(1+e*TMath::Cos(2*x))); //f-la7 rB
 
-    nsubIntervals2 = Int_t(RB / h2)+1;
+    nsubIntervals2 = Int_t(rB / h2)+1;
     // integr R 
     y=0;
     for(Int_t i = 1; i < nsubIntervals2; i++) 
index 5fc6d09..897ab7e 100644 (file)
@@ -53,7 +53,7 @@ struct InitialParamsHydjet_t {
    Double_t fEpsilon;     //coordinate asymmetry parameter
   
    Int_t fDecay;    // flag to switch on/off hadron decays<0: decays off,>=0: decays on, (default: 0)
-   Int_t fWeakDecay;    //flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0)
+   Double_t fWeakDecay;    //flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0)
    Int_t fPythDecay;    //Flag to choose how to decay resonances in high-pt part, fPythDecay: 0 by PYTHIA decayer, 
                                      //1 by FASTMC decayer(mstj(21)=0)  
   
@@ -104,6 +104,7 @@ struct InitialParamsHydjet_t {
 
 };
 
+
 class InitialStateHydjet : public InitialState {
  public:
   InitialStateHydjet() : fParams(), fVolEff(0){};
index 124e7f0..6ced553 100644 (file)
@@ -68,6 +68,32 @@ Particle::Particle(ParticlePDG *prop, const TLorentzVector &pos, const TLorentzV
   for(Int_t i=0; i<3; i++) fDaughterIndex[i] = -1;
 }
 
+Particle::Particle(const Particle& copy) :
+  fPosition(copy.Pos()),
+    fMomentum(copy.Mom()),
+    fLastMotherDecayCoor(copy.GetLastMotherDecayCoor()),
+    fLastMotherDecayMom(copy.GetLastMotherDecayMom()),
+    fParticleProperties(copy.Def()),
+    fLastInteractionTime(copy.GetLastInterTime()),
+    fInteractionNumber(copy.GetLastInterNumber()),
+    fLastMotherPdg(copy.GetLastMotherPdg()),
+    fType(copy.GetType()),
+    fIndex(copy.GetIndex()),
+    fMotherIndex(copy.GetMother()),
+    fNDaughters(copy.GetNDaughters())
+{
+      for(Int_t i=0; i<fNDaughters; i++) {
+        fDaughterIndex[i] = copy.GetDaughter(i);
+      }
+}
+
+
+
+Particle & Particle::operator=(const Particle& /*copy*/) {
+  return *this;
+}
+
+
 Int_t Particle::Encoding() const {
   return fParticleProperties->GetPDG();
 }
index 516017e..42ffa5e 100644 (file)
 
 class Particle {
  public:
+
   Particle(const TLorentzVector &, const TLorentzVector &);
+  Particle(const Particle& copy);
+  Particle& operator=(const Particle&);
+
+  virtual ~Particle() {};
   Particle(ParticlePDG *pdg = 0);
   Particle(ParticlePDG *pdg, const TLorentzVector &pos, const TLorentzVector &mom,
           Double_t lastInterTime = 0., Int_t lastInterNum = 0, Int_t type=0);
@@ -80,11 +86,11 @@ class Particle {
   // aic(2008/08/08): functions added in order to enable tracking of mother/daughter particles by a unique index
   // The index coincides with the position of the particle in the secondaries list.
   Int_t SetIndex() {fIndex = ++fLastIndex; return fIndex;}
-  Int_t GetIndex() {return fIndex;}
+  Int_t GetIndex() const {return fIndex;}
   static Int_t GetLastIndex() {return fLastIndex;}
   void InitIndexing() {fLastIndex = -1;}
   void SetMother(Int_t value) {fMotherIndex = value;}
-  Int_t GetMother() {return fMotherIndex;}
+  Int_t GetMother() const {return fMotherIndex;}
   void SetDaughter(Int_t value) {
     if(fNDaughters==3) {
       std::cout << "Warning in Particle::SetDaughter() Already 3 daughters are set!! Check it out!!" << std::endl;
@@ -92,8 +98,8 @@ class Particle {
     }
     fDaughterIndex[fNDaughters++] = value;
   }
-  Int_t GetNDaughters() {return fNDaughters;}
-  Int_t GetDaughter(Int_t value) {
+  Int_t GetNDaughters() const {return fNDaughters;}
+  Int_t GetDaughter(Int_t value) const {
     if(value<0 || value>fNDaughters-1) {
       std::cout << "Warning in Particle::GetDaughter(Int_t) This particle has " << fNDaughters 
                << " daughters. The argument must range from 0 to " << fNDaughters-1 << std::endl;
index 576d940..372fe94 100644 (file)
 using std::cout;
 using std::endl;
 
-ParticlePDG::ParticlePDG() {
-  fPDG   = kNonsensePDG;
-  fMass  = -1.0;
-  fWidth = 0.0;
-  fNDecayChannels = 0;
+ParticlePDG::ParticlePDG() :
+  fPDG(kNonsensePDG),
+  fMass(-1.0),
+  fWidth(0.0),
+  fSpin(0.0),
+  fIsospin(0.0),
+  fIsospinZ(0.0),
+  fLightQuarkNumber(0.0),
+  fAntiLightQuarkNumber(0.0),
+  fStrangeQuarkNumber(0.0),
+  fAntiStrangeQuarkNumber(0.0),
+  fCharmQuarkNumber(0.0),
+  fAntiCharmQuarkNumber(0.0),
+  fNDecayChannels(0),
+  fStable(0.0)
+{
   for(Int_t i=0; i<kMaxDecayChannels; i++)
     fDecayChannels[i] = new DecayChannel();
 }
 
-ParticlePDG::ParticlePDG(Char_t *name, Int_t pdg, Double_t mass, Double_t width) {
+ParticlePDG::ParticlePDG(Char_t *name, Int_t pdg, Double_t mass, Double_t width) :
+  fPDG(pdg),
+  fMass(mass),
+  fWidth(width),
+  fSpin(0.0),
+  fIsospin(0.0),
+  fIsospinZ(0.0),
+  fLightQuarkNumber(0.0),
+  fAntiLightQuarkNumber(0.0),
+  fStrangeQuarkNumber(0.0),
+  fAntiStrangeQuarkNumber(0.0),
+  fCharmQuarkNumber(0.0),
+  fAntiCharmQuarkNumber(0.0),
+  fNDecayChannels(0),
+  fStable(0.0)
+{
   for(Int_t i=0; i<9; i++)
     if(*(name+i) != '\0') fName[i] = *(name+i);
     else break;
-  fPDG   = pdg;
-  fMass  = mass;
-  fWidth = width;
-  fNDecayChannels = 0;
   for(Int_t i=0; i<kMaxDecayChannels; i++)
     fDecayChannels[i] = new DecayChannel();
 }
index e4cdd7a..39efae6 100644 (file)
@@ -24,7 +24,10 @@ const Int_t kMaxDecayChannels = 20;
 class ParticlePDG {
  public:
   ParticlePDG();
   ParticlePDG(Char_t* name, Int_t pdg, Double_t mass, Double_t width);
+
+  
   ~ParticlePDG();
   
   void AddChannel(DecayChannel* channel);
index bb9aba3..b8a6476 100644 (file)
@@ -1,13 +1,13 @@
-Ns2600plu    2.6000000    0.6500000         5.5      0.5      0.5     3.      0.     0.      0.        0.       0.       9401 \r
-Ns2600zer    2.6000000    0.6500000         5.5      0.5     -0.5     3.      0.     0.      0.        0.       0.       9400 \r
-Ns2600plb    2.6000000    0.6500000         5.5      0.5     -0.5     0.      0.     3.      0.        0.       0.      -9401 \r
-Ns2600zrb    2.6000000    0.6500000         5.5      0.5      0.5     0.      0.     3.      0.        0.       0.      -9400 \r
+Ns2600plu    2.6000000    0.6500000         5.5      0.5      0.5     3.      0.     0.      0.        0.       0.       9401\r
+Ns2600zer    2.6000000    0.6500000         5.5      0.5     -0.5     3.      0.     0.      0.        0.       0.       9400\r
+Ns2600plb    2.6000000    0.6500000         5.5      0.5     -0.5     0.      0.     3.      0.        0.       0.      -9401\r
+Ns2600zrb    2.6000000    0.6500000         5.5      0.5      0.5     0.      0.     3.      0.        0.       0.      -9400\r
 Dl2420plp    2.4200000    0.4000000         5.5      1.5      1.5     3.      0.     0.      0.        0.       0.       9297\r
 Dl2420plu    2.4200000    0.4000000         5.5      1.5      0.5     3.      0.     0.      0.        0.       0.       9298\r
 Dl2420zer    2.4200000    0.4000000         5.5      1.5     -0.5     3.      0.     0.      0.        0.       0.       9299\r
 Dl2420min    2.4200000    0.4000000         5.5      1.5     -1.5     3.      0.     0.      0.        0.       0.       9300\r
 Dl2420ppb    2.4200000    0.4000000         5.5      1.5     -1.5     0.      0.     3.      0.        0.       0.      -9297\r
-Dl2420plb    2.4200000    0.4000000         5.5      1.5     -0.5     0.      0.     3.      0.        0.       0.      -9298 \r
+Dl2420plb    2.4200000    0.4000000         5.5      1.5     -0.5     0.      0.     3.      0.        0.       0.      -9298\r
 Dl2420zrb    2.4200000    0.4000000         5.5      1.5      0.5     0.      0.     3.      0.        0.       0.      -9299\r
 Dl2420mnb    2.4200000    0.4000000         5.5      1.5      1.5     0.      0.     3.      0.        0.       0.      -9300\r
 f42340zer    2.3390000    0.3190000         4.0      0.       0.      1.      0.     1.      0.        0.       0.      40225\r
@@ -24,7 +24,7 @@ Sg2250zer    2.2500000    0.1000000         1.5      1.       0.      2.      1.
 Sg2250plb    2.2500000    0.1000000         1.5      1.      -1.      0.      0.     2.      1.        0.       0.      -4028\r
 Sg2250mnb    2.2500000    0.1000000         1.5      1.       1.      0.      0.     2.      1.        0.       0.      -4128\r
 Sg2250zrb    2.2500000    0.1000000         1.5      1.       0.      0.      0.     2.      1.        0.       0.      -4228\r
-Ns2220plu    2.2200000    0.4000000         2.5      0.5      0.5     3.      0.     0.      0.        0.       0.   31280001  \r
+Ns2220plu    2.2200000    0.4000000         2.5      0.5      0.5     3.      0.     0.      0.        0.       0.   31280001\r
 Ns2220zer    2.2200000    0.4000000         2.5      0.5     -0.5     3.      0.     0.      0.        0.       0.   32180001\r
 Ns2220plb    2.2200000    0.4000000         2.5      0.5     -0.5     0.      0.     3.      0.        0.       0.  -31280001\r
 Ns2220zrb    2.2200000    0.4000000         2.5      0.5      0.5     0.      0.     3.      0.        0.       0.  -32180001\r
@@ -32,13 +32,13 @@ Ns2190plu    2.1900000    0.4500000         3.5      0.5      0.5     3.      0.
 Ns2190zer    2.1900000    0.4500000         3.5      0.5     -0.5     3.      0.     0.      0.        0.       0.       2128\r
 Ns2190plb    2.1900000    0.4500000         3.5      0.5     -0.5     0.      0.     3.      0.        0.       0.      -1218\r
 Ns2190zrb    2.1900000    0.4500000         3.5      0.5      0.5     0.      0.     3.      0.        0.       0.      -2128\r
-Lm2100zer    2.1000000    0.2000000         1.5      0.       0.      2.      1.     0.      0.        0.       0.   31280002\r
-Lm2100zrb    2.1000000    0.2000000         1.5      0.       0.      0.      0.     2.      1.        0.       0.  -31280002\r
+Lm2100zer    2.1000000    0.2000000         1.5      0.       0.      2.      1.     0.      0.        0.       0.       3128\r
+Lm2100zrb    2.1000000    0.2000000         1.5      0.       0.      0.      0.     2.      1.        0.       0.      -3128\r
 Sg2030plu    2.0300000    0.1800000         1.5      1.       1.      2.      1.     0.      0.        0.       0.       3118\r
-Sg2030min    2.0300000    0.1800000         1.5      1.      -1.      2.      1.     0.      0.        0.       0.   32180002\r
+Sg2030min    2.0300000    0.1800000         1.5      1.      -1.      2.      1.     0.      0.        0.       0.       3218\r
 Sg2030zer    2.0300000    0.1800000         1.5      1.       0.      2.      1.     0.      0.        0.       0.       3228\r
 Sg2030plb    2.0300000    0.1800000         1.5      1.      -1.      0.      0.     2.      1.        0.       0.      -3118\r
-Sg2030mnb    2.0300000    0.1800000         1.5      1.       1.      0.      0.     2.      1.        0.       0.  -32180002\r
+Sg2030mnb    2.0300000    0.1800000         1.5      1.       1.      0.      0.     2.      1.        0.       0.      -3218\r
 Sg2030zrb    2.0300000    0.1800000         1.5      1.       0.      0.      0.     2.      1.        0.       0.      -3228\r
 Xi2030min    2.0250000    0.0200000         2.5      0.5     -0.5     1.      2.     0.      0.        0.       0.       8901\r
 Xi2030mnb    2.0250000    0.0200000         2.5      0.5      0.5     0.      0.     1.      2.        0.       0.       8900 \r
@@ -181,7 +181,7 @@ Lm1690zrb    1.6900000    0.0600000         1.5      0.       0.      0.      0.
 Xi1690min    1.6900000    0.0290000         1.5      0.5     -0.5     1.      2.     0.      0.        0.       0.     -67719\r
 Xi1690mnb    1.6900000    0.0290000         1.5      0.5      0.5     0.      0.     1.      2.        0.       0.      67719\r
 Xi1690zer    1.6900000    0.0290000         1.5      0.5      0.5     1.      2.     0.      0.        0.       0.      67718\r
-Xi1690zrb    1.6900000    0.0290000         1.5      0.5     -0.5     0.      0.     1.      2.        0.       0.     -67718 \r
+Xi1690zrb    1.6900000    0.0290000         1.5      0.5     -0.5     0.      0.     1.      2.        0.       0.     -67718\r
 Ns1680plu    1.6800000    0.1300000         2.5      0.5      0.5     3.      0.     0.      0.        0.       0.      12116\r
 Ns1680zer    1.6800000    0.1300000         2.5      0.5     -0.5     3.      0.     0.      0.        0.       0.      12216\r
 Ns1680plb    1.6800000    0.1300000         2.5      0.5     -0.5     0.      0.     3.      0.        0.       0.     -12116\r
@@ -200,7 +200,7 @@ Lm1670zer    1.6700000    0.0350000         0.5      0.       0.      2.      1.
 Lm1670zrb    1.6700000    0.0350000         0.5      0.       0.      0.      0.     2.      1.        0.       0.     -33122\r
 Sg1670plu    1.6700000    0.0600000         1.5      1.       1.      2.      1.     0.      0.        0.       0.      13114\r
 Sg1670min    1.6700000    0.0600000         1.5      1.      -1.      2.      1.     0.      0.        0.       0.      13214\r
-Sg1670zer    1.6700000    0.0600000         1.5      1.       0.      2.      1.     0.      0.        0.       0.      13224 \r
+Sg1670zer    1.6700000    0.0600000         1.5      1.       0.      2.      1.     0.      0.        0.       0.      13224\r
 Sg1670plb    1.6700000    0.0600000         1.5      1.      -1.      0.      0.     2.      1.        0.       0.     -13114\r
 Sg1670mnb    1.6700000    0.0600000         1.5      1.       1.      0.      0.     2.      1.        0.       0.     -13214\r
 Sg1670zrb    1.6700000    0.0600000         1.5      1.       0.      0.      0.     2.      1.        0.       0.     -13224\r
@@ -239,9 +239,9 @@ Dl1600mnb    1.6000000    0.3500000         1.5      1.5      1.5     0.      0.
 Lm1600zer    1.6000000    0.1500000         0.5      0.       0.      2.      1.     0.      0.        0.       0.      23122\r
 Lm1600zrb    1.6000000    0.1500000         0.5      0.       0.      0.      0.     2.      1.        0.       0.     -23122\r
 Ns1535plu    1.5350000    0.1500000         0.5      0.5      0.5     3.      0.     0.      0.        0.       0.      22212\r
-Ns1535zer    1.5350000    0.1500000         0.5      0.5     -0.5     3.      0.     0.      0.        0.       0.  221220002\r
+Ns1535zer    1.5350000    0.1500000         0.5      0.5     -0.5     3.      0.     0.      0.        0.       0.      22122\r
 Ns1535plb    1.5350000    0.1500000         0.5      0.5     -0.5     0.      0.     3.      0.        0.       0.     -22212\r
-Ns1535zrb    1.5350000    0.1500000         0.5      0.5      0.5     0.      0.     3.      0.        0.       0. -221220002\r
+Ns1535zrb    1.5350000    0.1500000         0.5      0.5      0.5     0.      0.     3.      0.        0.       0.     -22122\r
 Xi1530min    1.5350000    0.0099000         1.5      0.5     -0.5     1.      2.     0.      0.        0.       0.       3324\r
 Xi1530mnb    1.5350000    0.0099000         1.5      0.5      0.5     0.      0.     1.      2.        0.       0.      -3324\r
 Xi1530zer    1.5318000    0.0091000         1.5      0.5      0.5     1.      2.     0.      0.        0.       0.       3314\r
@@ -279,8 +279,8 @@ Ka1412zer    1.4120000    0.2940000         0.0      0.5     -0.5     1.      0.
 Ka1412zrb    1.4120000    0.2940000         0.0      0.5      0.5     0.      1.     1.      0.        0.       0.    -100313\r
 Lm1405zer    1.4060000    0.0500000         0.5      0.       0.      2.      1.     0.      0.        0.       0.      13122\r
 Lm1405zrb    1.4060000    0.0500000         0.5      0.       0.      0.      0.     2.      1.        0.       0.     -13122\r
-Ka1400zer    1.4020000    0.1740000         1.0      0.5     -0.5     1.      0.     0.      1.        0.       0.  203130002\r
-Ka1400zrb    1.4020000    0.1740000         1.0      0.5      0.5     0.      1.     1.      0.        0.       0. -203130002\r
+Ka1400zer    1.4020000    0.1740000         1.0      0.5     -0.5     1.      0.     0.      1.        0.       0.      20313\r
+Ka1400zrb    1.4020000    0.1740000         1.0      0.5      0.5     0.      1.     1.      0.        0.       0.     -20313\r
 Ka1400plu    1.4020000    0.1740000         1.0      0.5      0.5     1.      0.     0.      1.        0.       0.      20323\r
 Ka1400min    1.4020000    0.1740000         1.0      0.5     -0.5     0.      1.     1.      0.        0.       0.     -20323\r
 Sg1385min    1.3872000    0.0394000         1.5      1.      -1.      2.      1.     0.      0.        0.       0.       3114\r
@@ -294,8 +294,8 @@ Xi1321min    1.3213100    4.009e-16         0.5      0.5     -0.5     1.      2.
 Xi1321mnb    1.3213100    4.009e-16         0.5      0.5      0.5     0.      0.     1.      2.        0.       0.      -3312\r
 Xi1321zer    1.3148300    2.265e-16         0.5      0.5      0.5     1.      2.     0.      0.        0.       0.       3322\r
 Xi1321zrb    1.3148300    2.265e-16         0.5      0.5     -0.5     0.      0.     1.      2.        0.       0.      -3322\r
-a21320plu    1.3180000    0.1070000         2.0      1.       1.      1.      0.     1.      0.        0.       0.    2150001\r
-a21320min    1.3180000    0.1070000         2.0      1.      -1.      1.      0.     1.      0.        0.       0.    2150002\r
+a21320plu    1.3180000    0.1070000         2.0      1.       1.      1.      0.     1.      0.        0.       0.        215\r
+a21320min    1.3180000    0.1070000         2.0      1.      -1.      1.      0.     1.      0.        0.       0.       -215\r
 a21320zer    1.3180000    0.1070000         2.0      1.       0.      1.      0.     1.      0.        0.       0.        115\r
 pi1300plu    1.3000000    0.4000000         0.0      1.       1.      1.      0.     1.      0.        0.       0.     100211\r
 pi1300min    1.3000000    0.4000000         0.0      1.      -1.      1.      0.     1.      0.        0.       0.    -100211\r
@@ -318,9 +318,9 @@ Dl1232mnb    1.2320000    0.1200000         1.5      1.5      1.5     0.      0.
 a11260plu    1.2300000    0.4250000         1.0      1.       1.      1.      0.     1.      0.        0.       0.      20213\r
 a11260min    1.2300000    0.4250000         1.0      1.      -1.      1.      0.     1.      0.        0.       0.     -20213\r
 a11260zer    1.2300000    0.4250000         1.0      1.       0.      1.      0.     1.      0.        0.       0.      20113\r
-b11235plu    1.2295000    0.1420000         1.0      1.       1.      1.      0.     1.      0.        0.       0.      10113\r
-b11235zer    1.2295000    0.1420000         1.0      1.       0.      1.      0.     1.      0.        0.       0.      10213\r
-b11235min    1.2295000    0.1420000         1.0      1.      -1.      1.      0.     1.      0.        0.       0.     -10113\r
+b11235plu    1.2295000    0.1420000         1.0      1.       1.      1.      0.     1.      0.        0.       0.      10213\r
+b11235zer    1.2295000    0.1420000         1.0      1.       0.      1.      0.     1.      0.        0.       0.      10113\r
+b11235min    1.2295000    0.1420000         1.0      1.      -1.      1.      0.     1.      0.        0.       0.     -10213\r
 Sg1189min    1.1970000    4.442e-16         0.5      1.      -1.      2.      1.     0.      0.        0.       0.       3112\r
 Sg1189mnb    1.1970000    4.442e-16         0.5      1.       1.      0.      0.     2.      1.        0.       0.      -3112\r
 Sg1192zer    1.1930000    8.879e-07         0.5      1.       0.      2.      1.     0.      0.        0.       0.       3212\r
@@ -350,11 +350,15 @@ rho770min    0.7693000    0.1502000         1.0      1.      -1.      1.      0.
 rho770zer    0.7693000    0.1502000         1.0      1.       0.      1.      0.     1.      0.        0.       0.        113\r
 f00600zer    0.8000000    0.8000000         0.0      0.       0.      1.      0.     1.      0.        0.       0.    9000221\r
 eta547zer    0.5473000    1.2900e-6         0.0      0.       0.      0.19    0.81   0.19    0.81      0.       0.        221\r
-Ka0492zer    0.4976720    7.335e-16         0.0      0.5     -0.5     1.      0.     0.      1.        0.       0.        311\r
-Ka0492zrb    0.4976720    7.335e-16         0.0      0.5      0.5     0.      1.     1.      0.        0.       0.       -311\r
+Ka0492zer    0.4976720    0.5000000         0.0      0.5     -0.5     1.      0.     0.      1.        0.       0.        311\r
+Ka0492zrb    0.4976720    0.5000000         0.0      0.5      0.5     0.      1.     1.      0.        0.       0.       -311\r
+Ka0492sht    0.4976720   7.348e-15         0.0      0.5     -0.5     1.      0.     0.      1.        0.       0.        310\r
+Ka0492stb    0.4976720   7.348e-15         0.0      0.5      0.5     0.      1.     1.      0.        0.       0.       -310\r
+Ka0492lng    0.4976720   0.0000000         0.0      0.5     -0.5     1.      0.     0.      1.        0.       0.        130\r
+Ka0492lgb    0.4976720   0.0000000         0.0      0.5      0.5     0.      1.     1.      0.        0.       0.       -130\r
 Ka0492plu    0.4936770    0.0000000         0.0      0.5      0.5     1.      0.     0.      1.        0.       0.        321\r
 Ka0492min    0.4936770    0.0000000         0.0      0.5     -0.5     0.      1.     1.      0.        0.       0.       -321\r
 pi0139plu    0.1395699    0.0000000         0.0      1.       1.      1.      0.     1.      0.        0.       0.        211\r
 pi0139min    0.1395699    0.0000000         0.0      1.      -1.      1.      0.     1.      0.        0.       0.       -211\r
 pi0135zer    0.1349764    0.0000000         0.0      1.       0.      1.      0.     1.      0.        0.       0.        111\r
-gam000zer    0.0010000    0.0000000         1.0      0.       0.      0.      0.     0.      0.        0.       0.         22
\ No newline at end of file
+gam000zer    0.0000000    0.0000000         1.0      0.       0.      0.      0.     0.      0.        0.       0.         22\r
index 2c77709..cff41be 100644 (file)
@@ -5,7 +5,7 @@
 9298 2224 -211 0 0.08
 9298 2114 211 0 0.106667
 9298 2214 111 0 0.0133333
-9298 2112 211 0 0.0333333
+9298 2112 211 0 0.0333330
 9298 2212 111 0 0.0666667
 9298 2112 213 0 0.233333
 9298 2212 113 0 0.466667
@@ -13,7 +13,7 @@
 9299 1114 211 0 0.08
 9299 2114 111 0 0.0133333
 9299 2212 -211 0 0.0333333
-9299 2112 111 0 0.0666667
+9299 2112 111 0 0.0666664
 9299 2212 -213 0 0.233333
 9299 2112 113 0 0.466667
 9300 2114 -211 0 0.08
@@ -27,7 +27,7 @@
 -9298 -2224 211 0 0.08
 -9298 -2114 -211 0 0.106667
 -9298 -2214 111 0 0.0133333
--9298 -2112 -211 0 0.0333333
+-9298 -2112 -211 0 0.0333330
 -9298 -2212 111 0 0.0666667
 -9298 -2112 -213 0 0.233333
 -9298 -2212 113 0 0.466667
@@ -35,7 +35,7 @@
 -9299 -1114 -211 0 0.08
 -9299 -2114 111 0 0.0133333
 -9299 -2212 211 0 0.0333333
--9299 -2112 111 0 0.0666667
+-9299 -2112 111 0 0.0666664
 -9299 -2212 213 0 0.233333
 -9299 -2112 113 0 0.466667
 -9300 -2114 211 0 0.08
 2128 111 2112 0 0.333333
 -2128 211 -2212 0 0.666667
 -2128 111 -2112 0 0.333333
-31280002 -311 2112 0 0.1
-31280002 -321 2212 0 0.1
-31280002 -313 2112 0 0.25
-31280002 -323 2212 0 0.25
-31280002 211 3112 0 0.1
-31280002 -211 3222 0 0.1
-31280002 111 3212 0 0.1
--31280002 311 -2112 0 0.1
--31280002 321 -2212 0 0.1
--31280002 313 -2112 0 0.25
--31280002 323 -2212 0 0.25
--31280002 -211 -3112 0 0.1
--31280002 211 -3222 0 0.1
--31280002 111 -3212 0 0.1
+3128 -311 2112 0 0.1
+3128 -321 2212 0 0.1
+3128 -313 2112 0 0.25
+3128 -323 2212 0 0.25
+3128 211 3112 0 0.1
+3128 -211 3222 0 0.1
+3128 111 3212 0 0.1
+-3128 311 -2112 0 0.1
+-3128 321 -2212 0 0.1
+-3128 313 -2112 0 0.25
+-3128 323 -2212 0 0.25
+-3128 -211 -3112 0 0.1
+-3128 211 -3222 0 0.1
+-3128 111 -3212 0 0.1
 219 321 -311 0 0.3333
 219 211 211 -211 0.3333
-219 211 221 0 0.33
+219 211 221 0 0.3334
 -219 -321 311 0 0.3333
 -219 -211 211 -211 0.3333
--219 -211 221 0 0.33
+-219 -211 221 0 0.3334
 119 321 -321 0 0.1667
 119 311 -311 0 0.1667
 119 111 211 -211 0.3333
 3228 -323 2212 0 0.015
 3228 321 3312 0 0.005
 3228 311 3322 0 0.005
-32180002 -321 2112 0 0.23
-32180002 3122 -211 0 0.22
-32180002 3124 -211 0 0.16
-32180002 111 3114 0 0.055
-32180002 -211 3214 0 0.055
-32180002 111 3112 0 0.04
-32180002 -211 3212 0 0.04
-32180002 2114 -321 0 0.04
-32180002 1114 -311 0 0.12
-32180002 -323 2112 0 0.03
-32180002 311 3312 0 0.01
+3218 -321 2112 0 0.23
+3218 3122 -211 0 0.22
+3218 3124 -211 0 0.16
+3218 111 3114 0 0.055
+3218 -211 3214 0 0.055
+3218 111 3112 0 0.04
+3218 -211 3212 0 0.04
+3218 2114 -321 0 0.04
+3218 1114 -311 0 0.12
+3218 -323 2112 0 0.03
+3218 311 3312 0 0.01
 -3118 311 -2212 0 0.23
 -3118 -3122 -211 0 0.22
 -3118 -3124 -211 0 0.16
 -3228 323 -2212 0 0.015
 -3228 -321 -3312 0 0.005
 -3228 -311 -3322 0 0.005
--32180002 321 -2112 0 0.23
--32180002 -3122 211 0 0.22
--32180002 -3124 211 0 0.16
--32180002 111 -3114 0 0.055
--32180002 211 -3214 0 0.055
--32180002 111 -3112 0 0.04
--32180002 211 -3212 0 0.04
--32180002 -2114 321 0 0.04
--32180002 -1114 311 0 0.12
--32180002 323 -2112 0 0.03
--32180002 -311 -3312 0 0.01
+-3218 321 -2112 0 0.23
+-3218 -3122 211 0 0.22
+-3218 -3124 211 0 0.16
+-3218 111 -3114 0 0.055
+-3218 211 -3214 0 0.055
+-3218 111 -3112 0 0.04
+-3218 211 -3212 0 0.04
+-3218 -2114 321 0 0.04
+-3218 -1114 311 0 0.12
+-3218 323 -2112 0 0.03
+-3218 -311 -3312 0 0.01
 1118 2212 211 0 0.5
 1118 2214 211 0 0.16
 1118 2224 111 0 0.24
 1118 2212 213 0 0.1
 2118 2224 -211 0 0.16
 2118 2114 211 0 0.213333
-2118 2214 111 0 0.0266667
+2118 2214 111 0 0.0266668
 2118 2112 211 0 0.166667
 2118 2212 111 0 0.333333
-2118 2112 213 0 0.0333333
-2118 2212 113 0 0.0666667
+2118 2112 213 0 0.0333334
+2118 2212 113 0 0.0666668
 2218 2214 -211 0 0.213333
 2218 1114 211 0 0.16
-2218 2114 111 0 0.0266667
+2218 2114 111 0 0.0266668
 2218 2212 -211 0 0.166667
 2218 2112 111 0 0.333333
-2218 2212 -213 0 0.0333333
-2218 2112 113 0 0.0666667
+2218 2212 -213 0 0.0333334
+2218 2112 113 0 0.0666668
 2228 2114 -211 0 0.16
 2228 1114 111 0 0.24
 2228 2112 -211 0 0.5
 -1118 -2212 -213 0 0.1
 -2118 -2224 211 0 0.16
 -2118 -2114 -211 0 0.213333
--2118 -2214 111 0 0.0266667
+-2118 -2214 111 0 0.0266668
 -2118 -2112 -211 0 0.166667
 -2118 -2212 111 0 0.333333
--2118 -2112 -213 0 0.0333333
--2118 -2212 113 0 0.0666667
+-2118 -2112 -213 0 0.0333334
+-2118 -2212 113 0 0.0666668
 -2218 -2214 211 0 0.213333
 -2218 -1114 -211 0 0.16
--2218 -2114 111 0 0.0266667
+-2218 -2114 111 0 0.0266668
 -2218 -2212 211 0 0.166667
 -2218 -2112 111 0 0.333333
--2218 -2212 213 0 0.0333333
--2218 -2112 113 0 0.0666667
+-2218 -2212 213 0 0.0333334
+-2218 -2112 113 0 0.0666668
 -2228 -2114 211 0 0.16
 -2228 -1114 111 0 0.24
 -2228 -2112 211 0 0.5
 11116 2212 213 0 0.7
 11216 2224 -211 0 0.08
 11216 2114 211 0 0.106667
-11216 2214 111 0 0.0133333
-11216 2112 211 0 0.0333333
-11216 2212 111 0 0.0666667
+11216 2214 111 0 0.0133332
+11216 2112 211 0 0.0333332
+11216 2212 111 0 0.0666666
 11216 2112 213 0 0.233333
 11216 2212 113 0 0.466667
 12126 2214 -211 0 0.106667
 12126 1114 211 0 0.08
-12126 2114 111 0 0.0133333
-12126 2212 -211 0 0.0333333
-12126 2112 111 0 0.0666667
+12126 2114 111 0 0.0133332
+12126 2212 -211 0 0.0333332
+12126 2112 111 0 0.0666666
 12126 2212 -213 0 0.233333
 12126 2112 113 0 0.466667
 12226 2114 -211 0 0.08
 -11116 -2212 -213 0 0.7
 -11216 -2224 211 0 0.08
 -11216 -2114 -211 0 0.106667
--11216 -2214 111 0 0.0133333
--11216 -2112 -211 0 0.0333333
--11216 -2212 111 0 0.0666667
+-11216 -2214 111 0 0.0133332
+-11216 -2112 -211 0 0.0333332
+-11216 -2212 111 0 0.0666666
 -11216 -2112 -213 0 0.233333
 -11216 -2212 113 0 0.466667
 -12126 -2214 211 0 0.106667
 -12126 -1114 -211 0 0.08
--12126 -2114 111 0 0.0133333
--12126 -2212 211 0 0.0333333
--12126 -2112 111 0 0.0666667
+-12126 -2114 111 0 0.0133332
+-12126 -2212 211 0 0.0333332
+-12126 -2112 111 0 0.0666666
 -12126 -2212 213 0 0.233333
 -12126 -2112 113 0 0.466667
 -12226 -2114 211 0 0.08
 21114 2212 213 0 0.7
 22114 2224 -211 0 0.08
 22114 2114 211 0 0.106667
-22114 2214 111 0 0.0133333
-22114 2112 211 0 0.0333333
-22114 2212 111 0 0.0666667
+22114 2214 111 0 0.0133332
+22114 2112 211 0 0.0333332
+22114 2212 111 0 0.0666666
 22114 2112 213 0 0.233333
 22114 2212 113 0 0.466667
 22214 2214 -211 0 0.106667
 22214 1114 211 0 0.08
-22214 2114 111 0 0.0133333
-22214 2212 -211 0 0.0333333
-22214 2112 111 0 0.0666667
+22214 2114 111 0 0.0133332
+22214 2212 -211 0 0.0333332
+22214 2112 111 0 0.0666666
 22214 2212 -213 0 0.233333
 22214 2112 113 0 0.466667
 22224 2114 -211 0 0.08
 -21114 -2212 -213 0 0.7
 -22114 -2224 211 0 0.08
 -22114 -2114 -211 0 0.106667
--22114 -2214 111 0 0.0133333
--22114 -2112 -211 0 0.0333333
--22114 -2212 111 0 0.0666667
+-22114 -2214 111 0 0.0133332
+-22114 -2112 -211 0 0.0333332
+-22114 -2212 111 0 0.0666666
 -22114 -2112 -213 0 0.233333
 -22114 -2212 113 0 0.466667
 -22214 -2214 211 0 0.106667
 -22214 -1114 -211 0 0.08
--22214 -2114 111 0 0.0133333
--22214 -2212 211 0 0.0333333
--22214 -2112 111 0 0.0666667
+-22214 -2114 111 0 0.0133332
+-22214 -2212 211 0 0.0333332
+-22214 -2112 111 0 0.0666666
 -22214 -2212 213 0 0.233333
 -22214 -2112 113 0 0.466667
 -22224 -2114 211 0 0.08
 1116 2212 213 0 0.7
 1216 2224 -211 0 0.08
 1216 2114 211 0 0.106667
-1216 2214 111 0 0.0133333
-1216 2112 211 0 0.0333333
-1216 2212 111 0 0.0666667
+1216 2214 111 0 0.0133332
+1216 2112 211 0 0.0333332
+1216 2212 111 0 0.0666666
 1216 2112 213 0 0.233333
 1216 2212 113 0 0.466667
 2126 2214 -211 0 0.106667
 2126 1114 211 0 0.08
-2126 2114 111 0 0.0133333
-2126 2212 -211 0 0.0333333
-2126 2112 111 0 0.0666667
+2126 2114 111 0 0.0133332
+2126 2212 -211 0 0.0333332
+2126 2112 111 0 0.0666666
 2126 2212 -213 0 0.233333
 2126 2112 113 0 0.466667
 2226 2114 -211 0 0.08
 -1116 -2212 -213 0 0.7
 -1216 -2224 211 0 0.08
 -1216 -2114 -211 0 0.106667
--1216 -2214 111 0 0.0133333
--1216 -2112 -211 0 0.0333333
--1216 -2212 111 0 0.0666667
+-1216 -2214 111 0 0.0133332
+-1216 -2112 -211 0 0.0333332
+-1216 -2212 111 0 0.0666666
 -1216 -2112 -213 0 0.233333
 -1216 -2212 113 0 0.466667
 -2126 -2214 211 0 0.106667
 -2126 -1114 -211 0 0.08
--2126 -2114 111 0 0.0133333
--2126 -2212 211 0 0.0333333
--2126 -2112 111 0 0.0666667
+-2126 -2114 111 0 0.0133332
+-2126 -2212 211 0 0.0333332
+-2126 -2112 111 0 0.0666666
 -2126 -2212 213 0 0.233333
 -2126 -2112 113 0 0.466667
 -2226 -2114 211 0 0.08
 23124 211 3114 0 0.11
 23124 -211 3224 0 0.11
 23124 111 3214 0 0.11
-23124 211 3112 0 0.0216667
+23124 211 3112 0 0.0216666
 23124 -211 3222 0 0.0216667
 23124 111 3212 0 0.0216667
 -23124 311 -2112 0 0.1375
 -23124 -211 -3114 0 0.11
 -23124 211 -3224 0 0.11
 -23124 111 -3214 0 0.11
--23124 -211 -3112 0 0.0216667
+-23124 -211 -3112 0 0.0216666
 -23124 211 -3222 0 0.0216667
 -23124 111 -3212 0 0.0216667
 337 311 -311 0 0.25
 13324 321 -3122 0 1
 -13324 311 -3122 0 1
 20315 211 10311 0 0.166667
-20315 111 10321 0 0.0833333
+20315 111 10321 0 0.083333
 20315 211 313 0 0.166667
-20315 111 323 0 0.0833333
+20315 111 323 0 0.083333
 20315 225 321 0 0.25
 20315 223 321 0 0.25
 -20325 -211 10321 0 0.166667
--20325 111 10311 0 0.0833333
+-20325 111 10311 0 0.083333
 -20325 -211 323 0 0.166667
--20325 111 313 0 0.0833333
+-20325 111 313 0 0.083333
 -20325 225 311 0 0.25
 -20325 223 311 0 0.25
 20325 -211 -10311 0 0.166667
-20325 111 -10321 0 0.0833333
+20325 111 -10321 0 0.083333
 20325 -211 -313 0 0.166667
-20325 111 -323 0 0.0833333
+20325 111 -323 0 0.083333
 20325 225 -321 0 0.25
 20325 223 -321 0 0.25
 -20315 211 -10321 0 0.166667
--20315 111 -10311 0 0.0833333
+-20315 111 -10311 0 0.083333
 -20315 211 -323 0 0.166667
--20315 111 -313 0 0.0833333
+-20315 111 -313 0 0.083333
 -20315 225 -311 0 0.25
 -20315 223 -311 0 0.25
 13126 -311 2112 0 0.04375
 13126 -321 2212 0 0.04375
-13126 211 3114 0 0.120833
-13126 -211 3224 0 0.120833
-13126 111 3214 0 0.120833
-13126 211 3112 0 0.183333
-13126 -211 3222 0 0.183333
-13126 111 3212 0 0.183333
+13126 211 3114 0 0.1208333
+13126 -211 3224 0 0.1208333
+13126 111 3214 0 0.1208334
+13126 211 3112 0 0.1833333
+13126 -211 3222 0 0.1833333
+13126 111 3212 0 0.1833334
 -13126 311 -2112 0 0.04375
 -13126 321 -2212 0 0.04375
--13126 -211 -3114 0 0.120833
--13126 211 -3224 0 0.120833
--13126 111 -3214 0 0.120833
--13126 -211 -3112 0 0.183333
--13126 211 -3222 0 0.183333
--13126 111 -3212 0 0.183333
+-13126 -211 -3114 0 0.1208333
+-13126 211 -3224 0 0.1208333
+-13126 111 -3214 0 0.1208334
+-13126 -211 -3112 0 0.1833333
+-13126 211 -3222 0 0.1833333
+-13126 111 -3212 0 0.1833334
 3126 -311 2112 0 0.38215
 3126 -321 2212 0 0.38215
 3126 211 3114 0 0.0318333
 3126 -211 3224 0 0.0318333
-3126 111 3214 0 0.0318333
+3126 111 3214 0 0.0318334
 3126 211 3112 0 0.0467333
 3126 -211 3222 0 0.0467333
-3126 111 3212 0 0.0467333
+3126 111 3212 0 0.0467334
 -3126 311 -2112 0 0.38215
 -3126 321 -2212 0 0.38215
 -3126 -211 -3114 0 0.0318333
 -3126 211 -3224 0 0.0318333
--3126 111 -3214 0 0.0318333
+-3126 111 -3214 0 0.0318334
 -3126 -211 -3112 0 0.0467333
 -3126 211 -3222 0 0.0467333
--3126 111 -3212 0 0.0467333
+-3126 111 -3212 0 0.0467334
 53122 -311 2112 0 0.175
 53122 -321 2212 0 0.175
 53122 -313 2112 0 0.2
 53122 -323 2212 0 0.2
 53122 211 3112 0 0.0833333
 53122 -211 3222 0 0.0833333
-53122 111 3212 0 0.0833333
+53122 111 3212 0 0.0833334
 -53122 311 -2112 0 0.175
 -53122 321 -2212 0 0.175
 -53122 313 -2112 0 0.2
 -53122 323 -2212 0 0.2
 -53122 -211 -3112 0 0.0833333
 -53122 211 -3222 0 0.0833333
--53122 111 -3212 0 0.0833333
+-53122 111 -3212 0 0.0833334
 43122 -311 2112 0 0.1625
 43122 -321 2212 0 0.1625
 43122 -313 2112 0 0.1125
 -32124 113 -2112 0 0.243333
 10331 321 -321 0 0.16665
 10331 311 -311 0 0.16665
-10331 221 221 0 0.3333
+10331 221 221 0 0.3334
 10331 211 -211 0 0.2222
 10331 111 111 0 0.1111
 42112 211 2112 0 0.1
 21214 2214 111 0 0.166667
 21214 2114 211 0 0.0833333
 21214 213 2112 0 0.0666667
-21214 113 2212 0 0.0333333
+21214 113 2212 0 0.033333
 21214 2212 111 111 0.05
 21214 2212 -211 211 0.15
 21214 2112 111 211 0.1
 22124 2114 111 0 0.166667
 22124 2214 -211 0 0.0833333
 22124 -213 2212 0 0.0666667
-22124 113 2112 0 0.0333333
+22124 113 2112 0 0.033333
 22124 2112 111 111 0.05
 22124 2112 -211 211 0.15
 22124 2212 -211 111 0.1
 -21214 -2214 111 0 0.166667
 -21214 -2114 -211 0 0.0833333
 -21214 -213 -2112 0 0.0666667
--21214 113 -2212 0 0.0333333
+-21214 113 -2212 0 0.033333
 -21214 -2212 111 111 0.05
 -21214 -2212 211 -211 0.15
 -21214 -2112 111 -211 0.1
 -22124 -2114 111 0 0.166667
 -22124 -2214 211 0 0.0833333
 -22124 213 -2212 0 0.0666667
--22124 113 -2112 0 0.0333333
+-22124 113 -2112 0 0.033333
 -22124 -2112 111 111 0.05
 -22124 -2112 211 -211 0.15
 -22124 -2212 211 111 0.1
 2116 2212 221 0 0.01
 2116 2224 -211 0 0.25
 2116 2214 111 0 0.166667
-2116 2114 211 0 0.0833333
+2116 2114 211 0 0.083333
 2116 213 2112 0 0.0333333
 2116 113 2212 0 0.0166667
 2216 -211 2212 0 0.293333
 2216 2112 221 0 0.01
 2216 1114 211 0 0.25
 2216 2114 111 0 0.166667
-2216 2214 -211 0 0.0833333
+2216 2214 -211 0 0.083333
 2216 -213 2212 0 0.0333333
 2216 113 2112 0 0.0166667
 -2116 -211 -2112 0 0.293333
 -2116 -2212 221 0 0.01
 -2116 -2224 211 0 0.25
 -2116 -2214 111 0 0.166667
--2116 -2114 -211 0 0.0833333
+-2116 -2114 -211 0 0.083333
 -2116 -213 -2112 0 0.0333333
 -2116 113 -2212 0 0.0166667
 -2216 211 -2212 0 0.293333
 -2216 -2112 221 0 0.01
 -2216 -1114 -211 0 0.25
 -2216 -2114 111 0 0.166667
--2216 -2214 211 0 0.0833333
+-2216 -2214 211 0 0.083333
 -2216 213 -2212 0 0.0333333
 -2216 113 -2112 0 0.0166667
 10215 225 211 0 0.562
 -13224 -3122 111 0 0.15
 -13224 -3222 211 0 0.35
 -13224 -3112 -211 0 0.35
-13112 2212 -311 0 0.3333
+13112 2212 -311 0 0.3334
 13112 3122 211 0 0.3333
 13112 3222 111 0 0.16665
 13112 3212 211 0 0.16665
-13212 2112 -321 0 0.3333
+13212 2112 -321 0 0.3334
 13212 3122 -211 0 0.3333
 13212 3112 111 0 0.16665
 13212 3212 -211 0 0.16665
 13222 2212 -321 0 0.16665
 13222 2112 -311 0 0.16665
-13222 3122 111 0 0.3333
+13222 3122 111 0 0.3334
 13222 3222 -211 0 0.16665
 13222 3112 211 0 0.16665
--13112 -2212 311 0 0.3333
+-13112 -2212 311 0 0.3334
 -13112 -3122 -211 0 0.3333
 -13112 -3222 111 0 0.16665
 -13112 -3212 -211 0 0.16665
--13212 -2112 321 0 0.3333
+-13212 -2112 321 0 0.3334
 -13212 -3122 211 0 0.3333
 -13212 -3112 111 0 0.16665
 -13212 -3212 211 0 0.16665
 -13222 -2212 321 0 0.16665
 -13222 -2112 311 0 0.16665
--13222 -3122 111 0 0.3333
+-13222 -3122 111 0 0.3334
 -13222 -3222 211 0 0.16665
 -13222 -3112 -211 0 0.16665
-32112 211 2112 0 0.553333
+32112 211 2112 0 0.552333
 32112 111 2212 0 0.276667
 32112 2212 221 0 0.01
 32112 3122 321 0 0.07
 32112 2224 -211 0 0.017
 32112 2214 111 0 0.0113333
-32112 2114 211 0 0.00566667
+32112 2114 211 0 0.0056667
 32112 211 12112 0 0.0113333
-32112 111 12212 0 0.00566667
+32112 111 12212 0 0.0056667
 32112 2212 9000221 0 0.04
-32212 -211 2212 0 0.553333
+32212 -211 2212 0 0.552333
 32212 111 2112 0 0.276667
 32212 2112 221 0 0.01
 32212 3122 311 0 0.07
 32212 1114 211 0 0.017
 32212 2114 111 0 0.0113333
-32212 2214 -211 0 0.00566667
+32212 2214 -211 0 0.0056667
 32212 -211 12212 0 0.0113333
-32212 111 12112 0 0.00566667
+32212 111 12112 0 0.0056667
 32212 2112 9000221 0 0.04
--32112 -211 -2112 0 0.553333
+-32112 -211 -2112 0 0.552333
 -32112 111 -2212 0 0.276667
 -32112 -2212 221 0 0.01
 -32112 -3122 -321 0 0.07
 -32112 -2224 211 0 0.017
 -32112 -2214 111 0 0.0113333
--32112 -2114 -211 0 0.00566667
+-32112 -2114 -211 0 0.0056667
 -32112 -211 -12112 0 0.0113333
--32112 111 -12212 0 0.00566667
+-32112 111 -12212 0 0.0056667
 -32112 -2212 9000221 0 0.04
--32212 211 -2212 0 0.553333
+-32212 211 -2212 0 0.552333
 -32212 111 -2112 0 0.276667
 -32212 -2112 221 0 0.01
 -32212 -3122 -311 0 0.07
 -32212 -1114 -211 0 0.017
 -32212 -2114 111 0 0.0113333
--32212 -2214 211 0 0.00566667
+-32212 -2214 211 0 0.0056667
 -32212 211 -12212 0 0.0113333
--32212 111 -12112 0 0.00566667
+-32212 111 -12112 0 0.0056667
 -32212 -2112 9000221 0 0.04
 3334 3122 -321 0 0.68
 3334 3322 -211 0 0.24
 -3334 -3122 321 0 0.68
 -3334 -3322 211 0 0.24
 -3334 -3312 111 0 0.08
-227 213 -211 0 0.166667
+227 213 -211 0 0.166666
 227 -213 211 0 0.166667
 227 113 111 0 0.166667
 227 223 -211 211 0.3333
 227 223 111 111 0.1667
 30223 213 -211 0 0.166667
 30223 -213 211 0 0.166667
-30223 113 111 0 0.166667
+30223 113 111 0 0.166666
 30223 223 -211 211 0.3333
 30223 223 111 111 0.1667
 45553 3322 111 0 0.333333
 1212 2224 -211 0 0.18
 1212 2214 111 0 0.03
 1212 2114 211 0 0.24
-1212 211 2112 0 0.0833333
+1212 211 2112 0 0.083333
 1212 111 2212 0 0.166667
-1212 213 2112 0 0.0833333
+1212 213 2112 0 0.083333
 1212 113 2212 0 0.166667
 1212 211 12112 0 0.0166667
 1212 111 12212 0 0.0333333
 2122 2114 111 0 0.03
 2122 1114 211 0 0.18
 2122 111 2112 0 0.166667
-2122 -211 2212 0 0.0833333
+2122 -211 2212 0 0.083333
 2122 113 2112 0 0.166667
-2122 -213 2212 0 0.0833333
+2122 -213 2212 0 0.083333
 2122 111 12112 0 0.0333333
 2122 -211 12212 0 0.0166667
 2222 2114 -211 0 0.18
 -1212 -2224 211 0 0.18
 -1212 -2214 111 0 0.03
 -1212 -2114 -211 0 0.24
--1212 -211 -2112 0 0.0833333
+-1212 -211 -2112 0 0.083333
 -1212 111 -2212 0 0.166667
--1212 -213 -2112 0 0.0833333
+-1212 -213 -2112 0 0.083333
 -1212 113 -2212 0 0.166667
 -1212 -211 -12112 0 0.0166667
 -1212 111 -12212 0 0.0333333
 -2122 -2114 111 0 0.03
 -2122 -1114 -211 0 0.18
 -2122 111 -2112 0 0.166667
--2122 211 -2212 0 0.0833333
+-2122 211 -2212 0 0.083333
 -2122 113 -2112 0 0.166667
--2122 213 -2212 0 0.0833333
+-2122 213 -2212 0 0.083333
 -2122 111 -12112 0 0.0333333
 -2122 211 -12212 0 0.0166667
 -2222 -2114 211 0 0.18
 31114 211 12212 0 0.225
 32114 2224 -211 0 0.22
 32114 2214 111 0 0.0366667
-32114 2114 211 0 0.293333
+32114 2114 211 0 0.2933333
 32114 211 2112 0 0.0566667
-32114 111 2212 0 0.113333
+32114 111 2212 0 0.1133333
 32114 213 2112 0 0.0183333
 32114 113 2212 0 0.0366667
 32114 211 12112 0 0.075
 32114 111 12212 0 0.15
-32214 2214 -211 0 0.293333
+32214 2214 -211 0 0.2933333
 32214 2114 111 0 0.0366667
 32214 1114 211 0 0.22
-32214 111 2112 0 0.113333
+32214 111 2112 0 0.1133333
 32214 -211 2212 0 0.0566667
 32214 113 2112 0 0.0366667
 32214 -213 2212 0 0.0183333
 -31114 -211 -12212 0 0.225
 -32114 -2224 211 0 0.22
 -32114 -2214 111 0 0.0366667
--32114 -2114 -211 0 0.293333
+-32114 -2114 -211 0 0.2933333
 -32114 -211 -2112 0 0.0566667
--32114 111 -2212 0 0.113333
+-32114 111 -2212 0 0.1133333
 -32114 -213 -2112 0 0.0183333
 -32114 113 -2212 0 0.0366667
 -32114 -211 -12112 0 0.075
 -32114 111 -12212 0 0.15
--32214 -2214 211 0 0.293333
+-32214 -2214 211 0 0.2933333
 -32214 -2114 111 0 0.0366667
 -32214 -1114 -211 0 0.22
--32214 111 -2112 0 0.113333
+-32214 111 -2112 0 0.1133333
 -32214 211 -2212 0 0.0566667
 -32214 113 -2112 0 0.0366667
 -32214 213 -2212 0 0.0183333
 23122 2112 -311 0 0.195
 23122 3222 -211 0 0.203333
 23122 3212 111 0 0.203333
-23122 3112 211 0 0.203333
+23122 3112 211 0 0.203334
 -23122 -2212 321 0 0.195
 -23122 -2112 311 0 0.195
 -23122 -3222 211 0 0.203333
 -23122 -3212 111 0 0.203333
--23122 -3112 -211 0 0.203333
+-23122 -3112 -211 0 0.203334
 22212 211 2112 0 0.32
 22212 111 2212 0 0.16
 22212 2212 221 0 0.4
 22212 2224 -211 0 0.02
 22212 2214 111 0 0.0133333
-22212 2114 211 0 0.00666667
+22212 2114 211 0 0.0066667
 22212 211 12112 0 0.0266667
 22212 111 12212 0 0.0133333
 22212 213 2112 0 0.0266667
 22212 113 2212 0 0.0133333
-221220002 -211 2212 0 0.32
-221220002 111 2112 0 0.16
-221220002 2112 221 0 0.4
-221220002 1114 211 0 0.02
-221220002 2114 111 0 0.0133333
-221220002 2214 -211 0 0.00666667
-221220002 -211 12212 0 0.0266667
-221220002 111 12112 0 0.0133333
-221220002 -213 2212 0 0.0266667
-221220002 113 2112 0 0.0133333
+22122 -211 2212 0 0.32
+22122 111 2112 0 0.16
+22122 2112 221 0 0.4
+22122 1114 211 0 0.02
+22122 2114 111 0 0.0133333
+22122 2214 -211 0 0.0066667
+22122 -211 12212 0 0.0266667
+22122 111 12112 0 0.0133333
+22122 -213 2212 0 0.0266667
+22122 113 2112 0 0.0133333
 -22212 -211 -2112 0 0.32
 -22212 111 -2212 0 0.16
 -22212 -2212 221 0 0.4
 -22212 -2224 211 0 0.02
 -22212 -2214 111 0 0.0133333
--22212 -2114 -211 0 0.00666667
+-22212 -2114 -211 0 0.0066667
 -22212 -211 -12112 0 0.0266667
 -22212 111 -12212 0 0.0133333
 -22212 -213 -2112 0 0.0266667
 -22212 113 -2212 0 0.0133333
--221220002 211 -2212 0 0.32
--221220002 111 -2112 0 0.16
--221220002 -2112 221 0 0.4
--221220002 -1114 -211 0 0.02
--221220002 -2114 111 0 0.0133333
--221220002 -2214 211 0 0.00666667
--221220002 211 -12212 0 0.0266667
--221220002 111 -12112 0 0.0133333
--221220002 213 -2212 0 0.0266667
--221220002 113 -2112 0 0.0133333
+-22122 211 -2212 0 0.32
+-22122 111 -2112 0 0.16
+-22122 -2112 221 0 0.4
+-22122 -1114 -211 0 0.02
+-22122 -2114 111 0 0.0133333
+-22122 -2214 211 0 0.0066667
+-22122 211 -12212 0 0.0266667
+-22122 111 -12112 0 0.0133333
+-22122 213 -2212 0 0.0266667
+-22122 113 -2112 0 0.0133333
 3314 3322 111 0 0.333333
 3314 3312 211 0 0.666667
 3324 3312 111 0 0.333333
 2124 211 2112 0 0.366667
 2124 111 2212 0 0.183333
 2124 213 2112 0 0.133333
-2124 113 2212 0 0.0666667
+2124 113 2212 0 0.066667
 2124 2224 -211 0 0.125
 2124 2214 111 0 0.0833333
 2124 2114 211 0 0.0416667
 1214 -211 2212 0 0.366667
 1214 111 2112 0 0.183333
 1214 -213 2212 0 0.133333
-1214 113 2112 0 0.0666667
+1214 113 2112 0 0.066667
 1214 1114 211 0 0.125
 1214 2114 111 0 0.0833333
 1214 2214 -211 0 0.0416667
 -2124 -211 -2112 0 0.366667
 -2124 111 -2212 0 0.183333
 -2124 -213 -2112 0 0.133333
--2124 113 -2212 0 0.0666667
+-2124 113 -2212 0 0.066667
 -2124 -2224 211 0 0.125
 -2124 -2214 111 0 0.0833333
 -2124 -2114 -211 0 0.0416667
 -1214 211 -2212 0 0.366667
 -1214 111 -2112 0 0.183333
 -1214 213 -2212 0 0.133333
--1214 113 -2112 0 0.0666667
+-1214 113 -2112 0 0.066667
 -1214 -1114 -211 0 0.125
 -1214 -2114 111 0 0.0833333
 -1214 -2214 211 0 0.0416667
 3124 2112 -311 0 0.2325
 3124 3222 -211 0 0.141667
 3124 3212 111 0 0.141667
-3124 3112 211 0 0.141667
+3124 3112 211 0 0.141666
 3124 3122 22 0 0.01
 3124 3122 111 111 0.0333
 3124 3122 211 -211 0.0667
 -3124 -2112 311 0 0.2325
 -3124 -3222 211 0 0.141667
 -3124 -3212 111 0 0.141667
--3124 -3112 -211 0 0.141667
+-3124 -3112 -211 0 0.141666
 -3124 -3122 22 0 0.01
 -3124 -3122 111 111 0.0333
 -3124 -3122 -211 211 0.0667
 9000223 221 331 0 0.25
 9000223 221 221 0 0.25
 9000223 211 -211 0 0.166667
-9000223 111 111 0 0.0833333
+9000223 111 111 0 0.083333
 9000223 321 -321 0 0.125
 9000223 311 -311 0 0.125
 100213 211 111 0 1
 100113 211 -211 0 1
 10211 211 221 0 0.3333
 10211 211 331 0 0.3333
-10211 321 -311 0 0.3333
+10211 321 -311 0 0.3334
 -10211 -211 221 0 0.3333
 -10211 -211 331 0 0.3333
--10211 -321 311 0 0.3333
-10111 111 221 0 0.3333
-10111 111 331 0 0.3333
+-10211 -321 311 0 0.3334
+10111 111 221 0 0.33335
+10111 111 331 0 0.33335
 10111 321 -321 0 0.16665
 10111 311 -311 0 0.16665
 12212 211 2112 0 0.466667
 100331 -311 313 0 0.05
 100331 9000211 -211 0 0.0666667
 100331 -9000211 211 0 0.0666667
-100331 9000111 111 0 0.0666667
+100331 9000111 111 0 0.0666666
 100331 221 9000221 0 0.2
 100331 9010221 221 0 0.2
 100331 321 -321 111 0.0333
 100331 311 -311 111 0.0333
 100331 311 -321 211 0.0667
 100331 321 -311 -211 0.0667
-10321 211 311 0 0.333333
-10321 111 321 0 0.166667
-10321 211 313 0 0.166667
-10321 111 323 0 0.0833333
+10321 211 311 0 0.331333
+10321 111 321 0 0.165667
+10321 211 313 0 0.165667
+10321 111 323 0 0.083333
 10321 213 311 0 0.06
 10321 113 321 0 0.03
 10321 223 321 0 0.03
 10321 323 211 -211 0.067
 10321 323 111 111 0.0223
 10321 313 211 111 0.0447
-10311 -211 321 0 0.333333
-10311 111 311 0 0.166667
-10311 -211 323 0 0.166667
-10311 111 313 0 0.0833333
+10311 -211 321 0 0.331333
+10311 111 311 0 0.165667
+10311 -211 323 0 0.165667
+10311 111 313 0 0.083333
 10311 -213 321 0 0.06
 10311 113 311 0 0.03
 10311 223 311 0 0.03
 10311 313 211 -211 0.067
 10311 323 -211 111 0.0447
 10311 313 111 111 0.0223
--10321 -211 -311 0 0.333333
--10321 111 -321 0 0.166667
--10321 -211 -313 0 0.166667
--10321 111 -323 0 0.0833333
+-10321 -211 -311 0 0.331333
+-10321 111 -321 0 0.165667
+-10321 -211 -313 0 0.165667
+-10321 111 -323 0 0.083333
 -10321 -213 -311 0 0.06
 -10321 113 -321 0 0.03
 -10321 223 -321 0 0.03
 -10321 -323 -211 211 0.067
 -10321 -323 111 111 0.0223
 -10321 -313 -211 111 0.0447
--10311 211 -321 0 0.333333
--10311 111 -311 0 0.166667
--10311 211 -323 0 0.166667
--10311 111 -313 0 0.0833333
+-10311 211 -321 0 0.331333
+-10311 111 -311 0 0.165667
+-10311 211 -323 0 0.165667
+-10311 111 -313 0 0.083333
 -10311 213 -321 0 0.06
 -10311 113 -311 0 0.03
 -10311 223 -311 0 0.03
 20333 -311 313 0 0.25
 100223 213 -211 0 0.333
 100223 -213 211 0 0.333
-100223 113 111 0 0.333
+100223 113 111 0 0.334
 100313 -211 321 0 0.666667
 100313 111 311 0 0.333333
 -100313 211 -321 0 0.666667
 -203130001 113 -311 0 0.0233333
 13122 3222 -211 0 0.333333
 13122 3112 211 0 0.333333
-13122 3212 111 0 0.333333
+13122 3212 111 0 0.333334
 -13122 -3222 211 0 0.333333
 -13122 -3112 -211 0 0.333333
--13122 -3212 111 0 0.333333
+-13122 -3212 111 0 0.333334
 20323 211 313 0 0.626667
 20323 111 323 0 0.313333
 20323 213 311 0 0.02
 20323 113 321 0 0.01
 20323 10221 321 0 0.02
 20323 223 321 0 0.01
-203130002 -211 323 0 0.626667
-203130002 111 313 0 0.313333
-203130002 -213 321 0 0.02
-203130002 113 311 0 0.01
-203130002 10221 311 0 0.02
-203130002 223 311 0 0.01
+20313 -211 323 0 0.626667
+20313 111 313 0 0.313333
+20313 -213 321 0 0.02
+20313 113 311 0 0.01
+20313 10221 311 0 0.02
+20313 223 311 0 0.01
 -20323 -211 -313 0 0.626667
 -20323 111 -323 0 0.313333
 -20323 -213 -311 0 0.02
 -20323 113 -321 0 0.01
 -20323 10221 -321 0 0.02
 -20323 223 -321 0 0.01
--203130002 211 -323 0 0.626667
--203130002 111 -313 0 0.313333
--203130002 213 -321 0 0.02
--203130002 113 -311 0 0.01
--203130002 10221 -311 0 0.02
--203130002 223 -311 0 0.01
+-20313 211 -323 0 0.626667
+-20313 111 -313 0 0.313333
+-20313 213 -321 0 0.02
+-20313 113 -311 0 0.01
+-20313 10221 -311 0 0.02
+-20313 223 -311 0 0.01
 3114 3122 -211 0 0.88
 3114 3112 111 0 0.06
 3114 3212 -211 0 0.06
 -3224 -3122 -211 0 0.88
 -3224 -3222 111 0 0.06
 -3224 -3212 -211 0 0.06
-10221 111 111 0 0.0833333
-10221 113 113 0 0.0833333
+10221 111 111 0 0.083333
+10221 113 113 0 0.083333
 10221 213 -213 0 0.166667
 10221 211 -211 0 0.166667
 10221 321 -321 0 0.125
 10221 311 -311 0 0.125
 10221 221 221 0 0.25
-2150001 213 111 0 0.35
-2150001 113 211 0 0.35
-2150001 221 211 0 0.15
-2150001 321 -311 0 0.05
-2150001 223 111 211 0.1
-2150002 -213 111 0 0.35
-2150002 113 -211 0 0.35
-2150002 221 -211 0 0.15
-2150002 -321 311 0 0.05
-2150002 223 111 -211 0.1
+215 213 111 0 0.35
+215 113 211 0 0.35
+215 221 211 0 0.15
+215 321 -311 0 0.05
+215 223 111 211 0.1
+-215 -213 111 0 0.35
+-215 113 -211 0 0.35
+-215 221 -211 0 0.15
+-215 -321 311 0 0.05
+-215 223 111 -211 0.1
 115 213 -211 0 0.35
 115 -213 211 0 0.35
 115 221 111 0 0.15
 100111 111 9000221 0 0.5
 100221 9000211 -211 0 0.0833333
 100221 -9000211 211 0 0.0833333
-100221 9000111 111 0 0.0833333
+100221 9000111 111 0 0.0833334
 100221 221 9000221 0 0.25
 100221 221 211 -211 0.25
 100221 221 111 111 0.25
 10323 213 311 0 0.28
 10323 113 321 0 0.14
 10323 211 313 0 0.106667
-10323 111 323 0 0.0533333
+10323 111 323 0 0.053333
 10323 223 321 0 0.11
 10323 321 10221 0 0.03
 10323 -211 211 321 0.14
 10313 -213 321 0 0.28
 10313 113 311 0 0.14
 10313 -211 323 0 0.106667
-10313 111 313 0 0.0533333
+10313 111 313 0 0.053333
 10313 223 311 0 0.11
 10313 311 10221 0 0.03
 10313 -211 211 311 0.14
 -10323 -213 -311 0 0.28
 -10323 113 -321 0 0.14
 -10323 -211 -313 0 0.106667
--10323 111 -323 0 0.0533333
+-10323 111 -323 0 0.053333
 -10323 223 -321 0 0.11
 -10323 211 -211 -321 0.14
 -10323 111 -211 -311 0.09333
 -10313 213 -321 0 0.28
 -10313 113 -311 0 0.14
 -10313 211 -323 0 0.106667
--10313 111 -313 0 0.0533333
+-10313 111 -313 0 0.053333
 -10313 223 -311 0 0.11
 -10313 211 -211 -311 0.14
 -10313 211 111 -321 0.09333
 -20213 113 -211 0 0.5
 20113 213 -211 0 0.5
 20113 -213 211 0 0.5
-10113 223 211 0 1
--10113 223 -211 0 1
-10213 223 111 0 1
+10113 223 111 0 1
+10213 223 211 0 1
+-10213 223 -211 0 1
 3112 2112 -211 0 1
 -3112 -2112 211 0 1
 3212 3122 22 0 1
 -3222 -2112 -211 0 0.48
 10223 213 -211 0 0.333333
 10223 -213 211 0 0.333333
-10223 113 111 0 0.333333
+10223 113 111 0 0.333334
 3122 2212 -211 0 0.64
 3122 2112 111 0 0.36
 -3122 -2212 211 0 0.64
 333 311 -311 0 0.34
 333 213 -211 0 0.0266667
 333 -213 211 0 0.0266667
-333 113 111 0 0.0266667
+333 113 111 0 0.0266666
 333 221 22 0 0.01
 333 211 -211 111 0.08
 9000211 221 211 0 1
 9000111 221 111 0 1
 9010221 111 111 0 0.333333
 9010221 211 -211 0 0.666667
-331 113 22 0 0.295
+331 113 22 0 0.2955
 331 223 22 0 0.0303
 331 22 22 0 0.0212
-331 211 -211 221 0.443
-331 111 111 221 0.209
+331 211 -211 221 0.4437
+331 111 111 221 0.2093
 323 211 311 0 0.666667
 323 111 321 0 0.333333
 313 -211 321 0 0.666667
 -323 111 -321 0 0.333333
 -313 211 -321 0 0.666667
 -313 111 -311 0 0.333333
-223 111 22 0 0.087
-223 211 -211 0 0.017
-223 211 -211 111 0.891
+223 111 22 0 0.0875
+223 211 -211 0 0.0171
+223 211 -211 111 0.8954
 113 211 -211 0 1
 213 211 111 0 1
 -213 -211 111 0 1
 9000221 111 111 0 0.333333
 9000221 211 -211 0 0.666667
-221 22 22 0 0.3943
-221 111 111 111 0.3251
-221 211 -211 111 0.226
-221 211 -211 22 0.0468
-311 211 -211 0 0.343
-311 111 111 0 0.157
--311 211 -211 0 0.343
--311 111 111 0 0.157
\ No newline at end of file
+221 22 22 0 0.3963
+221 111 111 111 0.3282
+221 211 -211 111 0.2291
+221 211 -211 22 0.0464
+311 310 0 0 0.5
+311 130 0 0 0.5
+-311 -310 0 0 0.5
+-311 -130 0 0 0.5
+310 211 -211 0 0.686
+310 111 111 0 0.314
+-310 211 -211 0 0.686
+-310 111 111 0 0.314
+111 22 22 0 0.98798
+111 11 -11 22 0.01202
+
index d4c2c60..aa60868 100755 (executable)
@@ -19,7 +19,6 @@ UHKM/UKUtility.cxx
 FSRCS := \
 PYQUEN/progs_fortran.f \
 PYQUEN/pythia-6.4.11.f \
-PYQUEN/jetset_73.f \
 PYQUEN/pyquen1_5.f
 
 HDRS = $(SRCS:.cxx=.h)