]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSvImpacts.cxx
In AliMUONTriggerTrack: fixing memory leak
[u/mrichter/AliRoot.git] / PHOS / AliPHOSvImpacts.cxx
index 6560c0957a298fd999eac8baef14ccc649523fbb..56ffb673c4e0c3749b6fcfc2e61ae74ccd5c0b99 100644 (file)
@@ -49,6 +49,7 @@
 //#include <TTree.h>
 #include <TClonesArray.h>
 #include <TVirtualMC.h>
+#include <TTree.h>
 
 // --- Standard library ---
 
@@ -58,6 +59,7 @@
 #include "AliPHOSImpact.h"
 #include "AliPHOSvImpacts.h"
 #include "AliRun.h"
+#include "AliLoader.h"
 #include "AliMC.h"
 #include "AliLog.h"
 
@@ -65,9 +67,12 @@ ClassImp(AliPHOSvImpacts)
 
 //____________________________________________________________________________
 AliPHOSvImpacts::AliPHOSvImpacts():
-  fEMCImpacts(0),
-  fCPVImpacts(0),
-  fPPSDImpacts(0)
+  fEMCImpacts(new TList),
+  fCPVImpacts(new TList),
+  fPPSDImpacts(new TList),
+  fNEMCImpacts(),
+  fNCPVImpacts(),
+  fNPPSDImpacts()
 {
   // ctor
 }
@@ -77,7 +82,10 @@ AliPHOSvImpacts::AliPHOSvImpacts(const char *name, const char *title):
   AliPHOSv1(name,title),
   fEMCImpacts(new TList),
   fCPVImpacts(new TList),
-  fPPSDImpacts(0)
+  fPPSDImpacts(0),
+  fNEMCImpacts(),
+  fNCPVImpacts(),
+  fNPPSDImpacts()
 {
   // ctor : title is used to identify the layout
   //
@@ -154,12 +162,14 @@ void AliPHOSvImpacts::AddImpact(const char* det, Int_t shunt, Int_t primary, Int
     nImpacts= fNCPVImpacts[module];
     fNCPVImpacts[module]++ ;
   }
+  else
+    AliFatal(Form("Wrong PHOS configuration: det=%s",det));
 
   new((*impacts)[nImpacts]) AliPHOSImpact(shunt,primary,track,pid,p,xyz) ;
 
   AliDebugClass(1,Form("Module %d %s: ",module,det));
   if (AliLog::GetGlobalDebugLevel()>0)
-    (dynamic_cast<AliPHOSImpact*>((impacts->At(nImpacts))))->Print();
+    (static_cast<AliPHOSImpact*>((impacts->At(nImpacts))))->Print();
 }
 
 //____________________________________________________________________________
@@ -172,8 +182,8 @@ void AliPHOSvImpacts::MakeBranch(Option_t *opt)
   
   Int_t bufferSize = 32000 ;
   Int_t splitlevel = 0 ;
-  TreeH()->Branch("PHOSEmcImpacts" , "TList", &fEMCImpacts , bufferSize, splitlevel);
-  TreeH()->Branch("PHOSCpvImpacts" , "TList", &fCPVImpacts , bufferSize, splitlevel);
+  fLoader->TreeH()->Branch("PHOSEmcImpacts" , "TList", &fEMCImpacts , bufferSize, splitlevel);
+  fLoader->TreeH()->Branch("PHOSCpvImpacts" , "TList", &fCPVImpacts , bufferSize, splitlevel);
   
 }
 
@@ -186,12 +196,12 @@ void AliPHOSvImpacts::ResetHits()
 
   Int_t i;
   for (i=0; i<GetGeometry()->GetNModules(); i++) {
-    (dynamic_cast<TClonesArray*>(fEMCImpacts->At(i))) -> Clear();
+    (static_cast<TClonesArray*>(fEMCImpacts->At(i))) -> Clear();
     fNEMCImpacts[i] = 0 ;
   }
 
   for (i=0; i<GetGeometry()->GetNModules(); i++) {
-    (dynamic_cast<TClonesArray*>(fCPVImpacts->At(i))) -> Clear();
+    (static_cast<TClonesArray*>(fCPVImpacts->At(i))) -> Clear();
     fNCPVImpacts[i] = 0 ;
   }
   
@@ -233,8 +243,8 @@ void AliPHOSvImpacts::StepManager(void)
     gMC -> Gmtod (pm,   pd,   2);    // transform 3-momentum from master to daughter system
 
     // Select tracks coming to the crystal from up or down sides
-    if (pd[1]<0 && xyzd[1] >  GetGeometry()->GetCrystalSize(1)/2-0.1 ||
-       pd[1]>0 && xyzd[1] < -GetGeometry()->GetCrystalSize(1)/2+0.1) {
+    if ((pd[1]<0 && xyzd[1] >  GetGeometry()->GetCrystalSize(1)/2-0.1) ||
+       (pd[1]>0 && xyzd[1] < -GetGeometry()->GetCrystalSize(1)/2+0.1)) {
     // Select tracks coming to the crystal from up or down sides
       Int_t pid = gMC->TrackPid();
       Int_t module;