StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Cut.h
1 #ifndef Cut_H
2 #define Cut_H
3 
4 #include "TObject.h"
5 //#include "Rtypes.h"
6 #include "Centrality.h"
7 #include "TMath.h"
8 
9 class StMiniMcEvent;
10 class StTinyRcTrack;
11 class StTinyMcTrack;
12 class StMiniMcPair;
13 
14 class Cut {
15  public:
16 
17  // Cut();
18  // virtual ~Cut();
19 
20  //
21  // event cuts
22  //
23  //--- centrality
24  static void SetZdcCtbCent(NchCentrality min, NchCentrality max) {
25  mZdcCtbCent[0] = min; mZdcCtbCent[1] = max;
26  }
27 
28  static void SetFlowCent(int min, int max) {
29  mFlowCent[0] = min; mFlowCent[1] = max;
30  }
31 
32  static void SetHMinusCent(int min, int max) {
33  mHMinusCent[0]= min; mHMinusCent[1]=max;
34  }
35 
36  static void SetNchCent(int min, int max) {
37  mNchCent[0] = min; mNchCent[1] = max;
38  }
39 
40  static bool DoZdcCtbCent() { return mDoZdcCtbCent; }
41  static bool DoFlowCent() { return mDoFlowCent; }
42  static bool DoHMinusCent() { return mDoHMinusCent; }
43 
44  // have both the spectra centrality and the mc centrality
45  // in the cut definition.
46  //
47  static void SetDoSpectraCent(bool a=true) { mDoSpectraCent=a; }
48  static void SetDoOtherCent(bool a=true) { mDoSpectraCent= !a; }
49 
50  //----
51 
52  static void SetVertexZ(Float_t min,Float_t max) {
53  mVertexZ[0] = min; mVertexZ[1] = max;
54  }
55 
56  static void SetVertexZSkip(Float_t val){
57  mVertexZSkip=fabs(val);
58  }
59  //
60  // track cuts
61  //
62 
63  static void SetHalf(char half);
64  static void SetHitHalf(char half);
65  static void SetGeomHalf(char half);
66 
67  static char Half() { return mHalf; }
68  static char HitHalf() { return mHitHalf; }
69  static char GeomHalf() { return mGeomHalf; }
70  static bool VertexSkipOn() { return (mVertexZSkip); }
71 
72 
73  static void SetHitAvoid(Float_t val){
74  mHitAvoid=val;
75  }
76  // static Float_t HitVoid() { return mHitAvoid; }
77 
78  static void SetEta(Float_t min,Float_t max) {
79  mEta[0] = min; mEta[1] = max;
80  }
81 
82  static void SetFitPts(Int_t min, Int_t max) {
83  mFitPts[0] = min; mFitPts[1] = max;
84  }
85 
86  static void SetSDcaGl(Float_t min, Float_t max) {
87  mSDcaGl[0] = min; mSDcaGl[1] = max;
88  }
89 
90  static void SetDcaPr(Float_t min, Float_t max) {
91  mDcaPr[0] = min; mDcaPr[1] = max;
92  }
93 
94  static void SetDcaXYGl(Float_t min, Float_t max) {
95  mDcaXYGl[0] = min; mDcaXYGl[1] = max;
96  }
97 
98  static void SetMcPts(Int_t min, Int_t max){
99  mMcPts[0] = min, mMcPts[1] = max;
100  }
101 
102  static void SetEtaTight(Float_t min, Float_t max){
103  mEtaTight[0] = min, mEtaTight[1] = max;
104  }
105 
106 
107  static void SetCut(Int_t);
108 
109 
110  //static bool IsSameSide(Float_t vertexZ, Float_t dip){
111  // return(vertexZ*(vertexZ + 200*TMath::Tan(dip))>0);
112  // }
113 
114  // for east west
115  static bool IsSameSide(Float_t vertexZ, Float_t firstZ,Float_t lastZ){
116  bool isOut = !(mVertexZSkip && !IsOutSide(firstZ,lastZ,mVertexZSkip));
117  return (vertexZ*lastZ>0 && vertexZ*firstZ>0 && isOut);
118  }
119 
120  static bool IsGeomSameSide(Float_t vertexZ,Float_t dipAngle){
121  float z = vertexZ+192*tan(dipAngle);
122  bool isSame=false;
123  switch(mGeomHalf){
124  case 'e': if(z<0 && vertexZ<0) isSame=true; break;
125  case 'w' : if(z>0 && vertexZ>0) isSame=true; break;
126  case 's' : if(z*vertexZ>0) isSame=true; break;
127  default : exit(-1);
128  }
129  return isSame;
130  }
131 
132  static bool IsHitSameSide(Float_t firstZ,Float_t lastZ){
133  bool isSame=false;
134  switch(mHitHalf){
135  case 'e': if(firstZ<0 && lastZ<0) isSame=true; break;
136  case 'w' : if(firstZ>0 && lastZ>0) isSame=true; break;
137  case 's' : if(firstZ*lastZ>0) isSame=true; break;
138  default : exit(-1);
139  }
140  return isSame;
141 
142  }
143 
144  static bool IsOutSide(Float_t firstZ, Float_t lastZ, Float_t val){
145  return (fabs(firstZ)>fabs(val) && fabs(lastZ)>fabs(val)
146  && firstZ*lastZ>0);
147  }
148 
149 
150  static void ShowCuts();
151 
152 
153  //
154  // primitives
155  //
156 
157  static NchCentrality mZdcCtbCent[2];
158  static Int_t mFlowCent[2];
159  static Int_t mHMinusCent[2];
160  // static Int_t mZdcHMinusCent[2] ; //!
161  static Int_t mNchCent[2];
162 
163  static bool mDoZdcCtbCent;
164  static bool mDoFlowCent;
165  static bool mDoHMinusCent;
166  // static bool mDoZdcHMinusCent; //!
167  static bool mDoNchCent;
168  static bool mDoNchCentKludge;
169 
170  static bool mDoSpectraCent;
171 
172 
173  static Float_t mVertexZ[2];
174  static Float_t mVertexZSkip;
175 
176  static Float_t mEta[2];
177  static Int_t mFitPts[2];
178  static Float_t mSDcaGl[2];
179  static Float_t mDcaPr[2];
180  static Float_t mDcaXYGl[2];
181  static Int_t mMcPts[2];
182  static Float_t mEtaTight[2];
183 
184  static char mHalf;
185  static char mHitHalf;
186  static char mGeomHalf;
187  static Float_t mHitAvoid;
188 
189  static Int_t mCut;
190 
191  private:
192 
193  ClassDef(Cut,1)
194 
195 };
196 
197 
198 
199 
200 
201 
202 #endif
Definition: Cut.h:18