Bag in ::Compare() fixed
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 11 Jan 2001 10:35:14 +0000 (10:35 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 11 Jan 2001 10:35:14 +0000 (10:35 +0000)
PHOS/AliPHOSCpvRecPoint.cxx
PHOS/AliPHOSPpsdRecPoint.cxx

index 7e589bf..a83bf9c 100644 (file)
@@ -36,6 +36,7 @@
 
 #include "AliPHOSGeometry.h"
 #include "AliPHOSCpvRecPoint.h"
+#include "AliPHOSPpsdRecPoint.h"
 #include "AliRun.h"
 #include "AliPHOSIndexToObject.h"
 
@@ -134,37 +135,48 @@ Int_t AliPHOSCpvRecPoint::Compare(TObject * obj)
 
   Int_t rv ; 
 
-  AliPHOSCpvRecPoint * clu = (AliPHOSCpvRecPoint *)obj ; 
-
-  Int_t phosmod1 = this->GetPHOSMod() ;
-  Int_t phosmod2 = clu->GetPHOSMod() ;
-
-  TVector3 locpos1; 
-  this->GetLocalPosition(locpos1) ;
-  TVector3 locpos2;  
-  clu->GetLocalPosition(locpos2) ;  
-
-  if(phosmod1 == phosmod2 ) {
-    Int_t rowdif = (Int_t)TMath::Ceil(locpos1.X()/fDelta)-(Int_t)TMath::Ceil(locpos2.X()/fDelta) ;
-    if (rowdif> 0) 
-      rv = -1 ;
-     else if(rowdif < 0) 
-       rv = 1 ;
-    else if(locpos1.Z()>locpos2.Z()) 
-      rv = -1 ;
-    else 
-      rv = 1 ; 
-     }
-
-  else {
-    if(phosmod1 < phosmod2 ) 
-      rv = -1 ;
-    else 
-      rv = 1 ;
-  }
-
-  return rv ; 
+  if( (strcmp(obj->ClassName() , "AliPHOSPpsdRecPoint" )) == 0)  // PPSD Rec Point
+    {
+      AliPHOSPpsdRecPoint * clu = (AliPHOSPpsdRecPoint *)obj ; 
+      if(this->GetPHOSMod()  < clu->GetPHOSMod() ) 
+       rv = -1 ;
+      else 
+       rv = 1 ;
+      return rv ;
+    }
+  else
+    {
+      AliPHOSCpvRecPoint * clu  = (AliPHOSCpvRecPoint *) obj ; 
+      
+      Int_t phosmod1 = this->GetPHOSMod() ;
+      Int_t phosmod2 = clu->GetPHOSMod() ;
+      
+      TVector3 locpos1; 
+      this->GetLocalPosition(locpos1) ;
+      TVector3 locpos2;  
+      clu->GetLocalPosition(locpos2) ;  
+      
+      if(phosmod1 == phosmod2 ) {
+       Int_t rowdif = (Int_t)TMath::Ceil(locpos1.X()/fDelta)-(Int_t)TMath::Ceil(locpos2.X()/fDelta) ;
+       if (rowdif> 0) 
+         rv = -1 ;
+       else if(rowdif < 0) 
+         rv = 1 ;
+       else if(locpos1.Z()>locpos2.Z()) 
+         rv = -1 ;
+       else 
+         rv = 1 ; 
+      }
+      
+      else {
+       if(phosmod1 < phosmod2 ) 
+         rv = -1 ;
+       else 
+         rv = 1 ;
+      }
+      
+      return rv ; 
+    }
 }
 
 //______________________________________________________________________________
index f4186b8..a1484cf 100644 (file)
@@ -34,6 +34,7 @@
 
 #include "AliPHOSGeometry.h"
 #include "AliPHOSPpsdRecPoint.h"
+#include "AliPHOSCpvRecPoint.h"
 #include "AliRun.h"
 #include "AliPHOSIndexToObject.h"
 
@@ -85,73 +86,86 @@ Int_t AliPHOSPpsdRecPoint::Compare(TObject * obj)
   
   Int_t rv ; 
   
