class HPidTrackCand: public TObject

_HADES_CLASS_DESCRIPTION



 HPidTrackCand

 In this container matched hits from all detectors are stored.
 The class does not define the algorithm how the matching is done.
 This is defined in HMetaMatch (coarse matching) and HPidTrackFiller (refined
 matching taking into account momentum values.

 The structure of this class allows user to store information about
 the correlated hits as well as information about all hits in neighborhood
 of hits which contribute to the track candidate. The hits in
 the neighborhood are dedicated for identification close pairs
 as it was discussed at the PID subgroup meeting.
 ATTENTION: THE HANDLING OF CLOSE BY HITS IS NOT YET IMPKLEMENTED
 THE CLASS ONLY STORES THE DISTANCE OF THE CLOSEST HADRON AND LEPTON CANDIDATES!



 Track Cleaner flags
 To clean the PidTrackCand objects from unwanted fakes
 the object carries a bitfield (32 bit Int_t). The different
 qualitiy criteria can be used to select the best reconstructed
 candidate in the case of multiple use of single detector hits.
 The single bit numbers are defined by

enum EflagBits {kIsDoubleHitRICH       =  0,
kIsDoubleHitInnerMDC   =  1,
kIsDoubleHitOuterMDC   =  2,
	            kIsDoubleHitMETA       =  3,    

	            kIsBestHitRICH         =  4,    //  (by number of pads)
	            kIsBestHitInnerMDC     =  5,    //  (by chi2)
	            kIsBestHitOuterMDC     =  6,    //  (by chi2)
	            kIsBestHitMETA         =  7,    //  (by META match quality)

	            kIsBestRKMETA          =  8,    //  (by RK META match quality)
                  kIsBestRKRICH          =  9,    //  (by RK RICH match quality)
	            kIsBestRK              = 10,    //  (by RK chi2, none fitted outer segments with lower priority)
		    kIsBestSPLINE          = 11,    //  (by chi2)
	            kIsBestKICK            = 12,    //  (by pull)
	            kIsBestRKRKMETA        = 13,    //  (by RK chi2 * RK META match quality)
	            kIsBestRKRKRICH        = 14,     // (by RK chi2 * RK RICH match quality)
	            kIsBestRKMETAQA        = 15,     // (by RK chi2 * META match quality)

	            kIsAcceptedHitRICH     = 16,    // remember if the hit was been taken into account
	            kIsAcceptedHitInnerMDC = 17,    
kIsAcceptedHitOuterMDC = 18,
	            kIsAcceptedHitMETA     = 19,    
	            kIsAcceptedRKMETA      = 20,    
	            kIsAcceptedRKRICH      = 21,    
	            kIsAcceptedRK          = 22,    
	            kIsAcceptedSPLINE      = 23,    
	            kIsAcceptedKICK        = 24,    
	            kIsAcceptedRKRKMETA    = 25,    
	            kIsAcceptedRKRKRICH    = 26,    
	            kIsAcceptedRKMETAQA    = 27,    
                  kIsLepton              = 29,    //  mark the selected leptons
	            kIsUsed                = 30,    //  mark the object as arleady used
	            kIsRejected            = 31     //  mark the object as rejected

  };

  The selection of tracks and setting of the corresponding flags is performed
  by HPidTrackCleaner and HPidTrackSorter classes (see the documentation).

  For example void  setFlagBit(HPidTrackCand::kIsDoubleRICH) sets the bit flag that
  the RICH hit has been used in more than one HPidTrackCand object.
  Correspondingly one can ask for the flag with Bool_t isFlagBit(HPidTrackCand::kIsDoubleRICH)
  void   setFlagBit(Int_t bit) and  Bool_t isFlagBit(Int_t bit) works for the bitnumber (0-31) specified
  manually (if one knows what one is doing....)
  void   setFlagBit   (EflagBits bit)
  void   unsetFlagBit (EflagBits bit)
  Bool_t isFlagBit    (EflagBits bit)
  void   setFlagBit   (Int_t bit);
  void   unsetFlagBit (Int_t bit);
  Bool_t isFlagBit    (Int_t bit);
  void   setFlagBitByValue(EflagBits bit, Bool_t val) sets/unsets bit depending on val
  void   setFlagBitByValue(Int_t     bit, Bool_t val) sets/unsets bit depending on val
  Bool_t isFlagDoubleHit ()           check all Double_t hits flags simultanously (false if none set)
  Bool_t isFlagAllBestHit()           check all best hit flags simultanously    (true if all are set)
  Int_t  getDoubleHitsLeptons() returns the 4 bit Double_t hit word as Int_t //  Int_t  getDoubleHitsHadrons() returns the 3 bit Double_t hit word (excluding RICH) as Int_t //  Bool_t isFlagNoBestHit ()           check all best hit flags simultanously    (true if none set)
  Int_t  getFlagField()               do what you want with flags field
  Bool_t isFlagAND(Int_t num,Int_t fl, ...) check all flags in argument simultanously (false if none set)
  Bool_t isFlagOR(Int_t num,Int_t fl, ...)  check all flags in argument simultanously (true if any set)
  void   printFlags(TString comment="") prints all flags in binary representation.
  void   printInfo()                    prints indices of detector hits + quality criteria + flags

  The function
  Bool_t select(Bool_t (*function)(HPidTrackCand* ))  { return  (*function)(this); }
  taking a pointer to function with argument HPidTrackCand* returning a Bool_t allows
  todo complex selection on the HPidTrackCand object as one has
  full access to all members of HPidTrackCand inside the test function.
  The function pointer can be a pointer to a global function or member function
  of an Object for example:

  Bool_t test(HPidTrackCand* cand){               // global function
           if ( put all selection criteria here ) return kTRUE;
           else                                   return kFALSE;
  } or

  static Bool_t dummy::test(HPidTrackCand* cand){   // member function of object dummy
                                                    // needs to be declared static !
           if ( put all selection criteria here ) return kTRUE;
           else                                   return kFALSE;
  }
  would be called in the code like

  dummy d;
  HPidTrackCand* p= new HPidTrackCand() // just to get an object
  p->select(test))        // global function
  p->select(dummy::test)) // member function of object dummy (static call without object creation)
  p->select(d.test))      // member function of real object dummy



