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
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107 #ifndef StHbtAnalysis_hh
00108 #define StHbtAnalysis_hh
00109
00110
00111
00112
00113 #include "StHbtMaker/Base/StHbtBaseAnalysis.h"
00114 #include "StHbtMaker/Base/StHbtPairCut.h"
00115 #include "StHbtMaker/Base/StHbtEventCut.h"
00116 #include "StHbtMaker/Base/StHbtParticleCut.h"
00117 #include "StHbtMaker/Base/StHbtCorrFctn.hh"
00118 #include "StHbtMaker/Infrastructure/StHbtCorrFctnCollection.hh"
00119 #include "StHbtMaker/Infrastructure/StHbtPicoEventCollection.hh"
00120 #include "StHbtMaker/Infrastructure/StHbtParticleCollection.hh"
00121 #include "StHbtMaker/Infrastructure/StHbtPicoEvent.hh"
00122
00123 class StHbtPicoEventCollectionVectorHideAway;
00124
00125
00126 class StHbtAnalysis : public StHbtBaseAnalysis {
00127
00128 public:
00129
00130 StHbtAnalysis();
00131 StHbtAnalysis(const StHbtAnalysis&);
00132 virtual ~StHbtAnalysis();
00133
00134
00135
00136 virtual StHbtPairCut* PairCut();
00137 virtual StHbtEventCut* EventCut();
00138 virtual StHbtParticleCut* FirstParticleCut();
00139 virtual StHbtParticleCut* SecondParticleCut();
00140
00141 StHbtCorrFctnCollection* CorrFctnCollection();
00142 virtual StHbtCorrFctn* CorrFctn(int n);
00143 void AddCorrFctn(StHbtCorrFctn*);
00144
00145 void SetPairCut(StHbtPairCut*);
00146 void SetEventCut(StHbtEventCut*);
00147 void SetFirstParticleCut(StHbtParticleCut*);
00148 void SetSecondParticleCut(StHbtParticleCut*);
00149
00150 void SetMinSizePartCollection(unsigned int minSize);
00151
00152
00153 unsigned int NumEventsToMix();
00154 void SetNumEventsToMix(const unsigned int&);
00155 StHbtPicoEvent* CurrentPicoEvent();
00156 StHbtPicoEventCollection* MixingBuffer();
00157 bool MixingBufferFull();
00158
00159 bool AnalyzeIdenticalParticles();
00160 virtual StHbtString Report();
00161
00162 virtual void ProcessEvent(const StHbtEvent*);
00163 virtual void EventBegin(const StHbtEvent*);
00164 virtual void EventEnd(const StHbtEvent*);
00165 int GetNeventsProcessed();
00166
00167 virtual void Finish();
00168
00169 friend class StHbtLikeSignAnalysis;
00170
00171 protected:
00172
00173 void AddEventProcessed();
00174 void MakePairs(const char* type,StHbtParticleCollection*,StHbtParticleCollection* p2=0);
00175
00176 StHbtPicoEventCollectionVectorHideAway* mPicoEventCollectionVectorHideAway;
00177
00178 StHbtPairCut* mPairCut;
00179 StHbtCorrFctnCollection* mCorrFctnCollection;
00180 StHbtEventCut* mEventCut;
00181 StHbtParticleCut* mFirstParticleCut;
00182 StHbtParticleCut* mSecondParticleCut;
00183 StHbtPicoEventCollection* mMixingBuffer;
00184 StHbtPicoEvent* mPicoEvent;
00185 unsigned int mNumEventsToMix;
00186 unsigned int mNeventsProcessed;
00187
00188 unsigned int mMinSizePartCollection;
00189
00190
00191 #ifdef __ROOT__
00192 ClassDef(StHbtAnalysis, 0)
00193 #endif
00194
00195 };
00196
00197
00198 inline StHbtPairCut* StHbtAnalysis::PairCut() {return mPairCut;}
00199 inline StHbtEventCut* StHbtAnalysis::EventCut() {return mEventCut;}
00200 inline StHbtParticleCut* StHbtAnalysis::FirstParticleCut() {return mFirstParticleCut;}
00201 inline StHbtParticleCut* StHbtAnalysis::SecondParticleCut() {return mSecondParticleCut;}
00202 inline StHbtCorrFctnCollection* StHbtAnalysis::CorrFctnCollection() {return mCorrFctnCollection;}
00203 inline unsigned int StHbtAnalysis::NumEventsToMix(){return mNumEventsToMix;}
00204 inline StHbtPicoEvent* StHbtAnalysis::CurrentPicoEvent() {return mPicoEvent;}
00205
00206 inline StHbtPicoEventCollection* StHbtAnalysis::MixingBuffer() {return mMixingBuffer;}
00207
00208
00209 inline bool StHbtAnalysis::AnalyzeIdenticalParticles(){return (mFirstParticleCut==mSecondParticleCut);}
00210 inline void StHbtAnalysis::SetPairCut(StHbtPairCut* x) { mPairCut = x; x->SetAnalysis((StHbtBaseAnalysis*)this);}
00211 inline void StHbtAnalysis::AddCorrFctn(StHbtCorrFctn* cf) {mCorrFctnCollection->push_back(cf); cf->SetAnalysis((StHbtBaseAnalysis*)this);}
00212 inline void StHbtAnalysis::SetEventCut(StHbtEventCut* x) {mEventCut = x; x->SetAnalysis((StHbtBaseAnalysis*)this);}
00213 inline void StHbtAnalysis::SetFirstParticleCut(StHbtParticleCut* x) {mFirstParticleCut = x; x->SetAnalysis((StHbtBaseAnalysis*)this);}
00214 inline void StHbtAnalysis::SetSecondParticleCut(StHbtParticleCut* x) {mSecondParticleCut = x; x->SetAnalysis((StHbtBaseAnalysis*)this);}
00215
00216 inline void StHbtAnalysis::SetNumEventsToMix(const unsigned int& nmix){ mNumEventsToMix = nmix;}
00217 inline bool StHbtAnalysis::MixingBufferFull(){return (mMixingBuffer->size() >= mNumEventsToMix);}
00218 inline int StHbtAnalysis::GetNeventsProcessed() {return mNeventsProcessed;}
00219
00220 inline void StHbtAnalysis::SetMinSizePartCollection(unsigned int minSize){mMinSizePartCollection = minSize;}
00221
00222 #endif