StMuDstMinvMaker.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. /****************************************/
  2. /*** ***/
  3. /*** StMuDstMinvMaker ***/
  4. /*** VERSION: 1.0 ***/
  5. /*** AUTHOR: Nikita Ermakov ***/
  6. /*** DATE: ***/
  7. /*** E-MAIL: coffe92@gmail.com ***/
  8. /*** ***/
  9. /****************************************/
  10. #ifndef STMUDSTMINVMAKER_HH
  11. #define STMUDSTMINVMAKER_HH
  12. #include "StMaker.h"
  13. #include "StThreeVector.hh"
  14. #include "StThreeVectorF.hh"
  15. #include "StPhysicalHelixD.hh"
  16. #include "StRefMultCorr/StRefMultCorr.h"
  17. #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
  18. #include "StMuDSTMaker/COMMON/StMuDst.h"
  19. #include "StMuDSTMaker/COMMON/StMuEvent.h"
  20. #include "StMuDSTMaker/COMMON/StMuTrack.h"
  21. #include "StMuDSTMaker/COMMON/StMuPrimaryVertex.h"
  22. #include "StMuDSTMaker/COMMON/StMuBTofPidTraits.h"
  23. #include "StMuDSTMaker/COMMON/StMuBTofHit.h"
  24. #include <TString.h>
  25. #include <TFile.h>
  26. #include <TLorentzVector.h>
  27. #include <TTree.h>
  28. #include <TH1.h>
  29. #include <TH2.h>
  30. #include <vector>
  31. #include <iostream>
  32. #ifndef St_NO_NAMESPACES
  33. using namespace std;
  34. #endif
  35. class StMuDst;
  36. class StMuDstMaker;
  37. class StMuEvent;
  38. class StMuTrack;
  39. const float PION_MASS = 0.139569; // GeV/c^2
  40. const float PROTON_MASS = 0.938272; // GeV/c^2
  41. const float KAON_MASS = 0.4936; // GeV/c^2
  42. //_________________
  43. class StMuDstMinvMaker : public StMaker {
  44. public:
  45. StMuDstMinvMaker(StMuDstMaker *muMaker,
  46. const Char_t *oFileName);
  47. ~StMuDstMinvMaker();
  48. //
  49. // Chain methods
  50. //
  51. void Clear(Option_t *option = "");
  52. Int_t Init();
  53. Int_t Make();
  54. Int_t Finish();
  55. void CleanVariables();
  56. void SetMuDstMaker(StMuDstMaker *maker);
  57. //
  58. // Setup event
  59. //
  60. void SetTriggerId(unsigned int id);
  61. void SetVtxZCut(float lo, float hi);
  62. void SetVtxRCut(float lo, float hi);
  63. void SetVtxShift(float xShift, float yShift);
  64. void SetVtxVpdVzDiffCut(float lo, float hi);
  65. //
  66. // Setup track
  67. //
  68. void SetP(float lo, float hi);
  69. void SetPt(float lo, float hi);
  70. void SetTrackNHits(int lo, int hi);
  71. void SetTrackNHitsFit(int lo, int hi);
  72. void SetTrackEta(float lo, float hi);
  73. void SetTrackFlag(short lo, short hi);
  74. void SetTrackDCA(float lo, float hi);
  75. //
  76. // TPC PID
  77. //
  78. // Pion
  79. void SetPionPionNSigma(float lo, float hi);
  80. void SetPionKaonNSigma(float lo, float hi);
  81. void SetPionProtonNSigma(float lo, float hi);
  82. // Kaon
  83. void SetKaonPionNSigma(float lo, float hi);
  84. void SetKaonKaonNSigma(float lo, float hi);
  85. void SetKaonProtonNSigma(float lo, float hi);
  86. // Proton
  87. void SetProtonPionNSigma(float lo, float hi);
  88. void SetProtonKaonNSigma(float lo, float hi);
  89. void SetProtonProtonNSigma(float lo, float hi);
  90. //
  91. // TOF PID
  92. //
  93. void SetPionMassSqr(float lo, float hi);
  94. void SetKaonMassSqr(float lo, float hi);
  95. void SetProtonMassSqr(float lo, float hi);
  96. //
  97. // TOF and TPC momentum threshold
  98. //
  99. void SetTTTPThreshold(float pThresh);
  100. //
  101. // Cut methods
  102. //
  103. Bool_t AcceptTrigger(StMuEvent *muEvent);
  104. Bool_t AcceptPrimVtx(StThreeVectorF vtxPos, Float_t vpdVz);
  105. Bool_t AcceptTrack(StMuTrack *trk, UShort_t vtxInd);
  106. Bool_t IsTofTrack(StMuTrack *trk);
  107. private:
  108. const char *mFileName;
  109. TFile *mOutFile;
  110. vector<UInt_t> mTriggerIdCollection;
  111. //
  112. // Global counters
  113. //
  114. bool mEventIsGood;
  115. int mNEventsIn;
  116. int mNEventsPassed;
  117. bool mIsGoodTrack;
  118. float mTTTPThreshold;
  119. //
  120. // Event cuts
  121. //
  122. float mPrimVtxZ[2];
  123. float mPrimVtxR[2];
  124. float mPrimVtxVpdVzDiff[2];
  125. float mPrimVtxXShift;
  126. float mPrimVtxYShift;
  127. //
  128. // Single-particle cuts
  129. //
  130. float mTrackP[2];
  131. float mTrackPt[2];
  132. float mTrackDca[2];
  133. float mTrackDcaGlobal[2];
  134. unsigned short mTrackNHits[2];
  135. unsigned short mTrackNHitsFit[2];
  136. float mTrackEta[2];
  137. short mTrackFlag[2];
  138. //
  139. // Minv arrays
  140. //
  141. unsigned int mPiPKP[50];
  142. unsigned int mPiPKM[50];
  143. unsigned int mPi;
  144. //
  145. // TPC NSigma
  146. //
  147. // Pion
  148. float mPionPionNSigma[2];
  149. float mPionKaonNSigma[2];
  150. float mPionProtonNSigma[2];
  151. // Kaon
  152. float mKaonPionNSigma[2];
  153. float mKaonKaonNSigma[2];
  154. float mKaonProtonNSigma[2];
  155. // Proton
  156. float mProtonPionNSigma[2];
  157. float mProtonKaonNSigma[2];
  158. float mProtonProtonNSigma[2];
  159. //
  160. // TOF Mass
  161. //
  162. float mPionMass[2];
  163. float mKaonMass[2];
  164. float mProtonMass[2];
  165. //
  166. // Pointers to classes
  167. //
  168. StMuPrimaryVertex *mPrimVertex;
  169. StMuTrack *mPrimTrack;
  170. StMuTrack *mGlobTrack;
  171. StMuDstMaker *mMuDstMaker;
  172. StMuEvent *mMuEvent;
  173. StMuDst *mMuDst;
  174. //
  175. // Histograms
  176. //
  177. //
  178. // General event distributions
  179. //
  180. TH1F *hR;
  181. TH1F *hVx;
  182. TH1F *hVy;
  183. TH1F *hVz;
  184. TH2F *hVxVsVy;
  185. TH2F *hVxVsVz;
  186. TH2F *hVyVsVz;
  187. TH1F *hNPrimTr;
  188. TH1F *hNGlobTr;
  189. TH1F *hTofRefMult;
  190. TH2F *hTofRefMultVsRefMult;
  191. TH1F *hRefMult;
  192. TH1F *hRefMultAccept;
  193. TH1F *hVpd;
  194. TH1F *hVpdVz;
  195. TH1F *hNPrimVtx;
  196. //
  197. // General track distributions
  198. //
  199. TH1F *hP;
  200. TH1F *hPt;
  201. TH1F *hPx;
  202. TH1F *hPy;
  203. TH1F *hPz;
  204. TH1F *hEta;
  205. TH1F *hPAccept;
  206. TH1F *hPtAccept;
  207. TH1F *hPxAccept;
  208. TH1F *hPyAccept;
  209. TH1F *hPzAccept;
  210. TH1F *hEtaAccept;
  211. TH2F *hMassSqrVsPt;
  212. TH2F *hDedxVsPt;
  213. TH2F *hInvBetaExpVsPt;
  214. TH2F *hInvBetaThVsPt;
  215. TH1F *hTOF;
  216. // Pion PID
  217. TH1F *hNSigmaPionPion;
  218. TH1F *hNSigmaPionKaon;
  219. TH1F *hNSigmaPionProton;
  220. TH2F *hNSigmaPionPionVsPt;
  221. TH2F *hNSigmaPionKaonVsPt;
  222. TH2F *hNSigmaPionProtonVsPt;
  223. TH2F *hDMassSqrVsPtPionTPC;
  224. TH2F *hDMassSqrVsPtPionTOF;
  225. TH2F *hInvBetaExpThPionTNT;
  226. TH2F *hInvBetaExpThPionTPC;
  227. TH2F *hInvBetaExpThPionTOF;
  228. TH2F *hInvBetaExpThPionTTT;
  229. TH2F *hInvBetaExpThPionINT;
  230. // Kaon PID
  231. TH1F *hNSigmaKaonPion;
  232. TH1F *hNSigmaKaonKaon;
  233. TH1F *hNSigmaKaonProton;
  234. TH2F *hNSigmaKaonPionVsPt;
  235. TH2F *hNSigmaKaonKaonVsPt;
  236. TH2F *hNSigmaKaonProtonVsPt;
  237. TH2F *hDMassSqrVsPtKaonTPC;
  238. TH2F *hDMassSqrVsPtKaonTOF;
  239. TH2F *hInvBetaExpThKaonTNT;
  240. TH2F *hInvBetaExpThKaonTPC;
  241. TH2F *hInvBetaExpThKaonTOF;
  242. TH2F *hInvBetaExpThKaonTTT;
  243. TH2F *hInvBetaExpThKaonINT;
  244. // Proton PID
  245. TH1F *hNSigmaProtonPion;
  246. TH1F *hNSigmaProtonKaon;
  247. TH1F *hNSigmaProtonProton;
  248. TH2F *hNSigmaProtonPionVsPt;
  249. TH2F *hNSigmaProtonKaonVsPt;
  250. TH2F *hNSigmaProtonProtonVsPt;
  251. TH2F *hDMassSqrVsPtProtonTPC;
  252. TH2F *hDMassSqrVsPtProtonTOF;
  253. TH2F *hInvBetaExpThProtonTNT;
  254. TH2F *hInvBetaExpThProtonTPC;
  255. TH2F *hInvBetaExpThProtonTOF;
  256. TH2F *hInvBetaExpThProtonTTT;
  257. TH2F *hInvBetaExpThProtonINT;
  258. //
  259. // Trigger
  260. //
  261. unsigned int mCurrentTrigger;
  262. ClassDef(StMuDstMinvMaker, 1)
  263. };
  264. #endif