StFlowCutTrack.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. // $Id: StFlowCutTrack.h,v 1.20 2003/09/02 17:58:11 perev Exp $
  4. //
  5. // Author: Art Poskanzer and Raimond Snellings, LBNL, Nov 1999
  6. // FTPC added by Markus Oldenburg, MPI, Dec 2000
  7. // MuDst enabled by Kirill Filimonov, LBNL, Jun 2002
  8. //
  9. // Description: Class for applying flow track cuts
  10. // If lo >= hi no cut is applied
  11. // All functions and data members are static
  12. // Therefor, no need to instantiate
  13. // Just use StFlowCutTrack::func();
  14. //
  15. ////////////////////////////////////////////////////////////////////////////
  16. #ifndef _StFlowCutTrack_INCLUDED_
  17. #define _StFlowCutTrack_INCLUDED_
  18. #include <Stiostream.h>
  19. #include <stdlib.h>
  20. #include "Rtypes.h"
  21. class StTrack;
  22. class StFlowPicoTrack;
  23. class StMuTrack;
  24. class StFlowCutTrack {
  25. public:
  26. StFlowCutTrack();
  27. virtual ~StFlowCutTrack();
  28. static Int_t CheckTrack(StTrack* pTrack);
  29. static Int_t CheckTrack(StFlowPicoTrack* pPicoTrack);
  30. static Int_t CheckTrack(StMuTrack* pMuTrack);
  31. static void PrintCutList();
  32. static UInt_t EtaSymPosTpc();
  33. static UInt_t EtaSymNegTpc();
  34. static UInt_t EtaSymPosFtpc();
  35. static UInt_t EtaSymNegFtpc();
  36. static void EtaSymClear();
  37. static void SetFitPtsTpc(Int_t lo, Int_t hi);
  38. static void SetFitPtsFtpc(Int_t lo, Int_t hi);
  39. static void SetFitOverMaxPts(Float_t lo, Float_t hi);
  40. static void SetChiSqTpc(Float_t lo, Float_t hi);
  41. static void SetChiSqFtpc(Float_t lo, Float_t hi);
  42. static void SetDcaFtpc(Float_t lo, Float_t hi);
  43. static void SetDcaGlobalFtpc(Float_t lo, Float_t hi);
  44. static void SetPtTpc(Float_t lo, Float_t hi);
  45. static void SetPtFtpc(Float_t lo, Float_t hi);
  46. static void SetEtaTpc(Float_t lo, Float_t hi);
  47. static void SetEtaFtpc(Float_t lo_neg, Float_t hi_neg, Float_t lo_pos, Float_t hi_pos);
  48. static void SetChgTpc(Int_t lo, Int_t hi);
  49. static void SetChgFtpc(Int_t lo, Int_t hi);
  50. static void IncludeTpcTracks(Bool_t tpc_include);
  51. static void IncludeFtpcTracks(Bool_t ftpc_include);
  52. private:
  53. static UInt_t mTrackN; // number of tracks
  54. static UInt_t mTpcTrackN; // number of Tpc tracks
  55. static UInt_t mFtpcTrackN; // number of Ftpc tracks
  56. static UInt_t mFtpcEastTrackN; // number of Ftpc east tracks
  57. static UInt_t mFtpcWestTrackN; // number of Ftpc west tracks
  58. static UInt_t mGoodTrackN; // number of accepted tracks
  59. static UInt_t mGoodTpcTrackN; // number of accepted Tpc tracks
  60. static UInt_t mGoodFtpcTrackN; // number of accepted Ftpc tracks
  61. static UInt_t mEtaSymPosTpcN; // number of positive Eta Tpc tracks
  62. static UInt_t mEtaSymNegTpcN; // number of negative Eta Tpc tracks
  63. static UInt_t mEtaSymPosFtpcN; // number of positive Eta Ftpc tracks
  64. static UInt_t mEtaSymNegFtpcN; // number of negative Eta Ftpc tracks
  65. static UInt_t mFitPtsTpcCutN; // number not accepted
  66. static Int_t mFitPtsTpcCuts[2]; // range
  67. static UInt_t mFitPtsFtpcCutN; // number not accepted
  68. static Int_t mFitPtsFtpcCuts[2]; // range
  69. static UInt_t mFitOverMaxCutN; // number not accepted (all)
  70. static UInt_t mFitOverMaxTpcCutN; // number not accepted (Tpc)
  71. static UInt_t mFitOverMaxFtpcCutN; // number not accepted (Ftpc)
  72. static Float_t mFitOverMaxCuts[2]; // range
  73. static UInt_t mChiSqTpcCutN; // number not accepted
  74. static Float_t mChiSqTpcCuts[2]; // range
  75. static UInt_t mChiSqFtpcCutN; // number not accepted
  76. static Float_t mChiSqFtpcCuts[2]; // range
  77. static UInt_t mDcaFtpcCutN; // number not accepted
  78. static Float_t mDcaFtpcCuts[2]; // range
  79. static UInt_t mDcaGlobalFtpcCutN; // number not accepted
  80. static Float_t mDcaGlobalFtpcCuts[2]; // range
  81. static UInt_t mPtTpcCutN; // number not accepted
  82. static Float_t mPtTpcCuts[2]; // range
  83. static UInt_t mPtFtpcCutN; // number not accepted
  84. static Float_t mPtFtpcCuts[2]; // range
  85. static UInt_t mEtaTpcCutN; // number not accepted
  86. static Float_t mEtaTpcCuts[2]; // range
  87. static UInt_t mEtaFtpcCutN; // number not accepted
  88. static Float_t mEtaFtpcCuts[4]; // range
  89. static UInt_t mChgTpcCutN; // number not accepted
  90. static Int_t mChgTpcCuts[2]; // range
  91. static UInt_t mChgFtpcCutN; // number not accepted
  92. static Int_t mChgFtpcCuts[2]; // range
  93. static UInt_t mTpcTrackCutN; // number not accepted
  94. static Bool_t mTpcTrackCut; // cut or don't cut (kTRUE, kFALSE)
  95. static UInt_t mFtpcTrackCutN; // number not accepted
  96. static Bool_t mFtpcTrackCut; // cut or don't cut (kTRUE, kFALSE)
  97. ClassDef(StFlowCutTrack,1) // macro for rootcint
  98. };
  99. inline UInt_t StFlowCutTrack::EtaSymPosTpc() { return mEtaSymPosTpcN; }
  100. inline UInt_t StFlowCutTrack::EtaSymNegTpc() { return mEtaSymNegTpcN; }
  101. inline UInt_t StFlowCutTrack::EtaSymPosFtpc() { return mEtaSymPosFtpcN; }
  102. inline UInt_t StFlowCutTrack::EtaSymNegFtpc() { return mEtaSymNegFtpcN; }
  103. inline void StFlowCutTrack::EtaSymClear() { mEtaSymPosTpcN = 0; mEtaSymNegTpcN = 0;
  104. mEtaSymPosFtpcN = 0; mEtaSymNegFtpcN = 0; }
  105. inline void StFlowCutTrack::SetFitPtsTpc(Int_t lo, Int_t hi) {
  106. mFitPtsTpcCuts[0] = lo; mFitPtsTpcCuts[1] = hi; }
  107. inline void StFlowCutTrack::SetFitPtsFtpc(Int_t lo, Int_t hi) {
  108. mFitPtsFtpcCuts[0] = lo; mFitPtsFtpcCuts[1] = hi; }
  109. inline void StFlowCutTrack::SetFitOverMaxPts(Float_t lo, Float_t hi) {
  110. mFitOverMaxCuts[0] = lo; mFitOverMaxCuts[1] = hi; }
  111. inline void StFlowCutTrack::SetChiSqTpc(Float_t lo, Float_t hi) {
  112. mChiSqTpcCuts[0] = lo; mChiSqTpcCuts[1] = hi; }
  113. inline void StFlowCutTrack::SetChiSqFtpc(Float_t lo, Float_t hi) {
  114. mChiSqFtpcCuts[0] = lo; mChiSqFtpcCuts[1] = hi; }
  115. inline void StFlowCutTrack::SetDcaFtpc(Float_t lo, Float_t hi) {
  116. mDcaFtpcCuts[0] = lo; mDcaFtpcCuts[1] = hi; }
  117. inline void StFlowCutTrack::SetDcaGlobalFtpc(Float_t lo, Float_t hi) {
  118. mDcaGlobalFtpcCuts[0] = lo; mDcaGlobalFtpcCuts[1] = hi; }
  119. inline void StFlowCutTrack::SetPtTpc(Float_t lo, Float_t hi) {
  120. mPtTpcCuts[0] = lo; mPtTpcCuts[1] = hi; }
  121. inline void StFlowCutTrack::SetPtFtpc(Float_t lo, Float_t hi) {
  122. mPtFtpcCuts[0] = lo; mPtFtpcCuts[1] = hi; }
  123. inline void StFlowCutTrack::SetEtaTpc(Float_t lo, Float_t hi) {
  124. mEtaTpcCuts[0] = lo; mEtaTpcCuts[1] = hi; }
  125. inline void StFlowCutTrack::SetEtaFtpc(Float_t lo_neg, Float_t hi_neg,
  126. Float_t lo_pos, Float_t hi_pos) {
  127. mEtaFtpcCuts[0] = lo_neg; mEtaFtpcCuts[1] = hi_neg;
  128. mEtaFtpcCuts[2] = lo_pos; mEtaFtpcCuts[3] = hi_pos; }
  129. inline void StFlowCutTrack::SetChgTpc(Int_t lo, Int_t hi) {
  130. mChgTpcCuts[0] = lo; mChgTpcCuts[1] = hi; }
  131. inline void StFlowCutTrack::SetChgFtpc(Int_t lo, Int_t hi) {
  132. mChgFtpcCuts[0] = lo; mChgFtpcCuts[1] = hi; }
  133. inline void StFlowCutTrack::IncludeTpcTracks(Bool_t tpc_include) {
  134. mTpcTrackCut = !tpc_include; }
  135. inline void StFlowCutTrack::IncludeFtpcTracks(Bool_t ftpc_include) {
  136. mFtpcTrackCut = !ftpc_include; }
  137. #endif
  138. ////////////////////////////////////////////////////////////////////////////
  139. //
  140. // $Log: StFlowCutTrack.h,v $
  141. // Revision 1.20 2003/09/02 17:58:11 perev
  142. // gcc 3.2 updates + WarnOff
  143. //
  144. // Revision 1.19 2003/01/14 14:14:16 oldi
  145. // Possibility to exclude TPC tracks completely (= FTPC only).
  146. //
  147. // Revision 1.18 2003/01/10 16:42:05 oldi
  148. // Several changes to comply with FTPC tracks:
  149. // - Switch to include/exclude FTPC tracks introduced.
  150. // The same switch changes the range of the eta histograms.
  151. // - Eta symmetry plots for FTPC tracks added and separated from TPC plots.
  152. // - PhiWgts and related histograms for FTPC tracks split in FarEast, East,
  153. // West, FarWest (depending on vertex.z()).
  154. // - Psi_Diff plots for 2 different selections and the first 2 harmonics added.
  155. // - Cut to exclude mu-events with no primary vertex introduced.
  156. // (This is possible for UPC events and FTPC tracks.)
  157. // - Global DCA cut for FTPC tracks added.
  158. // - Global DCA cuts for event plane selection separated for TPC and FTPC tracks.
  159. // - Charge cut for FTPC tracks added.
  160. //
  161. // Revision 1.17 2002/06/10 22:50:59 posk
  162. // pt and eta weighting now default.
  163. // DcaGlobalPart default now 0 to 1 cm.
  164. // Event cut order changed.
  165. //
  166. // Revision 1.16 2002/06/07 22:18:40 kirill
  167. // Introduced MuDst reader
  168. //
  169. // Revision 1.15 2002/02/13 22:29:17 posk
  170. // Pt Weight now also weights Phi Weights. Added Eta Weight, default=FALSE.
  171. //
  172. // Revision 1.14 2002/01/31 21:43:14 aihong
  173. // add SetChgTpc()
  174. //
  175. // Revision 1.13 2001/11/09 21:10:34 posk
  176. // Switched from CERNLIB to TMath. Little q is now normalized.
  177. //
  178. // Revision 1.12 2001/07/27 01:26:10 snelling
  179. // Added and changed variables for picoEvent. Changed trackCut class to StTrack
  180. //
  181. // Revision 1.11 2001/05/22 20:17:23 posk
  182. // Now can do pseudorapidity subevents.
  183. //
  184. // Revision 1.10 2000/12/12 20:22:05 posk
  185. // Put log comments at end of files.
  186. // Deleted persistent StFlowEvent (old micro DST).
  187. //
  188. // Revision 1.9 2000/12/10 02:01:13 oldi
  189. // A new member (StTrackTopologyMap mTopology) was added to StFlowPicoTrack.
  190. // The evaluation of either a track originates from the FTPC or not is
  191. // unambiguous now. The evaluation itself is easily extendible for other
  192. // detectors (e.g. SVT+TPC). Old flowpicoevent.root files are treated as if
  193. // they contain TPC tracks only (backward compatibility).
  194. //
  195. // Revision 1.7 2000/12/08 17:03:38 oldi
  196. // Phi weights for both FTPCs included.
  197. //
  198. // Revision 1.6 2000/12/06 15:38:46 oldi
  199. // Including FTPC.
  200. //
  201. // Revision 1.5 2000/10/12 22:46:35 snelling
  202. // Added support for the new pDST's and the probability pid method
  203. //
  204. // Revision 1.4 2000/08/31 18:58:20 posk
  205. // For picoDST, added version number, runID, and multEta for centrality.
  206. // Added centrality cut when reading picoDST.
  207. // Added pt and eta selections for particles corr. wrt event plane.
  208. //
  209. // Revision 1.3 2000/08/10 23:00:21 posk
  210. // New centralities. pt and eta cuts.
  211. //
  212. // Revision 1.2 2000/07/12 17:54:36 posk
  213. // Added chi2 and dca cuts. Multiplied EtaSym by ::sqrt(mult).
  214. // Apply cuts when reading picoevent file.
  215. //
  216. // Revision 1.1 2000/03/02 23:02:43 posk
  217. // Changed extensions from .hh and .cc to .h and .cxx .
  218. //
  219. // Revision 1.4 1999/12/15 22:01:24 posk
  220. // Added StFlowConstants.hh
  221. //
  222. // Revision 1.3 1999/11/30 18:52:50 snelling
  223. // First modification for the new StEvent
  224. //
  225. // Revision 1.2 1999/11/24 18:17:11 posk
  226. // Put the methods which act on the data in with the data in StFlowEvent.
  227. //
  228. // Revision 1.1 1999/11/05 00:06:45 posk
  229. // First versions of Flow cut classes.
  230. //
  231. ////////////////////////////////////////////////////////////////////////////