Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CandHandle.h

Go to the documentation of this file.
00001 
00002 // $Id: CandHandle.h,v 1.31 2006/06/21 00:47:01 rhatcher Exp $
00003 //
00004 // CandHandle.h
00005 //
00006 // CandHandle is the base class for specialized access handles to
00007 // CandBase derived objects.
00008 //
00009 // Each concrete CandHandle must define a DupHandle function.
00010 //
00011 // Adapted from Babar's BtaCandidate (written by Gautier Hamel de
00012 // Monchenault and Bob Jacobsen).
00013 //
00014 // Author:  G. Irwin 2/2000
00016 
00017 #ifndef CANDHANDLE_H
00018 #define CANDHANDLE_H
00019 
00020 #include "TObject.h"
00021 
00022 #include "Candidate/CandBase.h"
00023 #include "Candidate/CandRefer.h"
00024 
00025 class CandBase;
00026 class CandRecord;
00027 class CandUid;
00028 class TIter;
00029 class ViewableNotifier;
00030 class VldContext;
00031 
00032 class CandHandle;
00033 std::ostream& operator<<(std::ostream& os, const CandHandle& ch);
00034 
00035 class CandHandle : public TObject
00036 {
00037 
00038 friend class CandBase;
00039 
00040 public:
00041    CandHandle();
00042    CandHandle(const CandHandle &ch);
00043    CandHandle(CandBase *cb);
00044    virtual ~CandHandle();
00045 
00046    CandHandle &operator=(const CandHandle &ch);
00047    Bool_t operator==(const CandHandle &ch) const;
00048    Bool_t operator!=(const CandHandle &ch) const;
00049 
00050    const CandHandle *AddDaughterLink(CandHandle &ch,
00051                                                   Bool_t check = kTRUE);
00052    const CandHandle *CloneInTree(const CandHandle &ch) const;
00053    virtual CandHandle *DupHandle() const;
00054    CandHandle *FindDaughter(const CandHandle *ch) const;
00055    const CandHandle *FindDaughter(const char *classname = 0,
00056                                   const char *objname = 0) const;
00057    const AlgConfig *GetAlgConfig() const;
00058    UInt_t GetArchUidInt() const;
00059    const CandBase *GetCandBase() const;
00060    CandBase *GetCandBase();
00061    CandRecord *GetCandRecord() const;
00062    const CandHandle *GetDaughter(Int_t ndau) const;
00063    TIter GetDaughterIterator() const;
00064    const CandHandle *GetLocalHandle() const;
00065    const CandHandle *GetMother() const;
00066    const char *GetName() const;
00067    static Int_t GetNAlloc() {return fsNAlloc;}
00068    Int_t GetNDaughters() const;
00069    Int_t GetNRefers() const;
00070    const char *GetTitle() const;
00071    UInt_t GetUidInt() const;
00072    ViewableNotifier *GetViewableNotifier() {return fViewableNotifier;}
00073    const VldContext *GetVldContext() const;
00074    Bool_t HasOverlapWith(const CandHandle &ch) const;
00075    Bool_t IsCloneOf(const CandHandle &ch) const;
00076    Bool_t IsComposite() const;
00077    virtual Bool_t IsEqual(const TObject *rhs) const;
00078    virtual Bool_t IsEquivalent(const TObject *rhs) const;
00079    Bool_t IsLocal() const;
00080    Bool_t IsLocked() const {return fLocked;}
00081    static Bool_t IsSlushyEnabled() {return fsSlushyEnabled;}
00082    Bool_t RemoveDaughter(CandHandle *ch);
00083    void SetCandRecord(CandRecord *cr);
00084    void SetName(const char *name);
00085    void SetLock();
00086    static void SetSlushyEnabled(Bool_t tf = kTRUE);
00087    void SetTitle(const char *title);
00088    void SetViewableNotifier(ViewableNotifier *vn = 0)
00089                                                {fViewableNotifier = vn;}
00090    virtual void Trace(const char *c = "") const;
00091 
00092    virtual void Print(Option_t *option="nid3") const;
00093    virtual std::ostream& FormatToOStream(std::ostream& os,
00094                                          Option_t *option="nid3") const;
00095 
00096 protected:
00097    CandBase *GetOwnedCandBase();
00098    const CandRefer &GetCandRefer() const {return fCandRefer;}
00099    const CandUid &GetCandUid() const;
00100 
00101 private:
00102    CandRefer fCandRefer;                           // Access to CandBase
00103    CandHandle *fMother;          // Mother CandHandle of this CandHandle
00104    Bool_t fLocked;           // If true, modifications are a fatal error
00105    static Int_t fsNAlloc;      // Current number of CandHandle instances
00106    static Bool_t fsSlushyEnabled;// Freeze Candidates only after read-in
00107    ViewableNotifier *fViewableNotifier;               
00108 
00109    void DropMotherLink();
00110    CandRefer &GetCandRefer() {return fCandRefer;}
00111    void SetMotherLink(CandHandle *ch);
00112 
00113 ClassDef(CandHandle,2)       // User Access channel for CandBase objects
00114 };
00115 
00116 #endif                                                   // CANDHANDLE_H

Generated on Mon Feb 15 11:06:28 2010 for loon by  doxygen 1.3.9.1