00001
00002
00003 #ifndef STAR_St2009WMaker
00004 #define STAR_St2009WMaker
00005
00018 #ifndef StMaker_H
00019 #include "StMaker.h"
00020 #endif
00021 #include <TRandom3.h>
00022
00023 #include "Wevent2009.h"
00024 #include "WtpcFilter.h"
00025
00026 class TObjArray;
00027 class TH1I;
00028 class TH2I;
00029 class StMuDstMaker;
00030 class StEmcGeom;
00031 class StEmcDecoder;
00032 class StBemcTables;
00033 class StEEmcDb;
00034 class EEmcGeomSimple;
00035 class WeventDisplay;
00036 class St2009pubWanaMaker;
00037 class St2009pubJSMaker;
00038 class St2009pubSpinMaker;
00039 class St2009pubMcMaker;
00040 class St2009WjjMaker;
00041 class StMcJetCalibMaker;
00042
00043 class StJetReader;
00044 class StJets;
00045 class StJet;
00046 class TClonesArray;
00047 class TRandom3;
00048
00049
00050 class St2009WMaker : public StMaker {
00051 friend class WeventDisplay;
00052 friend class St2009pubWanaMaker;
00053 friend class St2009pubJSMaker;
00054 friend class St2009pubSpinMaker;
00055 friend class St2009pubMcMaker;
00056 friend class St2009WlumiMaker;
00057 friend class St2009ZMaker;
00058 friend class St2009WjjMaker;
00059 friend class StMcJetCalibMaker;
00060
00061 private:
00062 StMuDstMaker* mMuDstMaker;
00063 StJetReader* mJetReaderMaker;
00064 int nJets;
00065 TString mJetTreeBranch,mJetTreeBranch_noEEMC;
00066 TClonesArray* mJets;
00067 Wevent2009 wEve;
00068 WeventDisplay *wDisaply;
00069 WtpcFilter mTpcFilter[mxTpcSec];
00070 int nInpEve,nTrigEve, nAccEve;
00071 int mRunNo;
00072 int isMC;
00073
00074
00075 int par_l0emulAdcThresh;
00076 float par_l2emulSeedThresh, par_l2emulClusterThresh;
00077
00078 int par_bht3TrgID, par_l2wTrgID;
00079 float par_vertexZ;
00080 int par_minPileupVert;
00081
00082 int par_nFitPts;
00083 float par_nHitFrac, par_trackRin, par_trackRout, par_trackPt;
00084
00085 int par_kSigPed, par_AdcThres;
00086 float par_maxADC, par_clustET, par_clustFrac24, par_nearTotEtFrac;
00087 float par_nearDeltaR, par_awayDeltaPhi, par_smallNearDeltaR;
00088 float par_delR3D, par_highET, par_ptBalance;
00089 float par_leptonEta;
00090 int par_inpRunNo;
00091
00092 float par_countTrPt,par_countTowEt;
00093 int par_useEtow;
00094 float par_etowScale;
00095 float par_btowScale;
00096
00097 float par_mcJetNeutScale;
00098 float par_mcJetChrgScale;
00099
00100 char* gains_file;
00101 int use_gains_file;
00102 float gains_BTOW[4801];
00103
00104 TH1F* hReweight; char* nameReweight;
00105
00106 public:
00107 void useEtow(int x){ par_useEtow=x; }
00108 void setVertexCuts(float zm, int npv) {
00109 par_vertexZ=zm; par_minPileupVert=npv; }
00110 void setEleTrackCuts(int nfp, int hfr, float rin, float rout, float mpt) {
00111 par_nFitPts=nfp; par_nHitFrac=hfr;
00112 par_trackRin=rin; par_trackRout=rout; par_trackPt=mpt;}
00113 void setWbosonCuts(float a, float fr2, float bal) {
00114 par_highET=a; par_nearTotEtFrac=fr2; par_ptBalance=bal;}
00115 void setEmcCuts(int ksp , float madc, float clet, float fr1, float dr){
00116 par_kSigPed=ksp; par_maxADC=madc; par_clustET=clet;
00117 par_clustFrac24=fr1;}
00118 void setEtowScale(float x){ par_etowScale=x; }
00119 void setBtowScale(float x){ par_btowScale=x; }
00120 void setL0AdcThresh(int x){ par_l0emulAdcThresh=x; }
00121 void setL2ClusterThresh(float x){ par_l2emulClusterThresh=x; }
00122 void setL2SeedThresh(float x){ par_l2emulSeedThresh=x; }
00123 void setJetTreeBranch(TString jetTreeBranch, TString jetTreeBranch_noEEMC){ mJetTreeBranch = jetTreeBranch; mJetTreeBranch_noEEMC = jetTreeBranch_noEEMC; }
00124 void setJetNeutScaleMC(float x){ par_mcJetNeutScale=x; }
00125 void setJetChrgScaleMC(float x){ par_mcJetChrgScale=x; }
00126
00127 void setGainsFile(char* x) {gains_file=x; use_gains_file=1;}
00128 void setNameReweight(char* x) {nameReweight=x;}
00129
00130 private:
00131
00132
00133 int par_DsmThres;
00134 int par_maxDisplEve;
00135
00136 StBemcTables* mBarrelTables;
00137 StEmcGeom *mBtowGeom, * mBSmdGeom[mxBSmd];
00138 int mapBtowIJ2ID[mxBTetaBin*mxBTphiBin];
00139 TVector3 positionBtow[mxBtow];
00140 TVector3 positionBsmd[mxBSmd][mxBStrips];
00141
00142 StEEmcDb *mDbE;
00143 EEmcGeomSimple *geomE;
00144 TVector3 positionEtow[mxEtowSec*mxEtowSub][mxEtowEta];
00145
00146 int accessTrig();
00147 int accessVertex();
00148 int accessTracks();
00149 int accessBTOW();
00150 void accessBSMD();
00151 int accessETOW();
00152
00153 bool passes_L0();
00154 bool passes_L2();
00155 void find_W_boson();
00156 void tag_Z_boson();
00157 int extendTrack2Barrel();
00158 int matchTrack2Cluster();
00159 void findNearJet();
00160 void findAwayJet();
00161 void findPtBalance();
00162 void hadronicRecoil();
00163
00164
00165 StJet* getJet(int i){return (StJet*)mJets->At(i);}
00166 TClonesArray* getJets(TString branchName);
00167
00168 TRandom3 *mRand;
00169
00170
00171 float sumTpcCone( int vertID, TVector3 refAxis, int flag, int &nTrCnt);
00172 float sumBtowCone( float zVert, TVector3 refAxis, int flag,int &nTow);
00173 WeveCluster maxBtow2x2(int iEta, int iPhi, float zVert);
00174 WeveCluster sumBtowPatch(int iEta, int iPhi, int Leta,int Lphi,float zVert);
00175 float sumEtowCone(float zVert, TVector3 refAxis,int flag,int &nTow);
00176 void patchToEtaPhi(int patch, int*eta, int*phi);
00177
00178
00179 TObjArray *HList;
00180 enum {mxHA=350}; TH1 * hA[mxHA];
00181
00182 void initHistos();
00183 void initGeom();
00184 int L2algoEtaPhi2IJ(float etaF,float phiF,int &kEta, int &kPhi);
00185
00186 public:
00187 St2009WMaker(const char *name="2009WalgoB5.2");
00188 virtual ~St2009WMaker(){};
00189 virtual Int_t Init();
00190 virtual Int_t Make();
00191
00192 virtual Int_t InitRun (int runumber);
00193 virtual void Clear(const Option_t* = "");
00194 virtual Int_t FinishRun(int runumber);
00195
00196 void setTrigID(int bht3, int l2w, int runNo) { par_bht3TrgID=bht3; par_l2wTrgID=l2w; par_inpRunNo=runNo;}
00197 void setHList(TObjArray * x){HList=x;}
00198 void setMC(int x){isMC=x;}
00199 void setMaxDisplayEve(int n) { par_maxDisplEve=n;}
00200
00202 virtual const char *GetCVS() const {
00203 static const char cvs[]="Tag $Name: $ $Id: St2009WMaker.h,v 1.16 2011/09/14 14:23:20 stevens4 Exp $ built "__DATE__" "__TIME__ ;
00204 return cvs;
00205 }
00206
00207 ClassDef(St2009WMaker,0)
00208 };
00209
00210 #endif
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264