Changeset 39 in svn for trunk/routines
- Timestamp:
- Nov 18, 2008, 10:30:58 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/routines/resolutions.C
r27 r39 11 11 void JetResol() 12 12 { 13 14 setTDRStyle(); 15 gROOT->Reset(); 16 17 TFile *f1 = new TFile("JETResol.root","read"); 18 TTree *Analyze = (TTree*)f1->Get("Analysis"); 19 20 const Int_t numBin=7; 21 double bins[numBin]={0,20,40,60,80,100,220}; 22 TProfile *ETSoverET = new TProfile("ETSoverET","Jet resolution: E_{T}^{rec}/E_{T}^{mc}",(numBin-1),bins,-10,10); 23 24 double rms[numBin]; 25 double mean[numBin]; 26 27 TCanvas *c1 = new TCanvas("c1","JET resol",0,0,1000,650); 28 c1->cd(); int frame=0; 29 c1->Divide(6,2); 30 31 float x[numBin-1]; 32 float y[numBin-1]; 33 float ex[numBin-1]; 34 float ey[numBin-1]; 35 36 float finval=0;//valeur a remplir puis a fitter 37 38 for ( int i=0; i<(numBin-1); i++) // premiÚre bin : i ==1 et pas i == 0 39 { 40 TAxis *xaxis = ETSoverET->GetXaxis(); 41 float binCenter = xaxis->GetBinCenter(i+1); 42 int binMin = (int)xaxis->GetBinLowEdge(i+1); 43 int binMax = (int)xaxis->GetBinUpEdge(i+1); 44 cout<<"binMin "<<binMin<<" binMax "<<binMax<<" bin center "<<binCenter<<endl; 45 char tempMin[500]; 46 if(i==0)binMin=5; 47 sprintf(tempMin,"JetPTResol.NonSmearePT > %d",binMin); 48 string mystringMin(tempMin); 49 char tempMax[500]; 50 sprintf(tempMax,"JetPTResol.NonSmearePT < %d",binMax); 51 string mystringMax(tempMax); 52 char tempName[500]; 53 sprintf(tempName,"(JetPTResol.SmearePT)>>hETSoverET%d",i); 54 string mystringName(tempName); 55 56 c1->cd(++frame); 57 GaussValues(Analyze,tempName,rms[i],mean[i],mystringMin,mystringMax); 58 x[i]=binCenter; 59 finval=rms[i]/mean[i]; 60 y[i]=(finval*100); 61 ex[i]=0; 62 ey[i]=0; 63 cout<<"finval "<<finval<<" mean val "<<mean[i]<<" rms value "<<rms[i]<<endl; 64 } 65 66 TCanvas *c2 = new TCanvas("c2","JET resol",100,100,600,450); 67 c2->cd(); 68 69 TF1 *fitfun = new TF1("user","sqrt(pow([0],2)+pow([1]/sqrt(x),2)+pow([2]/x,2))",1,170); 70 71 TGraphErrors *gr11 = new TGraphErrors((numBin-1),x,y,ex,ey); 72 gr11->Draw("AP"); 73 gr11->SetTitle(""); 74 gr11->GetXaxis()->SetTitle("E_{T}^{MC} [GeV]"); 75 gr11->GetYaxis()->SetRangeUser(0,50); 76 gr11->GetYaxis()->SetTitle("#sigma(E_{T}^{rec}/E_{T}^{MC})_{fit}/<E_{T}^{rec}/E_{T}^{MC}>_{fit}"); 77 78 Double_t* params = fitfun->GetParameters(); 79 80 gr11->Fit("user","R"); 81 gr11->Fit("user","RI"); 82 gr11->Fit("user","RI"); 83 gr11->Fit("user","RI"); 84 char tempResol[500]; 85 sprintf(tempResol,"#frac{#sigma(E_{T}^{rec}/E_{T}^{MC})}{<E_{T}^{rec}/E_{T}^{MC}>} = #frac{%f}{#sqrt{E_{T}^{MC}}} #oplus #frac{%f}{E_{T}^{MC}} #oplus %f",params[1]/100,params[2]/100,params[0]/100); 86 87 TPaveText *leg1 = MakeTPave(0.4,0.6,0.8,0.65,tempResol); 88 leg1->Draw(); 89 90 delete fitfun; 91 } 92 13 setTDRStyle(); 14 gROOT->Reset(); 15 16 TFile *f1 = new TFile("JET.root","read"); 17 TTree *Analyze = (TTree*)f1->Get("Analysis"); 18 19 const Int_t numBin=7; 20 double bins[numBin]={0,20,40,60,80,100,220}; 21 TProfile *ETSoverET = new TProfile("ETSoverET","Jet resolution: E_{T}^{rec}/E_{T}^{mc}",(numBin-1),bins,-10,10); 22 23 double rms[numBin]; 24 double mean[numBin]; 25 26 TCanvas *c1 = new TCanvas("c1","JET resol",0,0,1000,650); 27 c1->cd(); int frame=0; 28 c1->Divide(6,2); 29 30 float x[numBin-1]; 31 float y[numBin-1]; 32 float ex[numBin-1]; 33 float ey[numBin-1]; 34 35 float finval=0;//valeur a remplir puis a fitter 36 37 for ( int i=0; i<(numBin-1); i++) // premiÚre bin : i ==1 et pas i == 0 38 { 39 TAxis *xaxis = ETSoverET->GetXaxis(); 40 float binCenter = xaxis->GetBinCenter(i+1); 41 int binMin = (int)xaxis->GetBinLowEdge(i+1); 42 int binMax = (int)xaxis->GetBinUpEdge(i+1); 43 char tempMin[500]; 44 if(i==0)binMin=5; 45 sprintf(tempMin,"JetPTResol.NonSmearePT > %d",binMin); 46 string mystringMin(tempMin); 47 char tempMax[500]; 48 sprintf(tempMax,"JetPTResol.NonSmearePT < %d",binMax); 49 string mystringMax(tempMax); 50 char tempName[500]; 51 sprintf(tempName,"(JetPTResol.SmearePT)>>hETSoverET%d",i); 52 string mystringName(tempName); 53 54 c1->cd(++frame); 55 GaussValues(Analyze,tempName,rms[i],mean[i],mystringMin,mystringMax); 56 x[i]=binCenter; 57 finval=rms[i]/mean[i]; 58 y[i]=(finval*100); 59 ex[i]=0; 60 ey[i]=0; 61 } 62 63 TCanvas *c2 = new TCanvas("c2","JET resol",100,100,600,450); 64 c2->cd(); 65 66 TF1 *fitfun = new TF1("user","sqrt(pow([0],2)+pow([1]/sqrt(x),2)+pow([2]/x,2))",1,170); 67 68 TGraphErrors *gr11 = new TGraphErrors((numBin-1),x,y,ex,ey); 69 gr11->Draw("AP"); 70 gr11->SetTitle(""); 71 gr11->GetXaxis()->SetTitle("E_{T}^{MC} [GeV]"); 72 gr11->GetYaxis()->SetRangeUser(0,50); 73 gr11->GetYaxis()->SetTitle("#sigma(E_{T}^{rec}/E_{T}^{MC})_{fit}/<E_{T}^{rec}/E_{T}^{MC}>_{fit}"); 74 75 Double_t* params = fitfun->GetParameters(); 76 77 gr11->Fit("user","QR"); 78 gr11->Fit("user","QRI"); 79 gr11->Fit("user","QRI"); 80 gr11->Fit("user","QRI"); 81 char tempResol[500]; 82 if(params[2]==0.000000)sprintf(tempResol,"#frac{#sigma(E_{T}^{rec}/E_{T}^{MC})}{<E_{T}^{rec}/E_{T}^{MC}>} = #frac{%f}{#sqrt{E_{T}^{MC}}} #oplus %f",params[1]/100,params[0]/100); 83 else sprintf(tempResol,"#frac{#sigma(E_{T}^{rec}/E_{T}^{MC})}{<E_{T}^{rec}/E_{T}^{MC}>} = #frac{%f}{#sqrt{E_{T}^{MC}}} #oplus #frac{%f}{E_{T}^{MC}} #oplus %f",params[1]/100,params[2]/100,params[0]/100); 84 85 TPaveText *leg1 = MakeTPave(0.4,0.6,0.8,0.65,tempResol); 86 leg1->Draw(); 87 88 TPaveText *Delphes = MakeTPave(0.2,0.15,0.35,0.2,"MG/ME + Delphes"); 89 Delphes->Draw(); 90 91 92 delete fitfun; 93 } 94 95 void ElecResol() 96 { 97 98 setTDRStyle(); 99 gROOT->Reset(); 100 101 TFile *f1 = new TFile("PTMIS.root","read"); 102 TTree *Analyze = (TTree*)f1->Get("Analysis"); 103 104 const Int_t numBin=9; 105 double bins[numBin]={0,20,40,60,80,100,150,220,400}; 106 TProfile *ETSminusET = new TProfile("ETSminusET","Electron resolution: E_{T}^{rec}/E_{T}^{mc}",(numBin-1),bins,-10,10); 107 108 double rms[numBin]; 109 double mean[numBin]; 110 111 TCanvas *c3 = new TCanvas("c3","ELEC resol",0,0,1000,650); 112 c3->cd(); int frame=0; 113 c3->Divide(6,2); 114 115 float x[numBin-1]; 116 float y[numBin-1]; 117 float ex[numBin-1]; 118 float ey[numBin-1]; 119 120 float finval=0;//valeur a remplir puis a fitter 121 122 for ( int i=0; i<(numBin-1); i++) // premiÚre bin : i ==1 et pas i == 0 123 { 124 TAxis *xaxis = ETSminusET->GetXaxis(); 125 float binCenter = xaxis->GetBinCenter(i+1); 126 int binMin = (int)xaxis->GetBinLowEdge(i+1); 127 int binMax = (int)xaxis->GetBinUpEdge(i+1); 128 char tempMin[500]; 129 if(i==0)binMin=5; 130 sprintf(tempMin,"ElecEResol.NonSmeareE > %d",binMin); 131 string mystringMin(tempMin); 132 char tempMax[500]; 133 sprintf(tempMax,"ElecEResol.NonSmeareE < %d",binMax); 134 string mystringMax(tempMax); 135 char tempName[500]; 136 sprintf(tempName,"(ElecEResol.NonSmeareE-ElecEResol.SmeareE)>>hETSoverET%d",i); 137 string mystringName(tempName); 138 139 c3->cd(++frame); 140 GaussValues(Analyze,tempName,rms[i],mean[i],mystringMin,mystringMax); 141 x[i]=binCenter; 142 finval=rms[i]/binCenter; 143 y[i]=(finval*100); 144 ex[i]=0; 145 ey[i]=0; 146 } 147 148 TCanvas *c4 = new TCanvas("c4","ELEC resol",100,100,600,450); 149 c4->cd(); 150 151 TF1 *fitfun = new TF1("user","sqrt(pow([0],2)+pow([1]/sqrt(x),2)+pow([2]/x,2))",1,400); 152 153 TGraphErrors *gr11 = new TGraphErrors((numBin-1),x,y,ex,ey); 154 gr11->Draw("AP"); 155 gr11->SetTitle(""); 156 gr11->GetXaxis()->SetTitle("E [GeV]"); 157 gr11->GetYaxis()->SetRangeUser(0,5); 158 gr11->GetYaxis()->SetTitle("#sigma/E"); 159 160 Double_t* params = fitfun->GetParameters(); 161 162 gr11->Fit("user","QR"); 163 gr11->Fit("user","QRI"); 164 gr11->Fit("user","QRI"); 165 gr11->Fit("user","QRI"); 166 char tempResol[500]; 167 sprintf(tempResol,"#frac{#sigma}{E} = #frac{%f}{#sqrt{E}} #oplus #frac{%f}{E} #oplus %f",params[1]/100,params[2]/100,params[0]/100); 168 169 TPaveText *leg1 = MakeTPave(0.4,0.6,0.8,0.65,tempResol); 170 leg1->Draw(); 171 172 TPaveText *Delphes = MakeTPave(0.2,0.15,0.35,0.2,"MG/ME + Delphes"); 173 Delphes->Draw(); 174 175 TPaveText *events = MakeTPave(0.2,0.75,0.35,0.8,"t#bar{t} #rightarrow l^{+}l^{-}#nu#bar{#nu}b#bar{b}"); 176 events->Draw(); 177 178 delete fitfun; 179 } 180 181 void TauJetInfo() 182 { 183 184 setTDRStyle(); 185 gROOT->Reset(); 186 187 TFile *f1 = new TFile("PTMIS.root","read"); 188 TTree *Analyze = (TTree*)f1->Get("Analysis"); 189 190 TCanvas *ct = new TCanvas("ct","Tau information",0,0,1000,425); 191 ct->cd(); int frame=0; 192 ct->Divide(2,1); 193 194 ct->cd(++frame); 195 TH1F *tauEnergy =MakeNormTH1F(20,0.8,1,Analyze,"TauJetPTResol.EnergieCen>>tauEnergy",1, 0, 1,2,false); 196 tauEnergy->Draw(); 197 tauEnergy->SetTitle(""); 198 tauEnergy->GetYaxis()->SetTitle("Fraction of events"); 199 tauEnergy->GetXaxis()->SetTitle("C_{#tau}"); 200 201 202 TPaveText *Delphes1 = MakeTPave(0.3,0.85,0.45,0.9,"MG/ME + Delphes"); 203 Delphes1->Draw(); 204 TPaveText *ctau = MakeTPave(0.3,0.75,0.45,0.8,"C_{#tau} = #frac{#sum E^{towers} (#DeltaR = 0.15)}{E^{jet}}"); 205 ctau->Draw(); 206 TPaveText *events1 = MakeTPave(0.3,0.65,0.45,0.7,"Events: t#bar{t} #rightarrow l^{+}#nul^{-}#bar{#nu}b#bar{b}"); 207 events1->Draw(); 208 209 210 ct->cd(++frame); 211 TH1F *NumTrack =MakeNormTH1F(6,0,6,Analyze,"TauJetPTResol.NumTrack>>NumTrack",1, 0, 1,2,false); 212 NumTrack->Draw(); 213 NumTrack->SetTitle(""); 214 NumTrack->GetYaxis()->SetTitle("Fraction of events"); 215 NumTrack->GetXaxis()->SetTitle("N^{tracks}"); 216 217 TPaveText *Delphes = MakeTPave(0.6,0.85,0.85,0.9,"MG/ME + Delphes"); 218 Delphes->Draw(); 219 TPaveText *numtracks = MakeTPave(0.6,0.75,0.85,0.8,"#DeltaR < 0.4, p_{T}^{track} > 2 GeV"); 220 numtracks->Draw(); 221 TPaveText *events = MakeTPave(0.6,0.65,0.85,0.7,"Events: t#bar{t} #rightarrow l^{+}#nul^{-}#bar{#nu}b#bar{b}"); 222 events->Draw(); 223 224 } 93 225 94 226 void ETmisResol() 95 227 { 96 97 setTDRStyle(); 98 gROOT->Reset(); 99 100 TFile *f1 = new TFile("PTMIS.root","read"); 101 TTree *Analyze = (TTree*)f1->Get("Analysis"); 102 103 const Int_t numBin=6; 104 double bins[numBin]={10,20,30,50,80,100}; 105 TProfile *ETSoverET = new TProfile("ETSoverET","ETmis resol",(numBin-1),bins,-1000,1000); 106 107 double rms[numBin-1]; 108 double mean[numBin-1]; 109 110 TCanvas *c5 = new TCanvas("c5","gerrors2",0,0,1000,650); 111 c5->cd(); int frame=0; 112 c5->Divide(6,2); 113 114 double x[numBin-1]; 115 double y[numBin-1]; 116 117 for ( int i=0; i<(numBin-1); i++) // premiÚre bin : i ==1 et pas i == 0 118 { 119 TAxis *xaxis = ETSoverET->GetXaxis(); 120 float binCenter = xaxis->GetBinCenter(i+1); 121 int binMin = (int)xaxis->GetBinLowEdge(i+1); 122 int binMax = (int)xaxis->GetBinUpEdge(i+1); 123 cout<<"binMin "<<binMin<<" binMax "<<binMax<<" bin center "<<binCenter<<endl; 124 char tempMin[500]; 125 sprintf(tempMin,"ETmisResol.Et>%d",binMin); 126 string mystringMin(tempMin); 127 char tempMax[500]; 128 sprintf(tempMax,"ETmisResol.Et<%d",binMax); 129 string mystringMax(tempMax); 130 131 char tempName[500]; 132 sprintf(tempName,"ETmisResol.EtSmeare>>hETSoverET%d",i); 133 string mystringName(tempName); 134 135 c5->cd(++frame); 136 GaussValuesETmis(Analyze,tempName,rms[i],mean[i],mystringMin,mystringMax); 137 x[i]=binCenter; 138 y[i]=rms[i]; 139 cout<<" mean val "<<mean[i]<<" rms value "<<rms[i]<<endl; 140 141 } 142 143 TCanvas *c6 = new TCanvas("c6","ETmis resolution",100,100,600,450); 144 c6->cd(); 145 146 TF1 *fitfun = new TF1("user","sqrt(pow([0],2)+pow([1]/sqrt(x),2)+pow([2]/x,2))",0,200); 147 148 TGraph *gr11 = new TGraph((numBin-1),x,rms); 149 gr11->Draw("AP"); 150 gr11->GetXaxis()->SetTitle("MC^{MET} [GeV]"); 151 gr11->GetYaxis()->SetTitle("#sigma(REC^{MET}-MC^{MET})"); 152 gr11->Fit("user","RQ"); 153 gr11->Fit("user","RQ"); 154 gr11->Fit("user","RQ"); 155 gr11->Fit("user","R"); 156 157 TCanvas *c7 = new TCanvas("c7","ETmis resolution",100,100,600,450); 158 c7->cd(); 159 160 TGraph *gr12 = new TGraph((numBin-1),x,mean); 161 gr12->Draw("AP"); 162 gr12->GetXaxis()->SetTitle("MC^{MET} [GeV]"); 163 gr12->GetYaxis()->SetTitle("<(REC^{MET}-MC^{MET})>"); 164 165 166 delete fitfun; 228 229 setTDRStyle(); 230 gROOT->Reset(); 231 232 TFile *f1 = new TFile("test2.root","read"); 233 TTree *Analyze = (TTree*)f1->Get("Analysis"); 234 235 TF1 *fitfun = new TF1("user","[0]*sqrt(x)",0,600); 236 const Int_t numBin=7; 237 // double bins[numBin]={10,100,150,200,250,300,350,400,450,500}; 238 double bins[numBin]={200,250,300,350,400,450,500}; 239 // double bins[numBin]={0,10,20,30,40,50,60,70}; 240 TProfile *ETSoverET = new TProfile("ETSoverET","ETmis resol",(numBin-1),bins,-1000,1000); 241 Analyze->Draw("ETmisResol.ExSmeare:ETmisResol.SEt>>ETSoverET"); 242 Analyze->Fit("user","RQ"); 243 Analyze->Fit("user","RQ"); 244 245 246 double rms[numBin-1]; 247 248 TCanvas *c5 = new TCanvas("c5","PTmis resol",0,0,1000,650); 249 c5->cd(); int frame=0; 250 c5->Divide(6,2); 251 252 double x[numBin]; 253 double y[numBin]; 254 255 for ( int i=0; i<(numBin-1); i++) // premiÚre bin : i ==1 et pas i == 0 256 { 257 TAxis *xaxis = ETSoverET->GetXaxis(); 258 float binCenter = xaxis->GetBinCenter(i+1); 259 int binMin = (int)xaxis->GetBinLowEdge(i+1); 260 int binMax = (int)xaxis->GetBinUpEdge(i+1); 261 char tempMin[500]; 262 sprintf(tempMin,"ETmisResol.SEt>%d",binMin); 263 string mystringMin(tempMin); 264 char tempMax[500]; 265 sprintf(tempMax,"ETmisResol.SEt<%d",binMax); 266 string mystringMax(tempMax); 267 268 char tempName[500]; 269 sprintf(tempName,"ETmisResol.ExSmeare>>hETSoverET%d",i); 270 string mystringName(tempName); 271 272 c5->cd(++frame); 273 GaussValuesETmis(Analyze,tempName,rms[i],mystringMin,mystringMax); 274 x[i]=binCenter; 275 y[i]=rms[i]; 276 277 } 278 279 TCanvas *c6 = new TCanvas("c6","ETmis resolution",100,100,600,450); 280 c6->cd(); 281 282 x[numBin]=0; 283 y[numBin]=0; 284 TGraph *gr11 = new TGraph((numBin),x,rms); 285 gr11->Draw("AP"); 286 gr11->GetXaxis()->SetTitle("Offline sum of E_{T} [GeV]"); 287 gr11->GetYaxis()->SetTitle("Resolution of x-component of MET [GeV]"); 288 gr11->Fit("user","RQ"); 289 gr11->Fit("user","RQ"); 290 gr11->Fit("user","RQ"); 291 gr11->Fit("user","RQ"); 292 gr11->GetYaxis()->SetRangeUser(0,30); 293 gr11->GetXaxis()->SetRangeUser(1,600); 294 295 Double_t* params = fitfun->GetParameters(); 296 297 char tempResol[500]; 298 sprintf(tempResol,"%f * #sqrt{E_{T}}",params[0]); 299 300 TPaveText *leg1 = MakeTPave(0.4,0.6,0.8,0.65,tempResol); 301 leg1->Draw(); 302 303 TPaveText *leg2 = MakeTPave(0.2,0.8,0.8,0.85,"WHq'#rightarrow W#tau#tauq'#rightarrowjjl#tauq', m_{H}=150 GeV "); 304 leg2->Draw(); 305 306 TPaveText *Delphes = MakeTPave(0.2,0.15,0.35,0.2,"MG/ME + Delphes"); 307 Delphes->Draw(); 308 309 310 delete fitfun; 167 311 } 168 312 169 313 void General() 170 314 { 171 JetResol(); 315 //JetResol(); 316 //ElecResol(); 172 317 ETmisResol(); 173 } 174 175 318 //TauJetInfo(); 319 320 } 321 322
Note:
See TracChangeset
for help on using the changeset viewer.