]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STARLIGHT/AliGenStarLight.cxx
Fixed a memory leak (TObjArray::Clear was missing)
[u/mrichter/AliRoot.git] / STARLIGHT / AliGenStarLight.cxx
index a9351b18caf377a6cfb4fff54b940f137ca8a75a..0fd2e78b4aadd171bcc8465d10260c16b2d4521f 100644 (file)
@@ -27,13 +27,11 @@ ClassImp(AliGenStarLight);
 
 AliGenStarLight::AliGenStarLight()
   : AliGenMC()
-  , fTrials(0)
   , fSLgenerator(NULL) {
 }
 //----------------------------------------------------------------------
 AliGenStarLight::AliGenStarLight(Int_t npart)
   : AliGenMC(npart)
-  , fTrials(0)
   , fSLgenerator(new TStarLight("TStarLight",
                                "StarLight UPC Event Generator",
                                ""))  // no config file name  
@@ -77,11 +75,10 @@ void AliGenStarLight::Generate() {
     vpos[3] = fTime;
   }
 
-  Int_t   nt(0);  // number of tracks
-  Float_t weight(1);
+  Int_t   nt(0);     // number of tracks
   Bool_t  genOK(kFALSE);  
   // generate events until all constraints are fulfilled
-  for (fTrials=0; !genOK && fTrials < 100*1000; ++fTrials) {
+  for (Int_t trials=0; !genOK && trials < 100*1000; ++trials) {
     fSLgenerator->GenerateEvent();
     fSLgenerator->BoostEvent();
     fSLgenerator->ImportParticles(&fParticles, "ALL");
@@ -109,19 +106,21 @@ void AliGenStarLight::Generate() {
        AliFatal("NULL == part");
        return;
       }
-      Int_t   iparent(-1);
-      Float_t polar[3] = { 0, 0, 0 };
+      const Int_t   iparent(-1);
+      const Float_t polar[3] = { 0, 0, 0 };
+      const Float_t weight(trials+1);
       PushTrack(fTrackIt, iparent, part->GetPdgCode(), 
                part->Px(), part->Py(), part->Pz(), part->Energy(),
                vpos[0],    vpos[1],    vpos[2],    vpos[3],
                polar[0],   polar[1],   polar[2], 
                kPPrimary, nt, weight, part->GetStatusCode());
-      AliInfo(Form("fTrials=%d nt=%d fTrackIt=%d statusCode=%d",
-                  fTrials, nt, fTrackIt, part->GetStatusCode()));
+      AliInfo(Form("weight=%.0f nt=%d fTrackIt=%d statusCode=%d",
+                  weight, nt, fTrackIt, part->GetStatusCode()));
       part->Print();
       KeepTrack(nt);
       ++fNprimaries;
     }
+    fParticles.Clear();
   }
   if (kFALSE == genOK)
     AliFatal("Maximum number of trials reached");