]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenBox.cxx
only check correlation of global track and tpc only track multipliicty when running...
[u/mrichter/AliRoot.git] / EVGEN / AliGenBox.cxx
index ec2cdbea3e1cce27b0676c4b9785e877d5c75b81..197a8c09b82aa1b5be1a2142595b8c586d7f9005 100644 (file)
@@ -62,15 +62,25 @@ AliGenBox::AliGenBox(Int_t npart)
 
 //_____________________________________________________________________________
 
-void AliGenBox::Generate()
+void AliGenBox::Generate() {
+  //
+  // Generate one trigger (fNpart particles)
+  //
+  GenerateN(1);
+}
+//_____________________________________________________________________________
+void AliGenBox::GenerateN(Int_t ntimes)
 {
   //
-  // Generate one trigger
+  // Generate ntimes triggers
+  //   total ntimes*fNpart particles
   //
   
     Float_t polar[3]= {0,0,0};
   //
     Float_t origin[3];
+    Float_t time;
     Float_t p[3];
     Int_t i, j, nt;
     Double_t pmom, theta, phi, pt;
@@ -79,14 +89,17 @@ void AliGenBox::Generate()
     Float_t random[6];
   //
     for (j=0;j<3;j++) origin[j]=fOrigin[j];
+    time = fTimeOrigin;
     if(fVertexSmear==kPerEvent) {
        Vertex();
        for (j=0;j<3;j++) origin[j]=fVertex[j];
+       time = fTime;
     }
 
     Double_t m = TDatabasePDG::Instance()->GetParticle(fIpart)->Mass();
 
-    for(i=0;i<fNpart;i++) {
+    Int_t mult = fNpart*ntimes;
+    for(i=0;i<mult;i++) {
        Rndm(random,3);
        
        if (TestBit(kYRange)) {
@@ -134,16 +147,23 @@ void AliGenBox::Generate()
                origin[j]=fOrigin[j]+fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
                    TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
            }
+
+           Rndm(random,2);
+           time = fTimeOrigin + fOsigma[2]/TMath::Ccgs()*
+             TMath::Cos(2*random[0]*TMath::Pi())*
+             TMath::Sqrt(-2*TMath::Log(random[1]));
        }
-       PushTrack(fTrackIt,-1,fIpart,p,origin,polar,0,kPPrimary,nt);
+       PushTrack(fTrackIt,-1,fIpart,p,origin,polar,time,kPPrimary,nt, 1., 1);
     }
 
     AliGenEventHeader* header = new AliGenEventHeader("BOX");
     header->SetPrimaryVertex(fVertex);
-    header->SetNProduced(fNpart);
+    header->SetNProduced(mult);
+    header->SetInteractionTime(fTime);
     
  // Passes header either to the container or to gAlice
     if (fContainer) {
+        header->SetName(fName);
        fContainer->AddHeader(header);
     } else {
        gAlice->SetGenEventHeader(header);      
@@ -163,7 +183,5 @@ void AliGenBox::Init()
     Fatal("Init","You should only set the range of one of these variables: y, eta or theta\n");
   if((!TestBit(kYRange)) && (!TestBit(kEtaRange)) && (!TestBit(kThetaRange)) )
     Fatal("Init","You should set the range of one of these variables: y, eta or theta\n");
-
-  AliPDG::AddParticlesToPdgDataBase();
 }