]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONPad.cxx
Adding MUONChamberMaterialBudget.C:
[u/mrichter/AliRoot.git] / MUON / AliMUONPad.cxx
index f297efeeaabd453e4bde7f4138c368e0969fc63a..d92d9758acad1b4d0183eb6e445809b6a044bd93 100644 (file)
@@ -26,6 +26,7 @@
 #include "TVector2.h"
 #include "TMath.h"
 
+//-----------------------------------------------------------------------------
 /// \class AliMUONPad
 ///
 /// Object gathering information about a hit pad.
@@ -37,6 +38,7 @@
 /// get neighboring information.
 ///
 /// \author Laurent Aphecetche
+//-----------------------------------------------------------------------------
 
 /// \cond CLASSIMP
 ClassImp(AliMUONPad)
@@ -54,8 +56,8 @@ namespace
     Double_t xmax = TMath::Min(a.RightBorder(),b.RightBorder());
     Double_t ymin = TMath::Max(a.DownBorder(),b.DownBorder());
     Double_t ymax = TMath::Min(a.UpBorder(),b.UpBorder());
-    AliMpArea c( TVector2( (xmin+xmax)/2.0, (ymin+ymax)/2.0 ),
-                 TVector2( (xmax-xmin)/2.0, (ymax-ymin)/2.0 ) );
+    AliMpArea c( (xmin+xmax)/2.0, (ymin+ymax)/2.0 ,
+                 (xmax-xmin)/2.0, (ymax-ymin)/2.0 );
        
     return c;
   }
@@ -70,7 +72,6 @@ fIsReal(kFALSE),
 fClusterId(-1),
 fCathode(-1),
 fDetElemId(-1),
-fDigitIndex(-1),
 fIx(-1),
 fIy(-1),
 fStatus(0),
@@ -94,7 +95,6 @@ fIsReal(kFALSE),
 fClusterId(-1),
 fCathode(-1),
 fDetElemId(-1),
-fDigitIndex(-1),
 fIx(-1),
 fIy(-1),
 fStatus(0),
@@ -117,7 +117,6 @@ fIsReal(kFALSE),
 fClusterId(-1),
 fCathode(-1),
 fDetElemId(-1),
-fDigitIndex(-1),
 fIx(-1),
 fIy(-1),
 fStatus(0),
@@ -139,7 +138,6 @@ fIsReal(kFALSE),
 fClusterId(-1),
 fCathode(-1),
 fDetElemId(-1),
-fDigitIndex(-1),
 fIx(-1),
 fIy(-1),
 fStatus(0),
@@ -195,8 +193,8 @@ AliMUONPad::AreOverlapping(const AliMUONPad& d1, const AliMUONPad& d2,
   ///   what we call an overlap, e.g. to consider 2 pads touching only by their
   ///   corners to be overlapping.
   
-  AliMpArea a1(d1.Position(),d1.Dimensions());
-  AliMpArea a2(d2.Position(),d2.Dimensions());
+  AliMpArea a1(d1.X(),d1.Y(),d1.DX(),d1.DY());
+  AliMpArea a2(d2.X(),d2.Y(),d2.DX(),d2.DY());
   
   if ( a1.LeftBorder() > a2.RightBorder() - precision.X() ||
        a1.RightBorder() < a2.LeftBorder() + precision.X() )
@@ -250,13 +248,21 @@ AliMUONPad::Compare(const TObject* obj) const
   
   const AliMUONPad* pad = static_cast<const AliMUONPad*>(obj);
     
+  if (DetElemId() < 0)
+  {
+    // AZ - For "pixels" from MLEM cluster finder
+    // we only sort on charge
+    if (Charge() == pad->Charge()) return 0;
+    return ( Charge() < pad->Charge() ) ? 1:-1;
+  }
+
   if ( DetElemId() > pad->DetElemId() )
   {
     return 1;
   }
-  else if ( DetElemId() > pad->DetElemId() )
+  else if ( DetElemId() < pad->DetElemId() )
   {
-    return 1;
+    return -1;
   }
   else
   {
@@ -316,13 +322,25 @@ AliMUONPad::Compare(const TObject* obj) const
             else
             {
               // same Y
-              return ( Charge() < pad->Charge() ) ? -1:1;              
-            }            
+              if ( Charge() < pad->Charge() ) 
+              {
+                return -1;
+              }
+              else if ( Charge() > pad->Charge() )
+              {
+                return 1;
+              }
+              else
+              {
+                return 0;
+              }
+            }
           }          
         }        
       }
     }
   }
+  return 0;
 }
 
 //_____________________________________________________________________________
@@ -365,7 +383,6 @@ AliMUONPad::Init(Int_t detElemId, Int_t cathode,
   fChargeBackup = fCharge;
   
   fClusterId = -1;
-  fDigitIndex = -1;
 
   fStatus = 0;
 }
@@ -375,8 +392,8 @@ AliMpArea
 AliMUONPad::Overlap(const AliMUONPad& d1, const AliMUONPad& d2)
 {  
   /// Return the overlap region between two pads
-  AliMpArea a1(d1.Position(),d1.Dimensions());
-  AliMpArea a2(d2.Position(),d2.Dimensions());
+  AliMpArea a1(d1.X(),d1.Y(),d1.DX(),d1.DY());
+  AliMpArea a2(d2.X(),d2.Y(),d2.DX(),d2.DY());
   return Intersect(a1,a2);
 }
 
@@ -430,6 +447,7 @@ AliMUONPad::Print(Option_t* opt) const
                  Y()-DY(),Y()+DY()) << endl;
   }
   cout << endl;
+  cout.precision(6); // reset to default precision
   cout.flags(oldflags);
 }