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

CandFitTrackList.cxx

Go to the documentation of this file.
00001 
00002 // $Id: CandFitTrackList.cxx,v 1.3 2003/10/12 21:17:03 gmieg Exp $
00003 //
00004 // CandFitTrackList.cxx
00005 //
00006 // This is an abstract Event Candidate (Reconstruction) object.
00007 // CandFitTrackList is descended from CandTrackList.
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 "RecoBase/CandFitTrackList.h"
00018 #include "RecoBase/CandFitTrackListHandle.h"
00019 
00020 ClassImp(CandFitTrackList)
00021 
00022 //______________________________________________________________________
00023 CVSID("$Id: CandFitTrackList.cxx,v 1.3 2003/10/12 21:17:03 gmieg Exp $");
00024 
00025 //______________________________________________________________________
00026 CandFitTrackList::CandFitTrackList()
00027 {
00028   MSG("Cand", Msg::kDebug)
00029           << "Begin CandFitTrackList::CandFitTrackList() ctor: " << endl
00030                                            << "UidInt = " << GetUidInt()
00031                            << ", ArchUidInt " << GetArchUidInt() << endl
00032                              << "No. of links = " << GetNLinks() << endl
00033             << "End CandFitTrackList::CandFitTrackList() ctor." << endl;
00034 }
00035 
00036 //______________________________________________________________________
00037 CandFitTrackList::CandFitTrackList(AlgHandle &ah) :
00038   CandTrackList(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 CandFitTrackList::CandFitTrackList(AlgHandle &ah, CandHandle &ch,
00050                                                       CandContext &cx) :
00051   CandTrackList(ah)  // Should be the next class up on inheritance chain
00052 {
00053   CreateLocalHandle();
00054   MSG("Cand", Msg::kDebug)
00055                            << "Begin CandFitTrackList::CandFitTrackList"
00056     << "(AlgHandle &, CandHandle &, " << "CandContext &) ctor: " << endl
00057                                            << "UidInt = " << GetUidInt()
00058                            << ", ArchUidInt " << GetArchUidInt() << endl
00059                              << "No. of links = " << GetNLinks() << endl
00060                              << "End CandFitTrackList::CandFitTrackList"
00061     << "(AlgHandle &, CandHandle &, " << "CandContext &) ctor." << endl;
00062 
00063 // Run Algorithm to construct Candidate
00064   {                                                   // Start of scope.
00065     CandFitTrackListHandle 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 CandFitTrackList::CandFitTrackList(const CandFitTrackList &rhs) :
00073   CandTrackList(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)
00078                            << "Begin CandFitTrackList::CandFitTrackList"
00079                        << "(const CandFitTrackList &rhs) ctor: " << endl
00080                                            << "UidInt = " << GetUidInt()
00081                            << ", ArchUidInt " << GetArchUidInt() << endl
00082                              << "No. of links = " << GetNLinks() << endl
00083                              << "End CandFitTrackList::CandFitTrackList"
00084                        << "(const CandFitTrackList &rhs) ctor." << endl;
00085 }
00086 
00087 //______________________________________________________________________
00088 CandFitTrackList::~CandFitTrackList()
00089 {
00090   MSG("Cand", Msg::kDebug)
00091          << "Begin CandFitTrackList::~CandFitTrackList() dtor: " << endl
00092                                            << "UidInt = " << GetUidInt()
00093                            << ", ArchUidInt " << GetArchUidInt() << endl
00094                              << "No. of links = " << GetNLinks() << endl
00095            << "End CandFitTrackList::~CandFitTrackList() dtor." << endl;
00096 }
00097 
00098 //______________________________________________________________________
00099 void CandFitTrackList::CreateLocalHandle()
00100 {
00101   SetLocalHandle(new CandFitTrackListHandle(this));
00102 }
00103 
00104 //______________________________________________________________________
00105 CandFitTrackList *CandFitTrackList::Dup() const
00106 {
00107 
00108 // Base copy ctor dups owned pointers, but defers copying Daughter List.
00109 // Daughter List copy is made in the derived class Dup() function.
00110 // This is because base class copy constructor hasn't yet created
00111 // fLocalHandle with a CandHandle* of the full derived type.
00112   CandFitTrackList *cb = new CandFitTrackList(*this);
00113                                                   // Copy-ctor dups ptrs
00114   cb->CreateLocalHandle();   // Initializes fLocalHandle after copy-ctor
00115   TIter iterdau = GetDaughterIterator();
00116   CandHandle *dau;
00117   while ((dau=(CandHandle *) iterdau())) cb->AddDaughterLink(*dau);
00118   return cb;
00119 }
00120 
00121 //______________________________________________________________________
00122 Bool_t CandFitTrackList::IsEquivalent(const TObject *rhs) const
00123 {
00124   Bool_t result = true;
00125   if (!CandTrackList::IsEquivalent(rhs)) result = false;   // superclass
00126   TestDisplayCandBanner("CandFitTrackList");
00127   const CandFitTrackList* rCnd =
00128                              dynamic_cast<const CandFitTrackList*>(rhs);
00129   if (rCnd == NULL) return false;
00130 
00131   TestNothing("CandFitTrackList");  
00132 
00133   return result;
00134 }
00135 
00136 //______________________________________________________________________
00137 CandFitTrackListHandle CandFitTrackList::MakeCandidate(AlgHandle &ah,
00138                                                         CandContext &cx)
00139 {
00140   CandFitTrackListHandle cdh;
00141   new CandFitTrackList(ah, cdh, cx);    // cdh owns new CandFitTrackList
00142   return cdh;
00143 }

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