00001
00002
00003
00004
00005
00006 #ifndef STAR_StSkimPionMaker
00007 #define STAR_StSkimPionMaker
00008
00009 #ifndef StMaker_H
00010 #include "StMaker.h"
00011 #include "TH1.h"
00012 #include "TObjArray.h"
00013 #endif
00014
00015 #include "StThreeVectorF.hh"
00016
00017
00018 #include "StMuDSTMaker/COMMON/StMuDst.h"
00019 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00020 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
00021 #include "StMuDSTMaker/COMMON/StMuEmcCollection.h"
00022 #include "StMuDSTMaker/COMMON/StMuDst.h"
00023 #include "StMuDSTMaker/COMMON/StMuEmcUtil.h"
00024 #include "StEmcRawMaker/defines.h"
00025 #include "StEmcRawMaker/StBemcRaw.h"
00026 #include "StEmcRawMaker/StBemcTables.h"
00027
00028 #include "TSkimPionEvent.h"
00029
00030 class TNtuple;
00031 class TH2F;
00032 class StChain;
00033 class StPrimaryTrack;
00034 class StPrimaryVertex;
00035 class StEmcCollection;
00036 class StEmcGeom;
00037 class StEmcPoint;
00038
00039 #define badrunidmax 200
00040 #define ntower 4800
00041
00042 class StSkimPionMaker : public StMaker
00043 {
00044 private:
00045 protected:
00046 Bool_t mDoTracks;
00047 StChain* mChain;
00048 const char* mFileName;
00049
00050 StMuDstMaker* mMuDstMaker;
00051 StMuDst* mMuDst;
00052
00053 StBemcTables* mTables;
00054
00055 float mPi;
00056 float mPi0Mass;
00057
00058 bool debug;
00059
00060 bool mb;
00061 bool httpl2;
00062 bool httpl2_test;
00063 Int_t mBBCTrig;
00064 Int_t triggerTower;
00065 Float_t mBBCVertexZ;
00066
00067 Int_t badrunid[badrunidmax];
00068 Int_t tower[ntower];
00069 Float_t gain[ntower];
00070 Float_t c_factors[4801];
00071
00072 Int_t runN;
00073 Int_t eventN;
00074 Int_t fillN;
00075 Int_t indicator;
00076
00077 Int_t ievtot;
00078 Int_t ievaccep;
00079 Int_t inochainpt;
00080 Int_t inoevpt;
00081 Int_t ibadrun;
00082 Int_t iemc;
00083 Int_t inoprimvert;
00084 Int_t itrig;
00085 Int_t ievmix;
00086 Int_t iWrittenEvents;
00087 Int_t ii;
00088 Double_t mField;
00089 Float_t mHiTowerAdc6Bit;
00090
00091
00092 TObjArray *photonlist;
00093
00094
00095 Int_t startphoton1;
00096 Int_t startphoton2;
00097 Int_t fnummixed;
00098
00099 TObjArray *mixedphoton1list;
00100 TObjArray *mixedphoton2list;
00101
00102 TFile* mFile;
00103
00104 TTree* pi0Tree;
00105 TSkimPionEvent* pi0Event;
00106
00107 Float_t getHiTowerEt(StEmcCollection*);
00108 Int_t doTrackPtHist(Float_t energy, Float_t threshold, TObjArray *photonlist);
00109 Int_t associateTracksWithEmcPoints(StMaker* anyMaker);
00110
00111 void getTowerHitInfo();
00112 StThreeVectorF getPoint(StEmcPoint *p, Int_t&, Float_t&, Float_t&, Int_t&, Int_t&, Float_t&, Float_t&, Float_t&,Float_t&, Float_t&, Float_t&);
00113 void printPointInfo(StEmcPoint *p);
00114 void getPhotonSpectra(TObjArray *photonlist, Int_t, Float_t, Int_t);
00115 Float_t getNeutralEnergySum(TObjArray *photonlist);
00116 Bool_t getMass(StThreeVectorF, StThreeVectorF, Float_t, Float_t, Double_t&, StThreeVectorF&, Float_t&, Float_t&, Float_t&, Float_t&);
00117
00118 void getInvMass(Int_t, TObjArray *photonlist1, TObjArray *photonlist2, Float_t, StThreeVectorF, int[3], int[3]);
00119
00120 public:
00121
00122 StSkimPionMaker(const char *name="pi0AnaMaker", Bool_t mDoTracks=kTRUE, const char *mFileName="bla.root");
00123 virtual ~StSkimPionMaker();
00124
00125 virtual Int_t Init();
00126 virtual Int_t InitRun(int);
00127 virtual Int_t Make();
00128 virtual Int_t Finish();
00129 Bool_t readPointList();
00130
00131 ClassDef(StSkimPionMaker, 1)
00132 };
00133 #endif