CandShower Class Reference

#include <CandShower.h>

Inheritance diagram for CandShower:
CandReco CandBase CandRefCounted CandShowerAtNu CandShowerEM CandShowerSR CandFitShowerEM

List of all members.

Public Member Functions

 CandShower ()
virtual std::ostream & FormatToOStream (std::ostream &os, Option_t *option="") const

Static Public Member Functions

static CandShowerHandle MakeCandidate (AlgHandle &ah, CandContext &cx)

Protected Member Functions

 CandShower (AlgHandle &ah)
 CandShower (AlgHandle &ah, CandHandle &ch, CandContext &cx)
 CandShower (const CandShower &rhs)
virtual ~CandShower ()
virtual void CreateLocalHandle ()
virtual CandShowerDup () const
virtual Bool_t IsEquivalent (const TObject *rhs) const

Protected Attributes

Double_t fEnergy
Double_t fEnergy_wtCC
Double_t fEnergy_CC
Double_t fEnergy_wtNC
Double_t fEnergy_NC
Double_t fEnergy_EM
Double_t fMinStripPE
TObjArray fClusterList
map< Int_t, Float_t > fUPos
map< Int_t, Float_t > fVPos
map< Int_t, Double_t > fTime [2]

Friends

class CandShowerHandle
class CandShowerSRHandle

Detailed Description

Definition at line 26 of file CandShower.h.


Constructor & Destructor Documentation

CandShower::CandShower (  ) 

Definition at line 30 of file CandShower.cxx.

References Msg::kDebug, and MSG.

Referenced by Dup(), and MakeCandidate().

00030                        :
00031   fEnergy(0.), fMinStripPE(0.)
00032 {
00033   MSG("Cand", Msg::kDebug)
00034                       << "Begin CandShower::CandShower() ctor: " << endl
00035                                            << "UidInt = " << GetUidInt()
00036                            << ", ArchUidInt " << GetArchUidInt() << endl
00037                              << "No. of links = " << GetNLinks() << endl
00038                         << "End CandShower::CandShower() ctor." << endl;
00039 }

CandShower::CandShower ( AlgHandle ah  )  [protected]

Definition at line 42 of file CandShower.cxx.

00042                                     :
00043   CandReco(ah),      // Should be the next class up on inheritance chain
00044   fEnergy(0.),
00045   fEnergy_wtCC(0.),
00046   fEnergy_CC(0.),
00047   fEnergy_wtNC(0.),
00048   fEnergy_NC(0.),
00049   fEnergy_EM(0.),
00050   fMinStripPE(0.)
00051 {
00052 
00053 // The sole purpose of this constructor is to transmit the AlgHandle
00054 // up the inheritance chain to CandBase without having to invoke the
00055 // full constructor of an intermediate Candidate type which the highest
00056 // level Candidate might inherit from.  One only wants to create the
00057 // LocalHandle and invoke the RunAlg() method in the lowest level class.
00058 }

CandShower::CandShower ( AlgHandle ah,
CandHandle ch,
CandContext cx 
) [protected]

Definition at line 61 of file CandShower.cxx.

References CreateLocalHandle(), CandBase::GetArchUidInt(), CandRefCounted::GetNLinks(), CandBase::GetUidInt(), Msg::kDebug, MSG, and AlgHandle::RunAlg().

00061                                                                      :
00062   CandReco(ah),      // Should be the next class up on inheritance chain
00063   fEnergy(0.),
00064   fEnergy_wtCC(0.),
00065   fEnergy_CC(0.),
00066   fEnergy_wtNC(0.),
00067   fEnergy_NC(0.),
00068   fEnergy_EM(0.),
00069   fMinStripPE(0.)
00070 {
00071   CreateLocalHandle();
00072   MSG("Cand", Msg::kDebug)
00073            << "Begin CandShower::CandShower(AlgHandle &, CandHandle &, "
00074                                       << "CandContext &) ctor: " << endl
00075                                            << "UidInt = " << GetUidInt()
00076                            << ", ArchUidInt " << GetArchUidInt() << endl
00077                              << "No. of links = " << GetNLinks() << endl
00078              << "End CandShower::CandShower(AlgHandle &, CandHandle &, "
00079                                       << "CandContext &) ctor." << endl;
00080 
00081 // Run Algorithm to construct Candidate
00082   {                                                   // Start of scope.
00083     CandShowerHandle csh(this);              // csh will go out of scope
00084     ch = csh;                                       // after setting ch.
00085   }                                                     // End of scope.
00086   ah.RunAlg(ch, cx);
00087 }

