StCosmicMuDstQAMaker.cxx 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. #include "StCosmicMuDstQAMaker.h"
  2. #include "StBTofHeader.h"
  3. #include "TBranch.h"
  4. ClassImp(StCosmicMuDstQAMaker)
  5. //
  6. // Set maximum file size to 1.9 GB (Root has a 2GB limit)
  7. //
  8. #define MAXFILESIZE 1900000000
  9. //_________________
  10. StCosmicMuDstQAMaker::StCosmicMuDstQAMaker(StMuDstMaker *muMaker,
  11. const Char_t *oFileName) {
  12. std::cout << "StCosmicMuDstQAMaker::StCosmicMuDstQAMaker - Creating an instance...";
  13. mMuDstMaker = muMaker;
  14. mEventIsGood = false;
  15. mNEventsIn = 0;
  16. mNEventsPassed = 0;
  17. mIsGoodTrack = false;
  18. mCurrentTrigger = 0;
  19. mFileName = oFileName;
  20. //
  21. // Initialize event cut variables
  22. //
  23. mPrimVtxZ[0] = -70.;
  24. mPrimVtxZ[1] = 70.;
  25. mPrimVtxR[0] = -1.;
  26. mPrimVtxR[1] = 10.;
  27. mPrimVtxVpdVzDiff[0] = -10.;
  28. mPrimVtxVpdVzDiff[1]= 10.;
  29. mPrimVtxXShift = 0.;
  30. mPrimVtxYShift = 0.;
  31. //
  32. // Initialize single-particle cut variables
  33. //
  34. mTrackP[0] = 0.1;
  35. mTrackP[1] = 2.;
  36. mTrackDca[0] = 0.;
  37. mTrackDca[1] = 5.;
  38. mTrackDcaGlobal[0] = 0.;
  39. mTrackDcaGlobal[1] = 5.;
  40. mTrackNHits[0] = 15;
  41. mTrackNHits[1] = 50;
  42. mTrackNHitsFit[0] = 15;
  43. mTrackNHitsFit[1] = 50;
  44. mTrackEta[0] = -1.1;
  45. mTrackEta[1] = 1.1;
  46. mTrackFlag[0] = 0;
  47. mTrackFlag[1] = 1000;
  48. /*
  49. //
  50. // Initialize TPC and TOF PID
  51. //
  52. mPionPionNSigma[0] = -3.; mPionPionNSigma[1] = 3.;
  53. mPionKaonNSigma[0] = 1.; mPionKaonNSigma[1] = -1.;
  54. */
  55. mTTTPThreshold = 0.7;
  56. std::cout << "\t[DONE]" << std::endl;
  57. }
  58. //_________________
  59. StCosmicMuDstQAMaker::~StCosmicMuDstQAMaker() {
  60. /* nothing to do */
  61. }
  62. //_________________
  63. Int_t StCosmicMuDstQAMaker::Init() {
  64. std::cout << "StCosmicMuDstQAMaker::Init - Initializing the maker"
  65. << std::endl;
  66. //
  67. // Create histograms and output file
  68. //
  69. mOutFile = new TFile(mFileName, "RECREATE");
  70. //
  71. // General event distributions
  72. //
  73. hR = new TH1F("hR", "R=#sqrt{v_{x}^{2} + v_{y}^{2}};R (cm);#",
  74. 200, 0., 2.);
  75. hVx = new TH1F("hVx", ";v_{x} (cm);#", 200, -1.5, 1.5);
  76. hVy = new TH1F("hVy", ";v_{y} (cm);#", 200, -1.5, 1.5);
  77. hVz = new TH1F("hVz", ";v_{z} (cm);#", 100, -70., 70.);
  78. hVxVsVy = new TH2F("hVxVsVy", ";v_{x} (cm); v_{y} (cm)",
  79. 600, -1.5, 1.5,
  80. 600, -1.5, 1.5);
  81. hVxVsVz = new TH2F("hVxVsVz", ";v_{x} (cm); v_{z} (cm)",
  82. 600, -1.5, 1.5,
  83. 600, -70., 70.);
  84. hVyVsVz = new TH2F("hVyVsVz", ";v_{y} (cm); v_{z} (cm)",
  85. 600, -1.5, 1.5,
  86. 600, -70., 70.);
  87. hNPrimTr = new TH1S("hNPrimTr", ";N_{primary tracks};#", 1000, 0, 1000);
  88. hNGlobTr = new TH1S("hNGlobTr", ";N_{global tracks};#", 1000, 0, 1000);
  89. hTofRefMult = new TH1S("hTofRefMult", ";TofRefMult;#", 1000, 0, 1000);
  90. hTofRefMultVsRefMult = new TH2S("hTofRefMultVsRefMult", ";TofRefMult;RefMult",
  91. 1000, 0., 1000,
  92. 1000, 0., 1000);
  93. hVpd = new TH1F("hVpd", ";v_{z}^{vpd} (cm);#", 100, -70., 70.);
  94. hVpdVz = new TH1F("hVpdVz", ";v_{z}^{vpd}-v_{z}", 100, -10., 10.);
  95. hNPrimVtx = new TH1C("hNPrimVtx", ";N_{primary vertex};#", 10, 0, 10);
  96. //
  97. // General track distributions
  98. //
  99. hTheta = new TH1F("hTheta", ";#theta (rad);#", 400, -0.5, 2.);
  100. hPhi = new TH1F("hPhi", ";#phi (rad);#", 800, -4., 4.);
  101. hThetaPhi = new TH2F("hThetaPhi", ";#phi (rad);#theta (rad)",
  102. 800, -4., 4.,
  103. 400, -0.5, 2.);
  104. hEtaPhi = new TH2F("hEtaPhi", ";#phi (rad);#eta",
  105. 800, -4., 4.,
  106. 400, -2., 2.);
  107. hP = new TH1F("hP", ";p (GeV/c);#", 3000, 0., 30.);
  108. hPt = new TH1F("hPt", ";p_{t} (GeV/c);#", 3000, 0., 30.);
  109. hPx = new TH1F("hPx", ";p_{x} (GeV/c);#", 6000, -30, 30.);
  110. hPy = new TH1F("hPy", ";p_{y} (GeV/c);#", 6000, -30., 30.);
  111. hPz = new TH1F("hPz", ";p_{z} (GeV/c);#", 6000, -30., 30.);
  112. hEta = new TH1F("hEta", ";#eta;#", 400, -2., 2.);
  113. hMassSqrVsPt = new TH2F("hMassSqrVsPt", ";p_{t}Q (GeV/c);m^{2} (GeV/c^{2})",
  114. 400, -2., 2.,
  115. 1000, -0.1, 1.5);
  116. hDedxVsPt = new TH2F("hDedxVsPt", ";p_{t}Q (GeV/c);dE/dx (keV/cm)",
  117. 400, -2., 2.,
  118. 1000, 0., 10.);
  119. hInvBetaExpVsPt = new TH2F("hInvBetaExpVsPt", ";p_{t}Q (GeV/c);1/beta_{exp}",
  120. 400, -2., 2.,
  121. 200, 0., 2.);
  122. hTOF = new TH1F("hTOF", "time of flight;t ns;#", 100, 0., 50.);
  123. //
  124. // Any charge
  125. //
  126. hRefMult = new TH1F("hRefMult", ";RefMult;#", 2000, 0., 2000.);
  127. std::cout << "StCosmicMuDstQAMaker::Init - Initialization has been finished"
  128. << std::endl;
  129. return StMaker::Init();
  130. }
  131. //________________
  132. void StCosmicMuDstQAMaker::Clear(Option_t *option) {
  133. StMaker::Clear();
  134. }
  135. //________________
  136. Int_t StCosmicMuDstQAMaker::Make() {
  137. mNEventsIn++;
  138. mMuDst = NULL;
  139. mMuEvent = NULL;
  140. //MuDstMaker initialization
  141. mMuDstMaker = (StMuDstMaker*)GetMaker("MuDst");
  142. if(!mMuDstMaker) {
  143. LOG_ERROR << "StCosmicMuDstQAMaker::Make [ERROR] - Cannot find StMuDstMaker"
  144. << std::endl;
  145. return kStOk;
  146. }
  147. //Obtaining MuDst
  148. mMuDst = (StMuDst*)GetInputDS("MuDst");
  149. if(!mMuDst) {
  150. gMessMgr->Warning() << "StCosmicMuDstQAMaker::Make [WARNING] - No MuDst has been found"
  151. << endm;
  152. return kStOk;
  153. }
  154. //Obtaining MuEvent
  155. mMuEvent = (StMuEvent*)mMuDst->event();
  156. //Multiplicity cannot be negative
  157. unsigned short refMult = mMuEvent->refMult();
  158. unsigned short refMultPos = 0;
  159. unsigned short refMultNeg = 0;
  160. int mNVertices = mMuDst->numberOfPrimaryVertices();
  161. int mNPrimTracks = mMuDst->numberOfPrimaryTracks();
  162. int mNGlobTracks = mMuDst->numberOfGlobalTracks();
  163. if(refMult < 0) { //|| mNVertices < 0 || mNPrimTracks <= 0 || mNGlobTracks <= 0) {
  164. //std::cout << "StCosmicMuDstQAMaker::Make [WARNING] - bad event" << std::endl;
  165. return kStOk;
  166. }
  167. hRefMult->Fill(refMult);
  168. //Some initializations of local variables
  169. mPrimVertex = NULL;
  170. StThreeVectorF mVertPosition;
  171. Float_t mVpdVz = 0.;
  172. Int_t mPrimVertIndex = -999;
  173. Float_t mRanking = -999.;
  174. //Clean index vectors
  175. CleanVariables();
  176. //Vertex loop
  177. unsigned short tofRefMult = 0;
  178. for(Int_t iVert=0; iVert<mNVertices; iVert++) {
  179. hNPrimVtx->Fill(mNVertices);
  180. mPrimVertex = mMuDst->primaryVertex(iVert);
  181. Float_t mVtxX = mVertPosition.x() - mPrimVtxXShift;
  182. Float_t mVtxY = mVertPosition.y() - mPrimVtxYShift;
  183. Float_t mVtxZ = mVertPosition.z();
  184. Float_t vtxR = TMath::Sqrt(mVtxX*mVtxX + mVtxY*mVtxY);
  185. Float_t vpdDiff = mVtxZ - mVpdVz;
  186. mPrimVertIndex = iVert;
  187. mRanking = mPrimVertex->ranking();
  188. mVertPosition = mPrimVertex->position();
  189. mVpdVz = mMuDst->btofHeader()->vpdVz();
  190. hR->Fill(vtxR);
  191. hVx->Fill(mVtxX);
  192. hVy->Fill(mVtxY);
  193. hVz->Fill(mVtxZ);
  194. hVxVsVy->Fill(mVtxX, mVtxY);
  195. hVxVsVz->Fill(mVtxX, mVtxZ);
  196. hVyVsVz->Fill(mVtxY, mVtxZ);
  197. hVpd->Fill(mVpdVz);
  198. hVpdVz->Fill(vpdDiff);
  199. mEventIsGood = true;
  200. hNPrimTr->Fill(mNPrimTracks);
  201. hNGlobTr->Fill(mNGlobTracks);
  202. //
  203. //Loop over primary tracks
  204. //
  205. for(int iTrk = 0; iTrk < mNGlobTracks; iTrk++) {
  206. // mPrimTrack = mMuDst->primaryTracks(iTrk);
  207. mGlobTrack = mMuDst->globalTracks(iTrk);//mPrimTrack->index2Global());
  208. short charge = mGlobTrack->charge() > 0 ? 1 : -1;
  209. float eta = mGlobTrack->eta();
  210. float pt = mGlobTrack->pt();
  211. float p = mGlobTrack->p().mag();
  212. float p2 = mGlobTrack->p().mag2();
  213. float px = mGlobTrack->p().x();
  214. float py = mGlobTrack->p().y();
  215. float pz = mGlobTrack->p().z();
  216. float theta = 2*TMath::ATan(TMath::Exp(-eta));
  217. float phi = mGlobTrack->phi();
  218. charge > 0 ? refMultPos++ : refMultNeg++;
  219. hP->Fill(p);
  220. hTheta->Fill(theta);
  221. hPhi->Fill(phi);
  222. hThetaPhi->Fill(phi, theta);
  223. hEtaPhi->Fill(phi, eta);
  224. hPt->Fill(pt);
  225. hPx->Fill(px);
  226. hPy->Fill(py);
  227. hPz->Fill(pz);
  228. hEta->Fill(eta);
  229. float dedx = mGlobTrack->dEdx();
  230. bool tofTrack = IsTofTrack(mGlobTrack);
  231. float betaExp;
  232. float massSqr;
  233. hDedxVsPt->Fill(pt*charge, dedx*1e6);
  234. if (tofTrack) {
  235. hTOF->Fill(mGlobTrack->btofPidTraits().timeOfFlight());
  236. tofRefMult++;
  237. betaExp = mGlobTrack->btofPidTraits().beta();
  238. massSqr = p2*(1./(betaExp*betaExp) - 1.);
  239. hMassSqrVsPt->Fill(pt*charge, massSqr);
  240. hInvBetaExpVsPt->Fill(pt*charge, 1./betaExp);
  241. }
  242. } //for(Int_t iTrk=0; iTrk<mNPrimTracks; iTrk++)
  243. } //for(Int_t iVert=0; iVert<mNVertices; iVert++)
  244. hTofRefMult->Fill(tofRefMult);
  245. return kStOk;
  246. }
  247. //_________________
  248. Bool_t StCosmicMuDstQAMaker::AcceptTrigger(StMuEvent *muEvent) {
  249. Bool_t mIsGoodTrigger = false;
  250. if(mTriggerIdCollection.empty()) {
  251. mIsGoodTrigger = true;
  252. }
  253. else {
  254. for(UInt_t iTrg=0; iTrg<mTriggerIdCollection.size(); iTrg++) {
  255. if(muEvent->triggerIdCollection().nominal().isTrigger(mTriggerIdCollection.at(iTrg))) {
  256. mIsGoodTrigger = true;
  257. mCurrentTrigger = mTriggerIdCollection.at(iTrg);
  258. break;
  259. }
  260. } //for(UInt_t iTrg=0; iTrg<mTriggerIdCollection.size(); iTrg++)
  261. }
  262. return mIsGoodTrigger;
  263. }
  264. //_________________
  265. Bool_t StCosmicMuDstQAMaker::AcceptPrimVtx(StThreeVectorF vtxPos,
  266. Float_t vpdVz) {
  267. Float_t mVtxX = vtxPos.x() - mPrimVtxXShift;
  268. Float_t mVtxY = vtxPos.y() - mPrimVtxYShift;
  269. Float_t mVtxZ = vtxPos.z();
  270. Float_t vtxR = TMath::Sqrt(mVtxX*mVtxX + mVtxY*mVtxY);
  271. Float_t vpdDiff = mVtxZ - vpdVz;
  272. hR->Fill(vtxR);
  273. hVx->Fill(mVtxX);
  274. hVy->Fill(mVtxY);
  275. hVz->Fill(mVtxZ);
  276. hVxVsVy->Fill(mVtxX, mVtxY);
  277. hVxVsVz->Fill(mVtxX, mVtxZ);
  278. hVyVsVz->Fill(mVtxY, mVtxZ);
  279. hVpd->Fill(vpdVz);
  280. hVpdVz->Fill(vpdDiff);
  281. return ( vtxPos.z() >= mPrimVtxZ[0] &&
  282. vtxPos.z() <= mPrimVtxZ[1] &&
  283. vtxR >= mPrimVtxR[0] &&
  284. vtxR <= mPrimVtxR[1] &&
  285. vpdDiff >= mPrimVtxVpdVzDiff[0] &&
  286. vpdDiff <= mPrimVtxVpdVzDiff[1] );
  287. }
  288. //_________________
  289. Bool_t StCosmicMuDstQAMaker::AcceptTrack(StMuTrack *trk, UShort_t vtxInd) {
  290. float mom = trk->momentum().mag();
  291. float eta = trk->eta();
  292. unsigned short nHitsFit = trk->nHitsFit();
  293. short flag = trk->flag();
  294. float dca = trk->dcaGlobal(vtxInd).perp();
  295. bool isMomOk = ( mom >= mTrackP[0] &&
  296. mom <= mTrackP[1] );
  297. bool isEtaOk = ( eta >= mTrackEta[0] &&
  298. eta <= mTrackEta[1] );
  299. bool isNHitsFitOk = ( nHitsFit >= mTrackNHitsFit[0] &&
  300. nHitsFit <= mTrackNHitsFit[1] );
  301. bool isFlagOk = ( flag >= mTrackFlag[0] &&
  302. flag <= mTrackFlag[1] );
  303. bool isDcaOk = ( dca >= mTrackDcaGlobal[0] &&
  304. dca <= mTrackDcaGlobal[1] );
  305. return ( isMomOk && isEtaOk && isNHitsFitOk && isFlagOk && isDcaOk );
  306. }
  307. //_________________
  308. Int_t StCosmicMuDstQAMaker::Finish() {
  309. std::cout << "*************************************" << std::endl
  310. << "StCosmicMuDstQAMaker has been finished" << std::endl
  311. << "\t nEventsPassed : " << mNEventsPassed << std::endl
  312. << "\t nEventsProcessed: " << mNEventsIn << std::endl
  313. << "*************************************" << std::endl;
  314. mOutFile->cd();
  315. mOutFile->Write();
  316. mOutFile->Close();
  317. return kStOk;
  318. }
  319. //_________________
  320. void StCosmicMuDstQAMaker::CleanVariables() {
  321. mEventIsGood = false;
  322. }
  323. //_________________
  324. void StCosmicMuDstQAMaker::SetTriggerId(unsigned int id) {
  325. mTriggerIdCollection.push_back(id);
  326. }
  327. //_________________
  328. void StCosmicMuDstQAMaker::SetMuDstMaker(StMuDstMaker *maker) {
  329. mMuDstMaker = maker;
  330. }
  331. //_________________
  332. void StCosmicMuDstQAMaker::SetVtxZCut(float lo, float hi) {
  333. mPrimVtxZ[0] = lo;
  334. mPrimVtxZ[1] = hi;
  335. }
  336. //_________________
  337. void StCosmicMuDstQAMaker::SetVtxRCut(float lo, float hi) {
  338. mPrimVtxR[0] = lo;
  339. mPrimVtxR[1] = hi;
  340. }
  341. //_________________
  342. void StCosmicMuDstQAMaker::SetVtxShift(float xShift, float yShift) {
  343. mPrimVtxXShift = xShift;
  344. mPrimVtxYShift = yShift;
  345. }
  346. //_________________
  347. void StCosmicMuDstQAMaker::SetVtxVpdVzDiffCut(float lo, float hi) {
  348. mPrimVtxVpdVzDiff[0] = lo;
  349. mPrimVtxVpdVzDiff[1] = hi;
  350. }
  351. //_________________
  352. void StCosmicMuDstQAMaker::SetP(float lo, float hi) {
  353. mTrackP[0] = lo;
  354. mTrackP[1] = hi;
  355. }
  356. //////////////////////////////////////////////////////////
  357. //_________________
  358. void StCosmicMuDstQAMaker::SetPhi(float phi) {
  359. mPhi = phi;
  360. }
  361. //______________
  362. void StCosmicMuDstQAMaker::SetTheta(float theta) {
  363. mTheta = theta;
  364. }
  365. //////////////////////////////////////////////////////////
  366. //_________________
  367. void StCosmicMuDstQAMaker::SetPt(float lo, float hi) {
  368. mTrackPt[0] = lo;
  369. mTrackPt[1] = hi;
  370. }
  371. //_________________
  372. void StCosmicMuDstQAMaker::SetTrackNHits(int lo, int hi) {
  373. mTrackNHits[0] = lo;
  374. mTrackNHits[1] = hi;
  375. }
  376. //_________________
  377. void StCosmicMuDstQAMaker::SetTrackNHitsFit(int lo, int hi) {
  378. mTrackNHitsFit[0] = lo;
  379. mTrackNHitsFit[1] = hi;
  380. }
  381. //_________________
  382. void StCosmicMuDstQAMaker::SetTrackEta(float lo, float hi) {
  383. mTrackEta[0] = lo;
  384. mTrackEta[1] = hi;
  385. }
  386. //_________________
  387. void StCosmicMuDstQAMaker::SetTrackFlag(short lo, short hi) {
  388. mTrackFlag[0] = lo;
  389. mTrackFlag[1] = hi;
  390. }
  391. //_________________
  392. void StCosmicMuDstQAMaker::SetTrackDCA(float lo, float hi) {
  393. mTrackDcaGlobal[0] = lo;
  394. mTrackDcaGlobal[1] = hi;
  395. }
  396. //_________________
  397. Bool_t StCosmicMuDstQAMaker::IsTofTrack(StMuTrack *trk) { //Only for globals
  398. Bool_t isTofHit = false;
  399. if(trk->btofPidTraits().beta() > 0 &&
  400. trk->btofPidTraits().timeOfFlight() > 0) {
  401. isTofHit = true;
  402. }
  403. return isTofHit;
  404. }
  405. //_________________
  406. void StCosmicMuDstQAMaker::SetPionPionNSigma(float lo, float hi) {
  407. mPionPionNSigma[0] = lo; mPionPionNSigma[1] = hi;
  408. }
  409. //_________________
  410. void StCosmicMuDstQAMaker::SetPionKaonNSigma(float lo, float hi) {
  411. mPionKaonNSigma[0] = lo; mPionKaonNSigma[1] = hi;
  412. }
  413. //_________________
  414. void StCosmicMuDstQAMaker::SetPionProtonNSigma(float lo, float hi) {
  415. mPionProtonNSigma[0] = lo; mPionProtonNSigma[1] = hi;
  416. }
  417. //_________________
  418. void StCosmicMuDstQAMaker::SetKaonPionNSigma(float lo, float hi) {
  419. mKaonPionNSigma[0] = lo; mKaonPionNSigma[1] = hi;
  420. }
  421. //_________________
  422. void StCosmicMuDstQAMaker::SetKaonKaonNSigma(float lo, float hi) {
  423. mKaonKaonNSigma[0] = lo; mKaonKaonNSigma[1] = hi;
  424. }
  425. //_________________
  426. void StCosmicMuDstQAMaker::SetKaonProtonNSigma(float lo, float hi) {
  427. mKaonProtonNSigma[0] = lo; mKaonProtonNSigma[1] = hi;
  428. }
  429. //_________________
  430. void StCosmicMuDstQAMaker::SetProtonPionNSigma(float lo, float hi) {
  431. mProtonPionNSigma[0] = lo; mProtonPionNSigma[1] = hi;
  432. }
  433. //_________________
  434. void StCosmicMuDstQAMaker::SetProtonKaonNSigma(float lo, float hi) {
  435. mProtonKaonNSigma[0] = lo; mProtonKaonNSigma[1] = hi;
  436. }
  437. //_________________
  438. void StCosmicMuDstQAMaker::SetProtonProtonNSigma(float lo, float hi) {
  439. mProtonProtonNSigma[0] = lo; mProtonProtonNSigma[1] = hi;
  440. }
  441. //_________________
  442. void StCosmicMuDstQAMaker::SetPionMassSqr(float lo, float hi) {
  443. mPionMass[0] = lo; mPionMass[1] = hi;
  444. }
  445. //_________________
  446. void StCosmicMuDstQAMaker::SetKaonMassSqr(float lo, float hi) {
  447. mKaonMass[0] = lo; mKaonMass[1] = hi;
  448. }
  449. //_________________
  450. void StCosmicMuDstQAMaker::SetProtonMassSqr(float lo, float hi) {
  451. mProtonMass[0] = lo; mProtonMass[1] = hi;
  452. }
  453. //_________________
  454. void StCosmicMuDstQAMaker::SetTTTPThreshold(float pThresh) {
  455. mTTTPThreshold = pThresh;
  456. }