6 #include "St2009WMaker.h"
7 #include "St2009pubJSMaker.h"
23 St2009pubJSMaker::~St2009pubJSMaker(){
30 Int_t St2009pubJSMaker::Init(){
32 par_countTrPt=wMK->par_countTrPt;
33 par_countTowEt=wMK->par_countTowEt;
37 return StMaker::Init();
55 St2009pubJSMaker::doWanalysis(){
59 for(
unsigned int iv=0;iv<wMK->wEve.vertex.size();iv++) {
61 for(
unsigned int it=0;it<V.eleTrack.size();it++) {
62 if(it==0) etowQA(0,V.z);
64 if(T.isMatch2Cl==
false)
continue;
65 assert(T.cluster.nTower>0);
66 assert(T.nearTotET>0);
68 if(T.cluster.ET /T.nearTotET< wMK->par_nearTotEtFrac)
continue;
69 if(T.awayTotET> par_awayTotET)
continue;
73 TVector3 hadronicPt(T.hadronicRecoil.X(),T.hadronicRecoil.Y(),0);
74 hA[25]->Fill(hadronicPt.Perp());
75 hA[26]->Fill(T.hadronicRecoil.Eta());
76 hA[27]->Fill(T.cluster.ET);
78 TVector3 electronPt(T.cluster.position.X(),T.cluster.position.Y(),0);
79 electronPt.SetMag(T.cluster.ET);
82 TVector3 neutrinoPt=-1*(hadronicPt+electronPt);
83 hA[28]->Fill(neutrinoPt.Perp());
85 float recoDeltaPhi=neutrinoPt.DeltaPhi(electronPt);
86 float Mt=sqrt(2*T.cluster.ET*neutrinoPt.Perp()*(1-cos(recoDeltaPhi)));
88 hA[30]->Fill(Mt,T.cluster.ET);
90 if(T.cluster.ET < 30)
continue;
92 float eleEta=T.primP.Eta();
94 hA[31]->Fill(T.cluster.energy);
96 hA[32]->Fill(T.cluster.energy);
97 if(eleEta > -0.1 && eleEta < 0.1)
98 hA[33]->Fill(T.cluster.energy);
101 float eleTheta=T.primP.Theta();
102 float ratioE=T.cluster.energy/40;
103 float pLRecoPlus=80*ratioE*((cos(eleTheta))+sqrt(cos(eleTheta)*cos(eleTheta)+sin(eleTheta)*sin(eleTheta)*(1-ratioE*ratioE)))/(ratioE*ratioE*sin(eleTheta)*sin(eleTheta));
104 float pLRecoMinus=80*ratioE*((cos(eleTheta))+sqrt(cos(eleTheta)*cos(eleTheta)+sin(eleTheta)*sin(eleTheta)*(1-ratioE*ratioE)))/(ratioE*ratioE*sin(eleTheta)*sin(eleTheta));
105 hA[34]->Fill(pLRecoPlus);
106 hA[35]->Fill(pLRecoMinus);
110 hA[11]->Fill(T.nearNTow);
111 hA[12]->Fill(T.nearNTr);
113 hA[24]->Fill(T.cluster.ET/T.nearTotET,T.cluster.position.PseudoRapidity());
116 if(T.cluster.ET /T.nearTotET< wMK->par_nearTotEtFrac)
continue;
118 hA[7]->Fill(T.awayNTow);
119 hA[8]->Fill(T.awayNTr);
122 if(T.awayTotET> par_awayTotET) {
123 if(T.awayNTr > par_awayNTrCut)
124 hA[9]->Fill(T.cluster.ET);
126 hA[10]->Fill(T.cluster.ET);
130 if(T.cluster.ET < 25){
132 hA[14]->Fill(T.awayTotET);
133 hA[15]->Fill(T.nearNTow);
134 hA[16]->Fill(T.nearNTr);
137 hA[19]->Fill(V.funnyRank);
138 hA[20]->Fill(wMK->wEve.bx48);
139 hA[21]->Fill(wMK->wEve.bx7);
140 hA[22]->Fill(T.cluster.position.PseudoRapidity(),T.cluster.position.Phi());
141 hA[23]->Fill(T.cluster.nTower);
152 St2009pubJSMaker::etowQA(
int whichCut,
float zVert){
155 for(
int iphi=0;iphi<60;iphi++){
156 for(
int ieta=0;ieta<12;ieta++){
157 TVector3 towerPos=wMK->positionEtow[iphi][ieta];
158 float ene=wMK->wEve.etow.ene[iphi][ieta];
159 int etabin=abs(ieta-11);
163 TVector3 primP=towerPos-TVector3(0,0,zVert);
165 float ET=primP.Perp();
167 hB[whichCut]->Fill(etabin,towerPos.Phi(),ene);
168 if(ET > par_highEtow)
169 hA[whichCut]->Fill(etabin,towerPos.Phi());
172 if(whichCut==0 && etabin==11){
173 if(zVert>-100 && zVert<=-50)
175 else if(zVert>-50 && zVert<=0)
177 else if(zVert>0 && zVert<=50)
179 else if(zVert>50 && zVert<=100)