Function Members (Methods)

public:
HPidTrackCand()
HPidTrackCand(const HPidTrackCand&)
HPidTrackCand(HMetaMatch* pMetaMatch, Int_t iMatchIndex)
~HPidTrackCand()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static HCategory*buildPidTrackCandCategory()
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidClear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
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 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
Int_tgetDoubleHitsHadrons()
Int_tgetDoubleHitsLeptons()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Int_tgetFlagField()
HPidHitData*getHitData()
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
HPidTrackData*getTrackData()
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
Bool_tisFlagAllBestHit()
Bool_tisFlagAND(Int_t num)
Bool_tisFlagBit(HPidTrackCand::EflagBits bit)
Bool_tisFlagBit(Int_t bit)
Bool_tisFlagDoubleHit()
Bool_tisFlagNoBestHit()
Bool_tisFlagOR(Int_t num)
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
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)
HPidTrackCand&operator=(const HPidTrackCand&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
voidprint() const
virtual voidPrint(Option_t* o = "") const
voidprintFlags(TString comment = "")
voidprintInfo()
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
Bool_tselect(Bool_t (*)(HPidTrackCand*) function)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidsetFlagBit(HPidTrackCand::EflagBits bit)
voidsetFlagBit(Int_t bit)
voidsetFlagBitByValue(HPidTrackCand::EflagBits bit, Bool_t val)
voidsetFlagBitByValue(Int_t bit, Bool_t val)
voidsetFlagField(Int_t field)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& 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
voidunsetFlagBit(HPidTrackCand::EflagBits bit)
voidunsetFlagBit(Int_t bit)
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
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

public:
enum EflagBits { kIsDoubleHitRICH
kIsDoubleHitInnerMDC
kIsDoubleHitOuterMDC
kIsDoubleHitMETA
kIsBestHitRICH
kIsBestHitInnerMDC
kIsBestHitOuterMDC
kIsBestHitMETA
kIsBestRKMETA
kIsBestRKRICH
kIsBestRK
kIsBestSPLINE
kIsBestKICK
kIsBestRKRKMETA
kIsBestRKRKRICH
kIsBestRKMETAQA
kIsAcceptedHitRICH
kIsAcceptedHitInnerMDC
kIsAcceptedHitOuterMDC
kIsAcceptedHitMETA
kIsAcceptedRKMETA
kIsAcceptedRKRICH
kIsAcceptedRK
kIsAcceptedSPLINE
kIsAcceptedKICK
kIsAcceptedRKRKMETA
kIsAcceptedRKRKRICH
kIsAcceptedRKMETAQA
kIsLepton
kIsUsed
kIsRejected
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
public:
Int_tflagsstored flags for Double_t hits, best hits etc (bitwise) . See enum definition for the bit masks
HPidHitDataitsHitDataThe hit data object which holds all PID-relevant information for this class
HPidTrackDataitsTrackDataThe track data object which holds all PID-relevant information for this class

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HPidTrackCand(const HPidTrackCand& )
 Default HPidTrackCand ctor.
HPidTrackCand(HMetaMatch* pMetaMatch, Int_t iMatchIndex)
void setFlagBit(Int_t bit)
 set given bit in flag (0-32)
void unsetFlagBit(Int_t bit)
 unset given bit in flag (0-32)
Bool_t isFlagBit(Int_t bit)
 check given bit in flag (0-32)
 return kTRUE if bit is set
Bool_t isFlagOR(Int_t num,...)
 check given number of bits in argument in flag (0-32)
 return kTRUE if any bit is set
Bool_t isFlagAND(Int_t num, ...)
 check given number of bits in argument in flag (0-32)
 return kTRUE if all bits are set
void printFlags(TString comment = "")
 print the flag field in binary representation
 Comment will be printed at the end of line
void printInfo()
 print one candidate object and the flags which have been
 already set to HPidTrackCand
void Clear(Option_t* = "")
void print(void)
HCategory* buildPidTrackCandCategory(void)
void Streamer(TBuffer& b)
 Stream an object of class HPidTrackCand.
HPidTrackCand(const HPidTrackCand& )
void setFlagBit(EflagBits bit)
{ flags |= ( 0x01 << bit ); }
void unsetFlagBit(EflagBits bit)
{ flags &= ~( 0x01 << bit ); }
Bool_t isFlagBit(EflagBits bit)
{ return (flags >> bit ) & 0x01 ; }
void setFlagBitByValue(EflagBits bit, Bool_t val)
{ val ? setFlagBit(bit) : unsetFlagBit(bit); }
void setFlagBitByValue(Int_t bit, Bool_t val)
{ val ? setFlagBit(bit) : unsetFlagBit(bit); }
Bool_t isFlagDoubleHit()
{ return (flags & 0xF) == 0x0 ? kFALSE : kTRUE; }
Bool_t isFlagAllBestHit()
{ return ((flags >> 4 ) & 0xF) == 0xF ? kTRUE : kFALSE; }
Bool_t isFlagNoBestHit()
{ return ((flags >> 4 ) & 0xF) == 0x0 ? kTRUE : kFALSE; }
Int_t getFlagField()
{ return flags; }
void setFlagField(Int_t field)
{ flags = field; }
Int_t getDoubleHitsLeptons()
{ return (flags & 0xF);}
Int_t getDoubleHitsHadrons()
{ return ((flags >> 1) & 0x7);}
Bool_t select(Bool_t (*)(HPidTrackCand*) function)
{ return (*function)(this); }
void Print(Option_t* o = "") const
{ print(); }
HPidTrackData* getTrackData(void)
{return &itsTrackData;}
HPidHitData* getHitData(void)
{return &itsHitData;}

Author: Marcin Jaskula 28/06/2002
Last change: Sat May 22 13:07:31 2010
Last generated: 2010-05-22 13:07

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.