_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
HPidTrackCand() | |
HPidTrackCand(const HPidTrackCand&) | |
HPidTrackCand(HMetaMatch* pMetaMatch, Int_t iMatchIndex) | |
~HPidTrackCand() | |
void | TObject::AbstractMethod(const char* method) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | TObject::Browse(TBrowser* b) |
static HCategory* | buildPidTrackCandCategory() |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | Clear(Option_t* = "") |
virtual TObject* | TObject::Clone(const char* newname = "") const |
virtual Int_t | TObject::Compare(const TObject* obj) const |
virtual void | TObject::Copy(TObject& object) const |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
virtual void | TObject::Dump() constMENU |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
virtual void | TObject::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_t | getDoubleHitsHadrons() |
Int_t | getDoubleHitsLeptons() |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
Int_t | getFlagField() |
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_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
virtual const char* | TObject::GetTitle() const |
HPidTrackData* | getTrackData() |
virtual UInt_t | TObject::GetUniqueID() const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TObject::Hash() const |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
virtual void | TObject::Inspect() constMENU |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
Bool_t | isFlagAllBestHit() |
Bool_t | isFlagAND(Int_t num) |
Bool_t | isFlagBit(HPidTrackCand::EflagBits bit) |
Bool_t | isFlagBit(Int_t bit) |
Bool_t | isFlagDoubleHit() |
Bool_t | isFlagNoBestHit() |
Bool_t | isFlagOR(Int_t num) |
virtual Bool_t | TObject::IsFolder() const |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TObject::IsSortable() const |
Bool_t | TObject::IsZombie() const |
virtual void | TObject::ls(Option_t* option = "") const |
void | TObject::MayNotUse(const char* method) const |
virtual Bool_t | TObject::Notify() |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::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 void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
void | print() const |
virtual void | Print(Option_t* o = "") const |
void | printFlags(TString comment = "") |
void | printInfo() |
virtual Int_t | TObject::Read(const char* name) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
void | TObject::ResetBit(UInt_t f) |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "") |
Bool_t | select(Bool_t (*)(HPidTrackCand*) function) |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
void | setFlagBit(HPidTrackCand::EflagBits bit) |
void | setFlagBit(Int_t bit) |
void | setFlagBitByValue(HPidTrackCand::EflagBits bit, Bool_t val) |
void | setFlagBitByValue(Int_t bit, Bool_t val) |
void | setFlagField(Int_t field) |
static void | TObject::SetObjectStat(Bool_t stat) |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | ShowMembers(TMemberInspector& insp, char* parent) |
virtual void | Streamer(TBuffer& b) |
void | StreamerNVirtual(TBuffer& b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
void | unsetFlagBit(HPidTrackCand::EflagBits bit) |
void | unsetFlagBit(Int_t bit) |
virtual void | TObject::UseCurrentStyle() |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
void | TObject::MakeZombie() |
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 | ||
}; |
Int_t | flags | stored flags for Double_t hits, best hits etc (bitwise) . See enum definition for the bit masks |
HPidHitData | itsHitData | The hit data object which holds all PID-relevant information for this class |
HPidTrackData | itsTrackData | The track data object which holds all PID-relevant information for this class |
check given number of bits in argument in flag (0-32) return kTRUE if any bit is set
check given number of bits in argument in flag (0-32) return kTRUE if all bits are set
print the flag field in binary representation Comment will be printed at the end of line
print one candidate object and the flags which have been already set to HPidTrackCand