ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Particle.h
Revision: 1.26
Committed: Tue Feb 17 15:52:51 2009 UTC (16 years, 2 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.25: +5 -1 lines
Log Message:
Added CacheFlag

File Contents

# User Rev Content
1 loizides 1.1 //--------------------------------------------------------------------------------------------------
2 bendavid 1.26 // $Id: Particle.h,v 1.25 2009/01/19 14:51:37 loizides Exp $
3 loizides 1.1 //
4     // Particle
5     //
6     // Details to be worked out...
7     //
8 paus 1.7 // Authors: C.Loizides
9 loizides 1.1 //--------------------------------------------------------------------------------------------------
10    
11 loizides 1.18 #ifndef MITANA_DATATREE_PARTICLE_H
12     #define MITANA_DATATREE_PARTICLE_H
13 loizides 1.9
14     #include <TMath.h>
15     #include "MitAna/DataTree/interface/DataObject.h"
16 bendavid 1.26 #include "MitAna/DataTree/interface/CacheFlag.h"
17 loizides 1.9
18 loizides 1.1 namespace mithep
19     {
20 loizides 1.3 class Particle : public DataObject
21 loizides 1.1 {
22     public:
23     Particle() {}
24 loizides 1.3 ~Particle() {}
25 loizides 1.11
26 loizides 1.24 Double_t AbsEta() const { return TMath::Abs(Eta()); }
27     virtual Double_t Charge() const = 0;
28     Int_t Compare(const TObject *o) const;
29     virtual Double_t E() const { return Mom().E(); }
30     virtual Double_t Et() const;
31     virtual Double_t Eta() const { return Mom().Eta(); }
32     Bool_t IsSortable() const { return kTRUE; }
33     virtual Double_t Mass() const { return TMath::Sqrt(Mom().M2()); }
34     virtual Double_t Mt() const { return TMath::Sqrt(Mom().Mt2()); }
35     virtual FourVector Mom() const = 0;
36     EObjType ObjType() const { return kParticle; }
37     virtual Double_t Phi() const { return Mom().Phi(); }
38     Double_t PhiDeg() const { return Phi() * 180 /TMath::Pi(); }
39     virtual Double_t Pt() const { return Mom().Pt(); }
40     virtual Double_t Px() const { return Mom().Px(); }
41     virtual Double_t Py() const { return Mom().Py(); }
42     virtual Double_t Pz() const { return Mom().Pz(); }
43     virtual Double_t P() const { return Mom().P(); }
44     virtual Double_t Theta() const { return Mom().Theta(); }
45 loizides 1.25 virtual Double_t TMass() const;
46 loizides 1.24 void Print(Option_t *opt="") const;
47 loizides 1.11
48 bendavid 1.26 protected:
49     mutable CacheFlag fCacheFlag; //|| cache validity flag for cached momentum vector
50    
51 loizides 1.12 ClassDef(Particle, 1) // Generic particle class
52 loizides 1.1 };
53 loizides 1.8 }
54 loizides 1.24
55     //--------------------------------------------------------------------------------------------------
56     inline Int_t mithep::Particle::Compare(const TObject *o) const
57     {
58     // Default compare function for sorting according to transverse momentum.
59     // Returns -1 if this object is smaller than given object, 0 if objects are
60     // equal and 1 if this is larger than given object.
61    
62     const mithep::Particle *p = dynamic_cast<const mithep::Particle *>(o);
63     if (!p)
64     return 1;
65    
66     Double_t mypt = Pt();
67     Double_t pt = p->Pt();
68     if (mypt>pt)
69     return -1;
70     else if (pt>mypt)
71     return +1;
72     return 0;
73     }
74    
75     //--------------------------------------------------------------------------------------------------
76     inline Double_t mithep::Particle::Et() const
77     {
78     // Return transverse energy.
79    
80 loizides 1.25 return E()*Pt()/P();
81     }
82    
83     //--------------------------------------------------------------------------------------------------
84     inline Double_t mithep::Particle::TMass() const
85     {
86     // Return transverse mass.
87    
88     return Mass()*Pt()/P();
89 loizides 1.24 }
90 loizides 1.8 #endif