#include <TVirtualX.h>
#include "AliMUONCluster.h"
+#include "AliMUONPad.h"
+
+#include "AliMpEncodePair.h"
#include "AliLog.h"
-#include "AliMUONPad.h"
//-----------------------------------------------------------------------------
/// \class AliMUONCluster
///
//-----------------------------------------------------------------------------
+using std::cout;
+using std::endl;
/// \cond CLASSIMP
ClassImp(AliMUONCluster)
/// \endcond
AliMUONCluster::~AliMUONCluster()
{
/// dtor : note that we're owner of our pads
+// fPads.Delete();
}
//_____________________________________________________________________________
{
/// Clear our pad array
fPads.Clear();
+// fPads.Delete();
}
//_____________________________________________________________________________
}
// then construct the area from those limits
- return AliMpArea((lowerLeft+upperRight)/2,
- (upperRight-lowerLeft)/2);
+ return AliMpArea((lowerLeft+upperRight).X()/2,(lowerLeft+upperRight).Y()/2,
+ (upperRight-lowerLeft).X()/2, (upperRight-lowerLeft).Y()/2);
}
//_____________________________________________________________________________
}
// then construct the area from those limits
- return AliMpArea((lowerLeft+upperRight)/2,
- (upperRight-lowerLeft)/2);
+ return AliMpArea((lowerLeft+upperRight).X()/2,(lowerLeft+upperRight).Y()/2,
+ (upperRight-lowerLeft).X()/2, (upperRight-lowerLeft).Y()/2);
+}
+
+//_____________________________________________________________________________
+Bool_t
+AliMUONCluster::IsMonoCathode() const
+{
+ /// Whether we have signals only in one of the two cathodes
+ return (Cathode()<2);
}
//_____________________________________________________________________________
///
TObject::Copy(obj);
AliMUONCluster& dest = static_cast<AliMUONCluster&>(obj);
- dest.fPads.Delete();
- dest.fPads = fPads;
+
+// dest.fPads.Delete();
+ dest.fPads.Clear();
+
+ for ( Int_t i = 0; i <= fPads.GetLast(); ++i )
+ {
+ AliMUONPad* p = static_cast<AliMUONPad*>(fPads.UncheckedAt(i));
+ dest.fPads.AddLast(new AliMUONPad(*p));
+ }
dest.fHasPosition = fHasPosition;
dest.fPosition = fPosition;
dest.fPositionError = fPositionError;
}
//_____________________________________________________________________________
-AliMpIntPair
+Long_t
AliMUONCluster::NofPads(Int_t statusMask, Bool_t matchMask) const
{
/// Number of pads satisfying (or not, depending matchMask) a
- /// given mask
+ /// given mask
Int_t nx, ny;
TVector2 dim0(MinPadDimensions(0,statusMask,matchMask));
TVector2 dim1(MinPadDimensions(1,statusMask,matchMask));
- AliMpIntPair npad0(NofPads(0,statusMask,matchMask));
- AliMpIntPair npad1(NofPads(1,statusMask,matchMask));
+ Long_t npad0(NofPads(0,statusMask,matchMask));
+ Long_t npad1(NofPads(1,statusMask,matchMask));
if ( TMath::Abs( (dim0-dim1).X() ) < 1E-3 )
{
- nx = TMath::Max( npad0.GetFirst(), npad1.GetFirst() );
+ nx = TMath::Max( AliMp::PairFirst(npad0), AliMp::PairFirst(npad1) );
}
else
{
- nx = dim0.X() < dim1.X() ? npad0.GetFirst() : npad1.GetFirst();
+ nx = dim0.X() < dim1.X() ? AliMp::PairFirst(npad0) : AliMp::PairFirst(npad1);
}
if ( TMath::Abs( (dim0-dim1).Y() ) < 1E-3 )
{
- ny = TMath::Max( npad0.GetSecond(), npad1.GetSecond() );
+ ny = TMath::Max( AliMp::PairSecond(npad0), AliMp::PairSecond(npad1) );
}
else
{
- ny = dim0.Y() < dim1.Y() ? npad0.GetSecond() : npad1.GetSecond();
+ ny = dim0.Y() < dim1.Y() ? AliMp::PairSecond(npad0) : AliMp::PairSecond(npad1);
}
- return AliMpIntPair(nx,ny);
+ return AliMp::Pair(nx,ny);
}
//_____________________________________________________________________________
-AliMpIntPair
+Long_t
AliMUONCluster::NofPads(Int_t cathode,
Int_t statusMask, Bool_t matchMask) const
{
Int_t n = Multiplicity(cathode);
if (!n)
{
- return AliMpIntPair(0,0);
+ return 0;
}
Double_t* x = new Double_t[n];
Double_t* y = new Double_t[n];
delete[] x;
delete[] y;
- return AliMpIntPair(cx,cy);
+ return AliMp::Pair(cx,cy);
}
//_____________________________________________________________________________
// cout << " " << Area() << endl;
for (Int_t i = 0; i < fPads.GetSize(); ++i)
{
- cout << Form("fPads[%d]=%x",i,fPads.At(i)) << endl;
+ cout << Form("fPads[%d]=%p",i,fPads.At(i)) << endl;
if ( fPads.At(i) ) fPads.At(i)->Print();
}
}
AliMpArea carea(cluster->Area());
AliMpArea area(Area());
- if ( carea.Position().X() > area.Position().X() )
+ if ( carea.GetPositionX() > area.GetPositionX() )
{
return 1;
}
- else if ( carea.Position().X() < area.Position().X() )
+ else if ( carea.GetPositionX() < area.GetPositionX() )
{
return -1;
}
else
{
- if ( carea.Position().Y() > area.Position().Y() )
+ if ( carea.GetPositionY() > area.GetPositionY() )
{
return 1;
}
- else if ( carea.Position().Y() < area.Position().Y() )
+ else if ( carea.GetPositionY() < area.GetPositionY() )
{
return -1;
}
fPads.Remove(pad);
fPads.Compress();
+ delete pad;
// update cluster's data
fIsSaturated[0]=fIsSaturated[1]=kFALSE;
fMultiplicity[0]=fMultiplicity[1]=0;