00001
00002
00003
00004
00005 #include <StEmcUtil/database/StEmcDecoder.h>
00006
00007 #include "St2011WMaker.h"
00008 #include "St2011pubWanaMaker.h"
00009
00010 ClassImp(St2011pubWanaMaker)
00011
00012
00013
00014 St2011pubWanaMaker::St2011pubWanaMaker(const char *name):StMaker(name){
00015 wMK=0;HList=0;
00016 par_highET=20;
00017 mMappB=0;
00018 }
00019
00020
00021
00022
00023 Int_t St2011pubWanaMaker::Init(){
00024 assert(wMK);
00025 assert(HList);
00026 initHistos();
00027 return StMaker::Init();
00028 }
00029
00030
00031
00032 Int_t
00033 St2011pubWanaMaker::InitRun(int runNo){
00034 int yyyymmdd = this->GetDBTime().GetDate();
00035 int hhmmss = this->GetDBTime().GetTime();
00036
00037
00038 mMappB = new StEmcDecoder(yyyymmdd,hhmmss);
00039 return kStOK;
00040 }
00041
00042
00043 Int_t
00044 St2011pubWanaMaker::Make(){
00045
00046 hA[0]->Fill("inp",1.);
00047
00048 evalWeleTrackSign();
00049 scanCrateRate();
00050 varyCuts4backgStudy();
00051
00052 return kStOK;
00053 }
00054
00055
00056
00057 void
00058 St2011pubWanaMaker::evalWeleTrackSign(){
00059
00060
00061
00062
00063 for(uint iv=0;iv<wMK->wEve->vertex.size();iv++) {
00064 WeveVertex &V=wMK->wEve->vertex[iv];
00065 for(uint it=0;it<V.eleTrack.size();it++) {
00066 WeveEleTrack &T=V.eleTrack[it];
00067 if(T.isMatch2Cl==false) continue;
00068 assert(T.cluster.nTower>0);
00069 assert(T.nearTotET>0);
00070
00071
00072 float ET=T.cluster.ET;
00073 const StMuTrack *glTr=T.glMuTrack; assert(glTr);
00074 const StMuTrack *prTr=T.prMuTrack; assert(prTr);
00075 float PT=glTr->pt();
00076 float g_chrg=glTr->charge();
00077 float p_chrg=prTr->charge();
00078
00079 int g_ipn=0, p_ipn=0;
00080 if( g_chrg<0 ) g_ipn=1;
00081 if( p_chrg<0 ) p_ipn=1;
00082
00083
00084 if(fabs(T.primP.Eta()) > 1) continue;
00085
00086 float absEta=fabs(T.primP.Eta());
00087 if(T.cluster.ET/T.nearTotET_noEEMC>wMK->par_nearTotEtFrac){
00088 if(T.sPtBalance_noEEMC>wMK->par_ptBalance){
00089
00090 if(p_ipn==0)
00091 hA[43]->Fill(T.cluster.ET);
00092 else
00093 hA[46]->Fill(T.cluster.ET);
00094
00095 if(absEta > 0.6 && absEta < 1)
00096 hA[38]->Fill(T.cluster.ET);
00097 if(absEta > 0.3 && absEta < 0.6)
00098 hA[39]->Fill(T.cluster.ET);
00099 if(absEta > 0.0 && absEta < 0.3)
00100 hA[40]->Fill(T.cluster.ET);
00101 }
00102 }
00103
00104 if(T.cluster.ET /T.nearTotET< wMK->par_nearTotEtFrac) continue;
00105
00106
00107 if(T.sPtBalance>wMK->par_ptBalance ){
00108
00109 if(p_ipn==0)
00110 hA[41]->Fill(T.cluster.ET);
00111 else
00112 hA[44]->Fill(T.cluster.ET);
00113
00114 if(absEta > 0.6 && absEta < 1)
00115 hA[32]->Fill(T.cluster.ET);
00116 if(absEta > 0.3 && absEta < 0.6)
00117 hA[33]->Fill(T.cluster.ET);
00118 if(absEta > 0.0 && absEta < 0.3)
00119 hA[34]->Fill(T.cluster.ET);
00120 }
00121 else {
00122
00123 if(p_ipn==0)
00124 hA[42]->Fill(T.cluster.ET);
00125 else
00126 hA[45]->Fill(T.cluster.ET);
00127
00128 if(absEta > 0.6 && absEta < 1)
00129 hA[35]->Fill(T.cluster.ET);
00130 if(absEta > 0.3 && absEta < 0.6)
00131 hA[36]->Fill(T.cluster.ET);
00132 if(absEta > 0.0 && absEta < 0.3)
00133 hA[37]->Fill(T.cluster.ET);
00134 }
00135
00136 if(T.sPtBalance<wMK->par_ptBalance ) continue;
00137
00138 hA[0]->Fill("acc",1.);
00139
00140 hA[5]->Fill(ET);
00141 hA[10+g_ipn]->Fill(ET);
00142 hA[12+p_ipn]->Fill(ET);
00143 if(g_chrg* p_chrg <-0.5) hA[14+p_ipn]->Fill(ET);
00144 hA[6]->Fill(ET,g_chrg/PT);
00145
00146
00147 float primPT=prTr->pt();
00148 float globPT=glTr->pt();
00149 hA[28]->Fill(primPT,globPT);
00150 hA[29]->Fill(globPT-primPT);
00151 if(fabs(globPT-primPT)>1) hA[30]->Fill(ET);
00152 if(g_chrg* p_chrg <-0.5) hA[31]->Fill(globPT-primPT);
00153
00154
00155 hA[7]->Fill(ET,p_chrg/prTr->pt());
00156 if(ET<par_highET) continue;
00157 hA[0]->Fill("W",1.);
00158 hA[16+p_ipn]->Fill(prTr->eta());
00159
00160
00161 }
00162 }
00163
00164 }
00165
00166
00167
00168 void
00169 St2011pubWanaMaker::scanCrateRate(){
00170
00171
00172
00173
00174 for(uint iv=0;iv<wMK->wEve->vertex.size();iv++) {
00175 WeveVertex &V=wMK->wEve->vertex[iv];
00176 for(uint it=0;it<V.eleTrack.size();it++) {
00177 WeveEleTrack &T=V.eleTrack[it];
00178
00179 int softID=T.pointTower.id;
00180 if(softID<=0) continue;
00181 if(wMK->wEve->bemc.statTile[kBTow][softID-1]) continue;
00182
00183 int RDO, CR,CHAN;
00184 assert(mMappB->GetDaqIdFromTowerId(softID,RDO)==1);
00185 assert(mMappB->GetTowerCrateFromDaqId(RDO,CR,CHAN)==1);
00186
00187 float adc=wMK->wEve->bemc.adcTile[kBTow][softID-1];
00188 hA[1]->Fill(adc,CR);
00189
00190 }
00191 }
00192 }
00193
00194
00195
00196
00197
00198 void
00199 St2011pubWanaMaker::varyCuts4backgStudy(){
00200
00201 for(uint iv=0;iv<wMK->wEve->vertex.size();iv++) {
00202 WeveVertex &V=wMK->wEve->vertex[iv];
00203 for(uint it=0;it<V.eleTrack.size();it++) {
00204 WeveEleTrack &T=V.eleTrack[it];
00205 if(T.isMatch2Cl==false) continue;
00206 assert(T.cluster.nTower>0);
00207 assert(T.nearTotET>0);
00208
00209 float nearR=T.cluster.ET /T.nearTotET;
00210 float awayET=T.awayTotET;
00211 float ET= T.cluster.ET;
00212
00213
00214 if(nearR >0.9) {
00215 hA[27] -> Fill(ET, awayET);
00216 if(awayET<8.) {
00217 hA[20]->Fill(ET);
00218 } else {
00219 hA[21]->Fill(ET);
00220 }
00221 }
00222
00223 if(nearR >0.8 && nearR <0.9) {
00224 if(awayET<8.) {
00225 hA[22]->Fill(ET);
00226 } else {
00227 hA[23]->Fill(ET);
00228 }
00229 }
00230
00231 if(nearR >0. && nearR <0.8) {
00232 if(awayET<8.) {
00233 hA[24]->Fill(ET);
00234 } else {
00235 hA[25]->Fill(ET);
00236 }
00237 }
00238
00239 if(awayET<8.) {
00240 hA[26]->Fill(nearR);
00241 }
00242
00243 }
00244 }
00245 }
00246
00247
00248
00249
00250