ROOT logo
AliRoot » MUON » AliMUONVDigit

class AliMUONVDigit: public TObject

 \class AliMUONVDigit

 This is the base class of a MUON digit that most client code should deal with.
 There should be no reason to have to use a concrete class in most cases.

 All digits have basic features, like :

 - a way to identify it : detection element, electronics card and
   channel, cathode. Note that some static methods exists to compact
   those 4 informations into a single 4 bytes integer (stored in the
   fUniqueID data member present in all TObjects).

 - its charge

 - a set of boolean methods to indicate whether the digit has been calibrated, etc...

 In addition, if HasMCInformation is true, the digit store also the list
 of MC tracks that contributed to its charge

 Also, if HasGeometryInformation is true, the digit knows the position and
 the (half) dimensions (in cm) of the pad it corresponds to.

 Note 1.

 Please note that IsCalibrated and IsChargeInFC are two
 concepts closely related, but not equivalent, at least for SDigits.

 For instance a SDigit can have its charge in fC but not being calibrated.

 { SDigits coming from a simulation are yet to be merged (i.e. the
   SDigitStore can contain several SDigits objects per channel), so, while
   their charge is in femto-coulomb, they are not calibrated (e.g. pedestal
   is not subtracted yet). }

 Conversely, a calibrated (s)digit always has its charge in fC.

 \author Laurent Aphecetche, Subatech

Function Members (Methods)

 
    This is an abstract class, constructors will not be documented.
    Look at the header to check for available constructors.

