]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTriggerSegmentationV2.cxx
switch to activate ResponseTriggerV1 from Config
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerSegmentationV2.cxx
index de53031caad3c388aad05bb6c377a273b122b620..d5ad7c9da2a822072ea3c19d3b9bc1097d565a6c 100644 (file)
 
 /* $Id$ */
 
+// -------------------------------------
+// Class AliMUONTriggerSegmentation
+// -------------------------------------
+// Segmentation for MUON trigger stations using 
+// the mapping package
+
 #include "AliMUONTriggerSegmentationV2.h"
 
 #include "AliMpPCB.h"
@@ -28,7 +34,9 @@
 #include "TClass.h"
 #include "TString.h"
 
+/// \cond CLASSIMP
 ClassImp(AliMUONTriggerSegmentationV2)
+/// \endcond
 
 namespace
 {
@@ -52,17 +60,17 @@ namespace
 //_____________________________________________________________________________
 AliMUONTriggerSegmentationV2::AliMUONTriggerSegmentationV2() 
 : AliMUONVGeometryDESegmentation(),
-fDetElemId(-1),
-fPlaneType(kNonBendingPlane),
-fSlat(0),
-fSlatSegmentation(0),
-fXhit(FMAX),
-fYhit(FMAX),
-fLineNumber(-1)
+  fDetElemId(-1),
+  fPlaneType(kNonBendingPlane),
+  fSlat(0),
+  fSlatSegmentation(0),
+  fCurrentPad(),
+  fXhit(FMAX),
+  fYhit(FMAX),
+  fLineNumber(-1)
 {
-  //
-  // Default ctor (empty).
-  //
+/// Default ctor (empty).
+
   AliDebug(1,Form("this=%p default (empty) ctor",this));
 }
 
@@ -70,18 +78,17 @@ fLineNumber(-1)
 AliMUONTriggerSegmentationV2::AliMUONTriggerSegmentationV2(
                                    AliMpVSegmentation* segmentation,
                                    Int_t detElemId, AliMpPlaneType bendingOrNonBending)
-: AliMUONVGeometryDESegmentation(),
-fDetElemId(detElemId),
-fPlaneType(bendingOrNonBending),
-fSlat(0),
-fSlatSegmentation(0),
-fXhit(FMAX),
-fYhit(FMAX),
-fLineNumber(-1)
-{
-  //
-  // Normal ctor.
-  //
+    : AliMUONVGeometryDESegmentation(),
+      fDetElemId(detElemId),
+      fPlaneType(bendingOrNonBending),
+      fSlat(0),
+      fSlatSegmentation(0),
+      fCurrentPad(),
+      fXhit(FMAX),
+      fYhit(FMAX),
+      fLineNumber(-1)
+{
+/// Normal ctor.
 
   fSlatSegmentation = dynamic_cast<AliMpTriggerSegmentation*>(segmentation);
   if (fSlatSegmentation)
@@ -102,32 +109,20 @@ fLineNumber(-1)
                                                                        fSlatSegmentation));
 }
 
-//_____________________________________________________________________________
-AliMUONTriggerSegmentationV2::AliMUONTriggerSegmentationV2(const AliMUONTriggerSegmentationV2& rhs) : AliMUONVGeometryDESegmentation(rhs)
-{
-  AliFatal("Not implemented.");
-}
-
 //_____________________________________________________________________________
 AliMUONTriggerSegmentationV2::~AliMUONTriggerSegmentationV2() 
 { 
-  AliDebug(1,Form("this=%p",this));                    
-  // Destructor
-}
+/// Destructor
 
-//_____________________________________________________________________________
-AliMUONTriggerSegmentationV2& AliMUONTriggerSegmentationV2::operator=(const AliMUONTriggerSegmentationV2& rhs)
-{
-// Protected assignement operator
-  if (this == &rhs) return *this;
-  AliFatal("Not implemented.");
-  return *this;  
+  AliDebug(1,Form("this=%p",this));                    
 }
 
 //_____________________________________________________________________________
 TF1*
 AliMUONTriggerSegmentationV2::CorrFunc(Int_t) const
 {
+/// Not implemented
+
   AliFatal("Not implemented");
   return 0x0;
 }
