]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpTrigger.cxx
Fixing Doxygen warnings
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpTrigger.cxx
index 63d864bc721595cd7cf2c3dc394bd25529af4cd7..899ef03ce8404b2b6e42973a3562341b03db4a98 100644 (file)
 **************************************************************************/
 
 // $Id$
-// $MpId$
+// $MpId: AliMpTrigger.cxx,v 1.4 2006/05/24 13:58:52 ivana Exp $
 
 #include "AliMpTrigger.h"
-
+#include "AliMpSlatSegmentation.h"
+#include "AliMpConstants.h"
 #include "AliLog.h"
 #include "AliMpSlat.h"
 
 #include "TArrayI.h"
 #include "TObjArray.h"
 
+//-----------------------------------------------------------------------------
+/// \class AliMpTrigger
+/// 
+/// A trigger 'slat' object. 
+/// It is to be viewed as a superposition of  
+/// virtual layers of AliMpSlat objects. The need for more than one layer  
+/// arise from the fact that a given local board deals with strips  
+/// located in different detelem. So a given strip (pad) can have several  
+/// "locations".
+///
+/// \author Laurent Aphecetche
+//-----------------------------------------------------------------------------
+
+/// \cond CLASSIMP
 ClassImp(AliMpTrigger)
+/// \endcond
 
 namespace
 {
@@ -49,51 +65,82 @@ namespace
 
 //_____________________________________________________________________________
 AliMpTrigger::AliMpTrigger()
-: TObject(), fId(""), fPlaneType(kNonBendingPlane), 
-fMaxNofPadsY(0), fDX(0), fDY(0)
+: TObject(), 
+  fId(""), 
+  fPlaneType(AliMp::kNonBendingPlane), 
+  fSlats(0),
+  fSlatSegmentations(0),
+  fMaxNofPadsY(0),
+  fDX(0), 
+  fDY(0)
 {
+  /// default ctor
+
+  AliDebugStream(1) << "this = " << this << endl;
+
+  fSlats.SetOwner(kFALSE);
+  fSlatSegmentations.SetOwner(kTRUE);
 }
 
 //_____________________________________________________________________________
-AliMpTrigger::AliMpTrigger(const char* slatType, AliMpPlaneType bendingOrNot)
-:  TObject(), fId(slatType), fPlaneType(bendingOrNot), 
-fMaxNofPadsY(0), fDX(0), fDY(0)
+AliMpTrigger::AliMpTrigger(const char* slatType, AliMp::PlaneType bendingOrNot)
+    :  TObject(), 
+       fId(slatType), 
+       fPlaneType(bendingOrNot), 
+       fSlats(0),
+       fSlatSegmentations(0),
+       fMaxNofPadsY(0), 
+       fDX(0), 
+       fDY(0)
 {
+  /// normal ctor
+
+  AliDebugStream(1) << "this = " << this << endl;
+
+  fSlats.SetOwner(kFALSE);
+  fSlatSegmentations.SetOwner(kTRUE);
 }
 
 //_____________________________________________________________________________
 AliMpTrigger::~AliMpTrigger()
 {
-  AliDebug(1,Form("this=%p before fSlats.Delete()",this));                     
-  fSlats.Delete();
-  AliDebug(1,Form("this=%p after fSlats.Delete()",this));                      
+  /// dtor
+  AliDebugStream(1) << "this = " << this << endl;
+
+  fSlatSegmentations.Delete();
 }
 
 //_____________________________________________________________________________
 Bool_t
 AliMpTrigger::AdoptLayer(AliMpSlat* slat)
 {
-  AliDebug(1,Form("%s is adopting %s :\n",
+  /// Adopt (i.e. we become owner of that pointer) a slat, as 
+  /// a layer of this trigger slat.
+
+  AliDebug(2,Form("%s is adopting %s ",
                   GetID(),slat->GetID()));
 
   // Check that we keep our size constant.
-  
-  const Double_t precision = 1E-3;
-  
+    
   if ( GetSize() > 0 && 
-       ( !::IsEqual(slat->DX(),fDX,precision) || 
-         !::IsEqual(slat->DY(),fDY,precision) )
+       ( !::IsEqual(slat->DX(),fDX,AliMpConstants::LengthTolerance()) || 
+         !::IsEqual(slat->DY(),fDY,AliMpConstants::LengthTolerance()) )
      )
   {
-    AliError(Form("In %s trying to add a layer (%e,%e) of a different size than "
-             "mine (%e,%e)\n",GetID(),slat->DX(),slat->DY(),
+    AliError(Form("In %s trying to add a layer (%e,%e) (layer #%d) "
+                  "of a different size than mine (%e,%e)",
+                  GetID(),slat->DX(),slat->DY(),fSlats.GetEntries(),
                   fDX,fDY));
     return kFALSE;
   }
   fSlats.Add(slat);
-  fMaxNofPadsY = std::max(slat->GetMaxNofPadsY(),fMaxNofPadsY);
-  fDX = std::max(fDX,slat->DX());
-  fDY = std::max(fDY,slat->DY());
+  Bool_t owner(kTRUE);
+  // the slat segmentation will be the owner of the slat, and will delete
+  // it when it'll be deleted itself
+  fSlatSegmentations.Add(new AliMpSlatSegmentation(slat,owner));
+  fMaxNofPadsY = TMath::Max(slat->GetMaxNofPadsY(),fMaxNofPadsY);
+  fDX = TMath::Max(fDX,slat->DX());
+  fDY = TMath::Max(fDY,slat->DY());
   return kTRUE;
 }
 
@@ -101,6 +148,7 @@ AliMpTrigger::AdoptLayer(AliMpSlat* slat)
 Double_t
 AliMpTrigger::DX() const
 {
+  /// Returns the half-size in X (cm)
   return fDX;
 }
 
@@ -108,6 +156,7 @@ AliMpTrigger::DX() const
 Double_t
 AliMpTrigger::DY() const
 {
+  /// Returns the half-size in Y (cm)
   return fDY;
 }
 
@@ -115,6 +164,7 @@ AliMpTrigger::DY() const
 void 
 AliMpTrigger::GetAllLocalBoardNumbers(TArrayI& lbn) const
 {
+  /// Fills lbn with the local board numbers we're dealing with
   Int_t n(0);
   for ( Int_t i = 0; i < GetSize(); ++i )
   {
@@ -128,7 +178,7 @@ AliMpTrigger::GetAllLocalBoardNumbers(TArrayI& lbn) const
   for ( Int_t i = 0; i < GetSize(); ++i )
   {
     TArrayI slbn;
-    GetLayer(i)->GetAllElectronicCardNumbers(slbn);
+    GetLayer(i)->GetAllMotifPositionsIDs(slbn);
     for ( Int_t j = 0; j < slbn.GetSize(); ++j )
     {
       lbn[index] = slbn[j];
@@ -141,6 +191,7 @@ AliMpTrigger::GetAllLocalBoardNumbers(TArrayI& lbn) const
 const char*
 AliMpTrigger::GetID() const
 {
+  /// returns the id of this slat
   return fId.Data();
 }
 
@@ -148,12 +199,13 @@ AliMpTrigger::GetID() const
 const char*
 AliMpTrigger::GetName() const
 {
+  /// returns the name (=id+bending/non-bending) of this slat
   TString name(GetID());
-  if ( fPlaneType == kBendingPlane )
+  if ( fPlaneType == AliMp::kBendingPlane )
   {
     name += ".Bending";
   }
-  else if ( fPlaneType == kNonBendingPlane )
+  else if ( fPlaneType == AliMp::kNonBendingPlane )
   {
     name += ".NonBending";
   }
@@ -168,6 +220,7 @@ AliMpTrigger::GetName() const
 AliMpSlat*
 AliMpTrigger::GetLayer(int layer) const
 {
+  /// Returns a given layer
   if ( IsLayerValid(layer) )
   {
     return (AliMpSlat*)fSlats.At(layer);
@@ -175,10 +228,23 @@ AliMpTrigger::GetLayer(int layer) const
   return 0;
 }
 
+//_____________________________________________________________________________
+AliMpVSegmentation*
+AliMpTrigger::GetLayerSegmentation(int layer) const
+{
+  /// Returns a given layer
+  if ( IsLayerValid(layer) )
+  {
+    return (AliMpSlatSegmentation*)fSlatSegmentations.At(layer);
+  }
+  return 0;
+}
+
 //_____________________________________________________________________________
 Int_t
 AliMpTrigger::GetNofPadsX() const
 {
+  /// Returns the number of pad in x direction
   if ( !GetSize() ) return -1;
   if ( GetLayer(0) )
   {
@@ -191,6 +257,7 @@ AliMpTrigger::GetNofPadsX() const
 Int_t
 AliMpTrigger::GetMaxNofPadsY() const
 {
+  /// Maximum number of pads in y direction
   return fMaxNofPadsY;
 }
 
@@ -198,6 +265,7 @@ AliMpTrigger::GetMaxNofPadsY() const
 Int_t
 AliMpTrigger::GetSize() const
 {
+  /// Number of layers
   return fSlats.GetEntriesFast();
 }
 
@@ -205,6 +273,7 @@ AliMpTrigger::GetSize() const
 Bool_t
 AliMpTrigger::IsLayerValid(int layer) const
 {
+  /// Whether a given layer index is valid or not
   if ( layer >= 0 && layer < GetSize() )
   {
     return kTRUE;
@@ -213,16 +282,18 @@ AliMpTrigger::IsLayerValid(int layer) const
 }
 
 //_____________________________________________________________________________
-TVector2
-AliMpTrigger::Position() const
+AliMp::PlaneType
+AliMpTrigger::PlaneType() const
 {
-  return TVector2(DX(),DY());
+  /// Bending or not
+  return fPlaneType;
 }
 
 //_____________________________________________________________________________
 void
 AliMpTrigger::Print(Option_t* opt) const
 {
+  /// Dump on screen
   cout << "AliMpTrigger::" << GetID();
   if ( GetSize() == 0 )
   {