00001 #ifndef __StEEmcPi0Analysis_h__
00002 #define __StEEmcPi0Analysis_h__
00003
00004 #include "StMaker.h"
00005
00006 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
00007 #include "StMuDSTMaker/COMMON/StMuDst.h"
00008 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00009 #include "StMuDSTMaker/COMMON/StMuTriggerIdCollection.h"
00010 #include "StMuDSTMaker/COMMON/StMuPrimaryVertex.h"
00011 #include "StEvent/StTriggerId.h"
00012
00013 #include "StSpinPool/StSpinDbMaker/StSpinDbMaker.h"
00014
00015 #include "StEEmcMixEvent.h"
00016
00017 class StEEmcMixMaker;
00018 class StEEmcPointMaker;
00019 class StRFEmcTrigMaker;
00020 class TH1F;
00021 class TH2F;
00022 class TFile;
00023 class SpinCuts;
00024 class EEmcGeomSimple;
00025 class StEEmcA2EMaker;
00026 class TTree;
00027
00028 #include <vector>
00029 #include "StEEmcPair.h"
00030 #include "SpinHistos.h"
00031 #include "TString.h"
00032
00033 class StEEmcPi0Analysis : public StMaker
00034 {
00035
00036 public:
00038 StEEmcPi0Analysis(const Char_t *name);
00040 ~StEEmcPi0Analysis(){ };
00041
00043 Int_t Init();
00045 Int_t Make();
00047 Int_t InitRun(Int_t);
00049 void Clear(Option_t *opts="");
00052 void mixer(const Char_t *name);
00054 void points(const Char_t *name);
00056 void mudst(const Char_t *name);
00058 void analysis(const Char_t *name);
00060 void spin(const Char_t *name);
00061
00063 void trigger(Int_t trig){ mTriggerList.push_back(trig); }
00064
00066 void minbias(Int_t trig){ mMinBias = trig; }
00067
00068 SpinCuts *cuts(){ return mCuts; }
00069
00070 void filename(const Char_t *fname){ mFilename=fname; }
00071
00072 void triggerSim( const Char_t *name, Int_t t ) { mTrigSim=(StRFEmcTrigMaker*)GetMaker(name); mTrigSimThreshold=t; }
00073
00074 private:
00075 protected:
00076
00079 Bool_t twoBodyCut( StEEmcPair &p );
00080
00082 StEEmcMixMaker *mEEmixer;
00083
00084 StEEmcPointMaker *mEEpoints;
00085
00086 StMuDstMaker *mMuDst;
00088 StEEmcA2EMaker *mEEanalysis;
00090 StSpinDbMaker *mSpinDb;
00091
00092 std::vector<Int_t> mTriggerList;
00093 Int_t mMinBias;
00095 enum SpinStates { kAny=0, kUpUp, kUpDn, kDnUp, kDnDn };
00096
00098 SpinHistos *mHistograms[100];
00099 SpinHistos *mBackgrounds[100];
00100 SpinCuts *mCuts;
00101 TH1F *hFillPatternI;
00102 TH1F *hSpin4;
00103 TH1F *hBx7;
00104 TH1F *hBx48;
00105 TH2F *hBx7diffBx48;
00106 TH1F *hBxStar;
00107 TH1F *hBxStarPi0;
00109 TH2F *hMassBx;
00110 TH2F *hZvertBx;
00111 TH2F *hZggBx;
00112 TH2F *hEtaBx;
00114 TH1F *hSpin4mb;
00117 enum EventCutTypes {
00118 kEvent=0,
00119 kMinBias,
00120 kTrig,
00121 kSoftTrig,
00122 kSoftTrig36,
00123 kVertex,
00124 kCandidate
00125 };
00126
00127 enum PairCutTypes {
00128 kPair=1,
00129 kTwoBody,
00130 kAdcTow,
00131 kEtTow,
00132 kKinematics
00133 };
00134
00136 TH1F *hEventCounter;
00137
00139 TH1F *hPairCounter;
00140
00142 Bool_t accept(StMuDst *mu);
00143 Bool_t accept(StEEmcPair pair, Bool_t fill=true );
00144
00146 Int_t getSpinState(StMuDst *mu, Int_t &bxs);
00147
00148 TString mFilename;
00149 TFile *mFile;
00150
00152 StRFEmcTrigMaker *mTrigSim;
00153 Int_t mTrigSimThreshold;
00154
00155 Int_t mRunNumber;
00156 Bool_t mSpinSort;
00157
00159 EEmcGeomSimple *mEEgeom;
00160
00161 StEEmcMixEvent *mRealEvent;
00162 StEEmcMixEvent *mMixedEvent;
00163
00164 TTree *mRealTree;
00165 TTree *mMixedTree;
00166
00168 ClassDef(StEEmcPi0Analysis,1);
00169
00170 };
00171
00172 #endif