00001
00002
00003 #ifndef STAR_St2011WMaker
00004 #define STAR_St2011WMaker
00005
00018 #ifndef StMaker_H
00019 #include "StMaker.h"
00020 #endif
00021 #include <TChain.h>
00022 #include <TRandom3.h>
00023
00024 #include "Wevent2011.h"
00025 #include "WtpcFilter.h"
00026
00027 class TObjArray;
00028 class TH1I;
00029 class TH2I;
00030 class StMuDstMaker;
00031 class StEmcGeom;
00032 class StEmcDecoder;
00033 class StBemcTables;
00034 class StEEmcDb;
00035 class EEmcGeomSimple;
00036 class EEmcSmdGeom;
00037 class WeventDisplay;
00038 class St2011pubWanaMaker;
00039 class St2011pubSpinMaker;
00040 class St2011pubMcMaker;
00041
00042 class StJetReader;
00043 class StJets;
00044 class StJet;
00045 class TClonesArray;
00046 class TTree;
00047
00048 class St2011WMaker : public StMaker {
00049 friend class WeventDisplay;
00050 friend class St2011pubWanaMaker;
00051 friend class St2011pubSpinMaker;
00052 friend class St2011pubMcMaker;
00053 friend class St2011WlumiMaker;
00054 friend class St2011ZMaker;
00055
00056 private:
00057 StMuDstMaker* mMuDstMaker;
00058 StJetReader* mJetReaderMaker;
00059 int nJets;
00060 TString mJetTreeBranch,mJetTreeBranch_noEEMC;
00061 TClonesArray* mJets;
00062 Wevent2011 *wEve;
00063 TTree *mWtree; TString mTreeName; TFile *mTreeFile;
00064 WeventDisplay *wDisaply;
00065 WtpcFilter mTpcFilter[mxTpcSec];
00066 WtpcFilter mTpcFilterE[mxTpcSec];
00067 int nInpEve,nTrigEve, nAccEve;
00068 int mRunNo;
00069 int isMC;
00070
00071
00072 int par_l0emulAdcThresh;
00073 float par_l2emulSeedThresh, par_l2emulClusterThresh;
00074
00075 int par_l2bwTrgID;
00076 int parE_l2ewTrgID;
00077 float par_vertexZ;
00078 int par_minPileupVert;
00079
00080 int par_nFitPts,parE_nFitPts;
00081 float par_nHitFrac, par_trackRin, par_trackRout, par_trackPt;
00082 float parE_nHitFrac, parE_trackRin, parE_trackRout, parE_trackPt;
00083
00084 int par_kSigPed, par_AdcThres;
00085 float par_maxADC, par_clustET, parE_clustET;
00086 float par_clustFrac24, par_nearTotEtFrac;
00087 float parE_clustFrac24,parE_nearTotEtFrac;
00088 float par_nearDeltaR, par_awayDeltaPhi;
00089 float par_delR3D, parE_delR3D, par_highET, parE_highET, par_ptBalance, parE_ptBalance;
00090 float par_leptonEta,parE_leptonEtaLow,parE_leptonEtaHigh;
00091 float parE_trackEtaMin;
00092 int parE_nSmdStrip;
00093
00094 float par_etowScale;
00095 float par_btowScale;
00096
00097 char* gains_file;
00098 int use_gains_file;
00099 float gains_BTOW[4801];
00100
00101 public:
00102 void setVertexCuts(float zm, int npv) {
00103 par_vertexZ=zm; par_minPileupVert=npv; }
00104 void setEleTrackCuts(int nfp, int hfr, float rin, float rout, float mpt) {
00105 par_nFitPts=nfp; par_nHitFrac=hfr;
00106 par_trackRin=rin; par_trackRout=rout; par_trackPt=mpt;}
00107 void setWbosonCuts(float a, float fr2, float bal) {
00108 par_highET=a; par_nearTotEtFrac=fr2; par_ptBalance=bal;}
00109 void setEmcCuts(int ksp , float madc, float clet, float fr1, float dr){
00110 par_kSigPed=ksp; par_maxADC=madc; par_clustET=clet;
00111 par_clustFrac24=fr1;}
00112 void setEtowScale(float x){ par_etowScale=x; }
00113 void setBtowScale(float x){ par_btowScale=x; }
00114 void setL0AdcThresh(int x){ par_l0emulAdcThresh=x; }
00115 void setL2ClusterThresh(float x){ par_l2emulClusterThresh=x; }
00116 void setL2SeedThresh(float x){ par_l2emulSeedThresh=x; }
00117 void setJetTreeBranch(TString jetTreeBranch, TString jetTreeBranch_noEEMC){ mJetTreeBranch = jetTreeBranch; mJetTreeBranch_noEEMC = jetTreeBranch_noEEMC; }
00118
00119 void setGainsFile(char* x) {gains_file=x; use_gains_file=1;}
00120 void setTreeName(TString x) { mTreeName=x; }
00121 private:
00122
00123
00124 int par_DsmThres,parE_DsmThres;
00125 int par_maxDisplEve;
00126
00127 StBemcTables* mBarrelTables;
00128 StEmcGeom *mBtowGeom, * mBSmdGeom[mxBSmd];
00129 int mapBtowIJ2ID[mxBTetaBin*mxBTphiBin];
00130 TVector3 positionBtow[mxBtow];
00131 TVector3 positionBsmd[mxBSmd][mxBStrips];
00132
00133 StEEmcDb *mDbE;
00134 EEmcGeomSimple *geomE;
00135 EEmcSmdGeom *geoSmd;
00136 TVector3 positionEtow[mxEtowSec*mxEtowSub][mxEtowEta];
00137
00138 int accessBarrelTrig();
00139 int accessEndcapTrig();
00140 int accessVertex();
00141 void fillTowHit(bool vert);
00142 int accessTracks();
00143 int accessBTOW();
00144 void accessBSMD();
00145 int accessETOW();
00146 void accessEPRS();
00147 void accessESMD();
00148 void analyzeESMD();
00149
00150 bool passes_L0();
00151 bool passes_L2();
00152 void find_W_boson();
00153 void findEndcap_W_boson();
00154 void tag_Z_boson();
00155 int extendTrack2Barrel();
00156 int matchTrack2BtowCluster();
00157 int extendTrack2Endcap();
00158 int matchTrack2EtowCluster();
00159 void findNearJet();
00160 void findAwayJet();
00161 void findPtBalance();
00162 void esmdAnalysis();
00163
00164
00165 StJet* getJet(int i){return (StJet*)mJets->At(i);}
00166 TClonesArray* getJets(TString branchName);
00167 StJets* getStJetsCopy(TString branchName);
00168 TClonesArray* getJetsTreeAnalysis(TString branchName);
00169
00170
00171 float sumTpcCone( int vertID, TVector3 refAxis, int flag,int pointTowId);
00172 float sumBtowCone( float zVert, TVector3 refAxis, int flag);
00173 float sumEtowCone(float zVert, TVector3 refAxis,int flag);
00174 float sumTpcConeFromTree( int vertID, TVector3 refAxis, int flag,int pointTowId);
00175 WeveCluster maxBtow2x2(int iEta, int iPhi, float zVert);
00176 WeveCluster sumBtowPatch(int iEta, int iPhi, int Leta,int Lphi,float zVert);
00177 WeveCluster maxEtow2x1(int iEta, int iPhi, float zVert);
00178 WeveCluster sumEtowPatch(int iEta, int iPhi, int Leta,int Lphi,float zVert);
00179 void patchToEtaPhi(int patch, int*eta, int*phi);
00180
00181
00182
00183 TObjArray *HList;
00184 enum {mxHA=300}; TH1 * hA[mxHA];
00185 enum {mxHE=300}; TH1 * hE[mxHE];
00186
00187 void initHistos(); void initEHistos();
00188 void initGeom();
00189 int L2algoEtaPhi2IJ(float etaF,float phiF,int &kEta, int &kPhi);
00190
00191 public:
00192 St2011WMaker(const char *name="2011Walgo");
00193 virtual ~St2011WMaker(){};
00194 virtual Int_t Init();
00195 virtual Int_t Make();
00196 virtual Int_t Finish();
00197
00198 virtual Int_t InitRun (int runumber);
00199 virtual void Clear(const Option_t* = "");
00200 virtual Int_t FinishRun(int runumber);
00201
00202 void setTrigID( int l2bw, int l2ew) { par_l2bwTrgID=l2bw; parE_l2ewTrgID=l2ew; }
00203
00204 void setHList(TObjArray * x){HList=x;}
00205 void setMC(int x){isMC=x;}
00206 void setMaxDisplayEve(int n) { par_maxDisplEve=n;}
00207
00208
00209 void chainFile( const Char_t *name );
00210 void chainJetFile( const Char_t *name );
00211 Int_t getNumberOfEvents(){ return mTreeChain->GetEntries(); }
00212 Int_t getEvent(Int_t event, Int_t eventJet);
00213
00214 protected:
00215 Int_t index,indexJet;
00216 TChain *mTreeChain;
00217 TChain *mJetTreeChain;
00218
00220 virtual const char *GetCVS() const {
00221 static const char cvs[]="Tag $Name: $ $Id: St2011WMaker.h,v 1.2 2011/02/25 06:03:35 stevens4 Exp $ built "__DATE__" "__TIME__ ;
00222 return cvs;
00223 }
00224
00225 ClassDef(St2011WMaker,0)
00226 };
00227
00228 #endif
00229
00230
00231
00232
00233
00234
00235
00236
00237