@@ -137,6 +132,8 @@ Float_t
 AliMUONTriggerSegmentationV2::Distance2AndOffset(Int_t, Int_t, 
                                                  Float_t, Float_t, Int_t*)
 {
+/// Not implemented
+
   AliFatal("Not implemented");
   return 0;
 }
@@ -145,6 +142,8 @@ AliMUONTriggerSegmentationV2::Distance2AndOffset(Int_t, Int_t,
 void
 AliMUONTriggerSegmentationV2::Draw(Option_t*)
 {
+/// Not implemented
+
   AliFatal("Not Implemented");
 }
 
@@ -152,6 +151,8 @@ AliMUONTriggerSegmentationV2::Draw(Option_t*)
 Float_t
 AliMUONTriggerSegmentationV2::Dpx() const
 {
+/// Not implemented
+
   AliFatal("Not Implemented");
   return 0.0;
 }
@@ -160,15 +161,19 @@ AliMUONTriggerSegmentationV2::Dpx() const
 Float_t
 AliMUONTriggerSegmentationV2::Dpy() const
 {
+/// Not implemented
+
   AliFatal("Not Implemented");
   return 0.0;
 }
 
 //_____________________________________________________________________________
 Float_t
-AliMUONTriggerSegmentationV2::Dpx(int sectorCode) const
+AliMUONTriggerSegmentationV2::Dpx(Int_t sectorCode) const
 {
-  Int_t ixLA, iyLA;
+/// Get pad size in x
+
+ Int_t ixLA, iyLA;
   Decode(sectorCode,ixLA,iyLA);
   AliMpPad pad = fSlatSegmentation->PadByIndices(AliMpIntPair(ixLA,iyLA),kFALSE);
   if ( !pad.IsValid() ) return 0.0;
@@ -177,8 +182,10 @@ AliMUONTriggerSegmentationV2::Dpx(int sectorCode) const
 
 //_____________________________________________________________________________
 Float_t
-AliMUONTriggerSegmentationV2::Dpy(int sectorCode) const
+AliMUONTriggerSegmentationV2::Dpy(Int_t sectorCode) const
 {
+/// Get pad size in y
+
   Int_t ixLA, iyLA;
   Decode(sectorCode,ixLA,iyLA);
   AliMpPad pad = fSlatSegmentation->PadByIndices(AliMpIntPair(ixLA,iyLA),kFALSE);
@@ -188,10 +195,11 @@ AliMUONTriggerSegmentationV2::Dpy(int sectorCode) const
 
 //_____________________________________________________________________________
 void
-AliMUONTriggerSegmentationV2::FirstPad(Float_t /*xhit*/, Float_t /*yhit*/, 
-                                                                                                                                                                Float_t /*zhit*/, 
-                                                                                                                                                                Float_t /*dx*/, Float_t /*dy*/)
+AliMUONTriggerSegmentationV2::FirstPad(Float_t /*xhit*/, Float_t /*yhit*/, Float_t /*zhit*/,
+                                       Float_t /*dx*/, Float_t /*dy*/)
 {
+/// Not implemented
+
   AliFatal("Not implemented");
 }
 
@@ -199,6 +207,8 @@ AliMUONTriggerSegmentationV2::FirstPad(Float_t /*xhit*/, Float_t /*yhit*/,
 Float_t
 AliMUONTriggerSegmentationV2::GetAnod(Float_t) const
 {
+/// Not implemented
+
   AliFatal("Not implemented");
   return 0.0;
 }
@@ -207,6 +217,8 @@ AliMUONTriggerSegmentationV2::GetAnod(Float_t) const
 AliMUONGeometryDirection
 AliMUONTriggerSegmentationV2::GetDirection()
 {
+/// Not implemented
+
   //AliWarning("Not Implemented");
   return kDirUndefined;
 }
@@ -215,8 +227,8 @@ AliMUONTriggerSegmentationV2::GetDirection()
 const AliMpVSegmentation*  
 AliMUONTriggerSegmentationV2::GetMpSegmentation() const
 {
-// Returns the mapping segmentation
-// (provides access to electronics info)
+/// Returns the mapping segmentation
+/// (provides access to electronics info)
 
   return fSlatSegmentation;
 }  
@@ -225,6 +237,8 @@ AliMUONTriggerSegmentationV2::GetMpSegmentation() const
 void 
 AliMUONTriggerSegmentationV2::GetNParallelAndOffset(Int_t,Int_t,Int_t*,Int_t*)
 {
+/// Not implemented
+
   AliFatal("Not Implemented");
 }
 
@@ -233,6 +247,8 @@ void
 AliMUONTriggerSegmentationV2::GetPadC(Int_t ix, Int_t iy, 
                                       Float_t& x, Float_t& y, Float_t& z)
 {
+/// Transform from pad to real coordinates
+
   z = 0;
   GetPadC(ix,iy,x,y);
 }
@@ -242,6 +258,8 @@ void
 AliMUONTriggerSegmentationV2::GetPadC(Int_t ixGlo, Int_t iyGlo, 
                                       Float_t& x, Float_t& y)
 {
+/// Transform from pad to real coordinates
+
   Int_t ixLA,iyLA;
   IGlo2ILoc(ixGlo,iyGlo,ixLA,iyLA);
   AliMpPad pad = fSlatSegmentation->PadByIndices(AliMpIntPair(ixLA,iyLA),kTRUE);
@@ -254,6 +272,8 @@ void
 AliMUONTriggerSegmentationV2::GetPadI(Float_t x, Float_t y, Float_t,
                                       Int_t& ix, Int_t& iy)
 {
+///  Returns pad coordinates (ix,iy) for given real coordinates (x,y)
+
   GetPadI(x,y,ix,iy);
 }
 
@@ -262,6 +282,8 @@ void
 AliMUONTriggerSegmentationV2::GetPadI(Float_t x, Float_t y,
                                       Int_t& ixGlo, Int_t& iyGlo)
 {
+///  Returns pad coordinates (ix,iy) for given real coordinates (x,y)
+
   AliDebug(2,Form("%s x=%e y=%e ixGlo,iyGlo=%d,%d\n",
                   fSlatSegmentation->GetName(),
                   x,y,ixGlo,iyGlo));
@@ -287,9 +309,7 @@ void
 AliMUONTriggerSegmentationV2::GetPadLoc2Glo(Int_t ix, Int_t iy,
                                             Int_t& ixGlo, Int_t& iyGlo) const
 {
-  //
-  // Converts from local (in PC convention) to (ix,iy) to global (ix,iy)
-  //
+/// Converts from local (in PC convention) to (ix,iy) to global (ix,iy)
 
   ixGlo=iyGlo=-1; // starts with invalid values
   
@@ -318,9 +338,7 @@ void
 AliMUONTriggerSegmentationV2::GetPadGlo2Loc(Int_t ixGlo, Int_t iyGlo,
                                             Int_t& ix, Int_t& iy) const
 {
-  //
-  // Converts from global (ix,iy) to local (ix,iy) (in PC convention)
-  //
+/// Converts from global (ix,iy) to local (ix,iy) (in PC convention)
   
   ix=iy=-1; // starts with invalid values
 
@@ -349,21 +367,25 @@ AliMUONTriggerSegmentationV2::GetPadGlo2Loc(Int_t ixGlo, Int_t iyGlo,
 
 //_____________________________________________________________________________
 void 
-AliMUONTriggerSegmentationV2::GiveTestPoints(Int_t&,Float_t*,Float_t*) const
+AliMUONTriggerSegmentationV2::GiveTestPoints(Int_t& /*n*/, 
+                                             Float_t* /*x*/, Float_t*/*y*/) const
 {
+// Not implemented
+
   AliFatal("Not Implemented");
 }
 
 //_____________________________________________________________________________
 Bool_t
-AliMUONTriggerSegmentationV2::HasPad(Float_t x, Float_t y, Float_t)
-{
-  //
-  // Well, 2 implementations are possible here
-  // Either reuse HasPad(int,int), or get it from scratch using
-  // underlying fSlatSegmentation.
-  // Took second option, but w/o checking whether this is the faster.
-  // The second option is commented out below, for the record.
+AliMUONTriggerSegmentationV2::HasPad(Float_t x, Float_t y, Float_t /*z*/)
+{
+/// Returns true if a pad exists in the given position
+///
+/// Well, 2 implementations are possible here
+/// Either reuse HasPad(int,int), or get it from scratch using
+/// underlying fSlatSegmentation.
+/// Took second option, but w/o checking whether this is the faster.
+/// The second option is commented out below, for the record.
   
 //  Int_t ix, iy;
 //  GetPadI(x,y,z,ix,iy);
@@ -382,6 +404,8 @@ AliMUONTriggerSegmentationV2::HasPad(Float_t x, Float_t y, Float_t)
 Bool_t
 AliMUONTriggerSegmentationV2::HasPad(Int_t ixGlo, Int_t iyGlo)
 {
+/// Returns true if a pad with given indices exists
+
   Int_t ixLA, iyLA;
   IGlo2ILoc(ixGlo,iyGlo,ixLA,iyLA);
   return fSlatSegmentation->HasPad(AliMpIntPair(ixLA,iyLA));
@@ -390,8 +414,10 @@ AliMUONTriggerSegmentationV2::HasPad(Int_t ixGlo, Int_t iyGlo)
 //_____________________________________________________________________________
 void
 AliMUONTriggerSegmentationV2::IGlo2ILoc(Int_t ixGlo, Int_t iyGlo,
-                                        Int_t& ixLA, Int_t& iyLA)
+                                        Int_t& ixLA, Int_t& iyLA) const
 {
+/// \todo FIXME: add comment
+
   Int_t ixPC, iyPC;
   GetPadGlo2Loc(ixGlo,iyGlo,ixPC,iyPC);
   PC2LA(ixPC,iyPC,ixLA,iyLA);
@@ -400,25 +426,21 @@ AliMUONTriggerSegmentationV2::IGlo2ILoc(Int_t ixGlo, Int_t iyGlo,
 //_____________________________________________________________________________
 void
 AliMUONTriggerSegmentationV2::ILoc2IGlo(Int_t ixLA, Int_t iyLA,
-                                        Int_t& ixGlo, Int_t& iyGlo)
+                                        Int_t& ixGlo, Int_t& iyGlo) const
 {
+/// \todo FIXME: add comment
+
   Int_t ixPC, iyPC;
   LA2PC(ixLA,iyLA,ixPC,iyPC);
   GetPadLoc2Glo(ixPC,iyPC,ixGlo,iyGlo);
 }
 
-//_____________________________________________________________________________
-void
-AliMUONTriggerSegmentationV2::Init(int)
-{
-  AliWarning("Not Implemented because not needed ;-)");
-}
-
 //_____________________________________________________________________________
 Int_t
 AliMUONTriggerSegmentationV2::ISector()
 {
-  // FIXME: remove the usage of ISector from all the code.
+/// \todo FIXME: remove the usage of ISector from all the code.
+
   return -10;
 }
 
@@ -428,12 +450,12 @@ void AliMUONTriggerSegmentationV2::IntegrationLimits(Float_t& x1,
                                                      Float_t& x3, 
                                                      Float_t& x4) 
 {
-  // x1 : hit x(y) position
-  // x2 : x(y) coordinate of the main strip
-  // x3 : current strip real x(y) coordinate  
-  // x4 : dist. between x(y) hit pos. and the closest border of the current strip
-  //
-  // Note : need to return (only) x4.
+/// \param x1 : hit x(y) position
+/// \param  x2 : x(y) coordinate of the main strip
+/// \param  x3 : current strip real x(y) coordinate  
+/// \param  x4 : dist. between x(y) hit pos. and the closest border of the current strip
+///
+/// Note : need to return (only) x4.
   
   AliFatal("Check me before usage. ResponseTrigger does not use me, while"
            "ResponseTriggerV1 does ?");
@@ -482,6 +504,9 @@ void AliMUONTriggerSegmentationV2::IntegrationLimits(Float_t& x1,
 Int_t 
 AliMUONTriggerSegmentationV2::Ix()
 {
+/// Current pad cursor during disintegration
+/// x, y-coordinate
+
   if ( fCurrentPad.IsValid() )
   {
     Int_t ixGlo,iyGlo;
@@ -496,6 +521,9 @@ AliMUONTriggerSegmentationV2::Ix()
 Int_t 
 AliMUONTriggerSegmentationV2::Iy()
 {
+/// Current pad cursor during disintegration
+/// x, y-coordinate
+
   if ( fCurrentPad.IsValid() )
   {
     Int_t ixGlo,iyGlo;
@@ -510,11 +538,10 @@ AliMUONTriggerSegmentationV2::Iy()
 //_____________________________________________________________________________
 void
 AliMUONTriggerSegmentationV2::LA2PC(Int_t ixLA, Int_t iyLA,
-                                    Int_t& ixPC, Int_t& iyPC)
+                                    Int_t& ixPC, Int_t& iyPC) const
 {
-  //
-  // From LA to PC conventions for integers indices.
-  //
+/// From LA to PC conventions for integers indices.
+
   ixPC=iyPC=-1;
   
   if ( ixLA<0 || iyLA<0 ) return;
@@ -542,15 +569,18 @@ AliMUONTriggerSegmentationV2::LA2PC(Int_t ixLA, Int_t iyLA,
 Int_t
 AliMUONTriggerSegmentationV2::LineNumber() const
 {
-  return 10-fLineNumber;
+/// \todo FIXME: add comment
+
+ return 10-fLineNumber;
 }
 
 //_____________________________________________________________________________
 Int_t
 AliMUONTriggerSegmentationV2::ModuleColNum(Int_t ixGlo) const
 {
-  // returns column number (from 0 to 6) in which the (global) module 
-  // ix is sitting (could return 7 if ix=isec)
+/// returns column number (from 0 to 6) in which the (global) module 
+/// ix is sitting (could return 7 if ix=isec)
+
   return TMath::Abs(ixGlo)-Int_t(TMath::Abs(ixGlo)/10)*10-1;
 }
 
@@ -558,6 +588,8 @@ AliMUONTriggerSegmentationV2::ModuleColNum(Int_t ixGlo) const
 Int_t
 AliMUONTriggerSegmentationV2::MorePads()
 {
+/// Not implemented
+
   AliFatal("Not implemented");
   return 0;
 }
@@ -568,6 +600,8 @@ void AliMUONTriggerSegmentationV2::Neighbours(Int_t /*iX*/, Int_t /*iY*/,
                                               Int_t /*Xlist*/[10], 
                                               Int_t /*Ylist*/[10]) 
 {
+/// Not implemented
+
   //-----------------BENDING-----------------------------------------
   // Returns list of 10 next neighbours for given X strip (ix, iy)  
   // neighbour number 4 in the list -                     
@@ -594,6 +628,8 @@ void AliMUONTriggerSegmentationV2::Neighbours(Int_t /*iX*/, Int_t /*iY*/,
 void
 AliMUONTriggerSegmentationV2::NextPad()
 {
+/// Not implemented
+
   AliFatal("Not implemented");
 }
 
@@ -601,6 +637,9 @@ AliMUONTriggerSegmentationV2::NextPad()
 Int_t
 AliMUONTriggerSegmentationV2::Npx() const
 {
+/// Maximum number of Pads in x
+/// hard coded for the time being
+
   return 124;// FIXME: this should not have to be done, if only we'd stick 
   // to a local (ix,iy) convention !!! 
   // return fSlatSegmentation->MaxPadIndexX()+1;
@@ -610,6 +649,9 @@ AliMUONTriggerSegmentationV2::Npx() const
 Int_t
 AliMUONTriggerSegmentationV2::Npy() const
 {
+/// Maximum number of Pads in y
+/// hard coded for the time being
+
   return 64;
 //  return fSlatSegmentation->MaxPadIndexY()+1;
 }
@@ -617,11 +659,10 @@ AliMUONTriggerSegmentationV2::Npy() const
 //_____________________________________________________________________________
 void
 AliMUONTriggerSegmentationV2::PC2LA(Int_t ixPC, Int_t iyPC,
-                                    Int_t& ixLA, Int_t& iyLA)
+                                    Int_t& ixLA, Int_t& iyLA) const
 {
-  //
-  // From PC to LA conventions for integers indices.
-  //
+/// From PC to LA conventions for integers indices.
+
   ixLA=iyLA=-1;
   
   if ( ixPC<0 || iyPC<0 ) return;
@@ -648,6 +689,8 @@ AliMUONTriggerSegmentationV2::PC2LA(Int_t ixPC, Int_t iyPC,
 void
 AliMUONTriggerSegmentationV2::Print(Option_t* opt) const
 {
+/// Printing
+
   TString sopt(opt);
   
   cout << "DetElemId=" << fDetElemId << " PlaneType=" 
@@ -666,6 +709,8 @@ AliMUONTriggerSegmentationV2::Print(Option_t* opt) const
 Int_t
 AliMUONTriggerSegmentationV2::Sector(Int_t ix, Int_t iy)
 {
+/// Calculate sector from pad coordinates
+
   Int_t ixLA, iyLA;
   IGlo2ILoc(ix,iy,ixLA,iyLA);
   AliMpPad pad = fSlatSegmentation->PadByIndices(AliMpIntPair(ixLA,iyLA),kFALSE);
@@ -691,6 +736,8 @@ AliMUONTriggerSegmentationV2::Sector(Int_t ix, Int_t iy)
 Int_t
 AliMUONTriggerSegmentationV2::Sector(Float_t, Float_t)
 {
+/// Not implemented
+
   AliFatal("Not implemented");
   return 0;
 }
@@ -699,13 +746,17 @@ AliMUONTriggerSegmentationV2::Sector(Float_t, Float_t)
 void
 AliMUONTriggerSegmentationV2::SetCorrFunc(Int_t,TF1*)
 {
+/// Not implemented
+
   AliFatal("Not Implemented");
 }
 
 //_____________________________________________________________________________
 void
-AliMUONTriggerSegmentationV2::SetDAnod(float)
+AliMUONTriggerSegmentationV2::SetDAnod(Float_t)
 {
+/// Not implemented
+
   AliFatal("Not Implemented");
 }
 
@@ -713,6 +764,10 @@ AliMUONTriggerSegmentationV2::SetDAnod(float)
 void
 AliMUONTriggerSegmentationV2::SetHit(Float_t x, Float_t y)
 {
+/// Set hit position
+/// Sets virtual hit position, needed for evaluating pad response 
+/// outside the tracking program 
+
   fXhit = x;
   fYhit = y;
        
@@ -736,6 +791,10 @@ AliMUONTriggerSegmentationV2::SetHit(Float_t x, Float_t y)
 void
 AliMUONTriggerSegmentationV2::SetHit(Float_t x, Float_t y, Float_t)
 {
+/// Set hit position
+/// Sets virtual hit position, needed for evaluating pad response 
+/// outside the tracking program 
+
   SetHit(x,y);
 }
 
@@ -743,6 +802,10 @@ AliMUONTriggerSegmentationV2::SetHit(Float_t x, Float_t y, Float_t)
 void
 AliMUONTriggerSegmentationV2::SetPad(Int_t ix, Int_t iy)
 {
+/// Set pad position.
+/// Sets virtual pad coordinates, needed for evaluating pad response 
+/// outside the tracking program.
+
   Int_t ixLA, iyLA;
   IGlo2ILoc(ix,iy,ixLA,iyLA);
   fCurrentPad = fSlatSegmentation->PadByIndices(AliMpIntPair(ixLA,iyLA),kTRUE);
@@ -754,8 +817,10 @@ AliMUONTriggerSegmentationV2::SetPad(Int_t ix, Int_t iy)
 
 //_____________________________________________________________________________
 void
-AliMUONTriggerSegmentationV2::SetPadSize(float,float)
+AliMUONTriggerSegmentationV2::SetPadSize(Float_t,Float_t)
 {
+/// Not implemented
+
   AliFatal("Not Implemented");
 }
 
@@ -763,6 +828,8 @@ AliMUONTriggerSegmentationV2::SetPadSize(float,float)
 Int_t 
 AliMUONTriggerSegmentationV2::SigGenCond(Float_t,Float_t,Float_t)
 {
+/// Not implemented
+
   AliFatal("Not Implemented");
   return 0;
 }
@@ -771,6 +838,8 @@ AliMUONTriggerSegmentationV2::SigGenCond(Float_t,Float_t,Float_t)
 void 
 AliMUONTriggerSegmentationV2::SigGenInit(Float_t,Float_t,Float_t)
 {
+/// Not implemented
+
   AliFatal("Not Implemented");
 }