StFlowCutEvent.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. // $Id: StFlowCutEvent.h,v 1.14 2006/02/22 19:27:04 posk Exp $
  4. //
  5. // Author: Art Poskanzer and Raimond Snellings, LBNL, Oct 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 event cuts
  10. // If lo >= hi no cut is applied
  11. // All functions and data members are static
  12. // Therefore, no need to instantiate
  13. // Just use StFlowCutEvent::func();
  14. //
  15. ////////////////////////////////////////////////////////////////////////////
  16. #ifndef _StFlowCutEvent_INCLUDED_
  17. #define _StFlowCutEvent_INCLUDED_
  18. #include <Stiostream.h>
  19. #include <stdlib.h>
  20. #include "Rtypes.h"
  21. class StEvent;
  22. class StFlowPicoEvent;
  23. class StMuEvent;
  24. class StMuDst;
  25. class StFlowCutEvent {
  26. public:
  27. StFlowCutEvent();
  28. virtual ~StFlowCutEvent();
  29. static Bool_t CheckEvent(StEvent* pEvent);
  30. static Bool_t CheckEvent(StFlowPicoEvent* pPicoEvent);
  31. static Bool_t CheckEvent(StMuDst* pMu);
  32. static Bool_t CheckEtaSymmetry(StEvent* pEvent);
  33. static Bool_t CheckEtaSymmetry(StFlowPicoEvent* pPicoEvent);
  34. static Bool_t CheckEtaSymmetry(StMuEvent* pMuEvent);
  35. static void PrintCutList();
  36. static void SetCent(const Int_t lo, const Int_t hi);
  37. static void SetMult(const Int_t lo, const Int_t hi);
  38. static void SetVertexX(const Float_t lo, const Float_t hi);
  39. static void SetVertexY(const Float_t lo, const Float_t hi);
  40. static void SetVertexZ(const Float_t lo, const Float_t hi);
  41. static void SetVertexR(const Float_t lo, const Float_t hi); //# added by jcampbell
  42. static void SetVertexRCenter(const Float_t xCenter, const Float_t yCenter); //# added by jcampbell
  43. static void SetZDCCut(const Int_t zdc); //# added by jcampbell
  44. static void SetEtaSymTpc(Float_t lo, Float_t hi);
  45. static void SetEtaSymFtpc(Float_t lo, Float_t hi);
  46. static void SetTrigger(const UInt_t value);
  47. static UInt_t TriggersFound();
  48. static UInt_t GetFlowTriggerBitMap();
  49. private:
  50. static Int_t mZDCCut; // zdc Cut //# added by jcampbell
  51. static Int_t mZDCCutNumber; // zdc Cut //# added by jcampbell
  52. static UInt_t mEventN; // number of events
  53. static UInt_t mGoodEventN; // number of accepted events
  54. static UInt_t mCentCut; // number of not accepted events
  55. static Int_t mCentCuts[2]; // range of multiplicity
  56. static UInt_t mMultCut; // number of not accepted events
  57. static Int_t mMultCuts[2]; // range of multiplicity
  58. static UInt_t mVertexXCut; // number of not accepted events
  59. static Float_t mVertexXCuts[2]; // range of X vertex position
  60. static UInt_t mVertexYCut; // number of not accepted events
  61. static Float_t mVertexYCuts[2]; // range of Y vertex position
  62. static UInt_t mVertexZCut; // number of not accepted events
  63. static Float_t mVertexZCuts[2]; // range of Z vertex position
  64. static UInt_t mVertexRCut; // number of not accepted events //# added by jcampbell
  65. static Float_t mVertexRCuts[2]; // range of R vertex position //# added by jcampbell
  66. static Float_t mVertexRCenter[2]; // range of R vertex position //# added by jcampbell
  67. static UInt_t mEtaSymTpcCutN; // number not accepted
  68. static Float_t mEtaSymTpcCuts[2]; // range
  69. static UInt_t mEtaSymFtpcCutN; // number not accepted
  70. static Float_t mEtaSymFtpcCuts[2]; // range
  71. static UInt_t mTriggerCutN; // number not accepted
  72. static UInt_t mTriggerCut; // allowed trigger value
  73. static UInt_t mTriggersFound;
  74. static UInt_t flowTriggerBitMap;
  75. ClassDef(StFlowCutEvent,1) // macro for rootcint
  76. };
  77. inline void StFlowCutEvent::SetCent(const Int_t lo, const Int_t hi) {
  78. mCentCuts[0] = lo; mCentCuts[1] = hi; }
  79. inline void StFlowCutEvent::SetMult(const Int_t lo, const Int_t hi) {
  80. mMultCuts[0] = lo; mMultCuts[1] = hi; }
  81. inline void StFlowCutEvent::SetVertexX(const Float_t lo, const Float_t hi) {
  82. mVertexXCuts[0] = lo; mVertexXCuts[1] = hi; }
  83. inline void StFlowCutEvent::SetVertexY(const Float_t lo, const Float_t hi) {
  84. mVertexYCuts[0] = lo; mVertexYCuts[1] = hi; }
  85. inline void StFlowCutEvent::SetVertexZ(const Float_t lo, const Float_t hi) {
  86. mVertexZCuts[0] = lo; mVertexZCuts[1] = hi; }
  87. //# added by jcampbell
  88. inline void StFlowCutEvent::SetZDCCut(const Int_t zdc) {
  89. mZDCCut = zdc; }
  90. inline void StFlowCutEvent::SetVertexR(const Float_t lo, const Float_t hi) {
  91. mVertexRCuts[0] = lo; mVertexRCuts[1] = hi; }
  92. inline void StFlowCutEvent::SetVertexRCenter(const Float_t xCenter, const Float_t yCenter) {
  93. mVertexRCenter[0] = xCenter; mVertexRCenter[1] = yCenter; }
  94. inline void StFlowCutEvent::SetEtaSymTpc(Float_t lo, Float_t hi) {
  95. mEtaSymTpcCuts[0] = lo; mEtaSymTpcCuts[1] = hi; }
  96. inline void StFlowCutEvent::SetEtaSymFtpc(Float_t lo, Float_t hi) {
  97. mEtaSymFtpcCuts[0] = lo; mEtaSymFtpcCuts[1] = hi; }
  98. inline void StFlowCutEvent::SetTrigger(const UInt_t value) {
  99. mTriggerCut = value; }
  100. inline UInt_t StFlowCutEvent::TriggersFound() {
  101. return mTriggersFound; }
  102. inline UInt_t StFlowCutEvent::GetFlowTriggerBitMap() {
  103. return flowTriggerBitMap; }
  104. #endif
  105. ////////////////////////////////////////////////////////////////////////////
  106. //
  107. // $Log: StFlowCutEvent.h,v $
  108. // Revision 1.14 2006/02/22 19:27:04 posk
  109. // Changes needed for the MuDst
  110. // Stopped using eventSummary()
  111. //
  112. // Revision 1.13 2005/02/11 23:22:12 posk
  113. // Made TriggersFound() work for pico files.
  114. //
  115. // Revision 1.12 2005/02/08 20:57:36 psoren
  116. // trigger and centrality selections were updated for all runs after run 4 to be compatible with trigger collections. Added TriggersFound() and GetFlowTriggerBitMap() functions.
  117. //
  118. // Revision 1.11 2003/09/02 17:58:11 perev
  119. // gcc 3.2 updates + WarnOff
  120. //
  121. // Revision 1.10 2003/01/10 16:41:56 oldi
  122. // Several changes to comply with FTPC tracks:
  123. // - Switch to include/exclude FTPC tracks introduced.
  124. // The same switch changes the range of the eta histograms.
  125. // - Eta symmetry plots for FTPC tracks added and separated from TPC plots.
  126. // - PhiWgts and related histograms for FTPC tracks split in FarEast, East,
  127. // West, FarWest (depending on vertex.z()).
  128. // - Psi_Diff plots for 2 different selections and the first 2 harmonics added.
  129. // - Cut to exclude mu-events with no primary vertex introduced.
  130. // (This is possible for UPC events and FTPC tracks.)
  131. // - Global DCA cut for FTPC tracks added.
  132. // - Global DCA cuts for event plane selection separated for TPC and FTPC tracks.
  133. // - Charge cut for FTPC tracks added.
  134. //
  135. // Revision 1.9 2002/06/10 22:50:57 posk
  136. // pt and eta weighting now default.
  137. // DcaGlobalPart default now 0 to 1 cm.
  138. // Event cut order changed.
  139. //
  140. // Revision 1.8 2002/06/07 22:18:38 kirill
  141. // Introduced MuDst reader
  142. //
  143. // Revision 1.7 2002/01/30 13:04:20 oldi
  144. // Trigger cut implemented.
  145. //
  146. // Revision 1.6 2000/12/12 20:22:05 posk
  147. // Put log comments at end of files.
  148. // Deleted persistent StFlowEvent (old micro DST).
  149. //
  150. // Revision 1.5 2000/08/31 18:58:19 posk
  151. // For picoDST, added version number, runID, and multEta for centrality.
  152. // Added centrality cut when reading picoDST.
  153. // Added pt and eta selections for particles corr. wrt event plane.
  154. //
  155. // Revision 1.4 2000/07/12 17:54:34 posk
  156. // Added chi2 and dca cuts. Multiplied EtaSym by ::sqrt(mult).
  157. // Apply cuts when reading picoevent file.
  158. //
  159. // Revision 1.3 2000/06/30 14:48:30 posk
  160. // Using MessageMgr, changed Eta Symmetry cut.
  161. //
  162. // Revision 1.2 2000/05/26 21:29:26 posk
  163. // Protected Track data members from overflow.
  164. //
  165. // Revision 1.1 2000/03/02 23:02:40 posk
  166. // Changed extensions from .hh and .cc to .h and .cxx .
  167. //
  168. // Revision 1.4 1999/12/15 22:01:23 posk
  169. // Added StFlowConstants.hh
  170. //
  171. // Revision 1.3 1999/11/30 18:52:48 snelling
  172. // First modification for the new StEvent
  173. //
  174. // Revision 1.2 1999/11/24 18:17:10 posk
  175. // Put the methods which act on the data in with the data in StFlowEvent.
  176. //
  177. // Revision 1.1 1999/11/05 00:06:42 posk
  178. // First versions of Flow cut classes.
  179. //
  180. ////////////////////////////////////////////////////////////////////////////