00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include "StHbtMaker/Cut/calculateEventPlaneEventCut.h"
00039 #include <cstdio>
00040 #include "StFlowMaker/StFlowMaker.h"
00041 #include "StFlowMaker/StFlowEvent.h"
00042 #include "StFlowAnalysisMaker/StFlowAnalysisMaker.h"
00043 #include "StFlowMaker/StFlowSelection.h"
00044
00045 #ifdef __ROOT__
00046 ClassImp(calculateEventPlaneEventCut)
00047 #endif
00048
00049 calculateEventPlaneEventCut::calculateEventPlaneEventCut(){
00050 mFlowMaker = 0;
00051 mFlowAnalysisMaker = 0;
00052 mFromHBT = 0;
00053 mNEventsPassed = mNEventsFailed = 0;
00054
00055 mVertZPos[0] = -1.e4;
00056 mVertZPos[1] = 1.e4;
00057 mEventMult[0] = 0;
00058 mEventMult[1] = 9999;
00059
00060 }
00061
00062
00063
00064
00065
00066 bool calculateEventPlaneEventCut::Pass(const StHbtEvent* ConstantEventIn){
00067
00068
00069
00070
00071 StHbtEvent* event = (StHbtEvent*)ConstantEventIn;
00072
00073 bool goodEvent = false;
00074
00075 if(event) {
00076
00077 double VertexZPos = event->PrimVertPos().z();
00078 goodEvent = ( (VertexZPos >= mVertZPos[0]) && (VertexZPos <= mVertZPos[1]) );
00079
00080
00081 if (goodEvent) {
00082 int mult = event->UncorrectedNumberOfPrimaries();
00083 goodEvent = (goodEvent && (mult >= mEventMult[0]) && (mult <= mEventMult[1]));
00084
00085 }
00086
00087 if (goodEvent && mFlowMaker) {
00088 if (mFromHBT) mFlowMaker->FillFlowEvent(event);
00089 if (mFlowMaker->FlowEventPointer()) {
00090 StFlowEvent::SetPtWgt(false);
00091
00092 mFlowMaker->FlowSelection()->SetSubevent(-1);
00093 double reactionPlane = mFlowMaker->FlowEventPointer()->Psi(mFlowMaker->FlowSelection());
00094 cout << "Reaction Plane " << reactionPlane << endl;
00095 event->SetReactionPlane(reactionPlane,0);
00096
00097 mFlowMaker->FlowSelection()->SetSubevent(0);
00098 double RP1 = mFlowMaker->FlowEventPointer()->Psi(mFlowMaker->FlowSelection());
00099 mFlowMaker->FlowSelection()->SetSubevent(1);
00100 double RP2 = mFlowMaker->FlowEventPointer()->Psi(mFlowMaker->FlowSelection());
00101 event->SetReactionPlaneSubEventDifference(RP1-RP2,0);
00102
00103 StFlowEvent::SetPtWgt(true);
00104
00105 mFlowMaker->FlowSelection()->SetSubevent(-1);
00106 reactionPlane = mFlowMaker->FlowEventPointer()->Psi(mFlowMaker->FlowSelection());
00107 cout << "Reaction Plane ptWgt " << reactionPlane << endl;
00108 event->SetReactionPlane(reactionPlane,1);
00109
00110 mFlowMaker->FlowSelection()->SetSubevent(0);
00111 RP1 = mFlowMaker->FlowEventPointer()->Psi(mFlowMaker->FlowSelection());
00112 mFlowMaker->FlowSelection()->SetSubevent(1);
00113 RP2 = mFlowMaker->FlowEventPointer()->Psi(mFlowMaker->FlowSelection());
00114 event->SetReactionPlaneSubEventDifference(RP1-RP2,1);
00115
00116 if (mFlowAnalysisMaker) mFlowAnalysisMaker->Make();
00117 }
00118 else {
00119 cout << "No flow event found" << endl;
00120 event->SetReactionPlane(-999,0);
00121 event->SetReactionPlane(-999,1);
00122 event->SetReactionPlaneSubEventDifference(-999,0);
00123 event->SetReactionPlaneSubEventDifference(-999,1);
00124 }
00125 }
00126 }
00127 else {
00128 cout << "Something wrong with HbtEvent" << endl;
00129 event->SetReactionPlane(-99,0);
00130 event->SetReactionPlane(-99,1);
00131 event->SetReactionPlaneSubEventDifference(-99,0);
00132 event->SetReactionPlaneSubEventDifference(-99,1);
00133 }
00134 goodEvent ? mNEventsPassed++ : mNEventsFailed++ ;
00135 return (goodEvent);
00136 }
00137
00138 StHbtString calculateEventPlaneEventCut::Report(){
00139 string Stemp;
00140 char Ctemp[100];
00141 sprintf(Ctemp,"\nNumber of events which passed:\t%ld Number which failed:\t%ld",mNEventsPassed,mNEventsFailed);
00142 Stemp += Ctemp;
00143 StHbtString returnThis = Stemp;
00144 return returnThis;
00145 }
00146