00001 00002 // $Id: CandDeMuxDigitHandle.cxx,v 1.4 2003/06/20 20:57:09 rhatcher Exp $ 00003 // 00004 // CandDeMuxDigitHandle.cxx 00005 // 00006 // CandDeMuxDigitHandle is the specialized access handle to 00007 // CandDeMuxDigit. 00008 // 00009 // Each concrete CandHandle must define a DupHandle function. 00010 // 00011 // Author: G. Irwin 5/2002 00013 00014 #include <cassert> 00015 #include <iostream> 00016 00017 #include "CandDigit/CandDeMuxDigitHandle.h" 00018 #include "MessageService/MsgService.h" 00019 00020 ClassImp(CandDeMuxDigitHandle) 00021 00022 //______________________________________________________________________ 00023 CVSID("$Id: CandDeMuxDigitHandle.cxx,v 1.4 2003/06/20 20:57:09 rhatcher Exp $"); 00024 00025 //______________________________________________________________________ 00026 CandDeMuxDigitHandle::CandDeMuxDigitHandle() 00027 { 00028 } 00029 00030 //______________________________________________________________________ 00031 CandDeMuxDigitHandle::CandDeMuxDigitHandle(const 00032 CandDeMuxDigitHandle &cddh) : 00033 CandDigitHandle(cddh) 00034 { 00035 } 00036 00037 //______________________________________________________________________ 00038 CandDeMuxDigitHandle::CandDeMuxDigitHandle(CandDeMuxDigit *cdd) : 00039 CandDigitHandle(cdd) 00040 { 00041 } 00042 00043 //______________________________________________________________________ 00044 CandDeMuxDigitHandle::~CandDeMuxDigitHandle() 00045 { 00046 } 00047 00048 //______________________________________________________________________ 00049 CandDeMuxDigitHandle CandDeMuxDigitHandle::DupCandFromBase( 00050 const CandDigitHandle &cdh) 00051 { 00052 // Static factory method for dup'ing Candidate from its own base class. 00053 // Base copy ctor dups owned pointers, but defers copying Daughter List. 00054 // Daughter List copy is made in the derived class Dup() function. 00055 // This is because base class copy constructor hasn't yet created 00056 // fLocalHandle with a CandHandle* of the full derived type. 00057 CandDeMuxDigit *cb = 00058 new CandDeMuxDigit(*((CandDigit *) cdh.GetCandBase())); // Special 00059 cb->CreateLocalHandle(); // Initializes fLocalHandle after copy-ctor 00060 TIter iterdau = cdh.GetDaughterIterator(); 00061 CandHandle *dau; 00062 while ((dau=(CandHandle *) iterdau())) cb->AddDaughterLink(*dau); 00063 return CandDeMuxDigitHandle(cb); 00064 } 00065 00066 //______________________________________________________________________ 00067 CandDeMuxDigitHandle *CandDeMuxDigitHandle::DupHandle() const 00068 { 00069 return (new CandDeMuxDigitHandle(*this)); 00070 } 00071 00072 //______________________________________________________________________ 00073 Int_t CandDeMuxDigitHandle::GetDeMuxDigitFlagWord() const 00074 { 00075 return ((CandDeMuxDigit *) GetCandBase())->fDeMuxDigitFlag; 00076 } 00077 00078 //______________________________________________________________________ 00079 void CandDeMuxDigitHandle::SetDeMuxDigitFlagBit( 00080 CandDeMuxDigit::DeMuxDigitFlag_t ddflag) 00081 { 00082 00083 // Turn indicated bit(s) on 00084 ((CandDeMuxDigit *) GetOwnedCandBase())->fDeMuxDigitFlag = 00085 ((CandDeMuxDigit *) GetCandBase())->fDeMuxDigitFlag | ddflag; 00086 } 00087 00088 //______________________________________________________________________ 00089 void CandDeMuxDigitHandle::SetDeMuxDigitFlagWord(Int_t ddflag) 00090 { 00091 00092 // Set whole word 00093 ((CandDeMuxDigit *) GetOwnedCandBase())->fDeMuxDigitFlag = ddflag; 00094 } 00095 00096 //______________________________________________________________________ 00097 void CandDeMuxDigitHandle::UnSetDeMuxDigitFlagBit( 00098 CandDeMuxDigit::DeMuxDigitFlag_t ddflag) 00099 { 00100 00101 // Turn indicated bit(s) off 00102 ((CandDeMuxDigit *) GetOwnedCandBase())->fDeMuxDigitFlag = 00103 ((CandDeMuxDigit *) GetCandBase())->fDeMuxDigitFlag & ~ddflag; 00104 } 00105 00106 //______________________________________________________________________ 00107 void CandDeMuxDigitHandle::Trace(const char *c) const 00108 { 00109 MSG("Cand", Msg::kDebug) 00110 << "**********Begin CandDeMuxDigitHandle::Trace(\"" << c << "\")" 00111 << endl 00112 << "Information from CandDeMuxDigitHandle's CandDigitHandle: " 00113 << endl; 00114 CandDigitHandle::Trace(c); 00115 MSG("Cand", Msg::kDebug) 00116 << "**********End CandDeMuxDigitHandle::Trace(\"" << c << "\")" 00117 << endl; 00118 } 00119 00120 XXXITRIMP(CandDeMuxDigitHandle)
1.3.9.1