00001 int yellCol=kYellow;
00002 TH2F *h2D=new TH2F("kin2D","W #rightarrow e + #nu, 3D isotropic in W CMS; electron P_{Z} (GeV/c); electron P_{T} (GeV/c)",100,-60,60,50,0,60);
00003 TH1F *hmcPt,*hmcP;
00004
00005 TRandom3 *rnd=new TRandom3();
00006
00007 void simW_jacobKin() {
00008 gStyle->SetPalette(1,0);
00009 gStyle->SetOptStat(1000000);
00010
00011
00012 TFile *fdnEPW = TFile::Open("noEndcap/mcSetD1_ppWprod.wana.hist.root");
00013 assert(fdnEPW->IsOpen());
00014 hPW=(TH1F*)fdnEPW->Get("pubJoe1"); assert(hPW);
00015 hPW->SetTitle("accepted Pythia Ws");
00016 int nEve=1000;
00017 float sig=0.;
00018
00019 ax=hPW->GetXaxis();
00020 ax->SetTitleSize(0.05); ax->SetTitleOffset(0.8);
00021
00022 hmcPt=(TH1F *) hPW->Clone();
00023 hmcPt->Reset();
00024 hmcPt->SetNameTitle("mcPt","Isotropic W decay; electron P_{T} (GeV/c)");
00025
00026 hmcP=(TH1F *) hPW->Clone();
00027 hmcP->Reset();
00028 hmcP->SetNameTitle("mcP","Isotropic W decay; electron P (GeV/c)");
00029
00030 hPW->SetLineColor(kRed);
00031 hPW->Sumw2();
00032
00033
00034 for(int i=0;i<nEve;i++) throwDecay(sig);
00035
00036 float fac=hmcPt->Integral()/hPW->Integral();
00037 hPW->Scale(fac);
00038
00039 float mxY=hPW->GetMaximum();
00040 if(mxY<mcPt->GetMaximum())mxY=mcPt->GetMaximum();
00041 hmcPt->SetMaximum(1.1*mxY);
00042
00043
00044 c=new TCanvas("aa2","aa2",1000,400);
00045 TPad *cL,*cR; splitPadX(0.5,&cL,&cR);
00046 cL->cd(); h2D->Draw("colz");
00047 ln=new TLine(-55,15,55,15); ln->SetLineColor(kBlue); ln->Draw();
00048 tx=new TText(-28,10,"ET>15 GeV cut used in reco"); tx->Draw(); tx->SetTextColor(kBlue); tx->SetTextSize(0.04);
00049 char txt[1000]; sprintf(txt,"smear 1D #sigma=%.0f GeV",sig);
00050 tx=new TLatex(-50,55,txt); tx->Draw();
00051
00052 cR->cd();
00053 cR->Divide(2,1);
00054
00055 cR->cd(1); hmcPt->Draw(); hmcPt->SetAxisRange(10,60); hPW->Draw("same");
00056 cR->cd(2); hmcP->Draw(); hmcP->SetAxisRange(10,60);
00057
00058 }
00059
00060 void throwDecay(float sig=3.) {
00061 float Pmag=40;
00062 float phi=2*3.1416*rnd->Uniform();
00063 float cosTh=2*rnd->Uniform()-1.;
00064 float theta=acos(cosTh);
00065 TVector3 P(1,2,3); P.SetMag(Pmag); P.SetTheta(theta); P.SetPhi(phi);
00066 TVector3 sigP(rnd->Gaus(0,sig),rnd->Gaus(0,sig),rnd->Gaus(0,sig));
00067 P=P+sigP;
00068 h2D->Fill(P.z(), P.Pt());
00069 if( fabs(P.Pt())<15) continue;
00070 hmcPt->Fill(P.Pt());
00071 hmcP->Fill(P.Mag());
00072 }
00073
00074
00075
00076
00077
00078
00079 void splitPadX(float x, TPad **cL, TPad **cR) {
00080 (*cL) = new TPad("padL", "apdL",0.0,0.,x,0.95);
00081 (*cL)->Draw();
00082 (*cR) = new TPad("padL", "apdL",x+0.005,0.,1.0,0.95);
00083 (*cR)->Draw();
00084 }
00085