]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliGenerator.cxx
New&delete used for array with variable size
[u/mrichter/AliRoot.git] / STEER / AliGenerator.cxx
index 3d90df50f8dedfa8e10f01e9980fa35b59628553..8892df5ec2b6fe1ba6290104be564e15489412b0 100644 (file)
 
 /*
 $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
 
@@ -61,6 +67,7 @@ Introduction of the Copyright and cvs Log
 #include "AliGenerator.h"
 #include "TGenerator.h"
 #include "AliRun.h"
+#include "AliConfig.h"
 
 ClassImp(AliGenerator)
 
@@ -86,8 +93,12 @@ AliGenerator::AliGenerator()
 
     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);
@@ -113,14 +124,20 @@ AliGenerator::AliGenerator(Int_t npart)
 
     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);    
 }
 
 //____________________________________________________________
@@ -267,3 +284,42 @@ void AliGenerator::SetThetaRange(Float_t thetamin, Float_t thetamax)
   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]));
+    }
+}
+
+