-  AliPHOSPpsdRecPoint * clu = (AliPHOSPpsdRecPoint *)obj ; 
+  if( (strcmp(obj->ClassName() , "AliPHOSPpsdRecPoint" )) == 0)  // PPSD Rec Point
+    {
+     AliPHOSPpsdRecPoint * clu = (AliPHOSPpsdRecPoint *)obj ; 
+
+     Float_t x1 , z1 ;
+     Float_t x2 , z2 ;
+     
+     Int_t phosmod1 ;
+     Int_t phosmod2 ;
+     
+     Int_t up1 ;
+     Int_t up2 ; 
   
-  Float_t x1 , z1 ;
-  Float_t x2 , z2 ;
-  
-  Int_t phosmod1 ;
-  Int_t phosmod2 ;
-  
-  Int_t up1 ;
-  Int_t up2 ; 
-  
-  if(GetUp()) // upper layer
-    up1 = 0 ; 
-  else        // lower layer
-    up1 = 1 ;       
-  
-  if(clu->GetUp()) // upper layer
-    up2 = 0 ; 
-  else            // lower layer
-    up2 = 1 ;       
-
-  TVector3 posloc ;
-  this->GetLocalPosition(posloc) ;
-  x1 = posloc.X() ;
-  z1 = posloc.Z() ; 
-  phosmod1 = this->GetPHOSMod();  
-  clu->GetLocalPosition(posloc) ;
-  x2 = posloc.X() ;
-  z2 = posloc.Z() ; 
-  phosmod2 = clu->GetPHOSMod();
-
-  if(phosmod1 == phosmod2 ) {
-    if(up1 == up2 ){
-      Int_t rowdif = (Int_t)TMath::Ceil(x1/fDelta) - (Int_t) TMath::Ceil(x2/fDelta) ;
-
-      if (rowdif> 0) 
-       rv = -1 ;
+     if(GetUp()) // upper layer
+       up1 = 0 ; 
+     else        // lower layer
+       up1 = 1 ;       
+     
+     if(clu->GetUp()) // upper layer
+       up2 = 0 ; 
+     else            // lower layer
+       up2 = 1 ;       
+
+     TVector3 posloc ;
+     this->GetLocalPosition(posloc) ;
+     x1 = posloc.X() ;
+     z1 = posloc.Z() ; 
+     phosmod1 = this->GetPHOSMod();  
+     clu->GetLocalPosition(posloc) ;
+     x2 = posloc.X() ;
+     z2 = posloc.Z() ; 
+     phosmod2 = clu->GetPHOSMod();
+     
+     if(phosmod1 == phosmod2 ) {
+       
+       if(up1 == up2 ){
+        Int_t rowdif = (Int_t)TMath::Ceil(x1/fDelta) - (Int_t) TMath::Ceil(x2/fDelta) ;
+        
+        if (rowdif> 0) 
+          rv = -1 ;
       else if(rowdif < 0) 
        rv = 1 ;
-      else if(z1>z2) 
-       rv = -1 ;
-      else 
-       rv = 1 ; 
+        else if(z1>z2) 
+          rv = -1 ;
+        else 
+          rv = 1 ; 
+       }
+       
+       else {
+        
+        if(up1 < up2 ) // Upper level first (up = True or False, True > False)
+          rv = 1 ;   
+        else 
+          rv = - 1 ;
+       }
+       
+     } // if phosmod1 == phosmod2
+     
+     else {
+       
+       if(phosmod1 < phosmod2 ) 
+        rv = -1 ;
+       else 
+        rv = 1 ;
+       
+     }
+     
+     return rv ;      
     }
-
-    else {
-
-      if(up1 < up2 ) // Upper level first (up = True or False, True > False)
-       rv = 1 ;   
+  else
+    {
+      AliPHOSCpvRecPoint * clu  = (AliPHOSCpvRecPoint *) obj ;   
+      if(this->GetPHOSMod()  < clu->GetPHOSMod() ) 
+       rv = -1 ;
       else 
-       rv = - 1 ;
+       rv = 1 ;
+      return rv ;
     }
-    
-  } // if phosmod1 == phosmod2
-
-  else {
 
-    if(phosmod1 < phosmod2 ) 
-      rv = -1 ;
-    else 
-      rv = 1 ;
-  
-}
   
-  return rv ; 
 }
 
 //____________________________________________________________________________