/*
$Log$
+Revision 1.12 2001/02/02 11:12:50 morsch
+Add Vertex() method that allows to get vertex from merging manager, if needed.
+
+Revision 1.11 2001/01/26 19:58:48 hristov
+Major upgrade of AliRoot code
+
+Revision 1.10 2000/12/21 15:30:18 fca
+Correcting coding convention violations
+
Revision 1.9 2000/10/04 10:08:01 fca
Correction of minor typing mistakes
#include "AliGenerator.h"
#include "TGenerator.h"
#include "AliRun.h"
+#include "AliConfig.h"
ClassImp(AliGenerator)
//
// Default constructor
//
- printf("\n AliGenerator Default Constructor\n\n");
+ if (gAlice->GetDebug()>0)
+ printf("\n AliGenerator Default Constructor\n\n");
gAlice->SetGenerator(this);
SetThetaRange(); ResetBit(kThetaRange);
fOrigin.Set(3);
fOsigma.Set(3);
+ fVertex.Set(3);
+
fOrigin[0]=fOrigin[1]=fOrigin[2]=0;
fOsigma[0]=fOsigma[1]=fOsigma[2]=0;
+ fVertex[0]=fVertex[1]=fVertex[2]=0;
+
fVMin.Set(3);
fVMin[0]=fVMin[1]=fVMin[2]=0;
fVMax.Set(3);
//
// Standard constructor
//
- printf("\n AliGenerator Constructor initializing number of particles \n\n");
+ if (gAlice->GetDebug()>0)
+ printf("\n AliGenerator Constructor initializing number of particles \n\n");
gAlice->SetGenerator(this);
SetThetaRange(); ResetBit(kThetaRange);
SetPhiRange(); ResetBit(kPhiRange);
fOrigin.Set(3);
fOsigma.Set(3);
+ fVertex.Set(3);
+
fOrigin[0]=fOrigin[1]=fOrigin[2]=0;
fOsigma[0]=fOsigma[1]=fOsigma[2]=0;
+ fVertex[0]=fVertex[1]=fVertex[2]=0;
+
fVMin.Set(3);
fVMin[0]=fVMin[1]=fVMin[2]=0;
fVMax.Set(3);
fVMax[0]=fVMax[1]=fVMax[2]=10000;
SetNumberParticles(npart);
+
+ AliConfig::Instance()->Add(this);
}
//____________________________________________________________
fThetaMin = TMath::Pi()*thetamin/180;
fThetaMax = TMath::Pi()*thetamax/180; SetBit(kThetaRange);
}
+
+void AliGenerator::Vertex()
+{
+ //
+ // Obtain vertex for current event from external source or calculated (internal)
+ //
+ if (fVertexSource == kInternal) {
+ VertexInternal();
+ } else {
+ VertexExternal();
+ }
+}
+
+
+void AliGenerator::VertexExternal()
+{
+ // Dummy !!!!!!
+ // Obtain vertex from external source
+ //
+ // Should be something like fVertex = gAlice->GetVertex()
+
+ fVertex[0]=fVertex[1]=fVertex[2]=0;
+}
+
+void AliGenerator::VertexInternal()
+{
+ //
+ // Obtain calculated vertex
+ // Default is gaussian smearing
+ Float_t random[6];
+ Rndm(random,6);
+ for (Int_t j = 0; j<3 ; j++) {
+ fVertex[j]=
+ fOrigin[j]+fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
+ TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
+ }
+}
+
+