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

CandShowerSRList.cxx

Go to the documentation of this file.
00001 
00002 // $Id: CandShowerSRList.cxx,v 1.7 2005/02/25 15:42:18 musser Exp $
00003 //
00004 // CandShowerSRList.cxx
00005 //
00007 
00008 #include "Algorithm/AlgHandle.h"
00009 #include "MessageService/MsgService.h"
00010 #include "CandShowerSR/CandShowerSRList.h"
00011 #include "CandShowerSR/CandShowerSRListHandle.h"
00012 
00013 ClassImp(CandShowerSRList)
00014 
00015 //______________________________________________________________________
00016 CVSID("$Id: CandShowerSRList.cxx,v 1.7 2005/02/25 15:42:18 musser Exp $");
00017 
00018 //______________________________________________________________________
00019 CandShowerSRList::CandShowerSRList()
00020 {
00021   MSG("Cand", Msg::kDebug)
00022     << "Begin CandShowerSRList::CandShowerSRList() ctor: " << endl
00023     << "UidInt = " << GetUidInt()
00024     << ", ArchUidInt " << GetArchUidInt() << endl
00025     << "No. of links = " << GetNLinks() << endl
00026     << "End CandShowerSRList::CandShowerSRList() ctor." << endl;
00027 }
00028 
00029 //______________________________________________________________________
00030 CandShowerSRList::CandShowerSRList(AlgHandle &ah) :
00031   CandShowerList(ah)   // Should be the next class up on inheritance chain
00032 {
00033 
00034 // The sole purpose of this constructor is to transmit the AlgHandle
00035 // up the inheritance chain to CandBase without having to invoke the
00036 // full constructor of an intermediate Candidate type which the highest
00037 // level Candidate might inherit from.  One only wants to create the
00038 // LocalHandle and invoke the RunAlg() method in the lowest level class.
00039 }
00040 
00041 //______________________________________________________________________
00042 CandShowerSRList::CandShowerSRList(AlgHandle &ah, CandHandle &ch,
00043                                    CandContext &cx) :
00044   CandShowerList(ah)   // Should be the next class up on inheritance chain
00045 {
00046   CreateLocalHandle();
00047   MSG("Cand", Msg::kDebug)
00048     << "Begin CandShowerSRList::CandShowerSRList(AlgHandle &, CandHandle &, "
00049     << "CandContext &) ctor: " << endl
00050     << "UidInt = " << GetUidInt()
00051     << ", ArchUidInt " << GetArchUidInt() << endl
00052     << "No. of links = " << GetNLinks() << endl
00053     << "End CandShowerSRList::CandShowerSRList(AlgHandle &, CandHandle &, "
00054     << "CandContext &) ctor." << endl;
00055   
00056   // Run Algorithm to construct Candidate
00057   {                                                   // Start of scope.
00058     CandShowerSRListHandle cdh(this);          // cdh will go out of scope
00059     ch = cdh;                                       // after setting ch.
00060   }                                                     // End of scope.
00061   ah.RunAlg(ch, cx);
00062 }
00063 
00064 //______________________________________________________________________
00065 CandShowerSRList::CandShowerSRList(const CandShowerSRList &rhs) :
00066   CandShowerList(rhs)  // Should be the next class up on inheritance chain
00067 {
00068 
00069   //CreateLocalHandle(); // Moved to Dup function following copy-ctor call
00070   MSG("Cand", Msg::kDebug)
00071     << "Begin CandShowerSRList::CandShowerSRList"
00072     << "(const CandShowerSRList &rhs) ctor: " << endl
00073     << "UidInt = " << GetUidInt()
00074     << ", ArchUidInt " << GetArchUidInt() << endl
00075     << "No. of links = " << GetNLinks() << endl
00076     << "End CandShowerSRList::CandShowerSRList"
00077     << "(const CandShowerSRList &rhs) ctor." << endl;
00078 }
00079 
00080 //______________________________________________________________________
00081 CandShowerSRList::~CandShowerSRList()
00082 {
00083   MSG("Cand", Msg::kDebug)
00084     << "Begin CandShowerSRList::~CandShowerSRList() dtor: " << endl
00085     << "UidInt = " << GetUidInt()
00086     << ", ArchUidInt " << GetArchUidInt() << endl
00087     << "No. of links = " << GetNLinks() << endl
00088     << "End CandShowerSRList::~CandShowerSRList() dtor." << endl;
00089 }
00090 
00091 //______________________________________________________________________
00092 void CandShowerSRList::CreateLocalHandle()
00093 {
00094   SetLocalHandle(new CandShowerSRListHandle(this));
00095 }
00096 
00097 //______________________________________________________________________
00098 CandShowerSRList *CandShowerSRList::Dup() const
00099 {
00100 
00101   // Base copy ctor dups owned pointers, but defers copying Daughter List.
00102   // Daughter List copy is made in the derived class Dup() function.
00103   // This is because base class copy constructor hasn't yet created
00104   // fLocalHandle with a CandHandle* of the full derived type.
00105   CandShowerSRList *cb = new CandShowerSRList(*this); // Copy-ctor dups ptrs
00106   cb->CreateLocalHandle();   // Initializes fLocalHandle after copy-ctor
00107   TIter iterdau = GetDaughterIterator();
00108   CandHandle *dau;
00109   while ((dau=(CandHandle *) iterdau())) cb->AddDaughterLink(*dau);
00110   return cb;
00111 }
00112 
00113 //______________________________________________________________________
00114 Bool_t CandShowerSRList::IsEquivalent(const TObject *rhs) const
00115 {
00116   Bool_t result = true;
00117   if (!CandShowerList::IsEquivalent(rhs)) result = false;    // superclass
00118   TestDisplayCandBanner("CandShowerSRList");
00119   const CandShowerSRList* rCnd = dynamic_cast<const CandShowerSRList*>(rhs);
00120   if (rCnd == NULL) return false;
00121 
00122   TestNothing("CandShowerSRList");
00123   
00124   return result;
00125 }
00126 
00127 //______________________________________________________________________
00128 CandShowerSRListHandle CandShowerSRList::MakeCandidate(AlgHandle &ah,
00129                                                        CandContext &cx)
00130 {
00131   CandShowerSRListHandle cdh;
00132   new CandShowerSRList(ah, cdh, cx);    // cdh owns the new CandShowerSRList
00133   return cdh;
00134 }

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