StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StHbtTriplet.hh
1 /***************************************************************************
2  *
3  * $Id: StHbtTriplet.hh,v 1.3 2001/06/05 00:59:30 willson Exp $
4  *
5  * Author: Robert Willson, Ohio State, willson@bnl.gov
6  ***************************************************************************
7  *
8  * Description: part of STAR HBT Framework: StHbtMaker package.
9  * The triplet object is passed to the TripletCuts for verification, and
10  * then to the AddRealTriplet and AddMixedTriplet methods of the
11  * three-particle correlation functions.
12  *
13  ***************************************************************************
14  *
15  * $Log: StHbtTriplet.hh,v $
16  * Revision 1.3 2001/06/05 00:59:30 willson
17  * Added entrance separation and quality methods
18  *
19  * Revision 1.2 2000/04/12 01:56:03 willson
20  * Qinv Correlation Functions corrected
21  *
22  *
23  ***************************************************************************/
24 
25 #ifndef ST_HBT_TRIPLET_HH
26 #define ST_HBT_TRIPLET_HH
27 
28 #include <utility>
29 
30 #include "StHbtMaker/Infrastructure/StHbtParticle.hh"
31 #include "StHbtMaker/Infrastructure/StHbtTypes.hh"
32 
33 class StHbtTriplet {
34 public:
35  StHbtTriplet();
37 
38 
39  ~StHbtTriplet();
40  //StHbtTriplet(const StHbtTriplet&);
41  //StHbtTriplet& operator=(const StHbtTriplet&);
42 
43  // track Gets:
44  StHbtParticle* track1() const;
45  StHbtParticle* track2() const;
46  StHbtParticle* track3() const;
47  // track Sets:
48  void SetTrack1(const StHbtParticle* trkPtr);
49  void SetTrack2(const StHbtParticle* trkPtr);
50  void SetTrack3(const StHbtParticle* trkPtr);
51 
52  StHbtLorentzVector fourMomentum() const;
53  double qInv() const;
54  double qInv12() const;
55  double qInv23() const;
56  double qInv31() const;
57  double kT() const;
58  double mInv() const;
59 
60  double quality() const;
61 
62  // the following two methods calculate the "nominal" separation of the tracks
63  // at the inner field cage (EntranceSeparation) and when they exit the TPC,
64  // which may be at the outer field cage, or at the endcaps.
65  // "nominal" means that the tracks are assumed to start at (0,0,0). Making this
66  // assumption is important for the Event Mixing-- it is not a mistake. - MALisa
67  double NominalTpcExitSeparation() const;
68  double NominalTpcEntranceSeparation() const;
69  double NominalTpcAverageSeparation() const;
70 
71 private:
72  StHbtParticle* mTrack1;
73  StHbtParticle* mTrack2;
74  StHbtParticle* mTrack3;
75 
76 };
77 
78 inline void StHbtTriplet::SetTrack1(const StHbtParticle* trkPtr){mTrack1=(StHbtParticle*)trkPtr;}
79 inline void StHbtTriplet::SetTrack2(const StHbtParticle* trkPtr){mTrack2=(StHbtParticle*)trkPtr;}
80 inline void StHbtTriplet::SetTrack3(const StHbtParticle* trkPtr){mTrack3=(StHbtParticle*)trkPtr;}
81 
82 inline StHbtParticle* StHbtTriplet::track1() const {return mTrack1;}
83 inline StHbtParticle* StHbtTriplet::track2() const {return mTrack2;}
84 inline StHbtParticle* StHbtTriplet::track3() const {return mTrack3;}
85 
86 #endif