]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSRecPoint.cxx
Fixed Coverity defect (DIVIDE_BY_ZERO)
[u/mrichter/AliRoot.git] / PHOS / AliPHOSRecPoint.cxx
index ddd2e14526e7104eca795bb944c4f55827cfd8be..9622d1cb6b44dfad6cfa4e0d6f544b9258a54547 100644 (file)
@@ -18,7 +18,7 @@
 //  Why should I put meaningless comments
 //  just to satisfy
 //  the code checker                
-//*-- Author: Gines Martinez (SUBATECH)
+//-- Author: Gines Martinez (SUBATECH)
 
 // --- ROOT system ---
 #include "TPad.h"
@@ -46,7 +46,7 @@ AliPHOSRecPoint::AliPHOSRecPoint()
     fMulTrack(0),fMaxDigit(100),fMulDigit(0),fMaxTrack(200),
     fDigitsList(0),fTracksList(0),fAmp(0),
     fIndexInList(-1), // to be set when the point is already stored
-    fLocPos(0,0,0),fLocPosM(0)
+    fLocPos(0,0,0)
 {
   // ctor
 
@@ -58,7 +58,7 @@ AliPHOSRecPoint::AliPHOSRecPoint(const char * )
     fMulTrack(0),fMaxDigit(100),fMulDigit(0),fMaxTrack(200),
     fDigitsList(new Int_t[fMaxDigit]),fTracksList(new Int_t[fMaxTrack]),fAmp(0),
     fIndexInList(-1), // to be set when the point is already stored
-    fLocPos(0,0,0),fLocPosM(new TMatrixF(3,3))
+    fLocPos(0,0,0)
 
 {
   // ctor
@@ -69,7 +69,6 @@ AliPHOSRecPoint::~AliPHOSRecPoint()
 {
   // dtor
   
-  delete fLocPosM ; 
   delete [] fDigitsList ; 
   delete [] fTracksList ;  
   
@@ -80,7 +79,7 @@ AliPHOSRecPoint::AliPHOSRecPoint(const AliPHOSRecPoint &rp) :
   fPHOSMod(rp.fPHOSMod),fMulTrack(rp.fMulTrack),fMaxDigit(rp.fMaxDigit),
   fMulDigit(rp.fMulDigit),fMaxTrack(rp.fMaxTrack),fDigitsList(0x0),
   fTracksList(0x0),fAmp(rp.fAmp),fIndexInList(rp.fIndexInList), 
-  fLocPos(rp.fLocPos),fLocPosM(rp.fLocPosM)
+  fLocPos(rp.fLocPos)
 {
   //copy ctor
 
@@ -98,21 +97,28 @@ AliPHOSRecPoint& AliPHOSRecPoint::operator= (const AliPHOSRecPoint &rp)
 {
   if(&rp == this) return *this;
 
-  fPHOSMod = rp.fPHOSMod;
-  fMulTrack = rp.fMulTrack;
-  fMaxDigit = rp.fMaxDigit;
-  fMulDigit = rp.fMulDigit;
-  fMaxTrack = rp.fMaxTrack;
-  fAmp = rp.fAmp;
+  fPHOSMod     = rp.fPHOSMod;
+  fMulTrack    = rp.fMulTrack;
+  fMaxDigit    = rp.fMaxDigit;
+  fMulDigit    = rp.fMulDigit;
+  fMaxTrack    = rp.fMaxTrack;
+  fAmp         = rp.fAmp;
   fIndexInList = rp.fIndexInList; 
   fLocPos = rp.fLocPos;
-  fLocPosM = rp.fLocPosM;
 
-  for(Int_t i=0; i<fMaxDigit; i++)
-    fDigitsList[i] = rp.fDigitsList[i];
+  if (fDigitsList != 0) delete [] fDigitsList;
+  if (fMaxDigit>0) {
+    fDigitsList = new Int_t[fMaxDigit];
+    for(Int_t i=0; i<fMaxDigit; i++)
+      fDigitsList[i] = rp.fDigitsList[i];
+  }
 
-  for(Int_t i=0; i<fMaxTrack; i++)
-    fTracksList[i] = rp.fTracksList[i];
+  if (fTracksList != 0) delete [] fTracksList;
+  if (fMaxTrack>0) {
+    fTracksList = new Int_t[fMaxTrack];
+    for(Int_t i=0; i<fMaxTrack; i++)
+      fTracksList[i] = rp.fTracksList[i];
+  }
 
   return *this;
 }
@@ -166,7 +172,7 @@ void AliPHOSRecPoint::ExecuteEvent(Int_t event, Int_t, Int_t)
   case kButton1Down:{
     AliPHOSDigit * digit ;
   
-    AliPHOSGeometry * phosgeom = AliPHOSLoader::GetPHOSGeometry();
+    AliPHOSGeometry * phosgeom =  AliPHOSGeometry::GetInstance() ;
 
     Int_t iDigit;
     Int_t relid[4] ;
@@ -196,8 +202,8 @@ void AliPHOSRecPoint::ExecuteEvent(Int_t event, Int_t, Int_t)
       clustertext = new TPaveText(pos.X()-10,pos.Z()+10,pos.X()+50,pos.Z()+35,"") ;
       Text_t  line1[40] ;
       Text_t  line2[40] ;
-      sprintf(line1,"Energy=%1.2f GeV",GetEnergy()) ;
-      sprintf(line2,"%d Digits",GetDigitsMultiplicity()) ;
+      snprintf(line1,40,"Energy=%1.2f GeV",GetEnergy()) ;
+      snprintf(line2,40,"%d Digits",GetDigitsMultiplicity()) ;
       clustertext ->AddText(line1) ;
       clustertext ->AddText(line2) ;
       clustertext ->Draw("");
@@ -312,12 +318,12 @@ void AliPHOSRecPoint::EvalLocal2TrackingCSTransform()
   //Calculate offset to crystal surface.
   //See fCrystalShift code in AliPHOSGeometry::Init()).
 
-  Float_t * inthermo = geoEMCA->GetInnerThermoHalfSize() ;
-  Float_t * strip = geoEMCA->GetStripHalfSize() ;
-  Float_t* splate = geoEMCA->GetSupportPlateHalfSize();
-  Float_t * crystal = geoEMCA->GetCrystalHalfSize() ;
-  Float_t * pin = geoEMCA->GetAPDHalfSize() ;
-  Float_t * preamp = geoEMCA->GetPreampHalfSize() ;
+  const Float_t * inthermo = geoEMCA->GetInnerThermoHalfSize() ;
+  const Float_t * strip    = geoEMCA->GetStripHalfSize() ;
+  const Float_t * splate   = geoEMCA->GetSupportPlateHalfSize();
+  const Float_t * crystal  = geoEMCA->GetCrystalHalfSize() ;
+  const Float_t * pin      = geoEMCA->GetAPDHalfSize() ;
+  const Float_t * preamp   = geoEMCA->GetPreampHalfSize() ;
   crystalShift = -inthermo[1]+strip[1]+splate[1]+crystal[1]-geoEMCA->GetAirGapLed()/2.+pin[1]+preamp[1] ;
 
   if(IsEmc()) {
@@ -330,7 +336,7 @@ void AliPHOSRecPoint::EvalLocal2TrackingCSTransform()
   lxyz[1] = lxyz[1] - dy;
 
   const TGeoHMatrix* tr2loc = GetTracking2LocalMatrix();
-  if(!tr2loc) AliFatal(Form("No Tracking2LocalMatrix found."));
+  if(!tr2loc) AliFatal(Form("No Tracking2LocalMatrix found for VolumeID=%d",GetVolumeId()));
 
   tr2loc->MasterToLocal(lxyz,txyz);
   SetX(txyz[0]); SetY(txyz[1]); SetZ(txyz[2]);