StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
helensV0Cut.h
1 /***************************************************************************
2  *
3  * $Id: helensV0Cut.h,v 1.5 2000/10/09 21:56:16 laue Exp $
4  *
5  * Authors: Helen Caines, Tom Humanic, Ohio State, humanic@mps.ohio-state.edu
6  ***************************************************************************
7  *
8  * Description: part of STAR HBT Framework: StHbtMaker package
9  * a V0 particle cut that selects on phasespace, particle type,etc..
10  *
11  ***************************************************************************
12  *
13  * $Log: helensV0Cut.h,v $
14  * Revision 1.5 2000/10/09 21:56:16 laue
15  * Helens new cuts
16  *
17  * Revision 1.4 2000/01/25 17:35:02 laue
18  * I. In order to run the stand alone version of the StHbtMaker the following
19  * changes have been done:
20  * a) all ClassDefs and ClassImps have been put into #ifdef __ROOT__ statements
21  * b) unnecessary includes of StMaker.h have been removed
22  * c) the subdirectory StHbtMaker/doc/Make has been created including everything
23  * needed for the stand alone version
24  *
25  * II. To reduce the amount of compiler warning
26  * a) some variables have been type casted
27  * b) some destructors have been declared as virtual
28  *
29  * Revision 1.3 1999/10/15 01:57:02 lisa
30  * Important enhancement of StHbtMaker - implement Franks CutMonitors
31  * ----------------------------------------------------------
32  * This means 3 new files in Infrastructure area (CutMonitor),
33  * several specific CutMonitor classes in the Cut area
34  * and a new base class in the Base area (StHbtCutMonitor).
35  * This means also changing all Cut Base class header files from .hh to .h
36  * so we have access to CutMonitor methods from Cint command line.
37  * This last means
38  * 1) files which include these header files are slightly modified
39  * 2) a side benefit: the TrackCuts and V0Cuts no longer need
40  * a SetMass() implementation in each Cut class, which was stupid.
41  * Also:
42  * -----
43  * Include Franks StHbtAssociationReader
44  * ** None of these changes should affect any user **
45  *
46  * Revision 1.2 1999/10/05 11:37:40 lisa
47  * Helens realistic V0Cut and Franks memory-sealed McReader
48  *
49  * Revision 1.1 1999/09/23 23:28:03 lisa
50  * add helensV0Cut AND rename mikes and franks ParticleCuts to TrackCuts AND update documentation
51  *
52  *
53  **************************************************************************/
54 
55 #ifndef helensV0Cut_hh
56 #define helensV0Cut_hh
57 
58 //#ifndef StMaker_H
59 //#include "StMaker.h"
60 //#endif
61 
62 #include "StHbtMaker/Base/StHbtV0Cut.h"
63 #include "StHbtMaker/Infrastructure/StHbtV0.hh" //9-17-99 seems like good idea
64 
65 class helensV0Cut : public StHbtV0Cut {
66 
67 public:
68 
69  helensV0Cut();
70  //~helensV0Cut();
71 
72  virtual bool Pass(const StHbtV0*);
73 
74  virtual StHbtString Report();
75 
76  void SetV0Type(const char* type);
77  void SetV0MassRange(const float& lo, const float& hi);
78  void SetdcaV0daughters(const float& lo, const float& hi);
79  void SetdcaV0ToPrimVertex(const float& lo, const float& hi);
80  void SetdecayLengthV0(const float& lo, const float& hi);
81  void SettpcHitsPos(const int& lo, const int& hi);
82  void SettpcHitsNeg(const int& lo, const int& hi);
83  void SetdcaPosToPrimVertex(const float& lo, const float& hi);
84  void SetdcaNegToPrimVertex(const float& lo, const float& hi);
85  void SetptArmV0(const float& lo, const float& hi);
86  void SetalphaV0(const float& lo, const float& hi);
87  void SetPt(const float& lo, const float& hi);
88  void SetRapidity(const float& lo, const float& hi);
89  void SetdEdx(const float& charge, const float& m1, const float& c1, const float& m2, const float& c2);
90 
91 
92 private: // here are the quantities we want to cut on...
93 
94  float mV0MassRange[2]; //Invariant mass limits
95  float mdcaV0daughters[2]; //DCA between 2 tracks
96  float mdcaV0ToPrimVertex[2]; //DCA between V0 and event vertex
97  float mdecayLengthV0[2]; //decay length from prim. vertex
98  int mtpcHitsPos[2]; //no. of tpc hits on pos track
99  int mtpcHitsNeg[2]; //no. of tpc hits on neg track
100  float mdcaPosToPrimVertex[2]; //min. value + track at intersect
101  float mdcaNegToPrimVertex[2]; //min. value - track at intersect
102  float mptArmV0[2]; //pt Armenteros
103  float malphaV0[2]; //alpha Armenteros
104  float mPt[2]; //pt of V0
105  float mRapidity[2]; //rapidity of V0
106  float mdEdx[4]; // dEdx lines for daughter track
107  float mChargedEdx; // Charge of track to use in dedx
108 
109  long mNV0sPassed;
110  long mNV0sFailed;
111 
112  const char* V0Type; // String selecting v0 (la,antil,k0)
113 
114 #ifdef __ROOT__
115  ClassDef(helensV0Cut, 1)
116 #endif
117 };
118 
119 
120 inline void helensV0Cut::SetV0MassRange(const float& lo, const float& hi) {
121 mV0MassRange[0] =lo; mV0MassRange[1]=hi;}
122 inline void helensV0Cut::SetdcaV0daughters(const float& lo, const float& hi)
123 {mdcaV0daughters[0]=lo; mdcaV0daughters[1]=hi;}
124 inline void helensV0Cut::SetdcaV0ToPrimVertex(const float& lo, const float& hi)
125 {mdcaV0ToPrimVertex[0]=lo; mdcaV0ToPrimVertex[1]=hi;}
126 inline void helensV0Cut::SetdecayLengthV0(const float& lo, const float& hi)
127 {mdecayLengthV0[0]=lo; mdecayLengthV0[1]=hi;}
128 
129 inline void helensV0Cut::SettpcHitsPos(const int& lo, const int& hi)
130 {mtpcHitsPos[0]=lo;mtpcHitsPos[1]=hi;}
131 inline void helensV0Cut::SettpcHitsNeg(const int& lo, const int& hi)
132 {mtpcHitsNeg[0]=lo;mtpcHitsNeg[1]=hi;}
133 
134 inline void helensV0Cut::SetdcaPosToPrimVertex(const float& lo, const float& hi)
135 {mdcaPosToPrimVertex[0]=lo; mdcaPosToPrimVertex[1]=hi;}
136 inline void helensV0Cut::SetdcaNegToPrimVertex(const float& lo, const float& hi)
137 {mdcaNegToPrimVertex[0]=lo; mdcaNegToPrimVertex[1]=hi;}
138 inline void helensV0Cut::SetptArmV0(const float& lo, const float& hi)
139 {mptArmV0[0]=lo; mptArmV0[1]=hi;}
140 inline void helensV0Cut::SetalphaV0(const float& lo, const float& hi)
141 {malphaV0[0]=lo; malphaV0[1]=hi;}
142 
143 inline void helensV0Cut::SetdEdx(const float& charge,
144  const float& m1, const float& c1,
145  const float& m2, const float& c2)
146 {mChargedEdx=charge;mdEdx[0]=m1; mdEdx[1]=c1; mdEdx[2]=m2; mdEdx[3]=c2;}
147 
148 inline void helensV0Cut::SetPt(const float& lo, const float& hi)
149 {mPt[0]=lo; mPt[1]=hi;}
150 inline void helensV0Cut::SetRapidity(const float& lo,const float& hi)
151 {mRapidity[0]=lo; mRapidity[1]=hi;}
152 
153 inline void helensV0Cut::SetV0Type(const char* type)
154 {V0Type = (char*)type;}
155 
156 #endif
157 
158 
159