8 #include "StEmcUtil/geometry/StEmcGeom.h"
9 #include "StEEmcUtil/EEmcGeom/EEmcGeomSimple.h"
10 #include "StEEmcUtil/StEEmcSmd/EEmcSmdGeom.h"
11 #include "WeventDisplay.h"
14 #include "StSpinPool/StJetEvent/StJetEvent.h"
15 #include "StSpinPool/StJetEvent/StJetVertex.h"
16 #include "StSpinPool/StJetEvent/StJetCandidate.h"
17 #include "StSpinPool/StJetEvent/StJetTower.h"
19 #include "St2011WMaker.h"
24 St2011WMaker::find_W_boson(){
26 if(!wEve->l2bitET)
return;
29 int nNoNear=0,nNoAway=0,nEta1=0,nGoldW=0,nGoldWp=0,nGoldWn=0;
31 if(wEve->zTag)
return;
34 for(
unsigned int iv=0;iv<wEve->vertex.size();iv++) {
36 for(
unsigned int it=0;it<V.eleTrack.size();it++) {
40 hA[114]->Fill(T.cluster.position.PseudoRapidity(),T.sPtBalance2);
41 hA[115]->Fill(T.cluster.position.Phi(),T.sPtBalance2);
43 if(T.pointTower.id<=0)
continue;
44 if(T.isMatch2Cl==
false)
continue;
45 assert(T.cluster.nTower>0);
46 assert(T.nearTotET>0);
49 if(T.primP.Eta() < par_leptonEtaLow || T.primP.Eta() > par_leptonEtaHigh)
continue;
50 hA[20]->Fill(
"eta1",1.);
54 float q2pt_g = T.glMuTrack->
charge()/T.glMuTrack->
pt();
55 float q2pt_p = T.prMuTrack->
charge()/T.prMuTrack->
pt();
56 float hypCorr_g = q2pt_g*(T.cluster.ET);
57 float hypCorr_p = q2pt_p*(T.cluster.ET);
60 if( fabs(hypCorr_p) > par_QET2PTlow && fabs(hypCorr_p) < par_QET2PThigh) {
62 if(T.cluster.ET/T.nearTotET_noEEMC>par_nearTotEtFrac){
63 if(T.sPtBalance_noEEMC2>par_ptBalance ) {
64 hA[140]->Fill(T.cluster.ET);
65 hA[240]->Fill(T.prMuTrack->
eta(),T.cluster.ET);
66 if (T.prMuTrack->
charge() < 0) {
67 hA[184+3]->Fill(T.cluster.ET);
68 }
else if (T.prMuTrack->
charge() > 0) {
69 hA[184+4]->Fill(T.cluster.ET);
76 if(T.cluster.ET > par_highET) {
77 if(T.prMuTrack->
charge()>0) hA[251]->Fill(T.cluster.ET/T.nearTotET,T.sPtBalance2);
78 else if(T.prMuTrack->
charge()<0) hA[252]->Fill(T.cluster.ET/T.nearTotET,T.sPtBalance2);
79 hA[135]->Fill(T.awayTotET,T.sPtBalance2);
85 int sec = WtpcFilter::getTpcSec(ro.phi(),ro.pseudoRapidity());
86 if((sec < 5 || sec > 7) && sec!=21) {
87 hA[63]->Fill(T.prMuTrack->
nHitsFit());
89 hA[65]->Fill(ri.perp());
92 if(T.cluster.ET /T.nearTotET< par_nearTotEtFrac)
continue;
94 hA[20]->Fill(
"noNear",1.);
96 hA[112]->Fill( T.cluster.ET);
97 hA[50]->Fill(T.awayTpcPT);
98 hA[51]->Fill(T.awayBtowET);
99 hA[54]->Fill(T.awayTotET);
100 hA[52]->Fill(T.cluster.ET,T.awayTotET);
101 hA[53]->Fill(T.cluster.ET,T.awayEmcET);
102 hA[55]->Fill(T.awayEtowET);
103 hA[60]->Fill(T.cluster.ET,T.awayTpcPT);
105 hA[132]->Fill(T.cluster.ET,T.ptBalance.Perp());
106 hA[133]->Fill(T.awayTotET,T.ptBalance.Perp());
107 hA[134]->Fill(T.cluster.ET,T.sPtBalance);
108 hA[135]->Fill(T.awayTotET,T.sPtBalance);
109 hA[209]->Fill(T.cluster.position.PseudoRapidity(),T.cluster.ET);
110 if(T.cluster.ET > par_highET) hA[253]->Fill(T.awayTotET,T.sPtBalance);
118 if(T.prMuTrack->
charge()>0) {
119 hA[130]->Fill(T.cluster.ET,T.sPtBalance);
120 hA[138]->Fill(T.cluster.ET,T.sPtBalance2);
121 }
else if(T.prMuTrack->
charge()<0) {
122 hA[131]->Fill(T.cluster.ET,T.sPtBalance);
123 hA[139]->Fill(T.cluster.ET,T.sPtBalance2);
127 if( fabs(hypCorr_p) > par_QET2PTlow && fabs(hypCorr_p) < par_QET2PThigh) {
128 for (
int i=0; i<=20; i++) {
129 for (
int j=0; j<=80; j++) {
130 float pTBal_cut = 5.+0.25*((float) j);
131 if (T.sPtBalance2<pTBal_cut) {
132 if (T.prMuTrack->
charge() < 0) {
133 hA[142+i]->Fill(T.cluster.ET,j);
134 }
else if (T.prMuTrack->
charge() > 0) {
135 hA[163+i]->Fill(T.cluster.ET,j);
142 if(T.sPtBalance2>par_ptBalance ) {
143 hA[136]->Fill(T.cluster.ET);
144 hA[241]->Fill(T.prMuTrack->
eta(),T.cluster.ET);
145 hA[62]->Fill(T.pointTower.iEta ,T.cluster.energy);
146 if (T.prMuTrack->
charge() < 0) {
147 hA[184+1]->Fill(T.cluster.ET);
148 }
else if (T.prMuTrack->
charge() > 0) {
149 hA[184+2]->Fill(T.cluster.ET);
152 hA[137]->Fill(T.cluster.ET);
153 if (T.prMuTrack->
charge() < 0) {
154 hA[184+5]->Fill(T.cluster.ET);
155 }
else if (T.prMuTrack->
charge() > 0) {
156 hA[184+6]->Fill(T.cluster.ET);
158 hA[202]->Fill(T.cluster.position.PseudoRapidity(),T.prMuTrack->
pt());
159 hA[204]->Fill(T.cluster.position.PseudoRapidity(),T.cluster.energy/T.prMuTrack->
p().mag());
164 if(T.sPtBalance2>par_ptBalance && T.cluster.ET>par_highET){
165 printf(
"\n WWWWWWWWWWWWWWWWWWWWW Barrel \n");
166 wDisaply->exportEvent(
"WB", V, T, iv);
172 if(T.sPtBalance2<par_ptBalance)
continue;
173 hA[20]->Fill(
"noAway",1.0);
178 assert(jetVertex->position().z() == V.z);
179 int nJetsWE = jetVertex->numberOfJets();
180 for (
int i_jet=0; i_jet< nJetsWE; i_jet++){
183 jetVec.SetPtEtaPhi(jet->pt(),jet->eta(),jet->phi());
184 if(jetVec.DeltaR(T.primP) > par_nearDeltaR) {
185 hA[126]->Fill(T.primP.Eta(), jet->eta());
186 hA[127]->Fill(T.primP.Phi(), jet->phi());
187 hA[128]->Fill(jet->pt());
188 hA[129]->Fill(jet->pt(),jetVec.DeltaPhi(T.primP));
189 hA[130]->Fill(jet->pt(),jet->eta());
192 hA[125]->Fill(T.jetCount);
198 hA[113]->Fill( T.cluster.ET);
200 hA[90]->Fill( T.cluster.ET);
201 hA[92]->Fill( T.cluster.ET,T.glMuTrack->
dEdx()*1e6);
203 int k=0;
if(T.prMuTrack->
charge()<0) k=1;
204 hA[94+k]->Fill( T.cluster.ET,T.glMuTrack->
dcaD());
208 hA[200]->Fill(T.cluster.position.PseudoRapidity(),T.cluster.ET);
209 hA[201]->Fill(T.cluster.position.PseudoRapidity(),T.prMuTrack->
pt());
210 hA[203]->Fill(T.cluster.position.PseudoRapidity(),T.cluster.energy/T.prMuTrack->
p().mag());
211 hA[205]->Fill(T.prMuTrack->
lastPoint().pseudoRapidity(),T.prMuTrack->
lastPoint().phi());
214 hA[100]->Fill(T.cluster.ET,T.glMuTrack->
charge()/T.glMuTrack->
pt());
215 hA[101]->Fill(T.cluster.ET,T.prMuTrack->
charge()/T.prMuTrack->
pt());
216 hA[102]->Fill(T.cluster.ET,hypCorr_g);
217 hA[103]->Fill(T.cluster.ET,hypCorr_p);
220 int isec = WtpcFilter::getTpcSec(ro.phi(),ro.pseudoRapidity())-1;
221 hA[260+isec]->Fill(T.cluster.ET,T.glMuTrack->
charge()/T.glMuTrack->
pt());
222 hA[284+isec]->Fill(T.cluster.ET,T.prMuTrack->
charge()/T.prMuTrack->
pt());
223 hA[356+isec]->Fill(T.cluster.ET,hypCorr_p);
224 if(k==0) hA[308+isec]->Fill( T.cluster.ET,T.glMuTrack->
dcaD());
225 else hA[332+isec]->Fill( T.cluster.ET,T.glMuTrack->
dcaD());
227 if(T.cluster.ET<par_highET)
continue;
228 hA[91]->Fill(T.cluster.position.PseudoRapidity(),T.cluster.position.Phi());
230 hA[97]->Fill(V.funnyRank);
232 hA[99]->Fill(T.prMuTrack->
eta());
233 hA[191+k]->Fill(T.prMuTrack->
eta(),T.cluster.ET);
234 hA[106]->Fill(wEve->zdcRate);
236 hA[20]->Fill(
"goldW",1.);
238 if(T.prMuTrack->
charge()>0) nGoldWp++;
239 else if(T.prMuTrack->
charge()<0) nGoldWn++;
240 hA[104]->Fill(wEve->time);
243 hA[105]->Fill(hypCorr_p,T.glMuTrack->
dEdx()*1e6);
247 if(nNoNear>0) hA[0]->Fill(
"noNear",1.);
248 if(nNoAway>0) hA[0]->Fill(
"noAway",1.);
249 if(nEta1>0) hA[0]->Fill(
"eta1",1.);
250 if(nGoldW>0) hA[0]->Fill(
"goldW",1.);
251 if(nGoldWp>0) hA[0]->Fill(
"goldW+",1.);
252 if(nGoldWn>0) hA[0]->Fill(
"goldW-",1.);
260 St2011WMaker::tag_Z_boson(){
263 float lowMass=70.;
float highMass=140.;
266 for(
unsigned int iv=0;iv<wEve->vertex.size();iv++) {
268 for(
unsigned int it=0;it<V.eleTrack.size();it++) {
270 if(T1.isMatch2Cl==
false)
continue;
271 assert(T1.cluster.nTower>0);
272 assert(T1.nearTotET>0);
275 TLorentzVector jetVec;
280 int nJets = jetVertex->numberOfJets();
281 for (
int i_jet=0; i_jet< nJets; i_jet++){
284 jetVec = jet->fourMomentum();
285 if(jetVec.Pt()<par_jetPt)
continue;
289 int totTowers = jet->numberOfTowers();
290 for(
int itow=0;itow<totTowers;itow++){
292 if(tower->detectorId()==13)
295 int softId=tower->id();
297 TVector3 pos=positionBtow[softId-1];
int iEta,iPhi;
298 if( L2algoEtaPhi2IJ(pos.Eta(),pos.Phi(),iEta,iPhi))
300 float cluster=maxBtow2x2(iEta,iPhi,V.z).ET;
301 if(cluster>maxCluster) maxCluster=cluster;
304 TVector3 jetVec3(jetVec.X(),jetVec.Y(),jetVec.Z());
305 if(jetVec3.DeltaR(T1.primP)<par_nearDeltaR)
309 float e1=T1.cluster.energy;
310 TVector3 p1=T1.primP; p1.SetMag(e1);
311 TLorentzVector ele1(p1,e1);
312 TLorentzVector sum=ele1+jetVec;
313 float invM=sqrt(sum*sum);
314 if(maxCluster/jetVec3.Pt() < 0.5)
continue;
315 if(invM > lowMass && invM < highMass){
328 St2011WMaker::findPtBalance(){
330 for(
unsigned int iv=0;iv<wEve->vertex.size();iv++) {
332 for(
unsigned int it=0;it<V.eleTrack.size();it++) {
340 assert(jetVertex->position().z() == V.z);
341 int nJetsWE = jetVertex->numberOfJets();
342 int nJetsOutNearCone=0;
343 for (
int i_jet=0; i_jet< nJetsWE; i_jet++){
346 jetVec.SetPtEtaPhi(jet->pt(),jet->eta(),jet->phi());
347 if(jetVec.DeltaR(T.primP) > par_nearDeltaR) {
350 hA[120]->Fill(T.primP.Eta(), jet->eta());
351 hA[121]->Fill(T.primP.Phi(), jet->phi());
352 hA[122]->Fill(jet->pt());
353 hA[123]->Fill(jet->pt(),jetVec.DeltaPhi(T.primP));
354 hA[124]->Fill(jet->pt(),jet->eta());
358 hA[119]->Fill(nJetsOutNearCone);
359 T.jetCount = nJetsOutNearCone;
360 TVector3 clustPt(T.primP.X(),T.primP.Y(),0);
361 clustPt.SetMag(T.cluster.ET);
362 T.ptBalance+=clustPt;
363 T.sPtBalance = T.ptBalance.Perp();
364 if(T.ptBalance.Dot(clustPt)<0) T.sPtBalance *=-1.;
365 T.sPtBalance2 = T.ptBalance.Dot(clustPt)/T.cluster.ET;
368 StJetVertex* jetVertex_noEEMC = mJetEvent_noEEMC->vertex(V.id);
369 assert(jetVertex_noEEMC->position().z() == V.z);
370 int nJetsNE = jetVertex_noEEMC->numberOfJets();
371 for (
int i_jet=0; i_jet< nJetsNE; i_jet++){
374 jetVec.SetPtEtaPhi(jet->pt(),jet->eta(),jet->phi());
375 if(jetVec.DeltaR(T.primP) > par_nearDeltaR)
376 T.ptBalance_noEEMC+=jetVec;
378 T.ptBalance_noEEMC+=clustPt;
379 T.sPtBalance_noEEMC = T.ptBalance_noEEMC.Perp();
380 if(T.ptBalance_noEEMC.Dot(clustPt)<0) T.sPtBalance_noEEMC *=-1.;
381 T.sPtBalance_noEEMC2 = T.ptBalance_noEEMC.Dot(clustPt)/T.cluster.ET;
392 St2011WMaker::findAwayJet(){
395 for(
unsigned int iv=0;iv<wEve->vertex.size();iv++) {
397 for(
unsigned int it=0;it<V.eleTrack.size();it++) {
401 T.awayBtowET=sumBtowCone(V.z,-T.primP,1);
402 T.awayEmcET=T.awayBtowET;
403 T.awayEtowET=sumEtowCone(V.z,-T.primP,1);
404 T.awayEmcET+=T.awayEtowET;
407 if(mMuDstMaker) T.awayTpcPT=sumTpcCone(V.id,-T.primP,1,T.pointTower.id);
408 else T.awayTpcPT=sumTpcConeFromTree(iv,-T.primP,1,T.pointTower.id);
409 T.awayTotET=T.awayEmcET+T.awayTpcPT;
410 T.awayTotET_noEEMC=T.awayBtowET+T.awayTpcPT;
420 St2011WMaker::findNearJet(){
423 for(
unsigned int iv=0;iv<wEve->vertex.size();iv++) {
425 for(
unsigned int it=0;it<V.eleTrack.size();it++) {
429 T.nearBtowET=sumBtowCone(V.z,T.primP,2);
430 T.nearEmcET+=T.nearBtowET;
431 T.nearEtowET=sumEtowCone(V.z,T.primP,2);
432 T.nearEmcET+=T.nearEtowET;
434 if(mMuDstMaker) T.nearTpcPT=sumTpcCone(V.id,T.primP,2,T.pointTower.id);
435 else T.nearTpcPT=sumTpcConeFromTree(iv,T.primP,2,T.pointTower.id);
436 float nearSum=T.nearEmcET+T.nearTpcPT;
439 if(T.pointTower.id>0) {
441 if(T.primP.Pt()>par_trackPt) nearSum-=par_trackPt;
442 else nearSum-=T.primP.Pt();
444 T.nearTotET_noEEMC=nearSum-T.nearEtowET;
445 float nearTotETfrac=T.cluster.ET/ T.nearTotET;
446 float nearTotETfrac_noEEMC=T.cluster.ET/ T.nearTotET_noEEMC;
449 if(T.isMatch2Cl==
false)
continue;
451 hA[40]->Fill(T.nearEmcET);
452 hA[41]->Fill(T.cluster.ET,T.nearEmcET-T.cluster.ET);
453 hA[42]->Fill(nearTotETfrac);
454 hA[131]->Fill(nearTotETfrac_noEEMC);
455 hA[47]->Fill(T.nearTpcPT);
456 hA[48]->Fill(T.nearEmcET,T.nearTpcPT);
457 hA[49]->Fill(nearSum);
458 hA[250]->Fill(T.cluster.ET,nearTotETfrac);
461 hA[210]->Fill(T.cluster.position.PseudoRapidity(),T.nearEtowET);
462 if(T.cluster.position.PseudoRapidity()>0) hA[211]->Fill(T.cluster.position.Phi(),T.nearEtowET);
463 else hA[212]->Fill(T.cluster.position.Phi(),T.nearEtowET);
466 else if(T.pointTower.id<0) {
468 if(T.prMuTrack->
flag()==301){
469 if(T.primP.Pt()>parE_trackPt) nearSum-=parE_trackPt;
470 else nearSum-=T.primP.Pt();
473 T.nearTotET_noEEMC=nearSum-T.nearEtowET;
474 float nearTotETfrac=T.cluster.ET/ T.nearTotET;
477 if(T.isMatch2Cl==
false)
continue;
479 hE[40]->Fill(T.nearEmcET);
480 hE[41]->Fill(T.cluster.ET,T.nearEmcET-T.cluster.ET);
481 hE[42]->Fill(nearTotETfrac);
482 hE[70]->Fill(T.cluster.ET/T.nearEmcET);
483 hE[71]->Fill(T.cluster.ET/T.nearEtowET);
484 hE[47]->Fill(T.nearTpcPT);
485 hE[48]->Fill(T.nearEmcET,T.nearTpcPT);
486 hE[49]->Fill(nearSum);
498 St2011WMaker::sumBtowCone(
float zVert, TVector3 refAxis,
int flag){
500 assert(flag==1 || flag==2);
504 for(
int i=0;i< mxBtow;i++) {
505 float ene=wEve->bemc.eneTile[kBTow][i];
507 TVector3 primP=positionBtow[i]-TVector3(0,0,zVert);
510 float deltaPhi=refAxis.DeltaPhi(primP);
511 if(fabs(deltaPhi)> par_awayDeltaPhi)
continue;
514 float deltaR=refAxis.DeltaR(primP);
515 if(deltaR> par_nearDeltaR)
continue;
526 St2011WMaker::sumTpcConeFromTree(
int vertID, TVector3 refAxis,
int flag,
int pointTowId){
531 assert(vertID<(
int)wEve->vertex.size());
535 for(
unsigned int it=0;it<V.prTrList.size();it++){
537 if(prTr->
flag()<=0)
continue;
538 if(prTr->
flag()!=301 && pointTowId>0)
continue;
539 if(prTr->
flag()!=301 && pointTowId<0)
continue;
541 if(hitFrac<par_nHitFrac)
continue;
543 TVector3 primP=TVector3(prPvect.x(),prPvect.y(),prPvect.z());
546 float deltaPhi=refAxis.DeltaPhi(primP);
547 if(fabs(deltaPhi)> par_awayDeltaPhi)
continue;
550 float deltaR=refAxis.DeltaR(primP);
551 if(deltaR>par_nearDeltaR)
continue;
558 if(pT>par_trackPt && pointTowId>0) ptSum+=par_trackPt;
559 else if(pT>parE_trackPt && pointTowId<0) ptSum+=parE_trackPt;
572 St2011WMaker::extendTrack2Barrel(){
574 if(!wEve->l2bitET)
return 0;
577 for(
unsigned int iv=0;iv<wEve->vertex.size();iv++) {
579 if(V.rank<0)
continue;
580 for(
unsigned int it=0;it<V.eleTrack.size();it++) {
582 if(T.prMuTrack->
flag()!=301)
continue;
585 if(T.primP.Eta() < par_leptonEtaLow || T.primP.Eta() > par_leptonEtaHigh)
continue;
589 float Rcylinder= mBtowGeom->Radius();
596 if(d2.first>=0 || d2.second<=0) {
597 LOG_WARN<< Form(
"MatchTrk , unexpected solution for track crossing CTB\n d2.firts=%f, second=%f, swap them", d2.first, d2.second)<<endm;
606 float etaF=posR.pseudoRapidity();
607 float phiF=posR.phi();
609 if( L2algoEtaPhi2IJ(etaF, phiF,iEta,iPhi))
continue;
611 hA[20]->Fill(
"@B",1.);
613 int twID= mapBtowIJ2ID[ iEta+ iPhi*mxBTetaBin];
616 T.pointTower.id=twID;
617 T.pointTower.R=TVector3(posR.x(),posR.y(),posR.z());
618 T.pointTower.iEta=iEta;
619 T.pointTower.iPhi=iPhi;
624 if(nTrB<=0)
return -1;
625 hA[0]->Fill(
"TrB",1.0);
633 St2011WMaker::matchTrack2BtowCluster(){
636 float Rcylinder= mBtowGeom->Radius();
637 for(
unsigned int iv=0;iv<wEve->vertex.size();iv++) {
640 for(
unsigned int it=0;it<V.eleTrack.size();it++) {
642 if(T.pointTower.id<=0)
continue;
644 float trackPT=T.prMuTrack->
momentum().perp();
645 T.cluster=maxBtow2x2( T.pointTower.iEta, T.pointTower.iPhi,zVert);
646 hA[33]->Fill( T.cluster.ET);
647 hA[34]->Fill(T.cluster.adcSum,trackPT);
648 hA[110]->Fill( T.cluster.ET);
651 int iEta=T.cluster.iEta;
652 int iPhi=T.cluster.iPhi;
653 T.cl4x4=sumBtowPatch(iEta-1,iPhi-1,4,4,zVert);
655 if (T.cluster.ET <par_clustET)
continue;
656 hA[20]->Fill(
"CL",1.);
658 hA[206]->Fill(T.cluster.position.PseudoRapidity(),T.cluster.ET);
660 hA[37]->Fill( T.cl4x4.ET);
661 hA[38]->Fill(T.cluster.energy, T.cl4x4.energy-T.cluster.energy);
663 float frac24=T.cluster.ET/(T.cl4x4.ET);
664 hA[39]->Fill(frac24);
665 if(frac24<par_clustFrac24)
continue;
667 hA[20]->Fill(
"fr24",1.);
670 TVector3 D=T.pointTower.R-T.cluster.position;
672 hA[43]->Fill( T.cluster.energy,D.Mag());
673 hA[44]->Fill( T.cluster.position.z(),D.z());
674 float delPhi=T.pointTower.R.DeltaPhi(T.cluster.position);
676 hA[45]->Fill( T.cluster.energy,Rcylinder*delPhi);
677 hA[46]->Fill( D.Mag());
678 hA[199]->Fill(T.cluster.position.PseudoRapidity(),D.Mag());
679 hA[207]->Fill(T.cluster.position.PseudoRapidity(),T.cluster.ET);
681 if(D.Mag()>par_delR3D)
continue;
683 hA[20]->Fill(
"#Delta R",1.);
684 hA[111]->Fill( T.cluster.ET);
686 hA[208]->Fill(T.cluster.position.PseudoRapidity(),T.cluster.ET);
692 if(nTr<=0)
return -1;
693 hA[0]->Fill(
"Tr2Cl",1.0);
701 St2011WMaker::maxBtow2x2(
int iEta,
int iPhi,
float zVert){
710 for(
int I=I0;I<=I0+1;I++){
711 for(
int J=J0;J<=J0+1;J++) {
713 if(maxET>CL.ET)
continue;
727 St2011WMaker::sumBtowPatch(
int iEta,
int iPhi,
int Leta,
int Lphi,
float zVert){
734 float Rcylinder= mBtowGeom->Radius(), Rcylinder2=Rcylinder*Rcylinder;
735 for(
int i=iEta; i<iEta+Leta;i++){
737 if(i>=mxBTetaBin)
continue;
738 for(
int j=iPhi;j<iPhi+Lphi;j++) {
739 int jj=(j+mxBTphiBin)%mxBTphiBin;
741 int softID= mapBtowIJ2ID[ i+ jj*mxBTetaBin];
742 float ene= wEve->bemc.eneTile[kBTow][softID-1];
744 float adc= wEve->bemc.adcTile[kBTow][softID-1];
745 float delZ=positionBtow[softID-1].z()-zVert;
746 float e2et=Rcylinder/sqrt(Rcylinder2+delZ*delZ);
748 float logET=log10(ET+0.5);
754 R+=logET*positionBtow[softID-1];
761 CL.position=1./sumW*R;
763 CL.position=TVector3(0,0,999);
Double_t pt() const
Returns pT at point of dca to primary vertex.
pair< double, double > pathLength(double r) const
path length at given r (cylindrical r)
UShort_t nHitsFit() const
Return total number of hits used in fit.
short flag() const
Returns flag, (see StEvent manual for type information)
Short_t charge() const
Returns charge.
const StThreeVectorF & p() const
Returns 3-momentum at dca to primary vertex.
Double_t eta() const
Returns pseudo rapidity at point of dca to primary vertex.
const StThreeVectorF & firstPoint() const
Returns positions of first measured point.
UShort_t nHitsPoss() const
Return number of possible hits on track.
const StThreeVectorF & momentum() const
Returns 3-momentum at dca to primary vertex.
const StThreeVectorF & lastPoint() const
Returns positions of last measured point.
Double_t dEdx() const
Returns measured dE/dx value.
Float_t dcaD(Int_t vtx_id=-1) const
Signed radial component of global DCA (projected)
StPhysicalHelixD outerHelix() const
Returns outer helix (last measured point)