CandShower::CandShower ( const CandShower rhs  )  [protected]

Definition at line 90 of file CandShower.cxx.

References CandHandle::DupHandle(), fClusterList, fTime, fUPos, fVPos, CandBase::GetArchUidInt(), CandBase::GetDaughterIterator(), CandRefCounted::GetNLinks(), CandBase::GetUidInt(), Msg::kDebug, and MSG.

00090                                             :
00091   CandReco(rhs),     // Should be the next class up on inheritance chain
00092   fEnergy(rhs.fEnergy),
00093   fEnergy_wtCC(rhs.fEnergy_wtCC),
00094   fEnergy_CC(rhs.fEnergy_CC),
00095   fEnergy_wtNC(rhs.fEnergy_wtNC),
00096   fEnergy_NC(rhs.fEnergy_NC),
00097   fEnergy_EM(rhs.fEnergy_EM),
00098   fMinStripPE(rhs.fMinStripPE)
00099 {
00100 
00101 //CreateLocalHandle(); // Moved to Dup function following copy-ctor call
00102   MSG("Cand", Msg::kDebug)
00103  << "Begin CandShower::CandShower(const CandShower &rhs) ctor: " << endl
00104                                            << "UidInt = " << GetUidInt()
00105                            << ", ArchUidInt " << GetArchUidInt() << endl
00106                              << "No. of links = " << GetNLinks() << endl
00107    << "End CandShower::CandShower(const CandShower &rhs) ctor." << endl;
00108 
00109    fUPos.erase(fUPos.begin(),fUPos.end());
00110    fVPos.erase(fVPos.begin(),fVPos.end());
00111    fTime[0].erase(fTime[0].begin(),fTime[0].end());
00112    fTime[1].erase(fTime[1].begin(),fTime[1].end());
00113    TIter stripItr(rhs.GetDaughterIterator());
00114    while (const CandStripHandle *striphandle =
00115                            dynamic_cast<CandStripHandle*>(stripItr())) {
00116 
00117     fUPos[striphandle->GetPlane()] = rhs.fUPos[striphandle->GetPlane()];
00118     fVPos[striphandle->GetPlane()] = rhs.fVPos[striphandle->GetPlane()];
00119     fTime[0][striphandle->GetPlane()] = rhs.fTime[0][striphandle->GetPlane()];
00120     fTime[1][striphandle->GetPlane()] = rhs.fTime[1][striphandle->GetPlane()];
00121   }
00122 
00123 // fClusterList contents owned from CandShower version 2
00124   CandHandle *ch;
00125   TIter cliter(&rhs.fClusterList);
00126   while ((ch = dynamic_cast<CandHandle *>(cliter())))
00127     fClusterList.Add(ch->DupHandle());
00128 }

CandShower::~CandShower (  )  [protected, virtual]

Definition at line 131 of file CandShower.cxx.

References fClusterList, CandBase::GetArchUidInt(), CandRefCounted::GetNLinks(), CandBase::GetUidInt(), Msg::kDebug, and MSG.

00132 {
00133 
00134   MSG("Cand", Msg::kDebug)
00135                      << "Begin CandShower::~CandShower() dtor: " << endl
00136                                            << "UidInt = " << GetUidInt()
00137                            << ", ArchUidInt " << GetArchUidInt() << endl
00138                              << "No. of links = " << GetNLinks() << endl
00139                        << "End CandShower::~CandShower() dtor." << endl;
00140 
00141   fClusterList.Delete();   // Owned CandHandle*'s from CandShower vers 2
00142 }


Member Function Documentation

