New methods needed in order to srt alignment objects by their geometry level
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 23 Mar 2006 14:54:22 +0000 (14:54 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 23 Mar 2006 14:54:22 +0000 (14:54 +0000)
STEER/AliAlignObj.cxx
STEER/AliAlignObj.h

index ab19f9c..1b198fa 100644 (file)
@@ -161,6 +161,32 @@ void AliAlignObj::GetVolUID(ELayerID &layerId, Int_t &modId) const
 }
 
 //_____________________________________________________________________________
+Int_t AliAlignObj::GetLevel() const
+{
+  // Return the geometry level of
+  // the alignable volume to which
+  // the alignment object is associated
+  TString volpath = fVolPath;
+  return (volpath.CountChar('/')+1);
+}
+
+//_____________________________________________________________________________
+Int_t AliAlignObj::Compare(const TObject *obj) const
+{
+  // Compare the levels of two
+  // alignment objects
+  // Used in the sorting during
+  // the application of alignment
+  // objects to the geometry
+  Int_t level = GetLevel();
+  Int_t level2 = ((AliAlignObj *)obj)->GetLevel();
+  if (level == level2)
+    return 0;
+  else
+    return ((level > level2) ? 1 : -1);
+}
+
+//_____________________________________________________________________________
 void AliAlignObj::AnglesToMatrix(const Double_t *angles, Double_t *rot) const
 {
   // Calculates the rotation matrix using the 
index c0ffdbf..3746ae0 100644 (file)
@@ -59,6 +59,9 @@ class AliAlignObj : public TObject {
   virtual void GetPars(Double_t transl[], Double_t rot[]) const=0;
   virtual void GetMatrix(TGeoHMatrix& m) const=0;
 
+  Int_t         GetLevel() const;
+  virtual Int_t Compare(const TObject* obj) const;
+
   virtual AliAlignObj& Inverse() const=0;
 
   void  Transform(AliTrackPoint &p) const;