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

# User Rev Content
1 loizides 1.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     }