ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/CompositeParticle.h
Revision: 1.24
Committed: Thu Mar 29 23:41:54 2012 UTC (13 years, 1 month ago) by paus
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_028, Mit_027a, Mit_027, Mit_026, Mit_025e, HEAD
Changes since 1.23: +5 -6 lines
Log Message:
Version with working skimming and last 4.4 tag.

File Contents

# User Rev Content
1 loizides 1.1 //--------------------------------------------------------------------------------------------------
2 paus 1.24 // $Id: CompositeParticle.h,v 1.23 2012/03/28 12:15:34 paus Exp $
3 loizides 1.1 //
4 loizides 1.21 // CompositeParticle
5 loizides 1.1 //
6 loizides 1.4 // A composite particle class that holds other (daughter) particles.
7 loizides 1.1 //
8 paus 1.23 // Authors: J.Bendavid, C.Loizides, C.Paus
9 loizides 1.1 //--------------------------------------------------------------------------------------------------
10    
11 loizides 1.12 #ifndef MITANA_DATATREE_COMPOSITEPARTICLE_H
12     #define MITANA_DATATREE_COMPOSITEPARTICLE_H
13 loizides 1.1
14     #include "MitAna/DataTree/interface/Particle.h"
15 loizides 1.11 #include "MitAna/DataCont/interface/RefArray.h"
16 loizides 1.1
17     namespace mithep
18     {
19     class CompositeParticle : public Particle
20     {
21     public:
22 loizides 1.10 CompositeParticle() {}
23 loizides 1.1
24 paus 1.23 void AddDaughter (const Particle *p)
25 loizides 1.20 { fDaughters.Add(p); ClearMom(); ClearCharge(); }
26 paus 1.23 void Clear (Option_t *opt="")
27 loizides 1.20 { fDaughters.Clear(opt); ClearMom(); ClearCharge(); }
28 paus 1.23 const Particle *Daughter (UInt_t i) const { return fDaughters.At(i); }
29     UInt_t NDaughters () const { return fDaughters.Entries(); }
30     Bool_t HasDaughter (const Particle *p) const;
31 loizides 1.2 Bool_t HasCommonDaughter(const CompositeParticle *p) const;
32 paus 1.23 Bool_t HasSameDaughters (const CompositeParticle *p) const;
33     EObjType ObjType () const
34     { return kCompositeParticle; }
35    
36     // Some structural tools
37 paus 1.24 void Mark(UInt_t i=1) const;
38 loizides 1.5
39 loizides 1.1 protected:
40 loizides 1.18 Double_t GetCharge() const;
41     void GetMom() const;
42    
43 bendavid 1.19 RefArray<Particle> fDaughters; //references to daughter particles
44 loizides 1.1
45 loizides 1.2 ClassDef(CompositeParticle, 1) // Composite particle class
46 loizides 1.1 };
47     }
48 loizides 1.18
49     //--------------------------------------------------------------------------------------------------
50 paus 1.24 inline void mithep::CompositeParticle::Mark(UInt_t i) const
51 paus 1.23 {
52     // mark myself
53 paus 1.24 mithep::DataObject::Mark(i);
54 paus 1.23 // mark my dependencies if they are there
55 paus 1.24 fDaughters.Mark(i);
56 paus 1.23 }
57    
58     //--------------------------------------------------------------------------------------------------
59 loizides 1.18 inline Double_t mithep::CompositeParticle::GetCharge() const
60     {
61     // Return sum of charge of daughter particles.
62    
63     Double_t charge = 0;
64     for (UInt_t i=0; i<NDaughters(); ++i)
65     charge += Daughter(i)->Charge();
66    
67     return charge;
68     }
69    
70     //--------------------------------------------------------------------------------------------------
71     inline void mithep::CompositeParticle::GetMom() const
72     {
73     // Calculate the vector sum of the momenta of the daughters.
74    
75     FourVector mom;
76     for (UInt_t i=0; i<NDaughters(); ++i)
77     mom += (Daughter(i))->Mom();
78    
79     fCachedMom.SetCoordinates(mom.Pt(),mom.Eta(),mom.Phi(),mom.M());
80     }
81 loizides 1.1 #endif