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

CandChopList.cxx

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

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