00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "StHbtMaker/Infrastructure/StHbtMultiTrackCut.h"
00016 #include "StHbtMaker/Infrastructure/StHbtTrackCutCollection.hh"
00017
00018 #ifdef __ROOT__
00019 ClassImp(StHbtMultiTrackCut)
00020 #endif
00021
00022
00023
00024 StHbtMultiTrackCut::StHbtMultiTrackCut(){
00025 mCutCollection = new StHbtTrackCutCollection;
00026 }
00027
00028
00029
00030 StHbtMultiTrackCut::~StHbtMultiTrackCut(){
00031 StHbtTrackCutIterator iter;
00032 for (iter=mCutCollection->begin();iter!=mCutCollection->end();iter++){
00033 delete *iter;
00034 }
00035 delete mCutCollection;
00036 }
00037
00038 StHbtString StHbtMultiTrackCut::Report(){
00039 StHbtString temp;
00040 temp = "\n StHbtMultiTrackCut::Report() reporting ";
00041 temp += (int)mCutCollection->size();
00042 temp += " track cuts \n";
00043 StHbtTrackCutIterator iter;
00044 for (iter=mCutCollection->begin();iter!=mCutCollection->end();iter++){
00045 temp += (*iter)->Report();
00046 }
00047 return temp;
00048 }
00049
00050 bool StHbtMultiTrackCut::Pass(const StHbtTrack* track) {
00051 bool temp=0;
00052 StHbtTrackCutIterator iter;
00053 for (iter=mCutCollection->begin();iter!=mCutCollection->end();iter++){
00054 temp = temp || (*iter)->Pass(track);
00055 }
00056 return temp;
00057 }
00058
00059 void StHbtMultiTrackCut::EventBegin(const StHbtEvent* ev) {
00060 StHbtTrackCutIterator iter;
00061 for (iter=mCutCollection->begin();iter!=mCutCollection->end();iter++){
00062 (*iter)->EventBegin(ev);
00063 }
00064 }
00065
00066 void StHbtMultiTrackCut::EventEnd(const StHbtEvent* ev) {
00067 StHbtTrackCutIterator iter;
00068 for (iter=mCutCollection->begin();iter!=mCutCollection->end();iter++){
00069 (*iter)->EventEnd(ev);
00070 }
00071 }
00072
00073 void StHbtMultiTrackCut::AddTrackCut(StHbtTrackCut* cut) {
00074 mCutCollection->push_back(cut);
00075 }
00076
00077 StHbtMultiTrackCut::StHbtMultiTrackCut(const StHbtMultiTrackCut& cut ) : StHbtTrackCut() {
00078 StHbtMultiTrackCut();
00079 StHbtTrackCutIterator iter;
00080 StHbtTrackCut* t;
00081 for (iter=cut.mCutCollection->begin();iter!=cut.mCutCollection->end();iter++){
00082 t = (*iter)->Clone();
00083 if (t) mCutCollection->push_back(t);
00084 }
00085 }
00086
00087 StHbtMultiTrackCut* StHbtMultiTrackCut::Clone() {
00088 StHbtMultiTrackCut* cut = this->Clone();
00089 return cut;
00090 }
00091
00092
00093