#include "THijing.h"
+#include "TObjArray.h"
#include "Hcommon.h"
#include "TParticle.h"
#include "TROOT.h"
}
+TObjArray* THijing::ImportParticles(Option_t *option)
+{
+//
+// Default primary creation method. It reads the /HEPEVT/ common block which
+// has been filled by the GenerateEvent method. If the event generator does
+// not use the HEPEVT common block, This routine has to be overloaded by
+// the subclasses.
+// The function loops on the generated particles and store them in
+// the TClonesArray pointed by the argument particles.
+// The default action is to store only the stable particles (ISTHEP = 1)
+// This can be demanded explicitly by setting the option = "Final"
+// If the option = "All", all the particles are stored.
+//
+ fParticles->Clear();
+ Int_t numpart = HIMAIN1.natt;
+ printf("\n THijing: HIJING stack contains %d particles.", numpart);
+ printf("\n THijing: Total energy: %f ", HIMAIN1.eatt);
+ printf("\n THijing: Number of hard scatterings: %d ", HIMAIN1.jatt);
+ Int_t nump = 0;
+ if (!strcmp(option,"") || !strcmp(option,"Final")) {
+ for (Int_t i = 0; i < numpart; i++) {
+
+ if (HIMAIN2.katt[3][i] == 1) {
+//
+// Use the common block values for the TParticle constructor
+//
+ nump++;
+ TParticle* p = new TParticle(
+ HIMAIN2.katt[0][i], HIMAIN2.katt[1][i] ,
+ -1, -1, -1, -1,
+ HIMAIN2.patt[0][i], HIMAIN2.patt[1][i], HIMAIN2.patt[2][i], HIMAIN2.patt[3][i] ,
+ HIMAIN2.vatt[0][i], HIMAIN2.vatt[1][i], HIMAIN2.vatt[2][i], HIMAIN2.vatt[3][i]
+ );
+ fParticles->Add(p);
+ }
+ }
+ }
+ else if (!strcmp(option,"All")) {
+ nump = numpart;
+ for (Int_t i = 0; i < numpart; i++) {
+
+ Int_t iParent = HIMAIN2.katt[2][i]-1;
+
+ if (iParent >= 0) {
+ TParticle *mother = (TParticle*) (fParticles->UncheckedAt(iParent));
+ mother->SetLastDaughter(i);
+ if (mother->GetFirstDaughter()==-1)
+ mother->SetFirstDaughter(i);
+ }
+
+ TParticle* p = new TParticle(
+ HIMAIN2.katt[0][i], HIMAIN2.katt[1][i], iParent,
+ -1, -1, -1,
+ HIMAIN2.patt[0][i], HIMAIN2.patt[1][i], HIMAIN2.patt[2][i], HIMAIN2.patt[3][i] ,
+ HIMAIN2.vatt[0][i], HIMAIN2.vatt[1][i], HIMAIN2.vatt[2][i], HIMAIN2.vatt[3][i]
+ );
+ fParticles->Add(p);
+ }
+ }
+ return fParticles;
+}
Int_t THijing::ImportParticles(TClonesArray *particles, Option_t *option)
{
#ifndef ROOT_TGenerator
#include "TGenerator.h"
#endif
+class TObjArray;
class THijing : public TGenerator {
virtual void GenerateEvent();
virtual Int_t ImportParticles(TClonesArray *particles, Option_t *option="");
+ virtual TObjArray* ImportParticles(Option_t *option="");
//Parameters for the generation:
protected:
- Float_t fEfrm; // Energy in the centre of mass (CMS) or lab-frame (LAB)
- TString fFrame; // Reference frame CMS or LAB
- TString fProj; // Projectile name
- TString fTarg; // Target name
- Int_t fIap; // Atomic number of projectile
- Int_t fIzp; // Charge number of projectile
- Int_t fIat; // Atomic number of target
- Int_t fIzt; // Charge number of target
- Float_t fBmin; // Minimum impact parameter
- Float_t fBmax; // Maximum impact parameter
-
- ClassDef(THijing,1) //Interface to Hijing Event Generator
+ Float_t fEfrm; // Energy in the centre of mass (CMS) or lab-frame (LAB)
+ TString fFrame; // Reference frame CMS or LAB
+ TString fProj; // Projectile name
+ TString fTarg; // Target name
+ Int_t fIap; // Atomic number of projectile
+ Int_t fIzp; // Charge number of projectile
+ Int_t fIat; // Atomic number of target
+ Int_t fIzt; // Charge number of target
+ Float_t fBmin; // Minimum impact parameter
+ Float_t fBmax; // Maximum impact parameter
+ ClassDef(THijing,1) //Interface to Hijing Event Generator
};
#endif