void CandShower::CreateLocalHandle (  )  [protected, virtual]

Implements CandReco.

Reimplemented in CandShowerAtNu, CandFitShowerEM, CandShowerEM, and CandShowerSR.

Definition at line 145 of file CandShower.cxx.

References CandShowerHandle, and CandBase::SetLocalHandle().

Referenced by CandShower(), and Dup().

00146 {
00147   SetLocalHandle(new CandShowerHandle(this));
00148 }

CandShower * CandShower::Dup (  )  const [protected, virtual]

Implements CandReco.

Reimplemented in CandShowerAtNu, CandFitShowerEM, CandShowerEM, and CandShowerSR.

Definition at line 151 of file CandShower.cxx.

References CandBase::AddDaughterLink(), CandShower(), CreateLocalHandle(), CandBase::fCandRecord, CandBase::GetDaughterIterator(), and CandBase::SetCandRecord().

00152 {
00153 
00154 // Base copy ctor dups owned pointers, but defers copying Daughter List.
00155 // Daughter List copy is made in the derived class Dup() function.
00156 // This is because base class copy constructor hasn't yet created
00157 // fLocalHandle with a CandHandle* of the full derived type.
00158   CandShower *cb = new CandShower(*this);         // Copy-ctor dups ptrs
00159   cb->CreateLocalHandle();   // Initializes fLocalHandle after copy-ctor
00160   cb->SetCandRecord(fCandRecord);
00161   TIter iterdau = GetDaughterIterator();
00162   CandHandle *dau;
00163   while ((dau=(CandHandle *) iterdau())) cb->AddDaughterLink(*dau);
00164   return cb;
00165 }

std::ostream & CandShower::FormatToOStream ( std::ostream &  os,
Option_t *  option = "" 
) const [virtual]

Reimplemented from CandReco.

Reimplemented in CandFitShowerEM, and CandShowerSR.

Definition at line 210 of file CandShower.cxx.

References fClusterList, fEnergy, fEnergy_CC, fEnergy_EM, fEnergy_NC, fEnergy_wtCC, fEnergy_wtNC, fTime, fUPos, fVPos, CandBase::GetDataIndent(), and CandBase::GetIndentString().

00212 {
00213   CandReco::FormatToOStream(os,option);
00214 
00215   TString opt(option);
00216   if (!opt.Contains("v0")) { // v0 means suppress the data values
00217     const TString& indent = GetIndentString();
00218 
00219     os << indent << GetDataIndent()
00220        << "fClusterList.size " << fClusterList.GetSize()
00221        << " Energy " << fEnergy
00222        << " de-weighted CC Energy " << fEnergy_wtCC
00223        << " linear CC Energy " << fEnergy_CC
00224        << " de-weighted NC Energy " << fEnergy_wtNC
00225        << " linear NC Energy " << fEnergy_NC
00226        << " EM Energy " << fEnergy_EM
00227        << " UVPos map sizes " << fUPos.size() << " " << fVPos.size()
00228        << " Time map sizes " << fTime[0].size() << " " << fTime[1].size()
00229        << endl;
00230   }
00231   return os;
00232   
00233 }

Bool_t CandShower::IsEquivalent ( const TObject *  rhs  )  const [protected, virtual]

Reimplemented from CandReco.

Reimplemented in CandFitShowerEM, CandShowerEM, and CandShowerSR.

Definition at line 168 of file CandShower.cxx.

References fClusterList, fEnergy, fEnergy_CC, fEnergy_EM, fEnergy_NC, fEnergy_wtCC, fEnergy_wtNC, fTime, fUPos, fVPos, CandReco::IsEquivalent(), CandBase::TestArrayEquality(), CandBase::TestDisplayCandBanner(), CandBase::TestEquality(), and CandBase::TestTObjArrayCandHandleDup().

Referenced by CandShowerSR::IsEquivalent(), and CandShowerEM::IsEquivalent().

