ROOT logo
AliRoot » MUON » AliMUONPad

class AliMUONPad: public TObject

 \class AliMUONPad

 Object gathering information about a hit pad.

 Can be seen as a combination of a Digit (which brings the charge)
 and an MpPad (which brings location and position)

 Also provided are some static functions to compute overlap and
 get neighboring information.

 \author Laurent Aphecetche

Function Members (Methods)

public:
AliMUONPad()
AliMUONPad(const AliMUONPad&)
AliMUONPad(const TVector2& position, const TVector2& dimensions, Double_t charge)
AliMUONPad(Double_t x, Double_t y, Double_t dx, Double_t dy, Double_t charge)
AliMUONPad(Int_t detElemId, Int_t cathode, Int_t ix, Int_t iy, Double_t x, Double_t y, Double_t dx, Double_t dy, Double_t charge)
virtual~AliMUONPad()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
static Bool_tAreNeighbours(const AliMUONPad& d1, const AliMUONPad& d2)
static Bool_tAreOverlapping(const AliMUONPad& d1, const AliMUONPad& d2, const TVector2& precision)
static Bool_tAreOverlapping(const AliMUONPad& d1, const AliMUONPad& d2, const TVector2& precision, AliMpArea& overlapArea)
voidBackupCharge()
virtual voidTObject::Browse(TBrowser* b)
Int_tCathode() const
Double_tCharge() const
Double_tChargeBackup() const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tCompare(const TObject* obj) const
Double_tCoord(Int_t ixy) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
Int_tDetElemId() const
TVector2Dimensions() const
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
Double_tDX() const
Double_tDY() const
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
Bool_tIsReal() const
Bool_tIsSaturated() const
virtual Bool_tIsSortable() const
Bool_tIsUsed() const
Bool_tTObject::IsZombie() const
Int_tIx() const
Int_tIy() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliMUONPad&operator=(const AliMUONPad&)
static AliMpAreaOverlap(const AliMUONPad& d1, const AliMUONPad& d2)
virtual voidPaint(Option_t* opt = "")
virtual voidTObject::Pop()
TVector2Position() const
virtual voidPrint(Option_t* opt = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidRelease()
voidTObject::ResetBit(UInt_t f)
voidRevertCharge()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCharge(Double_t charge)
voidSetChargeBackup(Double_t charge)
voidSetClusterId(Int_t id)
voidSetCoord(Int_t ixy, Double_t Coord)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetReal(Bool_t val)
voidSetSaturated(Bool_t val)
voidSetSize(Int_t ixy, Double_t Size)
voidSetStatus(Int_t status)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidShift(Int_t ixy, Double_t shift)
virtual voidShowMembers(TMemberInspector&)
Double_tSize(Int_t ixy) const
Int_tStatus() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
Double_tX() const
Double_tY() const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
voidInit(Int_t detElemId, Int_t cathode, Int_t ix, Int_t iy, const TVector2& position, const TVector2& dimensions, Double_t charge)

Data Members

private:
Int_tfCathode/< cathode number
Double_tfCharge/< pad charge
Double_tfChargeBackup/< backup charge (usefull if clustering somehow plays with the charge, this one is the "original" one)
Int_tfClusterId/< cluster id this pad belongs to (-1 if not attached to a cluster)
Int_tfDetElemId/< detection element id
TVector2fDimensions/< half dimensions in x and y (cm)
Bool_tfIsReal/< whether this is a real pad or a virtual one
Bool_tfIsSaturated/< whether this pad is saturated or not
Int_tfIx/< x-index
Int_tfIy/< y-index
TVector2fPosition/< positions in x and y (cm)
Int_tfStatus/< status word

Class Charts

Inheritance Chart:
TObject
AliMUONPad

Function documentation

AliMUONPad()
 Default ctor
AliMUONPad(Int_t detElemId, Int_t cathode, Int_t ix, Int_t iy, Double_t x, Double_t y, Double_t dx, Double_t dy, Double_t charge)
 Normal ctor, using full information
AliMUONPad(Double_t x, Double_t y, Double_t dx, Double_t dy, Double_t charge)
 Truncated constructor (w/o DE, cath, ix, iy)
AliMUONPad(const TVector2& position, const TVector2& dimensions, Double_t charge)
 Alternate ctor
~AliMUONPad()
 Dtor
AreNeighbours(const AliMUONPad& d1, const AliMUONPad& d2)
 Whether 2 pads are neighbours or not
AreOverlapping(const AliMUONPad& d1, const AliMUONPad& d2, const TVector2& precision)
 Checks the overlap between 2 pads.
 The actual overlap is computed not on d1 and d2, but on d1 and d2
 "re-scaled" using the precision vector (conceptually equivalent to
 d.Dimensions() += precision)

 So, if the elements (x,y) of precision are :

 - positive, the overlap is "computed" from smaller d1 and d2
   which is, modulo the precision, what you would think as a normal
   overlap calculation
 - negative, overlap is from "bigger" d1 and d2, which is usefull to "tweek"
   what we call an overlap, e.g. to consider 2 pads touching only by their
   corners to be overlapping.
AreOverlapping(const AliMUONPad& d1, const AliMUONPad& d2, const TVector2& precision, AliMpArea& overlapArea)
 Checks the overlap between 2 pads, and returns the overlap area

 See comments on the other AreOverlapping method, too : in this
 method, the overlapRegion does *not* depend on the precision parameter,
 which is only used to decide whether the pads are overlapping, while
 the actual overlap region is computed w/o reference to precision.

Compare(const TObject* obj) const
 Compare 2 pads.
 Ordering is as complete as possible.
Coord(Int_t ixy) const
 To be friendly and backward compatible with AZ code, which
 used that kind of coordinate accessing.
Init(Int_t detElemId, Int_t cathode, Int_t ix, Int_t iy, const TVector2& position, const TVector2& dimensions, Double_t charge)
 Called by all the ctors
Overlap(const AliMUONPad& d1, const AliMUONPad& d2)
 Return the overlap region between two pads
Paint(Option_t* opt = "")
 Paint pad on screen
Print(Option_t* opt = "") const
 Printout
SetCoord(Int_t ixy, Double_t Coord)
 Set the pad coordinate (ixy=0 means x, ixy=1 means y)
SetSize(Int_t ixy, Double_t Size)
 Set the pad half size (ixy=0 means x half size, ixy=1 means y half size)
Shift(Int_t ixy, Double_t shift)
 Shift the position by "shift"
Size(Int_t ixy) const
 Returns the half size along a direction, given by ixy
 (see SetSize for ixy meaning)
AliMUONPad()
void BackupCharge()
 \brief Backup charge
 Usefull if clustering somehow plays with the charge, this one is the "original" one
Int_t Cathode() const
 Return cathode number
{ return fCathode; }
Double_t Charge() const
 Return pad charge
{ return fCharge; }
Double_t ChargeBackup() const
 Return backup charge
{ return fChargeBackup; }
Int_t DetElemId() const
 Return detection element id
{ return fDetElemId; }
TVector2 Dimensions() const
 Return half dimensions in x and y (cm)
{ return fDimensions; }
Double_t DX() const
 Return half dimensions in x (cm)
{ return fDimensions.X(); }
Double_t DY() const
 Return  half dimensions in y (cm)
{ return fDimensions.Y(); }
Bool_t IsReal() const
 Return info whether this is a real pad or a virtual one
{ return fIsReal; }
Bool_t IsSaturated() const
 Return info whether this pad is saturated or not
{ return fIsSaturated; }
Bool_t IsSortable() const
 Return true as the function Compare is implemented
{ return kTRUE; }
Bool_t IsUsed() const
 Return true if is used
{ return fClusterId >= 0; }
Int_t Ix() const
 Return x-index
{ return fIx; }
Int_t Iy() const
 Return y-index
{ return fIy; }
TVector2 Position() const
 Return positions in x and y (cm)
{ return fPosition; }
void Release()
 Detach this pad from a cluster
{ fClusterId = -1; }
void RevertCharge()
 Set charge to value in backup charge
void SetCharge(Double_t charge)
 Set charge
{ fCharge = charge; }
void SetChargeBackup(Double_t charge)
 Set charge backup
{ fChargeBackup = charge; }
void SetStatus(Int_t status)
 Set status word
{ fStatus = status; }
void SetClusterId(Int_t id)
 \brief Set cluster id this pad belongs to
 -1 if not attached to a cluster
{ fClusterId = id; }
void SetSaturated(Bool_t val)
 Set info whether this pad is saturated or not
{ fIsSaturated = val; }
void SetReal(Bool_t val)
 Set info whether this is a real pad or a virtual one
{ fIsReal = val; }
Int_t Status() const
 Return status word
{ return fStatus; }
Double_t X() const
 Return position in x (cm)
{ return fPosition.X(); }
Double_t Y() const
 Return position in y (cm)
{ return fPosition.Y(); }