]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpGraphContext.cxx
Fix in AliMpSectorSegmentation::PadByPosition;
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpGraphContext.cxx
index d21fa68af52ff80f91504287d352b98301bb4315..bbd96ba5ca40293a4b7dc54cac8e60344bfc02d6 100755 (executable)
@@ -1,42 +1,98 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
 // $Id$
+// $MpId: AliMpGraphContext.cxx,v 1.11 2006/05/24 13:58:32 ivana Exp $
 // Category: graphics
-//
+
+//-----------------------------------------------------------------------------
 // Class AliMpGraphContext
 // -----------------------
 // Class describing a the correspondance between a given area
 // in pad, and a zone of real (cm) position
-//
+// Included in AliRoot: 2003/05/02
 // Author: David GUEZ, IPN Orsay
+//-----------------------------------------------------------------------------
 
 #include "AliMpGraphContext.h"
 
+/// \cond CLASSIMP
 ClassImp(AliMpGraphContext)
+/// \endcond
 
-AliMpGraphContext *AliMpGraphContext::fgInstance = 0;
-GraphContextVector AliMpGraphContext::fgStack;
+AliMpGraphContext* AliMpGraphContext::fgInstance = 0;
+TObjArray          AliMpGraphContext::fgStack;
+Int_t              AliMpGraphContext::fgStackSize = 0;
 
-// private constructor
+//_____________________________________________________________________________
 AliMpGraphContext::AliMpGraphContext():
   TObject(),
+  fColor(20),
   fPadPosition(TVector2(0.5,0.5)),
   fPadDimensions(TVector2(0.49,0.49)),
   fRealPosition(TVector2(0.,0.)),
   fRealDimensions(TVector2(1,1))
 {
-  fColor = 20;
-  // default constructor (private)
+/// Default constructor (private)
+}
+
+//_____________________________________________________________________________
+AliMpGraphContext::AliMpGraphContext(const AliMpGraphContext& right) 
+  : TObject(right),
+    fColor(right.fColor),
+    fPadPosition(right.fPadPosition),
+    fPadDimensions(right.fPadDimensions),
+    fRealPosition(right.fRealPosition),
+    fRealDimensions(right.fRealDimensions)     
+{
+/// Copy constructor
 }
+
+//_____________________________________________________________________________
+AliMpGraphContext& 
+AliMpGraphContext::operator=(const AliMpGraphContext& right)
+{
+/// Protected assignment operator
+
+  // check assignment to self
+  if (this == &right) return *this;
+
+  fColor = right.fColor;
+  fPadPosition = right.fPadPosition;
+  fPadDimensions = right.fPadDimensions;
+  fRealPosition = right.fRealPosition;
+  fRealDimensions = right.fRealDimensions;
+    
+  return *this;  
+}    
+
+//_____________________________________________________________________________
 AliMpGraphContext *AliMpGraphContext::Instance()
 {
-  // return or create a unique instance of this class
+  /// Return or create a unique instance of this class
+  
   if (fgInstance) return fgInstance;
   fgInstance = new AliMpGraphContext;
   return fgInstance;
 }
 
+//_____________________________________________________________________________
 TVector2 AliMpGraphContext::RealToPad(const TVector2 &position) const
 {
-  // transform a real position into its equivalent position in the pad
+  /// Transform a real position into its equivalent position in the pad
+  
   Double_t x=position.X();
   Double_t y=position.Y();
   x-= (fRealPosition.X()-fRealDimensions.X());
@@ -52,41 +108,53 @@ TVector2 AliMpGraphContext::RealToPad(const TVector2 &position) const
   return TVector2(x,y);
 }
 
-
-
+//_____________________________________________________________________________
 void AliMpGraphContext::RealToPad(const TVector2 &position,
                              const TVector2 &dimensions,
                              TVector2 &padPosition,
                              TVector2 &padDimensions) const
 {
-  // transform the real area (position,dimensions) to
-  // its equivalent pad area
+  /// Transform the real area (position,dimensions) to
+  /// its equivalent pad area
+
   padPosition = RealToPad(position);
   padDimensions = 
     TVector2(dimensions.X()*fPadDimensions.X()/fRealDimensions.X(),
             dimensions.Y()*fPadDimensions.Y()/fRealDimensions.Y());
 
 }
+
+//_____________________________________________________________________________
 void AliMpGraphContext::SetPadPosForReal(const TVector2 &position,
                                     const TVector2 &dimensions)
 {
-  // Set the pad area from the actual one
-  // corresponding to the given real area.
+  /// Set the pad area from the actual one
+  /// corresponding to the given real area.
+
   RealToPad(position,dimensions,fPadPosition,fPadDimensions);
 }
+
+//_____________________________________________________________________________
 void AliMpGraphContext::Push() const
 {
-  // Store the current configuration
+  /// Store the current configuration
+
   AliMpGraphContext *save = new AliMpGraphContext(*this);
-  fgStack.push_back(save);
+
+  fgStack.AddAt(save, fgStackSize++);
 }
+
+//_____________________________________________________________________________
 void AliMpGraphContext::Pop()
 {
+/// Pop an object from the stack.
+
   // restore the last saved configuration
-  if (!fgStack.empty()){
-    AliMpGraphContext *obj = fgStack.back();
+  if ( fgStackSize ){
+    AliMpGraphContext *obj 
+      = (AliMpGraphContext*)fgStack.At(--fgStackSize);
     *this = *obj;
-    fgStack.pop_back();
+    fgStack.RemoveAt(fgStackSize);
     delete obj;
   }
 }