ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Particle.h
Revision: 1.24
Committed: Tue Dec 9 17:47:00 2008 UTC (16 years, 4 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.23: +49 -19 lines
Log Message:
Added ObjType to retrieve type of object.

File Contents

# User Rev Content
1 loizides 1.1 //--------------------------------------------------------------------------------------------------
2 loizides 1.24 // $Id: Particle.h,v 1.23 2008/12/01 17:30:48 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    
17 loizides 1.1 namespace mithep
18     {
19 loizides 1.3 class Particle : public DataObject
20 loizides 1.1 {
21     public:
22     Particle() {}
23 loizides 1.3 ~Particle() {}
24 loizides 1.11
25 loizides 1.24 Double_t AbsEta() const { return TMath::Abs(Eta()); }
26     virtual Double_t Charge() const = 0;
27     Int_t Compare(const TObject *o) const;
28     virtual Double_t E() const { return Mom().E(); }
29     virtual Double_t Et() const;
30     virtual Double_t Eta() const { return Mom().Eta(); }
31     Bool_t IsSortable() const { return kTRUE; }
32     virtual Double_t Mass() const { return TMath::Sqrt(Mom().M2()); }
33     virtual Double_t Mt() const { return TMath::Sqrt(Mom().Mt2()); }
34     virtual FourVector Mom() const = 0;
35     EObjType ObjType() const { return kParticle; }
36     virtual Double_t Phi() const { return Mom().Phi(); }
37     Double_t PhiDeg() const { return Phi() * 180 /TMath::Pi(); }
38     virtual Double_t Pt() const { return Mom().Pt(); }
39     virtual Double_t Px() const { return Mom().Px(); }
40     virtual Double_t Py() const { return Mom().Py(); }
41     virtual Double_t Pz() const { return Mom().Pz(); }
42     virtual Double_t P() const { return Mom().P(); }
43     virtual Double_t Theta() const { return Mom().Theta(); }
44     void Print(Option_t *opt="") const;
45 loizides 1.11
46 loizides 1.12 ClassDef(Particle, 1) // Generic particle class
47 loizides 1.1 };
48 loizides 1.8 }
49 loizides 1.24
50     //--------------------------------------------------------------------------------------------------
51     inline Int_t mithep::Particle::Compare(const TObject *o) const
52     {
53     // Default compare function for sorting according to transverse momentum.
54     // Returns -1 if this object is smaller than given object, 0 if objects are
55     // equal and 1 if this is larger than given object.
56    
57     const mithep::Particle *p = dynamic_cast<const mithep::Particle *>(o);
58     if (!p)
59     return 1;
60    
61     Double_t mypt = Pt();
62     Double_t pt = p->Pt();
63     if (mypt>pt)
64     return -1;
65     else if (pt>mypt)
66     return +1;
67     return 0;
68     }
69    
70     //--------------------------------------------------------------------------------------------------
71     inline Double_t mithep::Particle::Et() const
72     {
73     // Return transverse energy.
74    
75     return Mom().E()*Mom().Pt()/Mom().P();
76     }
77 loizides 1.8 #endif