Fixed a memory leak (TObjArray::Clear was missing)
authorcmayer <Christoph.Mayer@cern.ch>
Sun, 19 Oct 2014 15:34:53 +0000 (17:34 +0200)
committercmayer <Christoph.Mayer@cern.ch>
Sun, 19 Oct 2014 15:34:53 +0000 (17:34 +0200)
The event weight is set to the number of times STARLIGHT generated an event until it fulfills kinematical constraints

STARLIGHT/AliGenStarLight.cxx
STARLIGHT/AliGenStarLight.h
STARLIGHT/AliStarLightLinkDef.h
STARLIGHT/test/Config.C

index a9351b1..0fd2e78 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");
index fa1873a..249a62e 100644 (file)
@@ -42,10 +42,9 @@ public:
   AliGenStarLight(const AliGenStarLight &p);
   AliGenStarLight& operator=(const AliGenStarLight &p);
 
-  Int_t                       fTrials;          //  Number of times the STARlight generate has been called to get one event to pass trigger/cuts.
   TStarLight                 *fSLgenerator;     //! Pointer to StarLight Generator.
 
-  ClassDef(AliGenStarLight,2); // STARlight parameterisation generator
+  ClassDef(AliGenStarLight,3); // STARlight parameterisation generator
 } ;
 
 #endif
index 68a34a7..7acf858 100644 (file)
@@ -4,14 +4,4 @@
 #pragma link off all functions;
 #pragma link C++ class TStarLight+;
 #pragma link C++ class AliGenStarLight+;
-/* #pragma link C++ class AliGenStarLightEventHeader+; */
-/* #pragma link C++ class parameterbase+; */
-/* #pragma link C++ class parameter<unsigned int,1>+; */
-/* #pragma link C++ class parameter<double,1>+; */
-/* #pragma link C++ class parameter<bool,1>+; */
-/* #pragma link C++ class parameter<unsigned int,0>+; */
-/* #pragma link C++ class parameter<string,0>+; */
-/* #pragma link C++ class parameter<bool,0>+; */
-/* //#pragma link C++ class inputParser+; */
-/* #pragma link C++ class inputParameters+; */
 #endif
index 1634f24..a694f27 100644 (file)
@@ -229,7 +229,7 @@ void Config()
     gener->SetCutVertexZ(1.);     // Truncate at 1 sigma
     gener->SetVertexSmear(kPerEvent); 
     gener->SetTrackingFlag(1);
-//     gener->SetYRange(-0.9, 0.9);
+    gener->SetYRange(-0.9, 0.9);
     gener->Init();
   }