public:
virtual~AliMUONVDigit()
voidTObject::AbstractMethod(const char* method) const
virtual Int_tADC() const
virtual voidAddCharge(Float_t q)
virtual voidAddTrack(Int_t, Float_t)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static UInt_tBuildUniqueID(Int_t detElemId, Int_t manuId, Int_t manuChannel, Int_t cathode)
virtual voidCalibrated(Bool_t value)
virtual Int_tCathode() const
static Int_tCathode(UInt_t uniqueID)
virtual Float_tCharge() const
virtual voidChargeInFC(Bool_t value = kTRUE)
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* object) const
virtual voidTObject::Copy(TObject& object) const
static voidDecodeUniqueID(UInt_t uniqueID, Int_t& detElemId, Int_t& manuId, Int_t& manuChannel, Int_t& cathode)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tDetElemId() const
static Int_tDetElemId(UInt_t uniqueID)
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
virtual voidEfficiencyApplied(Bool_t = kTRUE)
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*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 Bool_tHasMCInformation() const
virtual Int_tHit() 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_tIsCalibrated() const
virtual Bool_tIsChargeInFC() const
virtual Bool_tIsConverted() const
virtual Bool_tIsEfficiencyApplied() const
virtual Bool_tIsEqual(const TObject* object) const
virtual Bool_tTObject::IsFolder() const
virtual Bool_tIsNoiseOnly() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tIsSaturated() const
virtual Bool_tIsSortable() const
virtual Bool_tIsTracker() const
virtual Bool_tIsTrigger() const
virtual Bool_tIsUsed() const
Bool_tTObject::IsZombie() const
static Int_tLocalBoardChannel(UInt_t uniqueID)
static Int_tLocalBoardNumber(UInt_t uniqueID)
virtual voidTObject::ls(Option_t* option = "") const
virtual Int_tManuChannel() const
static Int_tManuChannel(UInt_t uniqueID)
virtual Int_tManuId() const
static Int_tManuId(UInt_t uniqueID)
voidTObject::MayNotUse(const char* method) const
virtual Bool_tMergeWith(const AliMUONVDigit& other)
virtual voidNoiseOnly(Bool_t = kTRUE)
virtual Bool_tTObject::Notify()
virtual Int_tNtracks() const
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)
AliMUONVDigit&operator=(const AliMUONVDigit&)
virtual Int_tPadX() const
virtual Int_tPadY() const
virtual voidTObject::Paint(Option_t* option = "")
virtual voidPatchTracks(Int_t)
virtual voidTObject::Pop()
virtual voidPrint(Option_t* opt = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidSaturated(Bool_t saturated = kTRUE)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
virtual voidSetADC(Int_t adc)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidSetCharge(Float_t q)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidSetHit(Int_t)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidSetPadXY(Int_t padx, Int_t pady)
virtual voidSetStatusMap(UInt_t statusMap)
virtual voidSetTime(Float_t)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual UInt_tStatusMap() 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 Float_tTime() const
virtual Int_tTrack(Int_t) const
virtual Float_tTrackCharge(Int_t) const
virtual voidTObject::UseCurrentStyle()
virtual voidUsed(Bool_t value)
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
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

Class Charts

Inheritance Chart:
TObject
AliMUONVDigit
AliMUONDigit
AliMUONRealDigit

Function documentation

~AliMUONVDigit()
 dtor
IsEqual(const TObject* object) const
 Whether we're equal to object.
 WARNING : only based on our identifiers (de,manu,channel,cathode), not our
 content (i.e. charge, status...)
Compare(const TObject* object) const
 Compare two digits, trying to get as complete an order as possible.
 We sort by DE, then by charge, then by manu, etc...

BuildUniqueID(Int_t detElemId, Int_t manuId, Int_t manuChannel, Int_t cathode)
 Build a single integer with id information
DetElemId(UInt_t uniqueID)
 Return detection element id part of the uniqueID
ManuChannel(UInt_t uniqueID)
 Return manuChannel part of the uniqueID
ManuId(UInt_t uniqueID)
 Return manuId part of the uniqueID
Cathode(UInt_t uniqueID)
 Return the cathode part of the uniqueID
DecodeUniqueID(UInt_t uniqueID, Int_t& detElemId, Int_t& manuId, Int_t& manuChannel, Int_t& cathode)
 Unpack uniqueID into 4 elements
GetName() const
 Return the name of this digit, composed of its id parts.
Print(Option_t* opt = "") const
 Dump to screen.

 If opt=="tracks", info on tracks are printed too.

 The last part of the printout indicated the status of the digit :
 (S) means that digit is saturated
 (C) means that digit has been calibrated
 [fC] means that digit's charge is in femto-coulombs (fC)
 (U) means that digit is part of (has been used in) a cluster
 (+) is noise-only digit (added by the simulation)
 (X) has the IsConverted flag on (e.g. has been embedded)
Bool_t IsSortable() const
 Advertise that we can be sorted in TCollections
{ return kTRUE; }
Int_t DetElemId() const
 The detection element this digit belongs to
Int_t PadX() const
 The x-index of this digit (>=0)
Int_t PadY() const
 The y-index of this digit (>=0)
Int_t Cathode() const
 Cathode number this digit is on (0 or 1)
Float_t Charge() const
 The charge of this digit, calibrated or not depending on IsCalibrated()
Int_t ADC() const
 Raw ADC value of this digit
Int_t ManuId() const
 The electronic card id this digit belongs to (manuId for tracker, localboardId for trigger)
Int_t ManuChannel() const
 The channel within ManuId() this digit belongs to (manuChannel for tracker, localBoardChannel for trigger)
Bool_t IsSaturated() const
 Whether the ADC has saturated
void Saturated(Bool_t saturated = kTRUE)
 Set the saturation status
Bool_t IsNoiseOnly() const
 Whether this (simulated) digit is purely noise
void NoiseOnly(Bool_t = kTRUE)
 Set the noiseOnly status
{ }
Bool_t IsEfficiencyApplied() const
 Whether this (simulated) digit got corrected by chamber efficiency
void EfficiencyApplied(Bool_t = kTRUE)
 Set the efficiencyApplied status
{}
Bool_t IsCalibrated() const
 Whether this digit has been calibrated or not (see note 1 in AliMUONVDigit.cxx)
void Calibrated(Bool_t value)
 Set the calibrated status (see note 1 in AliMUONVDigit.cxx)
Bool_t IsChargeInFC() const
 Whether this digit has charge in femto coulomb (see note 1 in AliMUONVDigit.cxx)
{ return kFALSE; }
void ChargeInFC(Bool_t value = kTRUE)
 Set the unit value (see note 1 in AliMUONVDigit.cxx)
Bool_t IsConverted() const
 Whether or not this digit was obtained from a conversion (e.g. real to simulated)
{ return kFALSE; }
Bool_t IsUsed() const
 Whether this digit is used somewhere (typically in a cluster)
void Used(Bool_t value)
 Set the used status
UInt_t StatusMap() const
 A word describing the status of the neighbours of this digit
void SetStatusMap(UInt_t statusMap)
 Set the statusMap
void SetADC(Int_t adc)
 Set the ADC value
void SetPadXY(Int_t padx, Int_t pady)
 Set the ix and iy of this digit
void SetCharge(Float_t q)
 Set the charge of this digit
void AddCharge(Float_t q)
 Add a charge
{ SetCharge(Charge()+q); }
Bool_t MergeWith(const AliMUONVDigit& other)
 Merge this with other
Bool_t IsTracker() const
 Whether this digit is a tracker digit (false if belongs to trigger)
{ return !IsTrigger(); }
Bool_t IsTrigger() const
 FIXME: how to get this information w/o hard-coding, yet being efficient ?
    Use one fFlags that must be set when creating the digit for instance ?

{ return DetElemId()>=1100; }
Bool_t HasMCInformation() const
 Below are methods only relevant for MC digigts.
 Whether we implement MC methods.
Int_t Hit() const
 Hit number that contributed to this simulated digit
{ return 0; }
void SetHit(Int_t )
 Set the hit number
{ }
Float_t Time() const
 Hit age
{return 0;}
void SetTime(Float_t )
 Set hit age
{ }
Int_t Ntracks() const
 Number of tracks contributing to this digit
{ return 0; }
void AddTrack(Int_t , Float_t )
 Add a track (and its charge) to the list of tracks we handle
{}
Int_t Track(Int_t ) const
 Return the i-th track number
{ return 0; }
Float_t TrackCharge(Int_t ) const
 Return the i-th track charge
{ return 0; }
void PatchTracks(Int_t )
 Patch track with a mask
{}
Int_t LocalBoardNumber(UInt_t uniqueID)
 Return the localBoardNumber from the uniqueID
{ return ManuId(uniqueID); }
Int_t LocalBoardChannel(UInt_t uniqueID)
 Return the localBoardChannel from the uniqueID
{ return ManuChannel(uniqueID); }