00001 #ifndef StParityAnalysis_hh
00002 #define StParityAnalysis_hh
00003
00004
00005
00006
00007 #include "StHbtMaker/Base/StHbtBaseAnalysis.h"
00008 #include "StHbtMaker/Base/StHbtPairCut.h"
00009 #include "StHbtMaker/Base/StHbtEventCut.h"
00010 #include "StHbtMaker/Base/StHbtParticleCut.h"
00011 #include "StHbtMaker/Base/StHbtCorrFctn.hh"
00012 #include "StHbtMaker/CorrFctn/ParityDevCorrFctn.h"
00013 #include "StHbtMaker/Infrastructure/StParityTypes.hh"
00014 #include "StHbtMaker/Infrastructure/StHbtCorrFctnCollection.hh"
00015 #include "StHbtMaker/Infrastructure/StHbtPicoEventCollection.hh"
00016
00017 #define SAME 5
00018 #define MIXED 6
00019
00020 class StParityAnalysis : public StHbtBaseAnalysis {
00021
00022 public:
00023
00024 StParityAnalysis();
00025 StParityAnalysis(const StParityAnalysis&);
00026 virtual ~StParityAnalysis();
00027
00028
00029
00030 virtual StHbtPairCut* PairCut();
00031 virtual StHbtEventCut* EventCut();
00032 virtual StHbtParticleCut* FirstParticleCut();
00033 virtual StHbtParticleCut* SecondParticleCut();
00034
00035 StHbtCorrFctnCollection* CorrFctnCollection();
00036 virtual StHbtCorrFctn* CorrFctn(int n);
00037 void AddCorrFctn(StHbtCorrFctn*);
00038
00039 void SetPairCut(StHbtPairCut*);
00040 void SetEventCut(StHbtEventCut*);
00041 void SetFirstParticleCut(StHbtParticleCut*);
00042 void SetSecondParticleCut(StHbtParticleCut*);
00043
00044 unsigned int NumEventsToMix();
00045 void SetNumEventsToMix(const unsigned int&);
00046 StHbtPicoEventCollection* MixingBuffer();
00047 bool MixingBufferFull();
00048
00049 bool AnalyzeIdenticalParticles();
00050 virtual StHbtString Report();
00051
00052 virtual void ProcessEvent(const StHbtEvent*);
00053 void EventBegin(const StHbtEvent*);
00054 void EventEnd(const StHbtEvent*);
00055 int GetNeventsProcessed();
00056
00057 virtual void Finish();
00058
00059 friend class StHbtLikeSignAnalysis;
00060
00061
00062 private:
00063
00064 void AddEventProcessed();
00065
00066 StHbtPairCut* mPairCut;
00067 StHbtCorrFctnCollection* mCorrFctnCollection;
00068 StHbtEventCut* mEventCut;
00069 StHbtParticleCut* mFirstParticleCut;
00070 StHbtParticleCut* mSecondParticleCut;
00071 StHbtPicoEventCollection* mMixingBuffer;
00072 unsigned int mNumEventsToMix;
00073 unsigned int mNeventsProcessed;
00074
00075
00076
00077 #ifdef __ROOT__
00078 ClassDef(StParityAnalysis, 0)
00079 #endif
00080
00081 };
00082
00083
00084 inline StHbtPairCut* StParityAnalysis::PairCut() {return mPairCut;}
00085 inline StHbtEventCut* StParityAnalysis::EventCut() {return mEventCut;}
00086 inline StHbtParticleCut* StParityAnalysis::FirstParticleCut() {return mFirstParticleCut;}
00087 inline StHbtParticleCut* StParityAnalysis::SecondParticleCut() {return mSecondParticleCut;}
00088 inline StHbtCorrFctnCollection* StParityAnalysis::CorrFctnCollection() {return mCorrFctnCollection;}
00089 inline unsigned int StParityAnalysis::NumEventsToMix(){return mNumEventsToMix;}
00090
00091 inline StHbtPicoEventCollection* StParityAnalysis::MixingBuffer() {return mMixingBuffer;}
00092
00093
00094 inline bool StParityAnalysis::AnalyzeIdenticalParticles(){return (mFirstParticleCut==mSecondParticleCut);}
00095 inline void StParityAnalysis::SetPairCut(StHbtPairCut* x) { mPairCut = x; x->SetAnalysis((StHbtBaseAnalysis*)this);}
00096 inline void StParityAnalysis::AddCorrFctn(StHbtCorrFctn* cf) {mCorrFctnCollection->push_back(cf); cf->SetAnalysis((StHbtBaseAnalysis*)this);}
00097 inline void StParityAnalysis::SetEventCut(StHbtEventCut* x) {mEventCut = x; x->SetAnalysis((StHbtBaseAnalysis*)this);}
00098 inline void StParityAnalysis::SetFirstParticleCut(StHbtParticleCut* x) {mFirstParticleCut = x; x->SetAnalysis((StHbtBaseAnalysis*)this);}
00099 inline void StParityAnalysis::SetSecondParticleCut(StHbtParticleCut* x) {mSecondParticleCut = x; x->SetAnalysis((StHbtBaseAnalysis*)this);}
00100
00101 inline void StParityAnalysis::SetNumEventsToMix(const unsigned int& nmix){ mNumEventsToMix = nmix;}
00102 inline bool StParityAnalysis::MixingBufferFull(){return (mMixingBuffer->size() >= mNumEventsToMix);}
00103 inline int StParityAnalysis::GetNeventsProcessed() {return mNeventsProcessed;}
00104
00105
00106 #endif