00169 {
00170   Bool_t result = true;
00171   if (!CandReco::IsEquivalent(rhs)) result = false;   // superclass test
00172   TestDisplayCandBanner("CandShower");
00173   const CandShower* rCnd = dynamic_cast<const CandShower*>(rhs);
00174   if (rCnd == NULL) return false;
00175 
00176   result = TestTObjArrayCandHandleDup("fClusterList", 
00177                                           this->fClusterList,
00178                                           rCnd->fClusterList) && result;
00179   result = TestEquality("fEnergy",        this->fEnergy,
00180                                           rCnd->fEnergy)      && result;
00181   result = TestEquality("fEnergy_wtCC",   this->fEnergy_wtCC,
00182                                           rCnd->fEnergy_wtCC)      && result;
00183   result = TestEquality("fEnergyCC",      this->fEnergy_CC,
00184                                           rCnd->fEnergy_CC)      && result;
00185   result = TestEquality("fEnergy_wtNC",   this->fEnergy_wtNC,
00186                                           rCnd->fEnergy_wtNC)      && result;
00187   result = TestEquality("fEnergy_NC",     this->fEnergy_NC,
00188                                           rCnd->fEnergy_NC)      && result;
00189   result = TestEquality("fEnergy_EM",     this->fEnergy_EM,
00190                                           rCnd->fEnergy_EM)      && result;
00191   result = TestEquality("fUPos",          this->fUPos,
00192                                           rCnd->fUPos)        && result;
00193   result = TestEquality("fVPos",          this->fVPos,
00194                                           rCnd->fVPos)        && result;
00195   result = TestArrayEquality("fTime", 2,  this->fTime,
00196                                           rCnd->fTime)     && result;
00197   return result;
00198 }

CandShowerHandle CandShower::MakeCandidate ( AlgHandle ah,
CandContext cx 
) [static]

Reimplemented in CandShowerAtNu, CandFitShowerEM, CandShowerEM, and CandShowerSR.

Definition at line 201 of file CandShower.cxx.

References CandShower().

Referenced by AlgEventSRList::BuildEventFromUnassoc(), AlgEventSRList::CreatePrimaryShower(), AlgEventSRList::MergeShowers(), and AlgShowerSRList::RunAlg().

00203 {
00204   CandShowerHandle csh;
00205   new CandShower(ah, csh, cx);            // csh owns the new CandShower
00206   return csh;
00207 }


Friends And Related Function Documentation

friend class CandShowerHandle [friend]

Definition at line 28 of file CandShower.h.

Referenced by CreateLocalHandle().

friend class CandShowerSRHandle [friend]

Reimplemented in CandShowerSR.

Definition at line 29 of file CandShower.h.


Member Data Documentation

TObjArray CandShower::fClusterList [protected]

Definition at line 55 of file CandShower.h.

Referenced by CandShower(), FormatToOStream(), IsEquivalent(), and ~CandShower().

Double_t CandShower::fEnergy [protected]

Definition at line 47 of file CandShower.h.

Referenced by FormatToOStream(), and IsEquivalent().

Double_t CandShower::fEnergy_CC [protected]

Definition at line 49 of file CandShower.h.

Referenced by FormatToOStream(), and IsEquivalent().

Double_t CandShower::fEnergy_EM [protected]

Definition at line 52 of file CandShower.h.

Referenced by FormatToOStream(), and IsEquivalent().

Double_t CandShower::fEnergy_NC [protected]

Definition at line 51 of file CandShower.h.

Referenced by FormatToOStream(), and IsEquivalent().

Double_t CandShower::fEnergy_wtCC [protected]

Definition at line 48 of file CandShower.h.

Referenced by FormatToOStream(), and IsEquivalent().

Double_t CandShower::fEnergy_wtNC [protected]

Definition at line 50 of file CandShower.h.

Referenced by FormatToOStream(), and IsEquivalent().

Double_t CandShower::fMinStripPE [protected]
map<Int_t,Double_t> CandShower::fTime[2] [mutable, protected]
map<Int_t,Float_t> CandShower::fUPos [mutable, protected]
map<Int_t,Float_t> CandShower::fVPos [mutable, protected]

The documentation for this class was generated from the following files:

Generated on 22 Nov 2017 for loon by  doxygen 1.6.1