00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "StHbtMaker/Cut/randomRotateEventCut.h"
00025 #include "Randomize.h"
00026 #include "PhysicalConstants.h"
00027 #include "SystemOfUnits.h"
00028
00029 #include <cstdio>
00030
00031 #ifdef __ROOT__
00032 ClassImp(randomRotateEventCut)
00033 #endif
00034
00035 randomRotateEventCut::randomRotateEventCut() : mRotation(true) {
00036 mNEventsPassed = mNEventsFailed = 0;
00037 engine = new HepRandom();
00038 }
00039
00040
00041
00042
00043
00044 bool randomRotateEventCut::Pass(const StHbtEvent* event){
00045 int mult;
00046 double VertexZPos;
00047 double angle;
00048 bool goodEvent = true;
00049
00050 if ( event->TrackCollection()->size() + event->V0Collection()->size() > 0 ) {
00051 mult = event->NumberOfTracks();
00052 VertexZPos = event->PrimVertPos().z();
00053 goodEvent =
00054 ((mult > mEventMult[0]) &&
00055 (mult < mEventMult[1]) &&
00056 (VertexZPos > mVertZPos[0]) &&
00057 (VertexZPos < mVertZPos[1]));
00058
00059 if (goodEvent && mRotation ) {
00060 angle = engine->flat()*2.*pi;
00061 ((StHbtEvent*)event)->RotateZ(angle);
00062 }
00063 goodEvent ? mNEventsPassed++ : mNEventsFailed++ ;
00064 }
00065 return (goodEvent);
00066 }
00067
00068 StHbtString randomRotateEventCut::Report(){
00069 string Stemp="";
00070 char Ctemp[100];
00071 sprintf(Ctemp,"\n randomRotateEventCut:");
00072 Stemp += Ctemp;
00073 sprintf(Ctemp,"\n Rotation :\t %d",(int) mRotation);
00074 Stemp += Ctemp;
00075 sprintf(Ctemp,"\n Multiplicity:\t %d-%d",mEventMult[0],mEventMult[1]);
00076 Stemp += Ctemp;
00077 sprintf(Ctemp,"\n Vertex Z-position:\t %E-%E",mVertZPos[0],mVertZPos[1]);
00078 Stemp += Ctemp;
00079 sprintf(Ctemp,"\n Number of events which passed:\t%ld Number which failed:\t%ld",mNEventsPassed,mNEventsFailed);
00080 Stemp += Ctemp;
00081 StHbtString returnThis = Stemp;
00082 return returnThis;
00083 }