]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/macros/CombineFeedDownMCSubtractionMethodsUncertainties.C
Add possibility of fine Ntracklets bin (bins of 1 unit till 100 for pp, 200 for pPb)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / CombineFeedDownMCSubtractionMethodsUncertainties.C
CommitLineData
9e97ebdc 1#if !defined(__CINT__) || defined(__MAKECINT__)
066998f0 2#include "TFile.h"
3#include "TH1.h"
4#include "TH1D.h"
5#include "TH2.h"
6#include "TH2F.h"
7#include "TGraphAsymmErrors.h"
8#include "TCanvas.h"
9#include "TLegend.h"
10#include "TMath.h"
11#include "TROOT.h"
12#include "TStyle.h"
066998f0 13#include "AliHFSystErr.h"
066998f0 14#include <Riostream.h>
9e97ebdc 15#endif
16
17/* $Id$ */
18
066998f0 19
20//_________________________________________________________________________________________
21//
22// Macro to combine the the MonteCarlo B feed-down subtraction uncertainties
23//
24// Take as input the output files from the HFPtSpectrum class
25// from both fc & Nb subtraction methods and combine the uncertainties.
26// The final central value is set as the one from the Nb-method.
27// The final uncertainties are defined as the envelope of both fc & Nb
28// uncertainties with respect to the new central-value.
29// The final global uncertainties are also defined and a preliminary drawing done.
30//
31//
32// Usage parameters:
33// 1. HFPtSpectrum fc subtraction file
34// 2. HFPtSpectrum Nb subtraction file
35// 3. Output file name
36// 4. FONLL theoretical predictions file to draw on top
37// 5. Decay channel as defined in the AliHFSystErr class
38//
39//_________________________________________________________________________________________
40
066c6b9b 41enum centrality{ kpp7, kpp276, k010, k020, k2040, k4060, k6080, k4080, k80100 };
066998f0 42
43void CombineFeedDownMCSubtractionMethodsUncertainties(const char *fcfilename="HFPtSpectrum_D0Kpi_method1_221110_newnorm.root",
44 const char *nbfilename="HFPtSpectrum_D0Kpi_method2_221110_newnorm.root",
45 const char *outfilename="HFPtSpectrum_D0Kpi_combinedFD.root",
46 const char *thfilename="D0DplusDstarPredictions_y05.root",
066c6b9b 47 Int_t decay=1, Int_t centrality=kpp7)
066998f0 48{
49
50 //
51 // Get fc file inputs
52 TFile * fcfile = new TFile(fcfilename,"read");
53 TH1D * histoSigmaCorrFc = (TH1D*)fcfile->Get("histoSigmaCorr");
54 histoSigmaCorrFc->SetNameTitle("histoSigmaCorrFc","histoSigmaCorrFc");
55 TGraphAsymmErrors * gSigmaCorrFc = (TGraphAsymmErrors*)fcfile->Get("gSigmaCorr");
56 gSigmaCorrFc->SetNameTitle("gSigmaCorrFc","gSigmaCorrFc");
57 TGraphAsymmErrors * gSigmaCorrConservativeFc = (TGraphAsymmErrors*)fcfile->Get("gSigmaCorrConservative");
ce4c4d27 58 gSigmaCorrConservativeFc->SetNameTitle("gSigmaCorrConservativeFc","Cross section (fc prompt fraction)");
59 TGraphAsymmErrors * gFcConservativeFc = (TGraphAsymmErrors*)fcfile->Get("gFcConservative");
60 gFcConservativeFc->SetNameTitle("gFcConservativeFc","fc prompt fraction");
066998f0 61
62 //
63 // Get Nb file inputs
64 TFile * nbfile = new TFile(nbfilename,"read");
65 TH1D * histoSigmaCorrNb = (TH1D*)nbfile->Get("histoSigmaCorr");
66 histoSigmaCorrNb->SetNameTitle("histoSigmaCorrNb","histoSigmaCorrNb");
67 TGraphAsymmErrors * gSigmaCorrNb = (TGraphAsymmErrors*)nbfile->Get("gSigmaCorr");
68 gSigmaCorrNb->SetNameTitle("gSigmaCorrNb","gSigmaCorrNb");
69 TGraphAsymmErrors * gSigmaCorrConservativeNb = (TGraphAsymmErrors*)nbfile->Get("gSigmaCorrConservative");
ce4c4d27 70 gSigmaCorrConservativeNb->SetNameTitle("gSigmaCorrConservativeNb","Cross section (Nb prompt fraction)");
71 TGraphAsymmErrors * gFcConservativeNb = (TGraphAsymmErrors*)nbfile->Get("gFcConservative");
72 gFcConservativeNb->SetNameTitle("gFcConservativeNb","Nb prompt fraction");
066998f0 73
74 //
75 // Get the predictions input
76 TFile *thfile = new TFile(thfilename,"read");
77 TGraphAsymmErrors * thD0KpifromBprediction = (TGraphAsymmErrors*)thfile->Get("D0Kpiprediction");
78 TGraphAsymmErrors * thDpluskpipiprediction = (TGraphAsymmErrors*)thfile->Get("Dpluskpipiprediction");
79 TGraphAsymmErrors * thDstarD0piprediction = (TGraphAsymmErrors*)thfile->Get("DstarD0piprediction");
9e97ebdc 80 TGraphAsymmErrors * thDsKKpiprediction = (TGraphAsymmErrors*)thfile->Get("DsKkpiprediction");
81
066998f0 82 thD0KpifromBprediction->SetLineColor(4);
83 thD0KpifromBprediction->SetFillColor(kAzure+9);
84 thDpluskpipiprediction->SetLineColor(4);
85 thDpluskpipiprediction->SetFillColor(kAzure+9);
86 thDstarD0piprediction->SetLineColor(4);
87 thDstarD0piprediction->SetFillColor(kAzure+9);
9e97ebdc 88 thDsKKpiprediction->SetLineColor(4);
89 thDsKKpiprediction->SetFillColor(kAzure+9);
066998f0 90
91 //
92 // Get the spectra bins & limits
93 Int_t nbins = histoSigmaCorrFc->GetNbinsX();
94 Double_t *limits = new Double_t[nbins+1];
95 Double_t xlow=0., binwidth=0.;
96 for (Int_t i=1; i<=nbins; i++) {
97 binwidth = histoSigmaCorrFc->GetBinWidth(i);
98 xlow = histoSigmaCorrFc->GetBinLowEdge(i);
99 limits[i-1] = xlow;
100 }
101 limits[nbins] = xlow + binwidth;
102
103
104 //
105 // Define a new histogram with the real-data reconstructed spectrum binning
106 // they will be filled with central value equal to the Nb result
107 // and uncertainties taken from the envelope of the result uncertainties
108 // The systematical unc. (but FD) will also be re-calculated
109 //
110 TH1D * histoSigmaCorr = new TH1D("histoSigmaCorr","corrected cross-section (combined fc and Nb MC feed-down subtraction)",nbins,limits);
111 TGraphAsymmErrors * gSigmaCorr = new TGraphAsymmErrors(nbins+1);
112 gSigmaCorr->SetNameTitle("gSigmaCorr","gSigmaCorr (combined fc and Nb MC FD)");
ce4c4d27 113 TGraphAsymmErrors * gFcCorrConservative = new TGraphAsymmErrors(nbins+1);
114 gFcCorrConservative->SetNameTitle("gFcCorrConservative","Combined prompt fraction");
066998f0 115 TGraphAsymmErrors * gSigmaCorrConservative = new TGraphAsymmErrors(nbins+1);
ce4c4d27 116 gSigmaCorrConservative->SetNameTitle("gSigmaCorrConservative","Cross section (combined prompt fraction)");
066998f0 117 TGraphAsymmErrors * gSigmaCorrConservativePC = new TGraphAsymmErrors(nbins+1);
118 gSigmaCorrConservativePC->SetNameTitle("gSigmaCorrConservativePC","Conservative gSigmaCorr (combined fc and Nb MC FD) in percentages [for drawing with AliHFSystErr]");
119
120 //
121 // Call the systematics uncertainty class for a given decay
122 // will help to compute the systematical unc. (but FD)
6ad825bf 123 AliHFSystErr systematics;
066c6b9b 124 if( centrality==kpp276 ) {
125 systematics.SetIsLowEnergy(true);
126 } else if( centrality!=kpp7 ) {
6ad825bf 127 systematics.SetCollisionType(1);
128 if ( centrality == k020 ) {
066c6b9b 129 systematics.SetCentrality("020");
6ad825bf 130 }
131 else if ( centrality == k4080 ) {
066c6b9b 132 systematics.SetCentrality("4080");
6ad825bf 133 }
134 else {
135 cout << " Systematics not yet implemented " << endl;
136 return;
137 }
138 }
139 else { systematics.SetCollisionType(0); }
140 systematics.Init(decay);
066998f0 141
142 //
143 // Loop on all the bins to do the calculations
144 //
145 Double_t pt=0., average = 0., averageStatUnc=0., avErrx=0., avErryl=0., avErryh=0., avErryfdl=0., avErryfdh=0.;
146 Double_t avErrylPC=0., avErryhPC=0., avErryfdlPC=0., avErryfdhPC=0.;
147 Double_t valFc = 0., valFcErrstat=0., valFcErrx=0., valFcErryl=0., valFcErryh=0., valFcErryfdl=0., valFcErryfdh=0.;
148 Double_t valNb = 0., valNbErrstat=0., valNbErrx=0., valNbErryl=0., valNbErryh=0., valNbErryfdl=0., valNbErryfdh=0.;
ce4c4d27 149 Double_t corrfd = 0., corrfdl=0., corrfdh=0.;
066998f0 150 //
151 for(Int_t ibin=1; ibin<=nbins; ibin++){
152
153 // Get input values from fc method
154 valFc = histoSigmaCorrFc->GetBinContent(ibin);
155 pt = histoSigmaCorrFc->GetBinCenter(ibin);
156 valFcErrstat = histoSigmaCorrFc->GetBinError(ibin);
157 Double_t value =0., ptt=0.;
158 gSigmaCorrConservativeFc->GetPoint(ibin,ptt,value);
066c6b9b 159 if (value<=0.) continue;
066998f0 160 if ( TMath::Abs(valFc-value)>0.1 || TMath::Abs(pt-ptt)>0.1 )
161 cout << "Hey you ! There might be a problem with the fc input file, please, have a look !" << endl;
162 valFcErrx = gSigmaCorrFc->GetErrorXlow(ibin);
163 valFcErryl = gSigmaCorrFc->GetErrorYlow(ibin);
164 valFcErryh = gSigmaCorrFc->GetErrorYhigh(ibin);
165 valFcErryfdl = TMath::Abs( gSigmaCorrConservativeFc->GetErrorYlow(ibin) );
166 valFcErryfdh = TMath::Abs( gSigmaCorrConservativeFc->GetErrorYhigh(ibin) );
ce4c4d27 167 Double_t valfdFc = 0., x=0.;
168 gFcConservativeFc->GetPoint(ibin,x,valfdFc);
169 Double_t valfdFch = gFcConservativeFc->GetErrorYhigh(ibin);
170 Double_t valfdFcl = gFcConservativeFc->GetErrorYlow(ibin);
066998f0 171
172 // Get input values from Nb method
173 valNb = histoSigmaCorrNb->GetBinContent(ibin);
174 pt = histoSigmaCorrNb->GetBinCenter(ibin);
175 valNbErrstat = histoSigmaCorrNb->GetBinError(ibin);
176 gSigmaCorrConservativeNb->GetPoint(ibin,ptt,value);
177 if ( TMath::Abs(valNb-value)>0.1 || TMath::Abs(pt-ptt)>0.1 )
178 cout << "Hey you ! There might be a problem with the Nb input file, please, have a look !" << endl;
179 valNbErrx = gSigmaCorrNb->GetErrorXlow(ibin);
180 valNbErryl = gSigmaCorrNb->GetErrorYlow(ibin);
181 valNbErryh = gSigmaCorrNb->GetErrorYhigh(ibin);
182 valNbErryfdl = gSigmaCorrConservativeNb->GetErrorYlow(ibin);
183 valNbErryfdh = gSigmaCorrConservativeNb->GetErrorYhigh(ibin);
ce4c4d27 184 Double_t valfdNb = 0.;
185 gFcConservativeNb->GetPoint(ibin,x,valfdNb);
186 Double_t valfdNbh = gFcConservativeNb->GetErrorYhigh(ibin);
187 Double_t valfdNbl = gFcConservativeNb->GetErrorYlow(ibin);
066998f0 188
189
190 // Compute the FD combined value
191 // average = valNb
192 average = valNb ;
ce4c4d27 193 corrfd = valfdNb;
066998f0 194 avErrx = valFcErrx;
195 if ( TMath::Abs( valFcErrx - valNbErrx ) > 0.1 )
196 cout << "Hey you ! There might be consistency problem with the fc & Nb input files, please, have a look !" << endl;
197 averageStatUnc = valNbErrstat ;
198// cout << " pt=" << pt << ", average="<<average<<endl;
199// cout << " stat unc (pc)=" << averageStatUnc/average << ", stat-fc (pc)="<<(valFcErrstat/valFc) << ", stat-Nb (pc)="<<(valNbErrstat/valNb)<<endl;
200
201 // now estimate the new feed-down combined uncertainties
202 Double_t minimum[2] = { (valFc - valFcErryfdl), (valNb - valNbErryfdl) };
203 Double_t maximum[2] = { (valFc + valFcErryfdh), (valNb + valNbErryfdh) };
204 avErryfdl = average - TMath::MinElement(2,minimum);
205 avErryfdh = TMath::MaxElement(2,maximum) - average;
206 avErryfdlPC = avErryfdl / average ; // in percentage
207 avErryfdhPC = avErryfdh / average ; // in percentage
208// cout << " fc : val " << valFc << " + " << valFcErryfdh <<" - " << valFcErryfdl <<endl;
209// cout << " Nb : val " << valNb << " + " << valNbErryfdh <<" - " << valNbErryfdl <<endl;
210// cout << " fc & Nb: val " << average << " + " << avErryfdh <<" - " << avErryfdl <<endl;
ce4c4d27 211 Double_t minimumfc[2] = { (valfdNb - valfdNbl), (valfdFc - valfdFcl) };
212 Double_t maximumfc[2] = { (valfdNb + valfdNbh), (valfdFc + valfdFch) };
213 corrfdl = corrfd - TMath::MinElement(2,minimumfc);
214 corrfdh = TMath::MaxElement(2,maximumfc) - corrfd;
066998f0 215
216
217 // compute the global systematics
218 avErrylPC = systematics.GetTotalSystErr(pt,avErryfdlPC); // in percentage
219 avErryhPC = systematics.GetTotalSystErr(pt,avErryfdhPC); // in percentage
220 avErryl = avErrylPC * average ;
221 avErryh = avErryhPC * average ;
222// cout << " syst av-l="<<avErryl<<", av-h="<<avErryh<<endl;
223// cout << " fd-l-pc="<<avErryfdlPC<<", fd-h-pc="<<avErryfdhPC<<", syst err(no fd)-pc="<<systematics.GetTotalSystErr(pt)<<", av-l-pc="<<avErrylPC<<", av-h-pc="<<avErryhPC<<endl;
224
225 // fill in the histos and TGraphs
226 // fill them only when for non empty bins
227 if ( average > 0.1 ) {
228 histoSigmaCorr->SetBinContent(ibin,average);
229 histoSigmaCorr->SetBinError(ibin,averageStatUnc);
230 gSigmaCorr->SetPoint(ibin,pt,average);
231 gSigmaCorr->SetPointError(ibin,valFcErrx,valFcErrx,avErryl,avErryh);
232 gSigmaCorrConservative->SetPoint(ibin,pt,average);
233 gSigmaCorrConservative->SetPointError(ibin,valFcErrx,valFcErrx,avErryfdl,avErryfdh);
234 gSigmaCorrConservativePC->SetPoint(ibin,pt,0.);
235 gSigmaCorrConservativePC->SetPointError(ibin,valFcErrx,valFcErrx,avErryfdlPC,avErryfdhPC);
ce4c4d27 236 gFcCorrConservative->SetPoint(ibin,pt,corrfd);
237 gFcCorrConservative->SetPointError(ibin,valFcErrx,valFcErrx,corrfdl,corrfdh);
066998f0 238 }
239
240 }
241
242
243 gROOT->SetStyle("Plain");
244 gStyle->SetOptTitle(0);
245
246 //
247 // Plot the results
ce4c4d27 248 TH2F *histo2Draw = new TH2F("histo2Draw","histo2 (for drawing)",100,0,20.,100,1e3,5e7);
066998f0 249 histo2Draw->SetStats(0);
250 histo2Draw->GetXaxis()->SetTitle("p_{T} [GeV]");
251 histo2Draw->GetXaxis()->SetTitleSize(0.05);
252 histo2Draw->GetXaxis()->SetTitleOffset(0.95);
253 histo2Draw->GetYaxis()->SetTitle("#frac{1}{BR} #times #frac{d#sigma}{dp_{T}} |_{|y|<0.5}");
254 histo2Draw->GetYaxis()->SetTitleSize(0.05);
255 //
256 TCanvas *combinefdunc = new TCanvas("combinefdunc","show the FD results combination");
257 //
258 histo2Draw->Draw();
259 //
260 histoSigmaCorrFc->SetMarkerStyle(20);
261 histoSigmaCorrFc->SetMarkerColor(kGreen+2);
262 histoSigmaCorrFc->SetLineColor(kGreen+2);
263 histoSigmaCorrFc->Draw("esame");
264 gSigmaCorrConservativeFc->SetMarkerStyle(20);
265 gSigmaCorrConservativeFc->SetMarkerColor(kGreen+2);
266 gSigmaCorrConservativeFc->SetLineColor(kGreen+2);
ce4c4d27 267 gSigmaCorrConservativeFc->SetFillStyle(3004);//2);
066998f0 268 gSigmaCorrConservativeFc->SetFillColor(kGreen);
269 gSigmaCorrConservativeFc->Draw("2[]same");
270 //
271 histoSigmaCorrNb->SetMarkerStyle(25);
272 histoSigmaCorrNb->SetMarkerColor(kViolet+5);
273 histoSigmaCorrNb->SetLineColor(kViolet+5);
274 histoSigmaCorrNb->Draw("esame");
275 gSigmaCorrConservativeNb->SetMarkerStyle(25);
ce4c4d27 276 gSigmaCorrConservativeNb->SetMarkerColor(kOrange+7);//kViolet+5);
277 gSigmaCorrConservativeNb->SetLineColor(kOrange+7);//kOrange+7);//kViolet+5);
278 gSigmaCorrConservativeNb->SetFillStyle(3018);//02);
066998f0 279 gSigmaCorrConservativeNb->SetFillColor(kMagenta);
280 gSigmaCorrConservativeNb->Draw("2[]same");
281 //
282 gSigmaCorrConservative->SetLineColor(kRed);
ce4c4d27 283 gSigmaCorrConservative->SetLineWidth(2);
066998f0 284 gSigmaCorrConservative->SetFillColor(kRed);
285 gSigmaCorrConservative->SetFillStyle(0);
286 gSigmaCorrConservative->Draw("2");
287 histoSigmaCorr->SetMarkerColor(kRed);
288 histoSigmaCorr->Draw("esame");
289 //
ce4c4d27 290 //
291 TLegend* leg=combinefdunc->BuildLegend();
292 leg->SetFillStyle(0);
066998f0 293 combinefdunc->SetLogy();
294 combinefdunc->Update();
295
ce4c4d27 296 TCanvas *combinefcunc = new TCanvas("combinefcunc","show the fc FD results combination");
297 //
298 TH2F *histo3Draw = new TH2F("histo3Draw","histo3 (for drawing)",100,0,20.,10,0.,1.);
299 histo3Draw->SetStats(0);
300 histo3Draw->GetXaxis()->SetTitle("p_{T} [GeV]");
301 histo3Draw->GetXaxis()->SetTitleSize(0.05);
302 histo3Draw->GetXaxis()->SetTitleOffset(0.95);
303 histo3Draw->GetYaxis()->SetTitle("Prompt fraction of the raw yields");
304 histo3Draw->GetYaxis()->SetTitleSize(0.05);
305 histo3Draw->Draw();
306 //
307 gFcConservativeFc->SetMarkerStyle(20);
308 gFcConservativeFc->SetMarkerColor(kGreen+2);
309 gFcConservativeFc->SetLineColor(kGreen+2);
310 gFcConservativeFc->SetFillStyle(3004);
311 gFcConservativeFc->SetFillColor(kGreen);
312 gFcConservativeFc->Draw("2P");
313 //
314 gFcConservativeNb ->SetMarkerStyle(25);
315 gFcConservativeNb ->SetMarkerSize(1.3);
316 gFcConservativeNb->SetMarkerColor(kOrange+7);//kViolet+5);
317 gFcConservativeNb->SetLineColor(kOrange+7);//kViolet+5);
318 gFcConservativeNb->SetFillStyle(3018);
319 gFcConservativeNb->SetFillColor(kMagenta);
320 gFcConservativeNb->Draw("2P");
321 //
322 gFcCorrConservative->SetMarkerStyle(21);
323 gFcCorrConservative->SetLineColor(kRed);
324 gFcCorrConservative->SetLineWidth(2);
325 gFcCorrConservative->SetFillColor(kRed);
326 gFcCorrConservative->SetFillStyle(0);
327 gFcCorrConservative->Draw("2P");
328 //
329 leg=combinefcunc->BuildLegend();
330 leg->SetFillStyle(0);
331 //
332 combinefcunc->Update();
333
066998f0 334 //
335 // Plot the results
336 TCanvas *finalresults = new TCanvas("finalresults","show all combined results");
337 //
338 if ( decay==1 ) {
339 thD0KpifromBprediction->SetLineColor(kGreen+2);
340 thD0KpifromBprediction->SetLineWidth(3);
341 thD0KpifromBprediction->SetFillColor(kGreen-6);
342 thD0KpifromBprediction->Draw("3CA");
343 thD0KpifromBprediction->Draw("CX");
344 }
345 else if ( decay==2 ) {
346 thDpluskpipiprediction->SetLineColor(kGreen+2);
347 thDpluskpipiprediction->SetLineWidth(3);
348 thDpluskpipiprediction->SetFillColor(kGreen-6);
349 thDpluskpipiprediction->Draw("3CA");
350 thDpluskpipiprediction->Draw("CX");
351 }
352 else if ( decay==3 ) {
353 thDstarD0piprediction->SetLineColor(kGreen+2);
354 thDstarD0piprediction->SetLineWidth(3);
355 thDstarD0piprediction->SetFillColor(kGreen-6);
356 thDstarD0piprediction->Draw("3CA");
357 thDstarD0piprediction->Draw("CX");
358 }
9e97ebdc 359 else if ( decay==4 ) {
360 thDsKKpiprediction->SetLineColor(kGreen+2);
361 thDsKKpiprediction->SetLineWidth(3);
362 thDsKKpiprediction->SetFillColor(kGreen-6);
363 thDsKKpiprediction->Draw("3CA");
364 thDsKKpiprediction->Draw("CX");
365 }
066998f0 366 //
367 gSigmaCorr->SetLineColor(kRed);
368 gSigmaCorr->SetLineWidth(1);
369 gSigmaCorr->SetFillColor(kRed);
370 gSigmaCorr->SetFillStyle(0);
371 gSigmaCorr->Draw("2");
372 histoSigmaCorr->SetMarkerStyle(21);
373 histoSigmaCorr->SetMarkerColor(kRed);
374 histoSigmaCorr->Draw("esame");
375 //
ce4c4d27 376 leg = new TLegend(0.7,0.75,0.87,0.5);
066998f0 377 leg->SetBorderSize(0);
378 leg->SetLineColor(0);
379 leg->SetFillColor(0);
380 leg->SetTextFont(42);
381 if ( decay==1 ) leg->AddEntry(thD0KpifromBprediction,"FONLL ","fl");
382 else if ( decay==2 ) leg->AddEntry(thDpluskpipiprediction,"FONLL ","fl");
383 else if ( decay==3 ) leg->AddEntry(thDstarD0piprediction,"FONLL ","fl");
9e97ebdc 384 else if ( decay==4 ) leg->AddEntry(thDsKKpiprediction,"FONLL ","fl");
066998f0 385 leg->AddEntry(histoSigmaCorr,"data stat. unc.","pl");
386 leg->AddEntry(gSigmaCorr,"data syst. unc.","f");
387 leg->Draw();
388 //
389 finalresults->SetLogy();
390 finalresults->Update();
391
392
393 //
394 // Draw all the systematics independently
395 systematics.DrawErrors(gSigmaCorrConservativePC);
396
397
398 // Write the output to a file
399 TFile * out = new TFile(outfilename,"recreate");
400 histoSigmaCorr->Write();
401 gSigmaCorr->Write();
402 gSigmaCorrConservative->Write();
403 gSigmaCorrConservativePC->Write();
ce4c4d27 404 gFcCorrConservative->Write();
066998f0 405 out->Write();
406
407}