/*
$Log$
+Revision 1.3 2000/10/02 21:28:06 fca
+Removal of useless dependecies via forward declarations
+
Revision 1.2 2000/07/11 18:24:55 fca
Coding convention corrections + few minor bug fixes
#include "AliRun.h"
#include "AliConst.h"
#include "AliPDG.h"
-#include "AliMC.h"
ClassImp(AliGenBox)
//
for (j=0;j<3;j++) origin[j]=fOrigin[j];
if(fVertexSmear==kPerEvent) {
- gMC->Rndm(random,6);
+ Rndm(random,6);
for (j=0;j<3;j++) {
origin[j]+=fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
}
}
for(i=0;i<fNpart;i++) {
- gMC->Rndm(random,3);
+ Rndm(random,3);
theta=fThetaMin+random[0]*(fThetaMax-fThetaMin);
if(TestBit(kMomentumRange)) {
pmom=fPMin+random[1]*(fPMax-fPMin);
p[2] = pmom*TMath::Cos(theta);
if(fVertexSmear==kPerTrack) {
- gMC->Rndm(random,6);
+ Rndm(random,6);
for (j=0;j<3;j++) {
origin[j]=fOrigin[j]+fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
}
}
- gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,"Primary",nt);
+ gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,kPPrimary,nt);
}
}
/*
$Log$
+Revision 1.3 2000/10/02 21:28:06 fca
+Removal of useless dependecies via forward declarations
+
Revision 1.2 2000/06/09 20:37:51 morsch
All coding rule violations except RS3 corrected
#include "AliGenDoubleScan.h"
#include "AliRun.h"
-#include "AliMC.h"
ClassImp(AliGenDoubleScan)
for (Int_t ix=0; ix<fNx; ix++) {
for (Int_t iy=0; iy<fNy; iy++) {
for (Int_t iz=0; iz<fNz; iz++){
- gMC->Rndm(random,6);
+ Rndm(random,6);
origin[0]=fXmin+ix*dx+2*(random[0]-0.5)*fOsigma[0];
origin[1]=fYmin+iy*dy+2*(random[1]-0.5)*fOsigma[1];
origin[2]=fZmin+iz*dz+2*(random[2]-0.5)*fOsigma[2];
p[0] = pmom*TMath::Cos(phi)*TMath::Sin(theta);
p[1] = pmom*TMath::Sin(phi)*TMath::Sin(theta);
p[2] = pmom*TMath::Cos(theta);
- gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,"Primary",nt);
+ gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,kPPrimary,nt);
//
// Generate 2nd particle at distance fDistance from the first
//
- gMC->Rndm(random,6);
+ Rndm(random,6);
Float_t phi2=2.*TMath::Pi()*random[0];
Float_t dx =fDistance*TMath::Sin(phi2);
Float_t dy =fDistance*TMath::Cos(phi2);
p[0] = pmom*TMath::Cos(phi)*TMath::Sin(theta);
p[1] = pmom*TMath::Sin(phi)*TMath::Sin(theta);
p[2] = pmom*TMath::Cos(theta);
- gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,"Primary",nt);
+ gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,kPPrimary,nt);
}
}
}
/*
$Log$
+Revision 1.12 2000/10/27 13:54:45 morsch
+Remove explicite reference to input file from constuctor.
+
Revision 1.11 2000/10/02 21:28:06 fca
Removal of useless dependecies via forward declarations
for (j=0;j<3;j++) origin[j]=fOrigin[j];
if(fVertexSmear==kPerTrack) {
- gMC->Rndm(random,6);
+ Rndm(random,6);
for (j=0;j<3;j++) {
origin[j]+=fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
p[2]=prwn*TMath::Cos(fTheta);
if(fVertexSmear==kPerTrack) {
- gMC->Rndm(random,6);
+ Rndm(random,6);
for (j=0;j<3;j++) {
origin[j]=fOrigin[j]
+fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
}
}
- gAlice->SetTrack(fTrackIt,-1,fIdpart,p,origin,polar,0,"Primary",nt);
+ gAlice->SetTrack(fTrackIt,-1,fIdpart,p,origin,polar,0,kPPrimary,nt);
}
fNcurrent++;
nb = (Int_t)h2->GetEvent(fNcurrent);
/*
$Log$
+Revision 1.11 2000/06/14 15:20:40 morsch
+Include clean-up (IH)
+
Revision 1.10 2000/06/09 20:31:34 morsch
All coding rule violations except RS3 corrected
wgt = (part == 13) ? fWgt*fAddWeight : fWgt;
iwgt=Int_t(wgt);
fwgt=wgt-Float_t(iwgt);
- gMC->Rndm(random,2);
+ Rndm(random,2);
if (random[0] < fwgt) iwgt++;
if (part==1 && iwgt>100) iwgt=100;
Int_t nstack=0;
for (j=0; j<iwgt; j++) {
- gAlice->SetTrack(fTrackIt,-1,part,p,origin,polar,fAge,"Primary",nt);
- gMC->Rndm(random,2);
+ gAlice->SetTrack(fTrackIt,-1,part,p,origin,polar,fAge,kPPrimary,nt);
+ Rndm(random,2);
phi=2*random[1]*TMath::Pi();
Float_t pn1=p[0]*TMath::Sin(phi) - p[1]*TMath::Cos(phi);
Float_t pn2=p[0]*TMath::Cos(phi) + p[1]*TMath::Sin(phi);
#include "AliGenerator.h"
-#include <TChain.h>
+class TChain;
class TTree;
/*
$Log$
+Revision 1.2 2000/10/02 15:17:54 morsch
+Unused includes removed.
+
Revision 1.1 2000/06/09 20:24:00 morsch
Same class as previously in AliSimpleGen.cxx
All coding rule violations except RS3 corrected (AM)
Int_t i, nt;
//
for(i=0;i<fNpart;i++) {
- gAlice->SetTrack(fTrackIt,-1,fIpart,p,fOrigin.GetArray(),polar,0,"Primary",nt);
+ gAlice->SetTrack(fTrackIt,-1,fIpart,p,fOrigin.GetArray(),polar,0,kPPrimary,nt);
}
}
/*
$Log$
+Revision 1.1 2000/06/15 08:48:43 morsch
+AliGenGSIlib with parametersations for GSI physics simulation added (YF, MI)
+
Revision 1.7 2000/05/02 08:12:13 morsch
Coding rule violations corrected.
*/
+#include "TMath.h"
+#include "TString.h"
+
#include "AliGenGSIlib.h"
-#include "AliRun.h"
#include "iostream.h"
ClassImp(AliGenGSIlib)
}
// particle composition
//
-Int_t AliGenGSIlib::IpUpsilonRitman()
+Int_t AliGenGSIlib::IpUpsilonRitman(TRandom *)
{
// y composition
if (fgDebug) cout<<"Ritman Ip paramtrisation\n";
// particle composition
//
-Int_t AliGenGSIlib::IpUpsilonKarel()
+Int_t AliGenGSIlib::IpUpsilonKarel(TRandom *)
{
// y composition//
//to implement
}
// particle composition
//
-Int_t AliGenGSIlib::IpUpsilonMUON()
+Int_t AliGenGSIlib::IpUpsilonMUON(TRandom *)
{
// y composition
return 553;
typedef Double_t (*GenFunc) (Double_t*, Double_t*);
-typedef Int_t (*GenFuncIp) ();
+typedef Int_t (*GenFuncIp) (TRandom *);
/* $Id$ */
#include "AliGenLib.h"
+class TRandom;
class AliGenGSIlib :public AliGenLib {
public:
// Upsilon RITMAN
static Double_t PtUpsilonRitman( Double_t *px, Double_t *dummy );
static Double_t YUpsilonRitman(Double_t *py, Double_t *dummy);
- static Int_t IpUpsilonRitman();
+ static Int_t IpUpsilonRitman(TRandom *ran);
// Upsilon Karel
static Double_t PtUpsilonKarel( Double_t *px, Double_t *dummy );
static Double_t YUpsilonKarel(Double_t *py, Double_t *dummy);
- static Int_t IpUpsilonKarel();
+ static Int_t IpUpsilonKarel(TRandom *ran);
// YpsMUON
static Double_t PtUpsilonMUON( Double_t *px, Double_t *dummy );
static Double_t YUpsilonMUON(Double_t *py, Double_t *dummy);
- static Int_t IpUpsilonMUON();
+ static Int_t IpUpsilonMUON(TRandom *ran);
//
typedef Double_t (*GenFunc) (Double_t *, Double_t *);
- typedef Int_t (*GenFuncIp)();
+ typedef Int_t (*GenFuncIp)(TRandom *ran);
GenFunc GetPt(Param_t param, const char * tname=0);
GenFunc GetY(Param_t param, const char * tname=0);
/*
$Log$
+Revision 1.3 2000/10/02 21:28:06 fca
+Removal of useless dependecies via forward declarations
+
Revision 1.2 2000/07/11 18:24:55 fca
Coding convention corrections + few minor bug fixes
///////////////////////////////////////////////////////////////////
#include "AliGenHIJINGpara.h"
+#include "TF1.h"
#include "AliRun.h"
-#include "AliMC.h"
#include "AliConst.h"
#include "AliPDG.h"
//
for (j=0;j<3;j++) origin[j]=fOrigin[j];
if(fVertexSmear==kPerEvent) {
- gMC->Rndm(random,6);
+ Rndm(random,6);
for (j=0;j<3;j++) {
origin[j]+=fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
}
for(i=0;i<fNpart;i++) {
while(1) {
- gMC->Rndm(random,3);
+ Rndm(random,3);
if(random[0]<kBorne) {
part=kPions[Int_t (random[1]*3)];
ptf=fPtpi;
p[1]=pt*TMath::Sin(phi);
p[2]=pl;
if(fVertexSmear==kPerTrack) {
- gMC->Rndm(random,6);
+ Rndm(random,6);
for (j=0;j<3;j++) {
origin[j]=fOrigin[j]+fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
}
}
- gAlice->SetTrack(fTrackIt,-1,part,p,origin,polar,0,"Primary",nt,fParentWeight);
+ gAlice->SetTrack(fTrackIt,-1,part,p,origin,polar,0,kPPrimary,nt,fParentWeight);
break;
}
}
/* $Id$ */
#include "AliGenerator.h"
-#include "TF1.h"
+class TF1;
class AliGenHIJINGpara : public AliGenerator
{
/*
$Log$
+Revision 1.8 2000/10/02 15:20:40 morsch
+Direct reference to default input file removed.
+
Revision 1.7 2000/06/30 12:19:07 morsch
Type of fFileName changed to TString, fp has been !-ed.
p[1]=p0*ty;
p[2]=p0*tz;
fParentWeight=wgt;
- gAlice->SetTrack(fTrackIt,-1,ipart,p,origin,polar,0,"Halo+",nt,fParentWeight);
+ gAlice->SetTrack(fTrackIt,-1,ipart,p,origin,polar,0,kPNoProcess,nt,fParentWeight);
+// gAlice->SetTrack(fTrackIt,-1,ipart,p,origin,polar,0,"Halo+",nt,fParentWeight);
origin[2]=-origin[2];
p[2]=-p[2];
- gAlice->SetTrack(fTrackIt,-1,ipart,p,origin,polar,0,"Halo-",nt,fParentWeight);
+ gAlice->SetTrack(fTrackIt,-1,ipart,p,origin,polar,0,kPNoProcess,nt,fParentWeight);
+// gAlice->SetTrack(fTrackIt,-1,ipart,p,origin,polar,0,"Halo-",nt,fParentWeight);
origin[2]=-origin[2];
p[2]=-p[2];
}
/*
$Log$
+Revision 1.13 2000/11/09 17:40:27 morsch
+Possibility to select/unselect spectator protons and neutrons.
+Method SetSpectators(Int_t spect) added. (FCA, Ch. Oppedisano)
+
Revision 1.12 2000/10/20 13:38:38 morsch
Debug printouts commented.
#include "AliGenHijing.h"
#include "AliGenHijingEventHeader.h"
#include "AliRun.h"
-#include "AliMC.h"
#include <TArrayI.h>
#include <TParticle.h>
fTrials=0;
for (j=0;j<3;j++) origin0[j]=fOrigin[j];
if(fVertexSmear==kPerEvent) {
- gMC->Rndm(random,6);
+ Rndm(random,6);
for (j=0;j<3;j++) {
origin0[j]+=fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
// printf("\n set track mother: %d %d %d %d %d %d ",i,imo, kf, nt+1, selected, hasSelectedDaughters);
gAlice->SetTrack(0,imo,kf,p,origin,polar,
- tof,"Primary",nt);
+ tof,kPPrimary,nt);
// ... and keep it there
gAlice->KeepTrack(nt);
//
}
// Put particle on the stack
gAlice->SetTrack(fTrackIt,imo,kf,p,origin,polar,
- tof,"Secondary",nt);
+ tof,kPNoProcess,nt);
+// tof,"Secondary",nt);
// printf("\n set track final: %d %d %d",imo, kf, nt);
gAlice->KeepTrack(nt);
return *this;
}
+#ifndef WIN32
+# define rluget_hijing rluget_hijing_
+# define rluset_hijing rluset_hijing_
+# define rlu_hijing rlu_hijing_
+# define type_of_call
+#else
+# define rluget_hijing RLUGET_HIJING
+# define rluset_hijing RLUSET_HIJING
+# define rlu_hijing RLU_HIJING
+# define type_of_call _stdcall
+#endif
+
+
+extern "C" {
+ void type_of_call rluget_hijing(Int_t & /*lfn*/, Int_t & /*move*/)
+ {printf("Dummy version of rluget_hijing reached\n");}
+
+ void type_of_call rluset_hijing(Int_t & /*lfn*/, Int_t & /*move*/)
+ {printf("Dummy version of rluset_hijing reached\n");}
+
+ Double_t type_of_call rlu_hijing(Int_t & /*idum*/)
+ {return sRandom->Rndm();}
+}
+
#include "AliGenerator.h"
#include "GenTypeDefs.h"
-#include <THijing.h>
#include <TString.h>
#include <TArrayI.h>
+class THijing;
class TArrayI;
class TParticle;
/* $Id$ */
#include <TObject.h>
+
#include "GenTypeDefs.h"
+class TRandom;
class AliGenLib :
-public TObject
+ public TObject
{
public:
//
typedef Double_t (*GenFunc) (Double_t *, Double_t *);
- typedef Int_t (*GenFuncIp)();
+ typedef Int_t (*GenFuncIp)(TRandom *);
virtual GenFunc GetPt(Param_t param, const char *tname) = 0;
virtual GenFunc GetY (Param_t param, const char *tname) = 0;
virtual GenFuncIp GetIp(Param_t param, const char *tname) = 0;
/*
$Log$
+Revision 1.10 2000/06/29 21:08:27 morsch
+All paramatrisation libraries derive from the pure virtual base class AliGenLib.
+This allows to pass a pointer to a library directly to AliGenParam and avoids the
+use of function pointers in Config.C.
+
Revision 1.9 2000/06/14 15:20:56 morsch
Include clean-up (IH)
*/
+#include "TMath.h"
+#include "TRandom.h"
+
#include "AliGenMUONlib.h"
-#include "AliMC.h"
ClassImp(AliGenMUONlib)
//
}
// particle composition
//
-Int_t AliGenMUONlib::IpPion()
+Int_t AliGenMUONlib::IpPion(TRandom *ran)
{
// Pion composition
- Float_t random[1];
- gMC->Rndm(random,1);
- if (random[0] < 0.5) {
+ if (ran->Rndm() < 0.5) {
return 211;
} else {
return -211;
// particle composition
//
-Int_t AliGenMUONlib::IpKaon()
+Int_t AliGenMUONlib::IpKaon(TRandom *ran)
{
// Kaon composition
- Float_t random[1];
- gMC->Rndm(random,1);
- if (random[0] < 0.5) {
+ if (ran->Rndm() < 0.5) {
return 321;
} else {
return -321;
}
// particle composition
//
-Int_t AliGenMUONlib::IpJpsi()
+Int_t AliGenMUONlib::IpJpsi(TRandom *)
{
// J/Psi composition
return 443;
}
// particle composition
//
-Int_t AliGenMUONlib::IpUpsilon()
+Int_t AliGenMUONlib::IpUpsilon(TRandom *)
{
// y composition
return 553;
}
// particle composition
//
-Int_t AliGenMUONlib::IpPhi()
+Int_t AliGenMUONlib::IpPhi(TRandom *)
{
// Phi composition
return 41;
return YJpsi(px,dum);
}
-Int_t AliGenMUONlib::IpCharm()
+Int_t AliGenMUONlib::IpCharm(TRandom *ran)
{
// Charm composition
- Float_t random[2];
+ Float_t random;
Int_t ip;
// 411,421,431,4122
- gMC->Rndm(random,2);
- if (random[0] < 0.5) {
+ random = ran->Rndm();
+ if (random < 0.5) {
ip=411;
- } else if (random[0] < 0.75) {
+ } else if (random < 0.75) {
ip=421;
- } else if (random[0] < 0.90) {
+ } else if (random < 0.90) {
ip=431;
} else {
ip=4122;
}
- if (random[1] < 0.5) {ip=-ip;}
+ if (ran->Rndm() < 0.5) {ip=-ip;}
return ip;
}
return YJpsi(px,dum);
}
-Int_t AliGenMUONlib::IpBeauty()
+Int_t AliGenMUONlib::IpBeauty(TRandom *ran)
{
// Beauty Composition
- Float_t random[2];
+ Float_t random;
Int_t ip;
- gMC->Rndm(random,2);
- if (random[0] < 0.5) {
+ random = ran->Rndm();
+ if (random < 0.5) {
ip=511;
- } else if (random[0] < 0.75) {
+ } else if (random < 0.75) {
ip=521;
- } else if (random[0] < 0.90) {
+ } else if (random < 0.90) {
ip=531;
} else {
ip=5122;
}
- if (random[1] < 0.5) {ip=-ip;}
+ if (ran->Rndm() < 0.5) {ip=-ip;}
return ip;
}
}
return func;
}
-typedef Int_t (*GenFuncIp) ();
+typedef Int_t (*GenFuncIp) (TRandom *);
GenFuncIp AliGenMUONlib::GetIp(Param_t param, const char* tname)
{
// Return pointer to particle type parameterisation
#include "AliGenLib.h"
class AliGenMUONlib :
-public AliGenLib
+ public AliGenLib
{
public:
// pions
static Double_t PtPion(Double_t *px, Double_t *dummy);
static Double_t PtScal(Double_t pt, Int_t np);
static Double_t YPion( Double_t *py, Double_t *dummy);
- static Int_t IpPion();
+ static Int_t IpPion(TRandom *ran);
// kaons
static Double_t PtKaon(Double_t *px, Double_t *dummy);
static Double_t YKaon( Double_t *py, Double_t *dummy);
- static Int_t IpKaon();
+ static Int_t IpKaon(TRandom *ran);
// Phi
static Double_t PtPhi( Double_t *px, Double_t *dummy);
static Double_t YPhi( Double_t *px, Double_t *dummy);
- static Int_t IpPhi();
+ static Int_t IpPhi(TRandom *ran);
// J/Psi
static Double_t PtJpsi( Double_t *px, Double_t *dummy);
static Double_t YJpsi(Double_t *py, Double_t *dummy);
- static Int_t IpJpsi();
+ static Int_t IpJpsi(TRandom *ran);
// Upsilon
static Double_t PtUpsilon( Double_t *px, Double_t *dummy );
static Double_t YUpsilon(Double_t *py, Double_t *dummy);
- static Int_t IpUpsilon();
+ static Int_t IpUpsilon(TRandom *ran);
//
// Charm
static Double_t PtCharm( Double_t *px, Double_t *dummy );
static Double_t YCharm(Double_t *py, Double_t *dummy);
- static Int_t IpCharm();
+ static Int_t IpCharm(TRandom *ran);
//
// Beauty
static Double_t PtBeauty( Double_t *px, Double_t *dummy );
static Double_t YBeauty(Double_t *py, Double_t *dummy);
- static Int_t IpBeauty();
+ static Int_t IpBeauty(TRandom *ran);
//
GenFunc GetPt(Param_t param, const char* tname=0);
GenFunc GetY (Param_t param, const char* tname=0);
/*
$Log$
+Revision 1.5 2000/06/29 21:08:27 morsch
+All paramatrisation libraries derive from the pure virtual base class AliGenLib.
+This allows to pass a pointer to a library directly to AliGenParam and avoids the
+use of function pointers in Config.C.
+
Revision 1.4 2000/06/14 15:21:05 morsch
Include clean-up (IH)
// martinez@subatech.in2p3.fr
//======================================================================
+#include "TMath.h"
+#include "TRandom.h"
+
#include "AliGenPHOSlib.h"
-#include "AliMC.h"
ClassImp(AliGenPHOSlib)
return ka*TMath::Exp(-ex);
}
- Int_t AliGenPHOSlib::IpPion()
+ Int_t AliGenPHOSlib::IpPion(TRandom *ran)
{
// particle composition pi+, pi0, pi-
//
- Float_t random[1];
- gMC->Rndm(random,1);
+ Float_t random = ran->Rndm();
- if ( (3.*random[0]) < 1. )
+ if ( (3.*random) < 1. )
{
return 211 ;
}
else
{
- if ( (3.*random[0]) >= 2.)
+ if ( (3.*random) >= 2.)
{
return -211 ;
}
return ka*TMath::Exp(-ex);
}
- Int_t AliGenPHOSlib::IpKaon()
+ Int_t AliGenPHOSlib::IpKaon(TRandom *ran)
{
// particle composition
//
- Float_t random[1],random2[1];
- gMC->Rndm(random,1);
- gMC->Rndm(random2,1);
- if (random2[0] < 0.5)
+ Float_t random = ran->Rndm();
+ Float_t random2 = ran->Rndm();
+ if (random2 < 0.5)
{
- if (random[0] < 0.5) {
+ if (random < 0.5) {
return 321; // K+
} else {
return -321; // K-
}
else
{
- if (random[0] < 0.5) {
+ if (random < 0.5) {
return 130; // K^0 short
} else {
return 310; // K^0 long
return ka*TMath::Exp(-ex);
}
- Int_t AliGenPHOSlib::IpEta()
+ Int_t AliGenPHOSlib::IpEta(TRandom *)
{
// particle composition
//
return ka*TMath::Exp(-ex);
}
- Int_t AliGenPHOSlib::IpOmega()
+ Int_t AliGenPHOSlib::IpOmega(TRandom *)
{
// particle composition
//
return ka*TMath::Exp(-ex);
}
- Int_t AliGenPHOSlib::IpEtaprime()
+ Int_t AliGenPHOSlib::IpEtaprime(TRandom *)
{
// particle composition
//
return ka*TMath::Exp(-ex);
}
- Int_t AliGenPHOSlib::IpPhi()
+ Int_t AliGenPHOSlib::IpPhi(TRandom *)
{
// particle composition
//
return ka*TMath::Exp(-ex);
}
- Int_t AliGenPHOSlib::IpBaryon()
+ Int_t AliGenPHOSlib::IpBaryon(TRandom *ran)
{
// particle composition
//
- Float_t random[1],random2[1];
- gMC->Rndm(random,1);
- gMC->Rndm(random2,1);
- if (random2[0] < 0.5)
+ Float_t random = ran->Rndm();
+ Float_t random2 = ran->Rndm();
+ if (random2 < 0.5)
{
- if (random[0] < 0.5) {
+ if (random < 0.5) {
return 2212; // p
} else {
return -2212; // pbar
}
else
{
- if (random[0] < 0.5) {
+ if (random < 0.5) {
return 2112; // n
} else {
return -2112; // n bar
}
return func;
}
-typedef Int_t (*GenFuncIp) ();
+typedef Int_t (*GenFuncIp) (TRandom *);
GenFuncIp AliGenPHOSlib::GetIp(Param_t param, const char* tname)
{
// Return pointer to particle composition
/* $Id$ */
+class TRandom;
+
class AliGenPHOSlib :
public AliGenLib
{
static Double_t PtPion(Double_t *px, Double_t *dummy);
static Double_t PtScal(Double_t pt, Int_t np);
static Double_t YPion( Double_t *py, Double_t *dummy);
- static Int_t IpPion();
+ static Int_t IpPion(TRandom* ran);
// kaons
static Double_t PtKaon(Double_t *px, Double_t *dummy);
static Double_t YKaon( Double_t *py, Double_t *dummy);
- static Int_t IpKaon();
+ static Int_t IpKaon(TRandom* ran);
// etas
static Double_t PtEta(Double_t *px, Double_t *dummy);
static Double_t YEta( Double_t *py, Double_t *dummy);
- static Int_t IpEta();
+ static Int_t IpEta(TRandom *ran);
// omegas
static Double_t PtOmega(Double_t *px, Double_t *dummy);
static Double_t YOmega( Double_t *py, Double_t *dummy);
- static Int_t IpOmega();
+ static Int_t IpOmega(TRandom *ran);
// etaprime
static Double_t PtEtaprime(Double_t *px, Double_t *dummy);
static Double_t YEtaprime( Double_t *py, Double_t *dummy);
- static Int_t IpEtaprime();
+ static Int_t IpEtaprime(TRandom* ran);
// phis
static Double_t PtPhi(Double_t *px, Double_t *dummy);
static Double_t YPhi( Double_t *py, Double_t *dummy);
- static Int_t IpPhi();
+ static Int_t IpPhi(TRandom* ran);
// baryons
static Double_t PtBaryon(Double_t *px, Double_t *dummy);
static Double_t YBaryon( Double_t *py, Double_t *dummy);
- static Int_t IpBaryon();
+ static Int_t IpBaryon(TRandom *ran);
GenFunc GetPt(Param_t param, const char* tname=0);
GenFunc GetY (Param_t param, const char* tname=0);
/*
$Log$
+Revision 1.1 2000/09/08 15:37:58 morsch
+pt and y-parameterisations for PMD physics simulation.
+THIS VERSION IS JUST A TEMPLATE THE PT AND Y DISTRIBUTIONS HAVE TO BE CORRECTED !!!!.
+
*/
#include "AliGenPMDlib.h"
-#include "AliMC.h"
#include "AliPDG.h"
+#include "TMath.h"
ClassImp(AliGenPMDlib)
//
// particle composition
//
-Int_t AliGenPMDlib::IpPi0()
+Int_t AliGenPMDlib::IpPi0(TRandom *)
{
// Pi0
return kPi0;
// particle composition
//
-Int_t AliGenPMDlib::IpEta()
+Int_t AliGenPMDlib::IpEta(TRandom *)
{
return 221;
}
return func;
}
-typedef Int_t (*GenFuncIp) ();
+typedef Int_t (*GenFuncIp) (TRandom *);
GenFuncIp AliGenPMDlib::GetIp(Param_t param, const char* tname)
{
// Return pointer to particle type parameterisation
/* $Id$ */
#include "AliGenLib.h"
+class TRandom;
class AliGenPMDlib :
public AliGenLib
static Double_t PtPi0(Double_t *px, Double_t *dummy);
static Double_t PtScal(Double_t pt, Int_t np);
static Double_t YPi0( Double_t *py, Double_t *dummy);
- static Int_t IpPi0();
+ static Int_t IpPi0(TRandom *ran);
// Etas
static Double_t PtEta(Double_t *px, Double_t *dummy);
static Double_t YEta( Double_t *py, Double_t *dummy);
- static Int_t IpEta();
+ static Int_t IpEta(TRandom *ran);
//
GenFunc GetPt(Param_t param, const char* tname=0);
GenFunc GetY (Param_t param, const char* tname=0);
/*
$Log$
+Revision 1.24 2000/10/18 19:11:27 hristov
+Division by zero fixed
+
Revision 1.23 2000/10/02 21:28:06 fca
Removal of useless dependecies via forward declarations
#include "AliDecayerPythia.h"
#include "AliGenMUONlib.h"
#include "AliRun.h"
-#include "AliMC.h"
-#include "AliPythia.h"
#include <TParticle.h>
#include <TParticlePDG.h>
#include <TDatabasePDG.h>
//____________________________________________________________
//____________________________________________________________
AliGenParam::AliGenParam()
- :AliGenerator()
{
// Deafault constructor
fPtPara = 0;
AliGenParam::AliGenParam(Int_t npart, Param_t param,
Double_t (*PtPara) (Double_t*, Double_t*),
Double_t (*YPara ) (Double_t* ,Double_t*),
- Int_t (*IpPara) ())
+ Int_t (*IpPara) (TRandom *))
:AliGenerator(npart)
{
// Constructor
// Calculating vertex position per event
for (j=0;j<3;j++) origin0[j]=fOrigin[j];
if(fVertexSmear==kPerEvent) {
- gMC->Rndm(random,6);
+ Rndm(random,6);
for (j=0;j<3;j++) {
origin0[j]+=fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
while(1) {
//
// particle type
- Int_t iPart = fIpParaFunc();
+ Int_t iPart = fIpParaFunc(fRandom);
fChildWeight=(fDecayer->GetPartialBranchingRatio(iPart))*fParentWeight;
TParticlePDG *particle = DataBase->GetParticle(iPart);
Float_t am = particle->Mass();
- gMC->Rndm(random,2);
+ Rndm(random,2);
//
// phi
phi=fPhiMin+random[0]*(fPhiMax-fPhiMin);
p[1]=pt*TMath::Sin(phi);
p[2]=pl;
if(fVertexSmear==kPerTrack) {
- gMC->Rndm(random,6);
+ Rndm(random,6);
for (j=0;j<3;j++) {
origin0[j]=
fOrigin[j]+fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
//
// parent
gAlice->
- SetTrack(0,-1,iPart,p,origin0,polar,0,"Primary",nt,wgtp);
+ SetTrack(0,-1,iPart,p,origin0,polar,0,kPPrimary,nt,wgtp);
iparent=nt;
gAlice->KeepTrack(nt);
for (i=0; i< ncsel; i++) {
gAlice->SetTrack(fTrackIt,iparent,kfch[i],
&pch[i][0],och,polar,
- 0,"Decay",nt,wgtch);
+ 0,kPDecay,nt,wgtch);
gAlice->KeepTrack(nt);
}
} // Decays by Lujet
else // nodecay option, so parent will be tracked by GEANT (pions, kaons, eta, omegas, baryons)
{
gAlice->
- SetTrack(fTrackIt,-1,iPart,p,origin0,polar,0,"Primary",nt,wgtp);
+ SetTrack(fTrackIt,-1,iPart,p,origin0,polar,0,kPPrimary,nt,wgtp);
ipa++;
}
break;
/* $Id$ */
#include "AliGenerator.h"
-#include "AliDecayer.h"
#include "GenTypeDefs.h"
#include <TArrayI.h>
+class AliDecayer;
class AliPythia;
class TParticle;
class AliGenLib;
AliGenParam(Int_t npart, Param_t param,
Double_t (*PtPara)(Double_t*, Double_t*),
Double_t (*YPara )(Double_t*, Double_t*),
- Int_t (*IpPara)() );
+ Int_t (*IpPara)(TRandom*) );
AliGenParam(const AliGenParam &Param);
virtual ~AliGenParam();
protected:
Double_t (*fPtParaFunc)(Double_t*, Double_t*); //! Pointer to Pt parametrisation function
Double_t (*fYParaFunc )(Double_t*, Double_t*); //! Pointer to Y parametrisation function
- Int_t (*fIpParaFunc )(); //! Pointer to particle type parametrisation function
+ Int_t (*fIpParaFunc )(TRandom*); //! Pointer to particle type parametrisation function
TF1* fPtPara; // Transverse momentum parameterisation
TF1* fYPara; // Rapidity parameterisation
Param_t fParam; // Parameterisation type
/*
$Log$
+Revision 1.25 2000/10/18 19:11:27 hristov
+Division by zero fixed
+
Revision 1.24 2000/09/18 10:41:35 morsch
Add possibility to use nuclear structure functions from PDF library V8.
pP[3] = massP;
gAlice->SetTrack(0,-1,-1,
pP,originP,polar,
- 0,"Hard Scat.",ntP,fParentWeight);
+ 0,kPPrimary,ntP,fParentWeight);
+// 0,"Hard Scat.",ntP,fParentWeight);
gAlice->KeepTrack(ntP);
}
nc++;
if (fForceDecay == nodecay) trackit = 1;
gAlice->SetTrack(trackit,ntP,kf,
p,origin,polar,
- 0,"Primary",nt,fParentWeight);
+ 0,kPPrimary,nt,fParentWeight);
gAlice->KeepTrack(nt);
Int_t iparent = nt;
//
Float_t tof=kconv*ichild->T();
gAlice->SetTrack(fTrackIt, iparent, kf,
p,origin,polar,
- tof,"Decay",nt,fChildWeight);
+ tof,kPDecay,nt,fChildWeight);
gAlice->KeepTrack(nt);
} // select child
} // child loop
origin[2]=origin0[2]+iparticle->Vz()/10.;
Float_t tof=kconv*iparticle->T();
gAlice->SetTrack(fTrackIt,-1,kf,p,origin,polar,
- tof,"Primary",nt);
+ tof,kPPrimary,nt);
gAlice->KeepTrack(nt);
} // select particle
} // particle loop
+#ifndef WIN32
+#define pyr pyr_
+#define pyrset pyrset_
+#define pyrget pyrget_
+#else
+#define pyr PYR
+#define pyrset PYRSET
+#define pyrget PYRGET
+#endif
-
-
-
-
+extern "C" {
+ Double_t pyr(Int_t*) {return sRandom->Rndm();}
+ void pyrset(Int_t*,Int_t*) {}
+ void pyrget(Int_t*,Int_t*) {}
+}
#include "AliGenerator.h"
-#include "AliDecayer.h"
#include "GenTypeDefs.h"
#include <TArrayI.h>
+class AliDecayer;
class AliPythia;
class TParticle;
/*
$Log$
+Revision 1.6 2000/10/02 21:28:06 fca
+Removal of useless dependecies via forward declarations
+
Revision 1.5 2000/06/09 20:37:20 morsch
All coding rule violations except RS3 corrected
#include "AliGenScan.h"
#include "AliRun.h"
-#include "AliMC.h"
ClassImp(AliGenScan)
for (Int_t ix=0; ix<fNx; ix++) {
for (Int_t iy=0; iy<fNy; iy++) {
for (Int_t iz=0; iz<fNz; iz++){
- gMC->Rndm(random,6);
+ Rndm(random,6);
origin[0]=fXmin+ix*dx+2*(random[0]-0.5)*fOsigma[0];
origin[1]=fYmin+iy*dy+2*(random[1]-0.5)*fOsigma[1];
origin[2]=fZmin+iz*dz+2*(random[2]-0.5)*fOsigma[2];
p[0] = pmom*TMath::Cos(phi)*TMath::Sin(theta);
p[1] = pmom*TMath::Sin(phi)*TMath::Sin(theta);
p[2] = pmom*TMath::Cos(theta);
- gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,"Primary",nt);
+ gAlice->SetTrack(fTrackIt,-1,fIpart,p,origin,polar,0,kPPrimary,nt);
}
}
}
/*
$Log$
+Revision 1.11 2000/10/20 06:30:06 fca
+Use version 0 to avoid streamer generation
+
Revision 1.10 2000/10/06 14:18:44 morsch
Upper cut of prim. pT distribution set to 5. GeV
#include "AliPythia.h"
-#include "AliRun.h"
ClassImp(AliPythia)
#pragma link C++ class AliGenCocktail;
#pragma link C++ class AliGenCocktailEntry;
#pragma link C++ class AliGenExtFile;
-#pragma link C++ class AliGenExtFileCH;
#pragma link C++ class AliGenScan;
#pragma link C++ class AliGenDoubleScan;
#pragma link C++ class AliPythia;
AliDecayer.cxx AliDecayerPythia.cxx
# C++ Headers
-HDRS = $(SRCS:.cxx=.h) EVGENLinkDef.h
+HDRS = $(SRCS:.cxx=.h) $(ALICE_ROOT)/include/THijing.h \
+ $(ROOTSYS)/include/TF1.h $(ROOTSYS)/include/TChain.h \
+ EVGENLinkDef.h
# Library dictionary
PACKAGE = GEANT321
-GDIRS = gbase gcons gdraw geocad ggeom gheisha ghits ghrout ghutils giface \
+GDIRS := gbase gcons gdraw geocad ggeom gheisha ghits ghrout ghutils giface \
giopa gkine gparal gphys gscan gstrag gtrak matx55 miface miguti \
neutron peanut fiface cgpack fluka block comad erdecks erpremc
SRCS =
##### MACROS #####
-GFSRC = $(wildcard $(patsubst %,%/*.F,$(GDIRS))) gcinit.F
-GCSRC = $(wildcard $(patsubst %,%/*.c,$(GDIRS)))
-GCXXSRC = $(wildcard $(patsubst %,%/*.cxx,$(GDIRS)))
+GFSRC := $(wildcard $(patsubst %,%/*.F,$(GDIRS))) gcinit.F
+GFSRC := $(filter-out gtrak/grndm%.F,$(GFSRC))
+GCSRC := $(wildcard $(patsubst %,%/*.c,$(GDIRS)))
+GCXXSRC := $(wildcard $(patsubst %,%/*.cxx,$(GDIRS)))
GSRC = $(GFSRC) $(GCSRC)
GFOBJ = $(patsubst %.F,tgt_$(ALICE_TARGET)/%.o,$(GFSRC))
# C++ compilation flags
-CXXFLAGS = $(CXXOPTS) $(CLIBCXXOPTS) $(CLIBDEFS) -I.
+CXXFLAGS := $(CXXOPTS) $(CLIBCXXOPTS) $(CLIBDEFS) -I.
+CXXFLAGS := $(filter-out -O%,$(CXXFLAGS))
# C compilation flags
-CFLAGS = $(COPT) $(CLIBCOPT) $(CLIBDEFS) -I.
+CFLAGS := $(COPT) $(CLIBCOPT) $(CLIBDEFS) -I.
# FORTRAN compilation flags
-FFLAGS = $(FOPT) $(CLIBFOPT) $(CLIBDEFS) -I.
+FFLAGS := $(FOPT) $(CLIBFOPT) $(CLIBDEFS) -I.
+FFLAGS := $(filter-out -O%,$(FFLAGS))
##### TARGETS #####
/*
$Log$
+Revision 1.3 1999/11/03 13:17:05 fca
+Have ProdProcess return const char*
+
Revision 1.2 1999/09/29 09:24:19 fca
Introduction of the Copyright and cvs Log
/***********************************************************************/
-const char* AliGEODB::ProdProcess() const
+AliMCProcess AliGEODB::ProdProcess() const
{
cout << " ProdProcess" << endl;
return 0;
Bool_t TrackAlive() const;
Int_t NSecondaries() const;
Int_t CurrentEvent() const;
- const char* ProdProcess() const;
+ AliMCProcess ProdProcess() const;
void GetSecondary(Int_t, Int_t&, Float_t*, Float_t*);
void StopTrack();
void StopEvent();
SRCS =
##### MACROS #####
-FSRCS = $(wildcard hipyset1_35/*.F) $(wildcard hijing1_36/*.F)
+FSRCS := $(wildcard hipyset1_35/*.F) $(wildcard hijing1_36/*.F)
+FSRCS := $(filter-out %rluget_hijing.F,$(FSRCS))
+FSRCS := $(filter-out %rluset_hijing.F,$(FSRCS))
+FSRCS := $(filter-out %rlu_hijing.F,$(FSRCS))
FOBJS = $(patsubst %.F,tgt_$(ALICE_TARGET)/%.o,$(FSRCS))
RETURN
END
-C*********************************************************************
-
-C...PYR
-C...Generates random numbers uniformly distributed between
-C...0 and 1, excluding the endpoints.
-
- FUNCTION PYR(IDUMMY)
-
-C...Double precision and integer declarations.
- IMPLICIT DOUBLE PRECISION(A-H, O-Z)
- IMPLICIT INTEGER(I-N)
- INTEGER PYK,PYCHGE,PYCOMP
-C...Commonblocks.
- COMMON/PYDATR/MRPY(6),RRPY(100)
- SAVE /PYDATR/
-C...Equivalence between commonblock and local variables.
- EQUIVALENCE (MRPY1,MRPY(1)),(MRPY2,MRPY(2)),(MRPY3,MRPY(3)),
- &(MRPY4,MRPY(4)),(MRPY5,MRPY(5)),(MRPY6,MRPY(6)),
- &(RRPY98,RRPY(98)),(RRPY99,RRPY(99)),(RRPY00,RRPY(100))
-
-C...Initialize generation from given seed.
- IF(MRPY2.EQ.0) THEN
- IJ=MOD(MRPY1/30082,31329)
- KL=MOD(MRPY1,30082)
- I=MOD(IJ/177,177)+2
- J=MOD(IJ,177)+2
- K=MOD(KL/169,178)+1
- L=MOD(KL,169)
- DO 110 II=1,97
- S=0D0
- T=0.5D0
- DO 100 JJ=1,48
- M=MOD(MOD(I*J,179)*K,179)
- I=J
- J=K
- K=M
- L=MOD(53*L+1,169)
- IF(MOD(L*M,64).GE.32) S=S+T
- T=0.5D0*T
- 100 CONTINUE
- RRPY(II)=S
- 110 CONTINUE
- TWOM24=1D0
- DO 120 I24=1,24
- TWOM24=0.5D0*TWOM24
- 120 CONTINUE
- RRPY98=362436D0*TWOM24
- RRPY99=7654321D0*TWOM24
- RRPY00=16777213D0*TWOM24
- MRPY2=1
- MRPY3=0
- MRPY4=97
- MRPY5=33
- ENDIF
-
-C...Generate next random number.
- 130 RUNI=RRPY(MRPY4)-RRPY(MRPY5)
- IF(RUNI.LT.0D0) RUNI=RUNI+1D0
- RRPY(MRPY4)=RUNI
- MRPY4=MRPY4-1
- IF(MRPY4.EQ.0) MRPY4=97
- MRPY5=MRPY5-1
- IF(MRPY5.EQ.0) MRPY5=97
- RRPY98=RRPY98-RRPY99
- IF(RRPY98.LT.0D0) RRPY98=RRPY98+RRPY00
- RUNI=RUNI-RRPY98
- IF(RUNI.LT.0D0) RUNI=RUNI+1D0
- IF(RUNI.LE.0D0.OR.RUNI.GE.1D0) GOTO 130
-
-C...Update counters. Random number to output.
- MRPY3=MRPY3+1
- IF(MRPY3.EQ.1000000000) THEN
- MRPY2=MRPY2+1
- MRPY3=0
- ENDIF
- PYR=RUNI
-
- RETURN
- END
-
-C*********************************************************************
-
-C...PYRGET
-C...Dumps the state of the random number generator on a file
-C...for subsequent startup from this state onwards.
-
- SUBROUTINE PYRGET(LFN,MOVE)
-
-C...Double precision and integer declarations.
- IMPLICIT DOUBLE PRECISION(A-H, O-Z)
- IMPLICIT INTEGER(I-N)
- INTEGER PYK,PYCHGE,PYCOMP
-C...Commonblocks.
- COMMON/PYDATR/MRPY(6),RRPY(100)
- SAVE /PYDATR/
-C...Local character variable.
- CHARACTER CHERR*8
-
-C...Backspace required number of records (or as many as there are).
- IF(MOVE.LT.0) THEN
- NBCK=MIN(MRPY(6),-MOVE)
- DO 100 IBCK=1,NBCK
- BACKSPACE(LFN,ERR=110,IOSTAT=IERR)
- 100 CONTINUE
- MRPY(6)=MRPY(6)-NBCK
- ENDIF
-
-C...Unformatted write on unit LFN.
- WRITE(LFN,ERR=110,IOSTAT=IERR) (MRPY(I1),I1=1,5),
- &(RRPY(I2),I2=1,100)
- MRPY(6)=MRPY(6)+1
- RETURN
-
-C...Write error.
- 110 WRITE(CHERR,'(I8)') IERR
- CALL PYERRM(18,'(PYRGET:) error when accessing file, IOSTAT ='//
- &CHERR)
-
- RETURN
- END
-
-C*********************************************************************
-
-C...PYRSET
-C...Reads a state of the random number generator from a file
-C...for subsequent generation from this state onwards.
-
- SUBROUTINE PYRSET(LFN,MOVE)
-
-C...Double precision and integer declarations.
- IMPLICIT DOUBLE PRECISION(A-H, O-Z)
- IMPLICIT INTEGER(I-N)
- INTEGER PYK,PYCHGE,PYCOMP
-C...Commonblocks.
- COMMON/PYDATR/MRPY(6),RRPY(100)
- SAVE /PYDATR/
-C...Local character variable.
- CHARACTER CHERR*8
-
-C...Backspace required number of records (or as many as there are).
- IF(MOVE.LT.0) THEN
- NBCK=MIN(MRPY(6),-MOVE)
- DO 100 IBCK=1,NBCK
- BACKSPACE(LFN,ERR=120,IOSTAT=IERR)
- 100 CONTINUE
- MRPY(6)=MRPY(6)-NBCK
- ENDIF
-
-C...Unformatted read from unit LFN.
- NFOR=1+MAX(0,MOVE)
- DO 110 IFOR=1,NFOR
- READ(LFN,ERR=120,IOSTAT=IERR) (MRPY(I1),I1=1,5),
- & (RRPY(I2),I2=1,100)
- 110 CONTINUE
- MRPY(6)=MRPY(6)+NFOR
- RETURN
-
-C...Write error.
- 120 WRITE(CHERR,'(I8)') IERR
- CALL PYERRM(18,'(PYRSET:) error when accessing file, IOSTAT ='//
- &CHERR)
-
- RETURN
- END
-
+*C*********************************************************************
+*
+*C...PYR
+*C...Generates random numbers uniformly distributed between
+*C...0 and 1, excluding the endpoints.
+*
+* FUNCTION PYR(IDUMMY)
+*
+*C...Double precision and integer declarations.
+* IMPLICIT DOUBLE PRECISION(A-H, O-Z)
+* IMPLICIT INTEGER(I-N)
+* INTEGER PYK,PYCHGE,PYCOMP
+*C...Commonblocks.
+* COMMON/PYDATR/MRPY(6),RRPY(100)
+* SAVE /PYDATR/
+*C...Equivalence between commonblock and local variables.
+* EQUIVALENCE (MRPY1,MRPY(1)),(MRPY2,MRPY(2)),(MRPY3,MRPY(3)),
+* &(MRPY4,MRPY(4)),(MRPY5,MRPY(5)),(MRPY6,MRPY(6)),
+* &(RRPY98,RRPY(98)),(RRPY99,RRPY(99)),(RRPY00,RRPY(100))
+*
+*C...Initialize generation from given seed.
+* IF(MRPY2.EQ.0) THEN
+* IJ=MOD(MRPY1/30082,31329)
+* KL=MOD(MRPY1,30082)
+* I=MOD(IJ/177,177)+2
+* J=MOD(IJ,177)+2
+* K=MOD(KL/169,178)+1
+* L=MOD(KL,169)
+* DO 110 II=1,97
+* S=0D0
+* T=0.5D0
+* DO 100 JJ=1,48
+* M=MOD(MOD(I*J,179)*K,179)
+* I=J
+* J=K
+* K=M
+* L=MOD(53*L+1,169)
+* IF(MOD(L*M,64).GE.32) S=S+T
+* T=0.5D0*T
+* 100 CONTINUE
+* RRPY(II)=S
+* 110 CONTINUE
+* TWOM24=1D0
+* DO 120 I24=1,24
+* TWOM24=0.5D0*TWOM24
+* 120 CONTINUE
+* RRPY98=362436D0*TWOM24
+* RRPY99=7654321D0*TWOM24
+* RRPY00=16777213D0*TWOM24
+* MRPY2=1
+* MRPY3=0
+* MRPY4=97
+* MRPY5=33
+* ENDIF
+*
+*C...Generate next random number.
+* 130 RUNI=RRPY(MRPY4)-RRPY(MRPY5)
+* IF(RUNI.LT.0D0) RUNI=RUNI+1D0
+* RRPY(MRPY4)=RUNI
+* MRPY4=MRPY4-1
+* IF(MRPY4.EQ.0) MRPY4=97
+* MRPY5=MRPY5-1
+* IF(MRPY5.EQ.0) MRPY5=97
+* RRPY98=RRPY98-RRPY99
+* IF(RRPY98.LT.0D0) RRPY98=RRPY98+RRPY00
+* RUNI=RUNI-RRPY98
+* IF(RUNI.LT.0D0) RUNI=RUNI+1D0
+* IF(RUNI.LE.0D0.OR.RUNI.GE.1D0) GOTO 130
+*
+*C...Update counters. Random number to output.
+* MRPY3=MRPY3+1
+* IF(MRPY3.EQ.1000000000) THEN
+* MRPY2=MRPY2+1
+* MRPY3=0
+* ENDIF
+* PYR=RUNI
+*
+* RETURN
+* END
+*
+*C*********************************************************************
+*
+*C...PYRGET
+*C...Dumps the state of the random number generator on a file
+*C...for subsequent startup from this state onwards.
+*
+* SUBROUTINE PYRGET(LFN,MOVE)
+*
+*C...Double precision and integer declarations.
+* IMPLICIT DOUBLE PRECISION(A-H, O-Z)
+* IMPLICIT INTEGER(I-N)
+* INTEGER PYK,PYCHGE,PYCOMP
+*C...Commonblocks.
+* COMMON/PYDATR/MRPY(6),RRPY(100)
+* SAVE /PYDATR/
+*C...Local character variable.
+* CHARACTER CHERR*8
+*
+*C...Backspace required number of records (or as many as there are).
+* IF(MOVE.LT.0) THEN
+* NBCK=MIN(MRPY(6),-MOVE)
+* DO 100 IBCK=1,NBCK
+* BACKSPACE(LFN,ERR=110,IOSTAT=IERR)
+* 100 CONTINUE
+* MRPY(6)=MRPY(6)-NBCK
+* ENDIF
+*
+*C...Unformatted write on unit LFN.
+* WRITE(LFN,ERR=110,IOSTAT=IERR) (MRPY(I1),I1=1,5),
+* &(RRPY(I2),I2=1,100)
+* MRPY(6)=MRPY(6)+1
+* RETURN
+*
+*C...Write error.
+* 110 WRITE(CHERR,'(I8)') IERR
+* CALL PYERRM(18,'(PYRGET:) error when accessing file, IOSTAT ='//
+* &CHERR)
+*
+* RETURN
+* END
+*
+*C*********************************************************************
+*
+*C...PYRSET
+*C...Reads a state of the random number generator from a file
+*C...for subsequent generation from this state onwards.
+*
+* SUBROUTINE PYRSET(LFN,MOVE)
+*
+*C...Double precision and integer declarations.
+* IMPLICIT DOUBLE PRECISION(A-H, O-Z)
+* IMPLICIT INTEGER(I-N)
+* INTEGER PYK,PYCHGE,PYCOMP
+*C...Commonblocks.
+* COMMON/PYDATR/MRPY(6),RRPY(100)
+* SAVE /PYDATR/
+*C...Local character variable.
+* CHARACTER CHERR*8
+*
+*C...Backspace required number of records (or as many as there are).
+* IF(MOVE.LT.0) THEN
+* NBCK=MIN(MRPY(6),-MOVE)
+* DO 100 IBCK=1,NBCK
+* BACKSPACE(LFN,ERR=120,IOSTAT=IERR)
+* 100 CONTINUE
+* MRPY(6)=MRPY(6)-NBCK
+* ENDIF
+*
+*C...Unformatted read from unit LFN.
+* NFOR=1+MAX(0,MOVE)
+* DO 110 IFOR=1,NFOR
+* READ(LFN,ERR=120,IOSTAT=IERR) (MRPY(I1),I1=1,5),
+* & (RRPY(I2),I2=1,100)
+* 110 CONTINUE
+* MRPY(6)=MRPY(6)+NFOR
+* RETURN
+*
+*C...Write error.
+* 120 WRITE(CHERR,'(I8)') IERR
+* CALL PYERRM(18,'(PYRSET:) error when accessing file, IOSTAT ='//
+* &CHERR)
+*
+* RETURN
+* END
+*
C*********************************************************************
C...PYROBO
/*
$Log$
+Revision 1.7 2000/10/02 21:28:14 fca
+Removal of useless dependecies via forward declarations
+
Revision 1.6 2000/07/12 08:56:25 fca
Coding convention correction and warning removal
//End_Html
// //
///////////////////////////////////////////////////////////////////////////////
-#include <TClass.h>
-#include <TNode.h>
-#include <TRandom.h>
+
#include <TTree.h>
#include "TBrowser.h"
/*
$Log$
+Revision 1.10 2000/10/02 21:28:14 fca
+Removal of useless dependecies via forward declarations
+
Revision 1.9 2000/07/13 16:19:09 fca
Mainly coding conventions + some small bug fixes
// //
//////////////////////////////////////////////////////////////////////////
-#include <TROOT.h>
#include <TTree.h>
#include <TButton.h>
#include <TCanvas.h>
#include <TView.h>
-#include <TText.h>
-#include <TPolyMarker3D.h>
#include <TPaveLabel.h>
#include <TPaveText.h>
-#include <TList.h>
#include <TDiamond.h>
-#include <TNode.h>
#include <TArc.h>
-#include <TTUBE.h>
#include <TSlider.h>
#include <TSliderBox.h>
#include <TGaxis.h>
#include <TVirtualX.h>
#include <TMath.h>
-#include <X3DBuffer.h>
#include "AliRun.h"
#include "AliDetector.h"
#include "AliDisplay.h"
#include "AliPoints.h"
#include "TParticle.h"
-#include "AliGeometry.h"
#include "TGeometry.h"
static const Float_t kptcutmax = 2;
#include "TLorentzVector.h"
#include "TArrayF.h"
#include "TGenerator.h"
+#include "AliRndm.h"
typedef enum { kNoSmear, kPerEvent, kPerTrack } VertexSmear_t;
-class AliGenerator : public TNamed
+class AliGenerator : public TNamed, public AliRndm
{
public:
/*
$Log$
+Revision 1.19 2000/10/26 14:13:05 morsch
+- Change from coordinates theta, phi to general coordinates Coor1 and Coor2.
+- Lego generator instance can be passed in constructor.
+
Revision 1.18 2000/10/02 21:28:14 fca
Removal of useless dependecies via forward declarations
#include "AliLego.h"
#include "AliLegoGenerator.h"
-#include "AliRun.h"
#include "AliConst.h"
#include "AliMC.h"
#include "TH2.h"
/*
$Log$
+Revision 1.3 2000/10/26 14:15:54 morsch
+- Base class now
+- Change from theta, phi to general coordinates Coor1, Coor2
+- PropagateCylinder: bug in calculation of distance to limiting radius corrected.
+
Revision 1.2 2000/07/13 16:19:09 fca
Mainly coding conventions + some small bug fixes
Float_t polar[3]={0.,0.,0.};
Int_t ntr;
- gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, "LEGO ray", ntr);
+ gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, kPPrimary, ntr);
}
/*
$Log$
+Revision 1.1 2000/10/26 14:18:05 morsch
+Add new AliLegoGenerator classes:
+AliLegoGeneratorXYZ: carthesian binning
+AliLegoGeneratorEta: eta-phi binning
+
*/
#include "AliLegoGeneratorEta.h"
Float_t polar[3]={0.,0.,0.};
Int_t ntr;
- gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, "LEGO ray", ntr);
+ gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, kPPrimary, ntr);
}
{
public:
+ virtual ~AliLegoGeneratorEta() {}
virtual void Generate();
ClassDef(AliLegoGeneratorEta,1) //Lego GeneratorEta
};
/*
$Log$
+Revision 1.2 2000/10/27 11:40:01 morsch
+Error in printouts corrected
+
Revision 1.1 2000/10/27 08:13:02 morsch
Lego generator for phi-z binning.
Float_t polar[3]={0.,0.,0.};
Int_t ntr;
- gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, "LEGO ray", ntr);
+ gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, kPPrimary, ntr);
}
/*
$Log$
+Revision 1.1 2000/10/26 14:18:05 morsch
+Add new AliLegoGenerator classes:
+AliLegoGeneratorXYZ: carthesian binning
+AliLegoGeneratorEta: eta-phi binning
+
*/
#include "AliLegoGeneratorXYZ.h"
Float_t polar[3]={0.,0.,0.};
Int_t ntr;
- gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, "LEGO XYZ ray", ntr);
+ gAlice->SetTrack(1, 0, kMpart, pmom, orig, polar, 0, kPPrimary, ntr);
}
/*
$Log$
+Revision 1.6 2000/07/13 16:19:09 fca
+Mainly coding conventions + some small bug fixes
+
Revision 1.5 2000/07/12 08:56:25 fca
Coding convention correction and warning removal
gMC=this;
}
}
+
+
///////////////////////////////////////////////////////////////////////////////
#include <TNamed.h>
-class TLorentzVector;
+#include <AliRndm.h>
+#include "AliMCProcess.h"
+class TLorentzVector;
class AliMC;
class AliDecayer;
-
R__EXTERN AliMC *gMC;
-class AliMC : public TNamed
+class AliMC : public TNamed, public AliRndm
{
public:
AliMC(const char *name, const char *title);
- AliMC() {}
- virtual ~AliMC() {fgMC=gMC=0;}
+ AliMC() {fRandom=0;}
+ virtual ~AliMC() {fgMC=gMC=0;fRandom=0;}
// static access method
static AliMC* GetMC() { return fgMC; }
virtual Int_t NSecondaries() const=0;
virtual void GetSecondary(Int_t isec, Int_t& particleId,
TLorentzVector& position, TLorentzVector& momentum) =0;
- virtual const char* ProdProcess() const =0;
+ virtual AliMCProcess ProdProcess() const =0;
//
// other (then geometry/step/run management) methods
// ----------------------------------------------
//
- virtual void Rndm(Float_t* array, const Int_t size) const=0;
//
// Geant3 specific methods
--- /dev/null
+#ifndef ALIMCPROCESS_H
+#define ALIMCPROCESS_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/* $Id $ */
+
+//
+// List of MonteCarlo processes
+//
+
+static const Int_t kMaxMCProcess = 33;
+
+enum AliMCProcess
+{
+ kPPrimary, // Primary interaction
+
+ kPMultipleScattering, // multiple scattering
+ kPEnergyLoss, // continuous energy loss
+ kPMagneticFieldL, // bending in mag. field
+ kPDecay, // particle decay
+ kPPair, // photon pair production or
+ // muon direct pair production
+ kPCompton, // Compton scattering
+ kPPhotoelectric, // photoelectric effect
+ kPBrem, // bremsstrahlung
+ kPDeltaRay, // delta-ray production
+ kPAnnihilation, // positron annihilation
+
+ kPHadronic, // hadronic interaction
+ kPEvaporation, // nuclear evaporation
+ kPNuclearFission, // nuclear fission
+ kPNuclearAbsorption, // nuclear absorption
+ kPPbarAnnihilation, // antiproton annihilation
+ kPNCapture, // neutron capture
+ kPHElastic, // hadronic elastic incoherent
+ // scattering
+ kPHInhelastic, // hadronic inelastic scattering
+
+ kPMuonNuclear, // muon nuclear interaction
+
+ kPTOFlimit, // exceeded time of flight cut
+ kPPhotoFission, // nuclear photofission
+
+ kPRayleigh, // Rayleigh scattering
+
+ kPNull, // no mechanism is active, usually at the entrance
+ // of a new volume
+ kPStop, // particle has fallen below energy threshold
+ // and tracking stops
+
+ kPLightAbsorption, // Cerenkov photon absorption
+ kPLightScattering, // Cerenkov photon
+ // reflection/refraction
+ kStepMax, // step limited by STEMAX
+
+ kPCerenkov, // Cerenkov photon generation
+ kPFeedBackPhoton, //Feed back photon in RICH -- ALICE specific
+ kPLightReflection, // Cerenkov photon reflection
+ kPLightRefraction, // Cerenkov photon refraction
+ kPSynchrotron, // synchrotron radiation
+ // generation
+ kPNoProcess // unknown process
+};
+
+static const char * const AliMCProcessName[kMaxMCProcess] = {
+ "Primary particle emission",
+ "Multiple scattering",
+ "Energy loss",
+ "Bending in magnetic field",
+ "Decay",
+ "Lepton pair production",
+ "Compton scattering",
+ "Photoelectric effect",
+ "Bremstrahlung",
+ "Delta ray",
+ "Positron annihilation",
+ "Hadronic interaction",
+ "Nuclear evaporation",
+ "Nuclear fission",
+ "Nuclear absorbtion",
+ "Antiproton annihilation",
+ "Neutron capture",
+ "Hadronic elastic",
+ "Hadronic inelastic",
+ "Muon nuclear interaction",
+ "Time of flight limit",
+ "Nuclear photofission",
+ "Rayleigh effect",
+ "No active process",
+ "Energy threshold",
+ "Light absorption",
+ "Light scattering",
+ "Maximum allowed step",
+ "Cerenkov production",
+ "Cerenkov feed back photon",
+ "Cerenkov photon reflection",
+ "Cerenkov photon refraction",
+ "Synchrotron radiation"
+ "Unknown process"
+};
+
+#endif //ALIMCPROCESS_H
--- /dev/null
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+/*
+$Log$
+*/
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#include <strings.h>
+
+#include "TObjArray.h"
+#include "TH1.h"
+#include "TList.h"
+#include "TROOT.h"
+#include "TBrowser.h"
+#include "TMath.h"
+#include "TLorentzVector.h"
+#include "TDatabasePDG.h"
+#include "TMath.h"
+
+#include "AliMCQA.h"
+#include "AliRun.h"
+#include "AliModule.h"
+#include "AliMC.h"
+
+ClassImp(AliMCQA)
+
+
+//_____________________________________________________________________________
+AliMCQA::AliMCQA(Int_t ndets): fNdets(ndets)
+{
+ //
+ // Constructor, creates the list of lists of histograms
+ //
+ TList *list;
+
+ fQAList = new TObjArray(ndets);
+ TObjArray &hist = *fQAList;
+
+ char title[100];
+ //
+ TObjArray &mods = *(gAlice->Modules());
+ AliModule *mod;
+ TList *dir = gDirectory->GetList();
+ for (Int_t i=0; i<ndets; i++) {
+ hist[i] = list = new TList();
+ mod = (AliModule *) mods[i];
+
+ // Energy Spectrum
+ sprintf(title,"Spectrum entering: %s ",mod->GetName());
+ list->Add(new TH1F("hEnIn",strcat(title,mod->GetTitle()),100,-4,2));
+ dir->Remove(dir->FindObject("hEnIn"));
+
+ sprintf(title,"Spectrum exiting: %s ",mod->GetName());
+ list->Add(new TH1F("hEnOut",strcat(title,mod->GetTitle()),100,-4,2));
+ dir->Remove(dir->FindObject("hEnOut"));
+
+ // Z position
+ sprintf(title,"Z coordinate entering: %s ",mod->GetName());
+ list->Add(new TH1F("hZIn",strcat(title,mod->GetTitle()),100,
+ mod->ZMin(),mod->ZMax()));
+ dir->Remove(dir->FindObject("hZIn"));
+
+ sprintf(title,"Z coordinate exiting: %s ",mod->GetName());
+ list->Add(new TH1F("hZOut",strcat(title,mod->GetTitle()),100,
+ mod->ZMin(),mod->ZMax()));
+ dir->Remove(dir->FindObject("hZOut"));
+ }
+ //
+ gROOT->GetListOfBrowsables()->Add(this,"AliMCQA");
+
+ fDetDone = new Int_t[fNdets];
+}
+
+//_____________________________________________________________________________
+void AliMCQA::Browse(TBrowser *b)
+{
+ //
+ // Called when the item "Run" is clicked on the left pane
+ // of the Root browser.
+ // It displays the Root Trees and all detectors.
+ //
+
+ TIter next(fQAList);
+ TList *histos;
+ TH1 *hist;
+ while((histos = (TList*)next())) {
+ TIter next1(histos);
+ while((hist = (TH1*)next1())) {
+ b->Add(hist,hist->GetTitle());
+ }
+ }
+}
+
+//_____________________________________________________________________________
+void AliMCQA::PreTrack()
+{
+ fOldId=-1;
+ for(Int_t i=0; i<fNdets; i++) fDetDone[i]=0;
+}
+
+//_____________________________________________________________________________
+void AliMCQA::StepManager(Int_t id)
+{
+ if(fOldId != id) {
+ TH1F *hist;
+ TLorentzVector p, x;
+ gMC->TrackMomentum(p);
+ gMC->TrackPosition(x);
+ Double_t energy = TMath::Max(
+ p[3]-gAlice->PDGDB()->GetParticle(gMC->TrackPid())->Mass(),1.e-12);
+ if(fOldId > -1) {
+ if(!fDetDone[fOldId] && !gMC->IsNewTrack()) {
+ TList *histold = (TList*) (*fQAList)[fOldId];
+ hist = (TH1F*) histold->FindObject("hEnOut");
+ hist->Fill(TMath::Log10(energy));
+ hist = (TH1F*) histold->FindObject("hZOut");
+ hist->Fill(x[2]);
+ fDetDone[fOldId]=1;
+ }
+ }
+ if(!fDetDone[id] && !gMC->IsNewTrack()) {
+ TList *histnew = (TList*) (*fQAList)[id];
+ hist = (TH1F*) histnew->FindObject("hEnIn");
+ hist->Fill(TMath::Log10(energy));
+ hist = (TH1F*) histnew->FindObject("hZIn");
+ hist->Fill(x[2]);
+ }
+ fOldId=id;
+ }
+}
--- /dev/null
+#ifndef ALIMCQA_H
+#define ALIMCQA_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/* $Id $ */
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Quality assurance services for MC //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#include "TObject.h"
+class TObjArray;
+class TBrowser;
+
+class AliMCQA : public TObject
+{
+public:
+ AliMCQA() {}
+ AliMCQA(Int_t ndets);
+ virtual ~AliMCQA() {delete fQAList;fQAList=0;}
+ Bool_t IsFolder() const {return kTRUE;}
+ virtual void Browse(TBrowser *b);
+ virtual void PreTrack();
+ virtual TObjArray *GetQAList() const {return fQAList;}
+
+ // QA step manager
+ virtual void StepManager(Int_t id);
+
+protected:
+ Int_t fNdets; // Number of detectors
+ TObjArray *fQAList; // QA histograms
+ Int_t fOldId; //! ID of the current module
+ Int_t *fDetDone; //! Detector done flag
+
+private:
+ AliMCQA(const AliMCQA &) {}
+ AliMCQA & operator=(const AliMCQA &) {return (*this);}
+
+ ClassDef(AliMCQA,1) //Quality Assurance class for the MC
+};
+
+#endif
+
/*
$Log$
+Revision 1.3 2000/11/10 18:09:55 fca
+New field map for the ZDC
+
Revision 1.2 2000/07/12 08:56:25 fca
Coding convention correction and warning removal
Coding convention corrections + few minor bug fixes
*/
+#include "TVector.h"
#include "AliMagFCM.h"
#include "TSystem.h"
/* $Id$ */
#include "AliMagF.h"
-#include "TVector.h"
+class TVector;
class AliMagFCM : public AliMagF
{
/*
$Log$
+Revision 1.12 2000/10/02 21:28:14 fca
+Removal of useless dependecies via forward declarations
+
Revision 1.11 2000/07/12 08:56:25 fca
Coding convention correction and warning removal
//End_Html
// //
///////////////////////////////////////////////////////////////////////////////
-#include <TClass.h>
#include <TNode.h>
-#include <TRandom.h>
#include "TSystem.h"
#include "AliModule.h"
#include "AliRun.h"
-#include "AliHit.h"
-#include "AliPoints.h"
#include "AliMagF.h"
#include "AliMC.h"
// Prepare to find the tracking media range
fLoMedium = 65536;
fHiMedium = 0;
+ SetDebug(gAlice->GetDebug());
}
//_____________________________________________________________________________
return (*this);
}
+//_____________________________________________________________________________
+Float_t AliModule::ZMin() const
+{
+ return -500;
+}
+
+//_____________________________________________________________________________
+Float_t AliModule::ZMax() const
+{
+ return 500;
+}
+
//_____________________________________________________________________________
void AliModule::SetEuclidFile(char* material, char* geometry)
{
#include "TNamed.h"
#include "TAttLine.h"
#include "TAttMarker.h"
+#include "AliRndm.h"
//#include <TSystem.h>
class TClonesArray;
class TBrowser;
class TArrayI;
-class AliModule : public TNamed , public TAttLine, public TAttMarker {
+class AliModule : public TNamed , public TAttLine, public TAttMarker,
+ public AliRndm {
public:
// Creators - distructors
virtual Bool_t IsFolder() const {return kTRUE;}
virtual Int_t& LoMedium() {return fLoMedium;}
virtual Int_t& HiMedium() {return fHiMedium;}
+ virtual Int_t GetDebug() const {return fDebug;}
+ virtual void SetDebug(Int_t deb=0) {fDebug=deb;}
// Module composition
virtual void AliMaterial(Int_t imat, const char* name, Float_t a,
virtual Float_t GetTimeGate() const {return 1.e10;}
virtual void StepManager() {}
virtual void SetBufferSize(Int_t) {}
+ virtual Float_t ZMin() const;
+ virtual Float_t ZMax() const;
virtual void SetEuclidFile(char *material,char *geometry=0);
virtual void ReadEuclid(const char *filnam, char *topvol);
virtual void ReadEuclidMedia(const char *filnam);
Bool_t fActive; //Detector activity flag
TList *fHistograms; //List of histograms
TList *fNodes; //List of geometry nodes
+ Int_t fDebug; //Debug flag
ClassDef(AliModule,1) //Base class for ALICE Modules
};
/*
$Log$
+Revision 1.6 2000/10/02 21:28:14 fca
+Removal of useless dependecies via forward declarations
+
Revision 1.5 2000/07/11 18:24:59 fca
Coding convention corrections + few minor bug fixes
//*-- Author : Yves Schutz SUBATECH
//////////////////////////////////////////////////////////////////////////////
-// --- ROOT system ---
-#include "TObjArray.h"
+// --- ROOT system ---
// --- Standard library ---
// --- Standard library ---
-#include "assert.h"
-#include "iostream.h"
// --- ROOT system ---
--- /dev/null
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+/*
+$Log$
+*/
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#include "TSystem.h"
+#include "TFile.h"
+
+#include "AliRndm.h"
+#include "TRandom3.h"
+
+ClassImp(AliRndm)
+
+
+//_____________________________________________________________________________
+void AliRndm::Rndm(Float_t* array, const Int_t size) const
+{
+ //
+ // Return an array of n random numbers uniformly distributed
+ // between 0 and 1 not included
+ //
+ for(Int_t i=0; i<size; i++)
+#ifdef CKNONE
+ array[i]=fRandom->Rndm();
+#else
+ do array[i]=fRandom->Rndm(); while(0>=array[i] || array[i]>=1);
+#endif
+}
+
+//_____________________________________________________________________________
+void AliRndm::SetRandom(TRandom *ran)
+{
+ if(ran) fRandom=ran;
+ else fRandom=sRandom=gRandom;
+}
+
+//_____________________________________________________________________________
+void AliRndm::ReadRandom(const char *filename)
+{
+ char *fntmp = gSystem->ExpandPathName(filename);
+ TFile *file = new TFile(fntmp,"r");
+ delete [] fntmp;
+ if(!file) {
+ printf("AliRndm:: Could not open file %s\n",filename);
+ } else {
+ if(!fRandom) fRandom = new TRandom();
+ fRandom->Read("Random");
+ file->Close();
+ delete file;
+ }
+}
+
+//_____________________________________________________________________________
+void AliRndm::WriteRandom(const char *filename) const
+{
+ char *fntmp = gSystem->ExpandPathName(filename);
+ TFile *file = new TFile(fntmp,"new");
+ delete [] fntmp;
+ if(!file) {
+ printf("AliRndm:: Could not open file %s\n",filename);
+ } else {
+ fRandom->Write();
+ file->Close();
+ delete file;
+ }
+}
--- /dev/null
+#ifndef ALIRNDM_H
+#define ALIRNDM_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/* $Id$ */
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Random Number Interface //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#include <TRandom.h>
+
+static TRandom *sRandom;
+
+class AliRndm
+{
+public:
+ AliRndm() {SetRandom();}
+ virtual ~AliRndm() {fRandom=sRandom=0;}
+
+ // Random number generator bit
+ virtual void SetRandom(TRandom *ran=0);
+ virtual TRandom* GetRandom() const {return fRandom;}
+ virtual void Rndm(Float_t* array, const Int_t size) const;
+#ifdef CKNONE
+ virtual Float_t Rndm() const {return fRandom->Rndm();}
+#else
+ virtual Float_t Rndm() const {
+ Float_t r;
+ do r=fRandom->Rndm(); while(0>=r || r>=1); return r;}
+#endif
+ virtual void WriteRandom(const char *filename) const;
+ virtual void ReadRandom(const char *filename);
+
+ protected:
+ TRandom *fRandom; // Pointer to the random number generator
+
+ private:
+ AliRndm(const AliRndm &) {}
+ AliRndm & operator=(const AliRndm &) {return (*this);}
+
+ ClassDef(AliRndm,1) //Random Number generator wrapper
+};
+
+#endif
+
/*
$Log$
+Revision 1.44 2000/10/26 13:58:59 morsch
+Add possibility to choose the lego generator (of type AliGeneratorLego or derived) when running
+RunLego(). Default is the base class AliGeneratorLego.
+
Revision 1.43 2000/10/09 09:43:17 fca
Special remapping of hits for TPC and TRD. End-of-primary action introduced
#include "AliMagFCM.h"
#include "AliMagFDM.h"
#include "AliHit.h"
+#include "TRandom3.h"
+#include "AliMCQA.h"
+#include "AliGenerator.h"
+#include "AliLegoGenerator.h"
#include "AliDetector.h"
fPDGDB = 0; //Particle factory object!
fHitLists = 0;
fConfigFunction = "\0";
+ fRandom = 0;
+ fMCQA = 0;
+ fTransParName = "\0";
}
//_____________________________________________________________________________
fLego = 0;
fField = 0;
fConfigFunction = "Config();";
+
+ // Set random number generator
+ gRandom = fRandom = new TRandom3();
gROOT->GetListOfBrowsables()->Add(this,name);
//
//
// Create HitLists list
fHitLists = new TList();
+ //
+ SetTransPar();
}
while((detector = (AliModule*)next())) {
b->Add(detector,detector->GetName());
}
+ b->Add(fMCQA,"AliMCQA");
}
//_____________________________________________________________________________
if (fTreeR) fTreeR->Fill();
}
+//_____________________________________________________________________________
+void AliRun::PreTrack()
+{
+ TObjArray &dets = *fModules;
+ AliModule *module;
+
+ for(Int_t i=0; i<=fNdets; i++)
+ if((module = (AliModule*)dets[i]))
+ module->PreTrack();
+
+ fMCQA->PreTrack();
+}
+
+//_____________________________________________________________________________
+void AliRun::PostTrack()
+{
+ TObjArray &dets = *fModules;
+ AliModule *module;
+
+ for(Int_t i=0; i<=fNdets; i++)
+ if((module = (AliModule*)dets[i]))
+ module->PostTrack();
+}
+
//_____________________________________________________________________________
void AliRun::FinishPrimary()
{
//=================Create Materials and geometry
gMC->Init();
+ // Added also after in case of interactive initialisation of modules
+ fNdets = fModules->GetLast()+1;
+
TIter next(fModules);
AliModule *detector;
while((detector = (AliModule*)next())) {
fInitDone = kTRUE;
+ fMCQA = new AliMCQA(fNdets);
+
//
// Save stuff at the beginning of the file to avoid file corruption
Write();
}
//____________________________________________________________________________
-void AliRun::SetTransPar(char* filename)
+void AliRun::SetTransPar(char *filename)
+{
+ fTransParName = filename;
+}
+
+//____________________________________________________________________________
+void AliRun::ReadTransPar()
{
//
// Read filename to set the transport parameters
FILE *lun;
//
// See whether the file is there
- filtmp=gSystem->ExpandPathName(filename);
+ filtmp=gSystem->ExpandPathName(fTransParName.Data());
lun=fopen(filtmp,"r");
delete [] filtmp;
if(!lun) {
- Warning("SetTransPar","File %s does not exist!\n",filename);
+ Warning("ReadTransPar","File %s does not exist!\n",fTransParName.Data());
return;
}
//
if(!iret) continue;
if(iret<0) {
//reading error
- Warning("SetTransPar","Error reading file %s\n",filename);
+ Warning("ReadTransPar","Error reading file %s\n",fTransParName.Data());
continue;
}
// Check that the module exist
if(0<=itmed && itmed < 100) {
ktmed=idtmed[itmed];
if(!ktmed) {
- Warning("SetTransPar","Invalid tracking medium code %d for %s\n",itmed,mod->GetName());
+ Warning("ReadTransPar","Invalid tracking medium code %d for %s\n",itmed,mod->GetName());
continue;
}
// Set energy thresholds
}
}
} else {
- Warning("SetTransPar","Invalid medium code %d *\n",itmed);
+ Warning("ReadTransPar","Invalid medium code %d *\n",itmed);
continue;
}
} else {
- Warning("SetTransPar","Module %s not present\n",detName);
+ Warning("ReadTransPar","Module %s not present\n",detName);
continue;
}
}
//_____________________________________________________________________________
void AliRun::SetTrack(Int_t done, Int_t parent, Int_t pdg, Float_t *pmom,
Float_t *vpos, Float_t *polar, Float_t tof,
- const char* /* mecha */, Int_t &ntr, Float_t weight)
+ AliMCProcess mech, Int_t &ntr, Float_t weight)
{
//
// Load a track on the stack
particle=new(particles[fNtrack]) TParticle(pdg,kS,parent,-1,kfirstdaughter,
klastdaughter,pmom[0],pmom[1],pmom[2],
e,vpos[0],vpos[1],vpos[2],tof);
- // polar[0],polar[1],polar[2],tof,
- // mecha,weight);
((TParticle*)particles[fNtrack])->SetPolarisation(TVector3(polar[0],polar[1],polar[2]));
((TParticle*)particles[fNtrack])->SetWeight(weight);
+ particle->SetUniqueID(mech);
if(!done) particle->SetBit(kDoneBit);
//Declare that the daughter information is valid
((TParticle*)particles[fNtrack])->SetBit(kDaughtersBit);
//Call the appropriate stepping routine;
AliModule *det = (AliModule*)fModules->At(id);
- if(det) det->StepManager();
+ if(det) {
+ fMCQA->StepManager(id);
+ det->StepManager();
+ }
}
}
} else {
fConfigFunction="Config();";
}
+ if(R__v>3) {
+ R__b >> fRandom;
+ gRandom = fRandom;
+ R__b >> fMCQA;
+ } else {
+ fRandom = gRandom = new TRandom3();
+ fMCQA = new AliMCQA();
+ }
} else {
R__b.WriteVersion(AliRun::IsA());
TNamed::Streamer(R__b);
R__b << fGenerator;
R__b << fPDGDB; //Particle factory object!
fConfigFunction.Streamer(R__b);
+ R__b << fRandom;
+ R__b << fMCQA;
}
}
class TTree;
class TGeometry;
class TDatabasePDG;
+class TRandom;
+class AliMCQA;
#include <TArrayI.h>
+#include "TClonesArray.h"
#include <TArrayF.h>
#include <TStopwatch.h>
+#include "TNamed.h"
class AliDetector;
class AliModule;
class AliDisplay;
class AliLegoGenerator;
#include "AliHeader.h"
-#include "AliGenerator.h"
-#include "AliLegoGenerator.h"
+class AliGenerator;
+class AliLegoGenerator;
+#include "AliMCProcess.h"
enum {kKeepBit=1, kDaughtersBit=2, kDoneBit=4};
virtual void DumpPStack () const;
virtual AliMagF *Field() const {return fField;}
virtual void FillTree();
+ virtual void PreTrack();
+ virtual void PostTrack();
virtual void FinishPrimary();
virtual void FinishEvent();
virtual void FinishRun();
Int_t GetDebug() const {return fDebug;}
AliModule *GetModule(const char *name) const;
AliDetector *GetDetector(const char *name) const;
+ AliMCQA *GetMCQA() const {return fMCQA;}
Int_t GetModuleID(const char *name) const;
virtual Int_t GetEvent(Int_t event);
virtual void SetEvent(Int_t event) {fEvent=event;}
virtual void ResetHits();
virtual void ResetPoints();
virtual void SetTransPar(char *filename="$(ALICE_ROOT)/data/galice.cuts");
+ virtual void ReadTransPar();
virtual void ResetStack() {fCurrent=-1;fHgwmk=0;fNtrack=0;fParticles->Clear();}
virtual void RunMC(Int_t nevent=1, const char *setup="Config.C");
virtual void Run(Int_t nevent=1, const char *setup="Config.C")
virtual void SetField(Int_t type=2, Int_t version=1, Float_t scale=1, Float_t maxField=10, char*filename="$(ALICE_ROOT)/data/field01.dat");
virtual void SetTrack(Int_t done, Int_t parent, Int_t pdg,
Float_t *pmom, Float_t *vpos, Float_t *polar,
- Float_t tof, const char *mecha, Int_t &ntr,
+ Float_t tof, AliMCProcess mech, Int_t &ntr,
Float_t weight=1);
virtual void KeepTrack(const Int_t itra);
virtual void MediaTable();
TArrayF fSummEnergy; //Energy per event in each volume
TArrayF fSum2Energy; //Energy squared per event in each volume
TString fConfigFunction; //Configuration file to be executed
+ TRandom *fRandom; // Pointer to the random number generator
+ AliMCQA *fMCQA; //Pointer to MC Quality assurance class
+ TString fTransParName; // Name of the transport parameters file
private:
AliRun(const AliRun &) {}
AliRun& operator = (const AliRun &) {return *this;}
- ClassDef(AliRun,3) //Supervisor class for all Alice detectors
+ ClassDef(AliRun,4) //Supervisor class for all Alice detectors
};
R__EXTERN AliRun *gAlice;
AliGeometry.cxx AliRecPoint.cxx AliSegmentation.cxx \
AliHitMap.cxx AliMagFC.cxx AliMagFCM.cxx \
AliMagFDM.cxx AliLegoGenerator.cxx AliLegoGeneratorXYZ.cxx\
- AliLegoGeneratorEta.cxx \
- AliKalmanTrack.cxx AliCluster.cxx
+ AliLegoGeneratorEta.cxx AliRndm.cxx \
+ AliKalmanTrack.cxx AliCluster.cxx \
+ AliMCQA.cxx
# C++ Headers
-HDRS = $(SRCS:.cxx=.h) AliPDG.h $(ROOTSYS)/include/TH2.h STEERLinkDef.h
+HDRS = $(SRCS:.cxx=.h) AliPDG.h $(ROOTSYS)/include/TH2.h \
+ $(ROOTSYS)/include/TRandom.h STEERLinkDef.h
# Library dictionary
depend: $(SRCS)
-HEADERS = $(SRCS:.cxx=.h) AliPDG.h AliConst.h AliCallf77.h
+HEADERS = $(SRCS:.cxx=.h) AliPDG.h AliConst.h AliCallf77.h AliMCProcess.h
TOCLEAN = $(OBJS) *Cint.cxx *Cint.h
#pragma link C++ class AliHitMap;
#pragma link C++ class AliCluster;
#pragma link C++ class AliKalmanTrack-;
+#pragma link C++ class AliRndm;
+#pragma link C++ class AliMCQA;
#endif
/*
$Log$
+Revision 1.12 2000/11/06 11:35:46 morsch
+Call BuildGeometry() after Init() to be able to share common detector parameters.
+
Revision 1.11 2000/10/04 16:30:22 fca
Add include for exit()
#include "AliCallf77.h"
#include "AliModule.h"
#include "AliMagF.h"
+#include "AliGenerator.h"
#ifndef WIN32
# define rxgtrak rxgtrak_
-# define rxstrak rxstrak_
-# define rxkeep rxkeep_
# define rxouth rxouth_
#else
# define rxgtrak RXGTRAK
-# define rxstrak RXSTRAK
-# define rxkeep RXKEEP
# define rxouth RXOUTH
#endif
mtrack++;
}
-//_____________________________________________________________________________
-extern "C" void type_of_call
-#ifndef WIN32
-rxstrak (Int_t &keep, Int_t &parent, Int_t &ipart, Float_t *pmom,
- Float_t *vpos, Float_t &tof, const char* cmech, Int_t &ntr, const int cmlen)
-#else
-rxstrak (Int_t &keep, Int_t &parent, Int_t &ipart, Float_t *pmom,
- Float_t *vpos, Float_t &tof, const char* cmech, const int cmlen,
- Int_t &ntr)
-#endif
-{
- //
- // Fetches next track from the ROOT stack for transport. Called by GUKINE
- // and GUSTEP.
- //
- // Status of the track. If keep=0 the track is put
- // keep on the ROOT stack but it is not fetched for
- // transport.
- // parent Parent track. If parent=0 the track is a primary.
- // In GUSTEP the routine is normally called to store
- // secondaries generated by the current track whose
- // ROOT stack number is MTRACK (common SCKINE.
- // ipart Particle code in the GEANT conventions.
- // pmom[3] Particle momentum in GeV/c
- // vpos[3] Particle position
- // tof Particle time of flight in seconds
- //
- // cmech (CHARACTER*10) Particle origin. This field is user
- // defined and it is not used inside the GALICE code.
- // ntr Number assigned to the particle in the ROOT stack.
- //
- char mecha[11];
- Float_t polar[3]={0.,0.,0.};
- for(int i=0; i<10 && i<cmlen; i++) mecha[i]=cmech[i];
- mecha[10]=0;
- Int_t pdg=gMC->PDGFromId(ipart);
- gAlice->SetTrack(keep, parent-1, pdg, pmom, vpos, polar, tof, mecha, ntr);
- ntr++;
-}
-
-//_____________________________________________________________________________
-extern "C" void type_of_call rxkeep(const Int_t &n)
-{
- if( NULL==gAlice ) exit(1);
-
- if( n<=0 || n>gAlice->Particles()->GetEntries() )
- {
- printf(" Bad index n=%d must be 0<n<=%d\n",
- n,gAlice->Particles()->GetEntries());
- exit(1);
- }
-
- ((TParticle*)(gAlice->Particles()->UncheckedAt(n-1)))->SetBit(kKeepBit);
-}
-
//_____________________________________________________________________________
extern "C" void type_of_call rxouth ()
{
gAlice->FinishPrimary();
}
-
#ifndef WIN32
# define gudigi gudigi_
# define guhadr guhadr_
//
// ------------------------------------------------------------------
//
- Int_t ndet = gAlice->Modules()->GetLast();
- TObjArray &dets = *gAlice->Modules();
- AliModule *module;
- Int_t i;
-
- for(i=0; i<=ndet; i++)
- if((module = (AliModule*)dets[i]))
- module->PreTrack();
+ gAlice->PreTrack();
gtrack();
- for(i=0; i<=ndet; i++)
- if((module = (AliModule*)dets[i]))
- module->PostTrack();
+ gAlice->PostTrack();
}
//______________________________________________________________________
Int_t ipp, jk, id, nt;
Float_t polar[3]={0,0,0};
Float_t mom[3];
- const char *kChproc;
+ AliMCProcess pProc;
TGeant3* geant3 = (TGeant3*) gMC;
// --- Add new created particles
if (gMC->NSecondaries() > 0) {
- kChproc=gMC->ProdProcess();
+ pProc=gMC->ProdProcess();
for (jk = 0; jk < geant3->Gcking()->ngkine; ++jk) {
ipp = Int_t (geant3->Gcking()->gkin[jk][4]+0.5);
// --- Skip neutrinos!
if (ipp != 4) {
gAlice->SetTrack(1,gAlice->CurrentTrack(),gMC->PDGFromId(ipp), geant3->Gcking()->gkin[jk],
- geant3->Gckin3()->gpos[jk], polar,geant3->Gctrak()->tofg, kChproc, nt);
+ geant3->Gckin3()->gpos[jk], polar,geant3->Gctrak()->tofg, pProc, nt);
}
}
}
geant3->Gckin2()->xphot[jk], //position
&geant3->Gckin2()->xphot[jk][7], //polarisation
geant3->Gckin2()->xphot[jk][10], //time of flight
- "Cherenkov", nt);
+ kPCerenkov, nt);
}
}
// --- Particle leaving the setup ?
/*
$Log$
+Revision 1.38 2000/10/30 15:19:06 morsch
+Xi(b) (pdg code 5232) added to Pdg data base.
+
Revision 1.37 2000/10/02 21:28:16 fca
Removal of useless dependecies via forward declarations
#include "AliCallf77.h"
#include "AliDecayer.h"
#include "TLorentzVector.h"
-
+
#ifndef WIN32
# define gzebra gzebra_
# define grfile grfile_
void type_of_call gtreveroot();
- void type_of_call grndm(Float_t *, const Int_t &);
+ void type_of_call grndm(Float_t *r, const Int_t &n)
+ {gMC->Rndm(r,n);}
void type_of_call grndmq(Int_t &, Int_t &, const Int_t &,
- DEFCHARD DEFCHARL);
+ DEFCHARD DEFCHARL)
+ {/*printf("Dummy grndmq called\n");*/}
void type_of_call gdtom(Float_t *, Float_t *, Int_t &);
}
//_____________________________________________________________________________
-const char* TGeant3::ProdProcess() const
+AliMCProcess TGeant3::ProdProcess() const
{
//
// Name of the process that has produced the secondary particles
// in the current step
//
- static char proc[5];
const Int_t kIpMec[13] = { 5,6,7,8,9,10,11,12,21,23,25,105,108 };
- Int_t mec, km, im;
- //
- if(fGcking->ngkine>0) {
- for (km = 0; km < fGctrak->nmec; ++km) {
- for (im = 0; im < 13; ++im) {
- if (fGctrak->lmec[km] == kIpMec[im]) {
- mec = fGctrak->lmec[km];
- if (0 < mec && mec < 31) {
- strncpy(proc,(char *)&fGctrak->namec[mec - 1],4);
- } else if (mec - 100 <= 30 && mec - 100 > 0) {
- strncpy(proc,(char *)&fGctpol->namec1[mec - 101],4);
- }
- proc[4]='\0';
- return proc;
- }
- }
- }
- strcpy(proc,"UNKN");
- } else strcpy(proc,"NONE");
- return proc;
+ const Int_t kIpProc[13] = { kPDecay, kPPair, kPCompton,
+ kPPhotoelectric, kPBrem, kPDeltaRay,
+ kPAnnihilation, kPHadronic,
+ kPMuonNuclear, kPPhotoFission,
+ kPRayleigh, kPCerenkov, kPSynchrotron};
+ Int_t km, im;
+ //
+ if(fGcking->ngkine>0)
+ for (km = 0; km < fGctrak->nmec; ++km)
+ for (im = 0; im < 13; ++im)
+ if (fGctrak->lmec[km] == kIpMec[im])
+ return (AliMCProcess) kIpProc[im];
+ //
+ return (AliMCProcess) kPNoProcess;
}
//_____________________________________________________________________________
return fGctrak->getot;
}
-//_____________________________________________________________________________
-void TGeant3::Rndm(Float_t* r, const Int_t n) const
-{
- //
- // Return an array of n random numbers uniformly distributed
- // between 0 and 1 not included
- //
- Grndm(r,n);
-}
-
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//
// Functions from GBASE
//
// To generate a vector RVECV of LEN random numbers
// Copy of the CERN Library routine RANECU
- grndm(rvec,len);
+ Rndm(rvec,len);
}
//_____________________________________________________________________________
-void TGeant3::Grndmq(Int_t &is1, Int_t &is2, const Int_t iseq,
- const Text_t *chopt)
+void TGeant3::Grndmq(Int_t &/*is1*/, Int_t &/*is2*/, const Int_t /*iseq*/,
+ const Text_t */*chopt*/)
{
//
// To set/retrieve the seed of the random number generator
//
- grndmq(is1,is2,iseq,PASSCHARD(chopt) PASSCHARL(chopt));
+ /*printf("Dummy grndmq called\n");*/
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
}
}
-
Bool_t IsTrackAlive() const;
Int_t NSecondaries() const;
Int_t CurrentEvent() const;
- const char* ProdProcess() const;
+ AliMCProcess ProdProcess() const;
void GetSecondary(Int_t isec, Int_t& ipart, TLorentzVector &x,
TLorentzVector &p);
void StopTrack();
virtual Int_t GetMedium() const;
virtual Float_t Edep() const;
virtual Float_t Etot() const;
- virtual void Rndm(Float_t* r, const Int_t n) const;
virtual void Material(Int_t& kmat, const char* name, Float_t a, Float_t z,
Float_t dens, Float_t radl, Float_t absl,
/*
$Log$
+Revision 1.24 2000/09/14 07:08:42 fca
+Introducing glvolu in the interface
+
Revision 1.23 2000/07/12 08:56:32 fca
Coding convention correction and warning removal
Bool_t TGeant3::IsTrackDisappeared() const {return 0;}
Bool_t TGeant3::IsTrackStop() const {return 0;}
Int_t TGeant3::NSecondaries() const {return 0;}
-const char* TGeant3::ProdProcess() const {return 0;}
+AliMCProcess TGeant3::ProdProcess() const {return kPNoProcess;}
void TGeant3::GetSecondary(Int_t, Int_t&,
TLorentzVector&, TLorentzVector&){}
Float_t TGeant3::MaxStep() const {return 0;}
Int_t TGeant3::GetMedium() const {return 0;}
Float_t TGeant3::Edep() const {return 0;}
Float_t TGeant3::Etot() const {return 0;}
-void TGeant3::Rndm(Float_t*, const Int_t) const {}
Float_t TGeant3::TrackStep() const {return 0;}
Float_t TGeant3::TrackLength() const {return 0;}
Float_t TGeant3::TrackTime() const {return 0;}
PLATFORM = linux
# The compilers
-CXX = echo $*.cxx ; g++
+CXX = echo $*.cxx ; g++
F77 = echo $*.F ; g77
CC = echo $*.c ; gcc
# Global optimisation
-OPT = -O
+OPT = -O -g
# Shared library suffix
SL = so
gSystem->Load("$(ROOTSYS)/lib/libEG");
gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libSTEER");
gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libTGeant3Dummy");
- gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libhijing.so");
- gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libTHijing");
+ // gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libhijing.so");
+ // gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libTHijing");
gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libdummypythia6");
gSystem->Load("$(ROOTSYS)/lib/libEGPythia6");
gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libCONTAINERS");