00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013 #include <Stiostream.h>
00014 #include <stdlib.h>
00015 #include "StFlowCutEvent.h"
00016 #include "StFlowCutTrack.h"
00017 #include "StEvent.h"
00018 #include "StFlowPicoEvent.h"
00019 #include "StEventTypes.h"
00020 #include "PhysicalConstants.h"
00021 #include "SystemOfUnits.h"
00022 #include "StThreeVectorF.hh"
00023 #include "StFlowConstants.h"
00024 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00025 #include "StMuDSTMaker/COMMON/StMuTrack.h"
00026 #define PR(x) cout << "##### FlowCutEvent: " << (#x) << " = " << (x) << endl;
00027
00028 ClassImp(StFlowCutEvent)
00029
00030
00031
00032 Int_t StFlowCutEvent::mCentCuts[2] = {0, 0};
00033 Int_t StFlowCutEvent::mMultCuts[2] = {10, 10000};
00034 Float_t StFlowCutEvent::mVertexXCuts[2] = {-1., 1.};
00035 Float_t StFlowCutEvent::mVertexYCuts[2] = {-1., 1.};
00036 Float_t StFlowCutEvent::mVertexZCuts[2] = {-75., 75.};
00037 UInt_t StFlowCutEvent::mEventN = 0;
00038 UInt_t StFlowCutEvent::mGoodEventN = 0;
00039 UInt_t StFlowCutEvent::mCentCut = 0;
00040 UInt_t StFlowCutEvent::mMultCut = 0;
00041 UInt_t StFlowCutEvent::mVertexXCut = 0;
00042 UInt_t StFlowCutEvent::mVertexYCut = 0;
00043 UInt_t StFlowCutEvent::mVertexZCut = 0;
00044 Float_t StFlowCutEvent::mEtaSymTpcCuts[2] = {-3., 3.};
00045 UInt_t StFlowCutEvent::mEtaSymTpcCutN = 0;
00046 Float_t StFlowCutEvent::mEtaSymFtpcCuts[2] = {-5., 5.};
00047 UInt_t StFlowCutEvent::mEtaSymFtpcCutN = 0;
00048 UInt_t StFlowCutEvent::mTriggerCut = 1;
00049 UInt_t StFlowCutEvent::mTriggerCutN = 0;
00050 UInt_t StFlowCutEvent::mTriggersFound = 10;
00051 UInt_t StFlowCutEvent::flowTriggerBitMap = 0;
00052
00053
00054 StFlowCutEvent::StFlowCutEvent() {
00055
00056 }
00057
00058
00059
00060 StFlowCutEvent::~StFlowCutEvent() {
00061 }
00062
00063
00064
00065 Bool_t StFlowCutEvent::CheckEvent(StEvent* pEvent) {
00066
00067 if (!pEvent) return kFALSE;
00068
00069
00070 Long_t nvtx = pEvent->numberOfPrimaryVertices();
00071 if (nvtx == 0) {
00072
00073 return kFALSE;
00074 }
00075 StPrimaryVertex* pVertex = pEvent->primaryVertex(0);
00076 if (!pVertex) return kFALSE;
00077
00078
00079 Long_t mult = pVertex->numberOfDaughters();
00080 if (mMultCuts[1] > mMultCuts[0] &&
00081 (mult < mMultCuts[0] || mult >= mMultCuts[1])) {
00082 mMultCut++;
00083 return kFALSE;
00084 }
00085
00086
00087 mEventN++;
00088
00089 const StThreeVectorF& vertex = pVertex->position();
00090
00091
00092 Float_t vertexX = vertex.x();
00093 if (mVertexXCuts[1] > mVertexXCuts[0] &&
00094 (vertexX < mVertexXCuts[0] || vertexX >= mVertexXCuts[1])) {
00095 mVertexXCut++;
00096 return kFALSE;
00097 }
00098
00099
00100 Float_t vertexY = vertex.y();
00101 if (mVertexYCuts[1] > mVertexYCuts[0] &&
00102 (vertexY < mVertexYCuts[0] || vertexY >= mVertexYCuts[1])) {
00103 mVertexYCut++;
00104 return kFALSE;
00105 }
00106
00107
00108 Float_t vertexZ = vertex.z();
00109 if (mVertexZCuts[1] > mVertexZCuts[0] &&
00110 (vertexZ < mVertexZCuts[0] || vertexZ >= mVertexZCuts[1])) {
00111 mVertexZCut++;
00112 return kFALSE;
00113 }
00114
00116
00117
00118 if (pEvent->runId() > 4000000 ) {
00119 flowTriggerBitMap = 0;
00120 Float_t ctbMult = 0.;
00121 StTriggerDetectorCollection *triggers = pEvent->triggerDetectorCollection();
00122 if (triggers) {
00123 StCtbTriggerDetector &CTB = triggers->ctb();
00124
00125 for (UInt_t slat = 0; slat < CTB.numberOfSlats(); slat++) {
00126 for (UInt_t tray = 0; tray < CTB.numberOfTrays(); tray++) {
00127 ctbMult += CTB.mips(tray,slat,0);
00128 }
00129 }
00130 }
00131
00133
00135 if (
00136 pEvent->triggerIdCollection()->nominal()->isTrigger(15007)
00137
00138 ){
00139 flowTriggerBitMap += 1;
00140 }
00141 else if (
00142 pEvent->triggerIdCollection()->nominal()->isTrigger(25007)
00143 ){
00144 flowTriggerBitMap += 1;
00145 }
00146 else if (
00147 pEvent->triggerIdCollection()->nominal()->isTrigger(35004) ||
00148 pEvent->triggerIdCollection()->nominal()->isTrigger(35007) ||
00149 ( pEvent->triggerIdCollection()->nominal()->isTrigger(35001) &&
00150 ctbMult > 15 ) ||
00151 ( pEvent->triggerIdCollection()->nominal()->isTrigger(35009) &&
00152 ctbMult > 15 )
00153 ){
00154 flowTriggerBitMap += 1;
00155 }
00156
00158
00160 if (
00161 pEvent->triggerIdCollection()->nominal()->isTrigger(15105)
00162 ){
00163 flowTriggerBitMap += 2;;
00164 } else if (
00165 pEvent->triggerIdCollection()->nominal()->isTrigger(25105)
00166 ){
00167 flowTriggerBitMap += 2;
00168 }
00169
00170
00171 if (mTriggerCut==0 && (flowTriggerBitMap &2 || flowTriggerBitMap &1) ){
00172 mTriggersFound = 0;
00173 } else if (mTriggerCut==1 && (flowTriggerBitMap &1) ){
00174 mTriggersFound = 1;
00175 } else if (mTriggerCut==2 && (flowTriggerBitMap &2) ){
00176 mTriggersFound = 2;
00177 } else {
00178 mTriggerCutN++;
00179 return kFALSE;
00180 }
00181
00182 }
00183
00185
00186 else {
00187 if (pEvent->l3Trigger() && pEvent->l3Trigger()->l3EventSummary() &&
00188 !(pEvent->l3Trigger()->l3EventSummary()->unbiasedTrigger())) {
00189
00190 return kFALSE;
00191 }
00192
00193 StL0Trigger* pTrigger = pEvent->l0Trigger();
00194
00195 if (pTrigger) {
00196 UInt_t triggerWord = pTrigger->triggerWord();
00197
00198 switch (triggerWord) {
00199 case 4096: mTriggersFound = 1; break;
00200 case 4352: mTriggersFound = 2; break;
00201 case 61952: mTriggersFound = 3; break;
00202 default: mTriggersFound = 10; break;
00203 }
00204 }
00205 if (mTriggerCut && mTriggersFound != mTriggerCut) {
00206 mTriggerCutN++;
00207 return kFALSE;
00208 }
00209 }
00210
00211 mGoodEventN++;
00212 return kTRUE;
00213 }
00214
00215
00216
00217 Bool_t StFlowCutEvent::CheckEvent(StFlowPicoEvent* pPicoEvent) {
00218
00219
00220 if (!pPicoEvent) return kFALSE;
00221
00222
00223 Int_t mult = pPicoEvent->OrigMult();
00224 if (mMultCuts[1] > mMultCuts[0] &&
00225 (mult < mMultCuts[0] || mult >= mMultCuts[1])) {
00226 mMultCut++;
00227 return kFALSE;
00228 }
00229
00230
00231
00232 UInt_t triggerWord = pPicoEvent->L0TriggerWord();
00233
00234 if (pPicoEvent->CenterOfMassEnergy() > 60. && pPicoEvent->CenterOfMassEnergy() < 65. ) {
00235 if (!( (triggerWord == 35004 || triggerWord == 35007) ||
00236 ((triggerWord == 35001 || triggerWord == 35009) && pPicoEvent->CTB() > 15) )) {
00237 mTriggersFound = 10;
00238 } else {
00239 mTriggersFound = 1;
00240 }
00241 }
00242
00243 else {
00244 switch (triggerWord) {
00245 case 4096: mTriggersFound = 1; break;
00246 case 4352: mTriggersFound = 2; break;
00247 case 61952: mTriggersFound = 3; break;
00248 default: mTriggersFound = 10; break;
00249 }
00250 }
00251
00252 if (mTriggerCut && mTriggersFound != mTriggerCut) {
00253 mTriggerCutN++;
00254 return kFALSE;
00255 }
00256
00257
00258
00259 Int_t cent = pPicoEvent->CalcCentrality();
00260 if (mCentCuts[0] && mCentCuts[1] >= mCentCuts[0] &&
00261 (cent < mCentCuts[0] || cent > mCentCuts[1])) {
00262 mCentCut++;
00263 return kFALSE;
00264 }
00265
00266
00267 mEventN++;
00268
00269
00270 Float_t vertexX = pPicoEvent->VertexX();
00271 if (mVertexXCuts[1] > mVertexXCuts[0] &&
00272 (vertexX < mVertexXCuts[0] || vertexX >= mVertexXCuts[1])) {
00273 mVertexXCut++;
00274 return kFALSE;
00275 }
00276
00277
00278 Float_t vertexY = pPicoEvent->VertexY();
00279 if (mVertexYCuts[1] > mVertexYCuts[0] &&
00280 (vertexY < mVertexYCuts[0] || vertexY >= mVertexYCuts[1])) {
00281 mVertexYCut++;
00282 return kFALSE;
00283 }
00284
00285
00286 Float_t vertexZ = pPicoEvent->VertexZ();
00287 if (mVertexZCuts[1] > mVertexZCuts[0] &&
00288 (vertexZ < mVertexZCuts[0] || vertexZ >= mVertexZCuts[1])) {
00289 mVertexZCut++;
00290 return kFALSE;
00291 }
00292
00293 mGoodEventN++;
00294 return kTRUE;
00295 }
00296
00297
00298
00299 Bool_t StFlowCutEvent::CheckEvent(StMuDst* pMu) {
00300
00301 if (!pMu) return kFALSE;
00302
00303 StMuEvent* pMuEvent = pMu->event();
00304 TObjArray* pMuTracks = pMu->primaryTracks();
00305 if (!pMuEvent) return kFALSE;
00306
00307
00308
00309
00310
00311
00312
00313
00314 if (TMath::Abs(pMuEvent->primaryVertexPosition().x()) < 1.e-5 &&
00315 TMath::Abs(pMuEvent->primaryVertexPosition().y()) < 1.e-5 &&
00316 TMath::Abs(pMuEvent->primaryVertexPosition().z()) < 1.e-5) {
00317
00318 return kFALSE;
00319 }
00320
00321
00322 Int_t mult = pMuTracks->GetEntries();
00323 if (mMultCuts[1] > mMultCuts[0] &&
00324 (mult < mMultCuts[0] || mult >= mMultCuts[1])) {
00325 mMultCut++;
00326 return kFALSE;
00327 }
00328
00330
00331
00332 Int_t* cent = 0;
00333 Int_t centrality = 0;
00334
00335 flowTriggerBitMap = 0;
00336
00338
00340 if (
00341 pMuEvent->triggerIdCollection().nominal().isTrigger(15007)
00342
00343 ){
00344 flowTriggerBitMap += 1;
00345 cent = Flow::cent200Year4Full;
00346 }
00347 else if (
00348 pMuEvent->triggerIdCollection().nominal().isTrigger(25007)
00349 ){
00350 flowTriggerBitMap += 1;
00351 cent = Flow::cent200Year4Half;
00352 }
00353 else if (
00354 pMuEvent->triggerIdCollection().nominal().isTrigger(35004) ||
00355 pMuEvent->triggerIdCollection().nominal().isTrigger(35007) ||
00356 ( pMuEvent->triggerIdCollection().nominal().isTrigger(35001) &&
00357 pMuEvent->ctbMultiplicity() > 15 ) ||
00358 ( pMuEvent->triggerIdCollection().nominal().isTrigger(35009) &&
00359 pMuEvent->ctbMultiplicity() > 15 )
00360 ){
00361 flowTriggerBitMap += 1;
00362 cent = Flow::cent62;
00363 }
00364 else if (
00365 pMuEvent->triggerIdCollection().nominal().isTrigger(200001)||
00366 pMuEvent->triggerIdCollection().nominal().isTrigger(200003)||
00367 pMuEvent->triggerIdCollection().nominal().isTrigger(200013)) {
00368 flowTriggerBitMap += 1;
00369 cent = Flow::cent200Year7;
00370 }
00371
00373
00375 if (
00376 pMuEvent->triggerIdCollection().nominal().isTrigger(15105)
00377 ){
00378 flowTriggerBitMap += 2;
00379 cent = Flow::cent200Year4Full;
00380 } else if (
00381 pMuEvent->triggerIdCollection().nominal().isTrigger(25105)
00382 ){
00383 flowTriggerBitMap += 2;
00384 cent = Flow::cent200Year4Half;
00385 }
00386
00387
00388 if (mTriggerCut==0 && (flowTriggerBitMap &2 || flowTriggerBitMap &1) ){
00389 mTriggersFound = 0;
00390 } else if (mTriggerCut==1 && (flowTriggerBitMap &1) ){
00391 mTriggersFound = 1;
00392 } else if (mTriggerCut==2 && (flowTriggerBitMap &2) ){
00393 mTriggersFound = 2;
00394 } else {
00395 mTriggerCutN++;
00396 return kFALSE;
00397 }
00398
00399
00400 Int_t tracks;
00401 if (pMuEvent->runId() > 8000000) {
00402 tracks = pMuEvent->grefmult();
00403 } else {
00404 tracks = pMuEvent->refMult();
00405 }
00406
00407 if (tracks < cent[0]) { centrality = 0; }
00408 else if (tracks < cent[1]) { centrality = 1; }
00409 else if (tracks < cent[2]) { centrality = 2; }
00410 else if (tracks < cent[3]) { centrality = 3; }
00411 else if (tracks < cent[4]) { centrality = 4; }
00412 else if (tracks < cent[5]) { centrality = 5; }
00413 else if (tracks < cent[6]) { centrality = 6; }
00414 else if (tracks < cent[7]) { centrality = 7; }
00415 else if (tracks < cent[8]) { centrality = 8; }
00416 else { centrality = 9; }
00417
00418 if (mCentCuts[0] && mCentCuts[1] >= mCentCuts[0] &&
00419 (centrality < mCentCuts[0] || centrality > mCentCuts[1])) {
00420 mCentCut++;
00421 return kFALSE;
00422 }
00423
00424
00425 mEventN++;
00426
00427
00428 Float_t vertexX = pMuEvent->primaryVertexPosition().x();
00429 if (mVertexXCuts[1] > mVertexXCuts[0] &&
00430 (vertexX < mVertexXCuts[0] || vertexX >= mVertexXCuts[1])) {
00431 mVertexXCut++;
00432 return kFALSE;
00433 }
00434
00435
00436 Float_t vertexY = pMuEvent->primaryVertexPosition().y();
00437 if (mVertexYCuts[1] > mVertexYCuts[0] &&
00438 (vertexY < mVertexYCuts[0] || vertexY >= mVertexYCuts[1])) {
00439 mVertexYCut++;
00440 return kFALSE;
00441 }
00442
00443
00444 Float_t vertexZ = pMuEvent->primaryVertexPosition().z();
00445 if (mVertexZCuts[1] > mVertexZCuts[0] &&
00446 (vertexZ < mVertexZCuts[0] || vertexZ >= mVertexZCuts[1])) {
00447 mVertexZCut++;
00448 return kFALSE;
00449 }
00450
00451 mGoodEventN++;
00452 return kTRUE;
00453
00454 }
00455
00456
00457
00458 Bool_t StFlowCutEvent::CheckEtaSymmetry(StEvent* pEvent) {
00459
00460
00461
00462
00463 if (((StFlowCutTrack::EtaSymPosTpc() == 0 || StFlowCutTrack::EtaSymNegTpc() == 0) &&
00464 !(StFlowCutTrack::EtaSymPosTpc() == 0 && StFlowCutTrack::EtaSymNegTpc() == 0)) ||
00465 ((StFlowCutTrack::EtaSymPosFtpc() == 0 || StFlowCutTrack::EtaSymNegFtpc() == 0) &&
00466 !(StFlowCutTrack::EtaSymPosFtpc() == 0 && StFlowCutTrack::EtaSymNegFtpc() == 0))) {
00467
00468 return kFALSE;
00469 }
00470
00471
00472 float etaSymPosTpcN = (float)StFlowCutTrack::EtaSymPosTpc();
00473 float etaSymNegTpcN = (float)StFlowCutTrack::EtaSymNegTpc();
00474 float etaSymTpc = (etaSymPosTpcN - etaSymNegTpcN) / (etaSymPosTpcN + etaSymNegTpcN);
00475
00476 float etaSymPosFtpcN = (float)StFlowCutTrack::EtaSymPosFtpc();
00477 float etaSymNegFtpcN = (float)StFlowCutTrack::EtaSymNegFtpc();
00478 float etaSymFtpc = (etaSymPosFtpcN - etaSymNegFtpcN) / (etaSymPosFtpcN + etaSymNegFtpcN);
00479 StFlowCutTrack::EtaSymClear();
00480
00481 StPrimaryVertex* pVertex = pEvent->primaryVertex(0);
00482 if (!pVertex) return kFALSE;
00483 const StThreeVectorF& vertex = pVertex->position();
00484 Float_t vertexZ = vertex.z();
00485
00486 etaSymTpc += (Flow::etaSymZSlopeTpc * vertexZ);
00487 etaSymTpc *= ::sqrt((double)(etaSymPosTpcN + etaSymNegTpcN));
00488
00489 etaSymFtpc += (Flow::etaSymZSlopeFtpc * vertexZ);
00490 etaSymFtpc *= ::sqrt((double)(etaSymPosFtpcN + etaSymNegFtpcN));
00491
00492 if (mEtaSymTpcCuts[1] > mEtaSymTpcCuts[0] &&
00493 (etaSymTpc < mEtaSymTpcCuts[0] || etaSymTpc >= mEtaSymTpcCuts[1])) {
00494 mEtaSymTpcCutN++;
00495 mGoodEventN--;
00496 return kFALSE;
00497 }
00498
00499 else if (mEtaSymFtpcCuts[1] > mEtaSymFtpcCuts[0] &&
00500 (etaSymFtpc < mEtaSymFtpcCuts[0] || etaSymFtpc >= mEtaSymFtpcCuts[1])) {
00501 mEtaSymFtpcCutN++;
00502 mGoodEventN--;
00503 return kFALSE;
00504 }
00505
00506 return kTRUE;
00507 }
00508
00509
00510
00511 Bool_t StFlowCutEvent::CheckEtaSymmetry(StFlowPicoEvent* pPicoEvent) {
00512
00513
00514
00515
00516 if (((StFlowCutTrack::EtaSymPosTpc() == 0 || StFlowCutTrack::EtaSymNegTpc() == 0) &&
00517 !(StFlowCutTrack::EtaSymPosTpc() == 0 && StFlowCutTrack::EtaSymNegTpc() == 0)) ||
00518 ((StFlowCutTrack::EtaSymPosFtpc() == 0 || StFlowCutTrack::EtaSymNegFtpc() == 0) &&
00519 !(StFlowCutTrack::EtaSymPosFtpc() == 0 && StFlowCutTrack::EtaSymNegFtpc() == 0))) {
00520
00521 return kFALSE;
00522 }
00523
00524
00525 float etaSymPosTpcN = (float)StFlowCutTrack::EtaSymPosTpc();
00526 float etaSymNegTpcN = (float)StFlowCutTrack::EtaSymNegTpc();
00527 float etaSymTpc = (etaSymPosTpcN - etaSymNegTpcN) / (etaSymPosTpcN + etaSymNegTpcN);
00528
00529 float etaSymPosFtpcN = (float)StFlowCutTrack::EtaSymPosFtpc();
00530 float etaSymNegFtpcN = (float)StFlowCutTrack::EtaSymNegFtpc();
00531 float etaSymFtpc = (etaSymPosFtpcN - etaSymNegFtpcN) / (etaSymPosFtpcN + etaSymNegFtpcN);
00532 StFlowCutTrack::EtaSymClear();
00533
00534 Float_t vertexZ = pPicoEvent->VertexZ();
00535
00536 etaSymTpc += (Flow::etaSymZSlopeTpc * vertexZ);
00537 etaSymTpc *= ::sqrt((double)(etaSymPosTpcN + etaSymNegTpcN));
00538
00539 etaSymFtpc += (Flow::etaSymZSlopeFtpc * vertexZ);
00540 etaSymFtpc *= ::sqrt((double)(etaSymPosFtpcN + etaSymNegFtpcN));
00541
00542 if (mEtaSymTpcCuts[1] > mEtaSymTpcCuts[0] &&
00543 (etaSymTpc < mEtaSymTpcCuts[0] || etaSymTpc >= mEtaSymTpcCuts[1])) {
00544 mEtaSymTpcCutN++;
00545 mGoodEventN--;
00546 return kFALSE;
00547 }
00548
00549 else if (mEtaSymFtpcCuts[1] > mEtaSymFtpcCuts[0] &&
00550 (etaSymFtpc < mEtaSymFtpcCuts[0] || etaSymFtpc >= mEtaSymFtpcCuts[1])) {
00551 mEtaSymFtpcCutN++;
00552 mGoodEventN--;
00553 return kFALSE;
00554 }
00555
00556 return kTRUE;
00557 }
00558
00559
00560
00561 Bool_t StFlowCutEvent::CheckEtaSymmetry(StMuEvent* pMuEvent) {
00562
00563
00564
00565
00566 if (((StFlowCutTrack::EtaSymPosTpc() == 0 || StFlowCutTrack::EtaSymNegTpc() == 0) &&
00567 !(StFlowCutTrack::EtaSymPosTpc() == 0 && StFlowCutTrack::EtaSymNegTpc() == 0)) ||
00568 ((StFlowCutTrack::EtaSymPosFtpc() == 0 || StFlowCutTrack::EtaSymNegFtpc() == 0) &&
00569 !(StFlowCutTrack::EtaSymPosFtpc() == 0 && StFlowCutTrack::EtaSymNegFtpc() == 0))) {
00570
00571 return kFALSE;
00572 }
00573
00574
00575 float etaSymPosTpcN = (float)StFlowCutTrack::EtaSymPosTpc();
00576 float etaSymNegTpcN = (float)StFlowCutTrack::EtaSymNegTpc();
00577 float etaSymTpc = (etaSymPosTpcN - etaSymNegTpcN) / (etaSymPosTpcN + etaSymNegTpcN);
00578
00579 float etaSymPosFtpcN = (float)StFlowCutTrack::EtaSymPosFtpc();
00580 float etaSymNegFtpcN = (float)StFlowCutTrack::EtaSymNegFtpc();
00581 float etaSymFtpc = (etaSymPosFtpcN - etaSymNegFtpcN) / (etaSymPosFtpcN + etaSymNegFtpcN);
00582 StFlowCutTrack::EtaSymClear();
00583
00584 const StThreeVectorF& vertex = pMuEvent->primaryVertexPosition();
00585 Float_t vertexZ = vertex.z();
00586
00587 etaSymTpc += (Flow::etaSymZSlopeTpc * vertexZ);
00588 etaSymTpc *= ::sqrt((double)(etaSymPosTpcN + etaSymNegTpcN));
00589
00590 etaSymFtpc += (Flow::etaSymZSlopeFtpc * vertexZ);
00591 etaSymFtpc *= ::sqrt((double)(etaSymPosFtpcN + etaSymNegFtpcN));
00592
00593 if (mEtaSymTpcCuts[1] > mEtaSymTpcCuts[0] &&
00594 (etaSymTpc < mEtaSymTpcCuts[0] || etaSymTpc >= mEtaSymTpcCuts[1])) {
00595 mEtaSymTpcCutN++;
00596 mGoodEventN--;
00597 return kFALSE;
00598 }
00599
00600 else if (mEtaSymFtpcCuts[1] > mEtaSymFtpcCuts[0] &&
00601 (etaSymFtpc < mEtaSymFtpcCuts[0] || etaSymFtpc >= mEtaSymFtpcCuts[1])) {
00602 mEtaSymFtpcCutN++;
00603 mGoodEventN--;
00604 return kFALSE;
00605 }
00606
00607 return kTRUE;
00608
00609 }
00610
00611
00612
00613 void StFlowCutEvent::PrintCutList() {
00614
00615
00616 cout << "#######################################################" << endl;
00617 cout << "# Primary Vertex Triggered Events= " << mEventN << endl;
00618 cout << "# Event Cut List:" << endl;
00619 cout << "# Mult cuts= " << mMultCuts[0] << ", " << mMultCuts[1]
00620 << " :\t Events Cut= " << mMultCut << endl;
00621 cout << "# Centrality cuts= " << mCentCuts[0] << ", " << mCentCuts[1]
00622 << " :\t Events Cut= " << mCentCut << endl;
00623 cout << "# VertexX cuts= " << mVertexXCuts[0] << ", " << mVertexXCuts[1]
00624 << " :\t Events Cut= " << mVertexXCut << "\t (" << setprecision(3) <<
00625 (float)mVertexXCut/(float)mEventN/perCent << "% cut)" << endl;
00626 cout << "# VertexY cuts= " << mVertexYCuts[0] << ", " << mVertexYCuts[1]
00627 << " :\t Events Cut= " << mVertexYCut << "\t (" << setprecision(3) <<
00628 (float)mVertexYCut/(float)mEventN/perCent << "% cut)" << endl;
00629 cout << "# VertexZ cuts= " << mVertexZCuts[0] << ", " << mVertexZCuts[1]
00630 << " :\t Events Cut= " << mVertexZCut << "\t (" << setprecision(3) <<
00631 (float)mVertexZCut/(float)mEventN/perCent << "% cut)" << endl;
00632 cout << "# EtaSymTpc cuts= " << mEtaSymTpcCuts[0] << ", " << mEtaSymTpcCuts[1]
00633 << " :\t Events Cut= " << mEtaSymTpcCutN << "\t (" << setprecision(3) <<
00634 (float)mEtaSymTpcCutN/(float)mEventN/perCent << "% cut)" << endl;
00635 cout << "# EtaSymFtpc cuts= " << mEtaSymFtpcCuts[0] << ", " << mEtaSymFtpcCuts[1]
00636 << " :\t Events Cut= " << mEtaSymFtpcCutN << "\t (" << setprecision(3) <<
00637 (float)mEtaSymFtpcCutN/(float)mEventN/perCent << "% cut)" << endl;
00638
00639
00640
00641 cout << "# Good Events = " << mGoodEventN << ", " << setprecision(3) <<
00642 (float)mGoodEventN/(float)mEventN/perCent << "%" << endl;
00643 cout << "#######################################################" << endl;
00644
00645 }
00646
00648
00649
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686
00687
00688
00689
00690
00691
00692
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737
00738
00739
00740
00741
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757
00758
00759
00760
00761
00762
00763
00764
00765
00766
00767
00768
00769
00770
00771
00772
00773
00774
00775
00776
00777
00778
00779
00780
00781
00782
00783
00784
00785
00786
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797
00798
00799
00800
00801