source: trunk/KtJet/KtLorentzVector.h@ 23

Last change on this file since 23 was 2, checked in by Pavel Demin, 17 years ago

first commit

File size: 3.5 KB
Line 
1#ifndef KTJET_KTLORENTZVECTOR_H
2#define KTJET_KTLORENTZVECTOR_H
3
4#include <vector>
5#include <cmath>
6#include "KtJet/KtUtil.h"
7
8
9namespace KtJet {
10 /**
11 * This Class represents a KtCluster Object.
12 * It is just a CLHEP HepLorentzVector and also contains
13 * a std::vector of all its constituent KtLorentzVectors
14 * and an id number
15
16 @author J.Butterworth J.Couchman B.Cox B.Waugh
17 */
18 class KtRecom;
19
20 class KtLorentzVector : public CLHEP::HepLorentzVector {
21 public:
22 /** Default Constructor: create jet with no constituents */
23 KtLorentzVector();
24 /** Constructor: create particle with given 4-momentum */
25 KtLorentzVector(const CLHEP::HepLorentzVector &);
26 /** Constructor: create particle with given 4-momentum */
27 KtLorentzVector(KtFloat px, KtFloat py, KtFloat pz, KtFloat e);
28
29 /** Destructor */
30 ~KtLorentzVector();
31
32 /** return a reference to the vector of pointers of the KtLorentzVectors constituents */
33 inline const std::vector<const KtLorentzVector*> & getConstituents() const;
34 /** copy constituents */
35 std::vector<KtLorentzVector> copyConstituents() const;
36 /** returns the number of constituents KtLorentzVector is made up of */
37 inline int getNConstituents() const;
38 /** Check if a KtLorentzVector is a constituent */
39 bool contains(const KtLorentzVector &) const;
40 /** Add particle to jet using required recombination scheme to merge 4-momenta */
41 void add(const KtLorentzVector &, KtRecom *recom);
42 /** Add particle to jet using E scheme (4-vector addition) to merge 4-momenta */
43 void add(const KtLorentzVector &);
44 inline unsigned int getID() const {return m_id;} // ??? Temporary, for debugging only
45 /** is it a Jet, not single particle */
46 inline bool isJet() const;
47 /** Add particle to jet using E scheme (4-vector addition) to merge 4-momenta */
48 KtLorentzVector & operator+= (const KtLorentzVector &);
49 /** Compare IDs of objects */
50 inline bool operator== (const KtLorentzVector &) const;
51 inline bool operator!= (const KtLorentzVector &) const;
52 inline bool operator< (const KtLorentzVector &) const;
53 inline bool operator> (const KtLorentzVector &) const;
54 private:
55 /** rapidity, only valid if haven't called other methods since last call to add() */
56 inline KtFloat crapidity() const;
57 /** rapidity, only valid if haven't called other methods since last call to add() */
58 KtFloat m_crapidity;
59 /** calculate rapidity */
60 inline void calcRapidity();
61 /** private method to help add constituents to vector */
62 void addConstituents(const KtLorentzVector*) ;
63 /** KtLorentzVectors id number */
64 unsigned int m_id;
65 /** Pointers to constituents */
66 std::vector<const KtLorentzVector*> m_constituents;
67 /** Particle rather than jet */
68 bool m_isAtomic;
69 /** Number of instances so far */
70 static unsigned int m_num;
71 /** Some classes need access to crapidity for efficiency reasons */
72 friend class KtDistanceDeltaR;
73 friend class KtDistanceQCD;
74 };
75
76 bool greaterE(const CLHEP::HepLorentzVector &, const CLHEP::HepLorentzVector &);
77 bool greaterEt(const CLHEP::HepLorentzVector &, const CLHEP::HepLorentzVector &);
78 bool greaterPt(const CLHEP::HepLorentzVector &, const CLHEP::HepLorentzVector &);
79 bool greaterRapidity(const CLHEP::HepLorentzVector &, const CLHEP::HepLorentzVector &);
80 bool greaterEta(const CLHEP::HepLorentzVector &, const CLHEP::HepLorentzVector &);
81
82#include "KtJet/KtLorentzVector.icc"
83
84}//end of namespace
85#endif
Note: See TracBrowser for help on using the repository browser.