ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/src/CompoundParticle.cc
Revision: 1.1
Committed: Thu Jun 11 12:21:26 2009 UTC (15 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_025c_branch2, Mit_025c_branch1, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_025c_branch0, Mit_028, Mit_027a, Mit_027, Mit_026, Mit_025e, Mit_025d, Mit_025c, Mit_025b, Mit_025a, Mit_025, Mit_025pre2, Mit_024b, Mit_025pre1, Mit_024a, Mit_024, Mit_023, Mit_022a, Mit_022, Mit_020d, TMit_020d, Mit_020c, Mit_021, Mit_021pre2, Mit_021pre1, Mit_020b, Mit_020a, Mit_020, Mit_020pre1, Mit_018, Mit_017, Mit_017pre3, Mit_017pre2, Mit_017pre1, Mit_016, Mit_015b, Mit_015a, Mit_015, Mit_014e, Mit_014d, Mit_014c, Mit_014b, Mit_014a, Mit_014, Mit_014pre3, Mit_014pre2, Mit_014pre1, Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013, Mit_013pre1, Mit_012i, Mit_012h, Mit_012g, Mit_012f, Mit_012e, Mit_012d, Mit_012c, Mit_012b, Mit_012a, Mit_012, Mit_011a, Mit_011, Mit_010a, Mit_010, Mit_009c, Mit_009b, Mit_009a, HEAD
Branch point for: Mit_025c_branch
Log Message:
Added CompoundParticle which is like a CompositeParticle except that it can own daughters. Clearly this class can only be used at analysis time since as implemented one can not store it in a tree.

File Contents

# Content
1 // $Id: CompoundParticle.cc,v 1.3 2009/06/10 14:38:56 loizides Exp $
2
3 #include "MitAna/DataTree/interface/CompoundParticle.h"
4
5 ClassImp(mithep::CompoundParticle)
6
7 using namespace mithep;
8
9 CompoundParticle::CompoundParticle()
10 : fDaughters1(2), fDaughters2(2)
11 {
12 // Constructor.
13
14 fDaughters1.SetOwner(kFALSE);
15 fDaughters2.SetOwner(kTRUE);
16 }
17
18 //--------------------------------------------------------------------------------------------------
19 void CompoundParticle::AddDaughter(Particle *p, Bool_t owned=kTRUE)
20 {
21 // Add daughter to list of daughters. If owned=kTRUE make sure it will be deleted when
22 // CompoundParticle will be deleted.
23
24 if(owned)
25 fDaughters2.AddOwned(p);
26 else
27 fDaughters1.Add(p);
28
29 ClearMom();
30 ClearCharge();
31 }
32
33 //--------------------------------------------------------------------------------------------------
34 Bool_t CompoundParticle::HasDaughter(const Particle *p) const
35 {
36 // Return true if given particle is among daughters.
37
38 if(!p)
39 return kFALSE;
40
41 return (fDaughters1.HasObject(p) || fDaughters2.HasObject(p));
42 }
43
44 //--------------------------------------------------------------------------------------------------
45 Bool_t CompoundParticle::HasCommonDaughter(const CompoundParticle *p) const
46 {
47 // Return true if a common daughter exists.
48
49 if(!p)
50 return kFALSE;
51
52 for (UInt_t i=0; i<p->NDaughters(); ++i)
53 if (HasDaughter(p->Daughter(i)))
54 return kTRUE;
55
56 return kFALSE;
57 }
58
59 //--------------------------------------------------------------------------------------------------
60 Bool_t CompoundParticle::HasSameDaughters(const CompoundParticle *p) const
61 {
62 // Return true if daughters are the same.
63
64 if(!p)
65 return kFALSE;
66
67 if (NDaughters()!= p->NDaughters())
68 return kFALSE;
69
70 for (UInt_t i=0; i<p->NDaughters(); ++i)
71 if (!HasDaughter(p->Daughter(i)))
72 return kFALSE;
73
74 return kTRUE;
75 }