Int_t colors[] = {TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack, TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack, TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack, TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack}; Int_t markers[] = {20,21,22,23,33, 24,25,26,32,27, 20,21,22,23,33, 24,25,26,32,27}; Int_t CutSet = 0;//Defaults: 250 MeV for PHOS and 300 MeV for EMCal //1: 350 MeV for both Float_t fem = 0.246; Float_t femerr = 0.028; void SetStyles(TGraph *graph, Int_t marker, Int_t color){ graph->SetMarkerStyle(marker); graph->SetMarkerColor(color); graph->SetLineColor(color); graph->SetMarkerSize(1.5); } void WriteLatex(); Float_t finalemetCorrEmcal[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t finalemetCorrPhos[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t finalemetErrorEmcal[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t finalemetErrorPhos[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t finaltotaletCorrEmcal[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t finaltotaletCorrPhos[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t finaltotaletErrorEmcal[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t finaltotaletErrorPhos[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; //neutron Float_t GetMostLikelyValue(TH1 *histo){ Float_t max = 0; Float_t maxx=0; for(Int_t bin=1;binGetNbinsX();bin++){ if(histo->GetBinContent(bin)>max){ max = histo->GetBinContent(bin); maxx = histo->GetBinCenter(bin); } } return maxx; } Float_t npartShort[10] = {382.8,329.7,260.5,186.4,128.9, 85,52.8,30.0,15.8,7.48}; Float_t npartErrShort[10] = { 6, 6, 4.4, 3.9, 3.3,2.6, 2, 1.3, 0.6,0.29}; Float_t npart[20] = {382.7, 329.4, 281.2, 239, 202.1, 169.5, 141, 116, 94.11, 75.3, 59.24, 45.58, 34.33, 25.21, 17.96, 12.58, 8.812, 6.158, 4.376, 3.064}; Float_t npartErr[20] = {3, 4.3, 4.1, 3.5, 3.3, 3.3, 3.1, 2.8, 2.6, 2.3, 1.8, 1.4, 1.1, 0.87, 0.66, 0.45, 0.26, 0.19, 0.1, 0.059}; //========================Charged Pion Reference======================================== //Arrays for defining comparison plots Float_t pionPlusEt[10] = {360.7,298.3,223.8,149.9,96.1, 58.1,32.4,16.4,7.3,2.7}; Float_t pionMinusEt[10] ={363.7,300.4,225.4,150.5,96.6, 58.4,32.5,16.5,7.4,2.8}; Float_t pionEtError[10] = {19.3, 15.3,11.3 ,7.5 , 4.8, 2.9, 1.6, 0.8,0.4,0.1}; Float_t pionEt[10] = {0,0,0,0,0, 0,0,0,0,0}; Float_t ypion[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t ypionerr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t emEtFromPions[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t emEtFromPionsErr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t emEtFromPionsPerNpart[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t emEtFromPionsPerNpartErr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t npartAlt1[20],npartAlt2[20],npartAlt3[20]; TGraphErrors *GetPionEtGraph(){ for(int i=0;i<10;i++){ pionEt[i] = (pionPlusEt[i]+pionMinusEt[i])/2.0; //emEtFromPions[i] = pionEt[i]*1.085; emEtFromPions[i] = pionEt[i]*1.171; emEtFromPionsErr[i] = emEtFromPions[i]*TMath::Sqrt(TMath::Power(0.11/1.171,2)+TMath::Power(pionEtError[i]/pionEt[i],2)); ypion[i] = pionEt[i]/(npartShort[i]/2); ypionerr[i] = pionEtError[i]/(npartShort[i]/2); emEtFromPionsPerNpart[i] = emEtFromPions[i]/(npartShort[i]/2); emEtFromPionsPerNpartErr[i] = emEtFromPionsErr[i]/(npartShort[i]/2); npartAlt1[i] = npartShort[i]+2; npartAlt2[i] = npartShort[i]-2; npartAlt3[i] = npartShort[i]+4; } TGraphErrors *gr2 = new TGraphErrors(10,npartShort,ypion,npartErrShort,ypionerr); gr2->GetYaxis()->SetTitle("dE_{T}/d#eta#frac{1}{0.5*N_{part}} [GeV]"); gr2->GetXaxis()->SetTitle("N_{part}"); gr2->SetTitle(""); gr2->GetXaxis()->SetRangeUser(0, 400); SetStyles(gr2,30,TColor::kBlue); return gr2; } TGraphErrors *GetPionEmEtGraph(){ TGraphErrors *gr3 = new TGraphErrors(10,npartAlt3,emEtFromPionsPerNpart,npartErrShort,emEtFromPionsPerNpartErr); SetStyles(gr3,29,TColor::kBlue); return gr3; } //========================Reading in corrections======================================== Float_t energyscaleerror = 0.02; Float_t nonLinError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t nonLinErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; //Float_t signalFraction[20] = {0.4,0.4,0.4,0.4,0.4, 0.4,0.4,0.4,0.4,0.4, 0.4,0.4,0.4,0.4,0.4, 0.4,0.4,0.4,0.4,0.4}; Float_t signalFraction[20] = {0.3,0.3,0.3,0.3,0.3, 0.3,0.3,0.3,0.3,0.3, 0.3,0.3,0.3,0.3,0.3, 0.3,0.3,0.3,0.3,0.3}; Float_t signalFractionError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; //Float_t averageEfficiency[20] = {0.5,0.5,0.5,0.5,0.5, 0.5,0.5,0.5,0.5,0.5, 0.5,0.5,0.5,0.5,0.5, 0.5,0.5,0.5,0.5,0.5}; Float_t averageEfficiency[20] = {1.0,1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0,1.0}; Float_t averageEfficiencyError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t efficiencyError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t efficiencyErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t neutronCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t neutronError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t neutronErrorShort[11] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0}; Float_t neutronCorrShort[11] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0}; Float_t neutronErrorPerNChShort[11] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0}; Float_t neutronCorrPerNChShort[11] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0}; Float_t neutronErrorPerNCh[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t neutronCorrPerNCh[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryCorrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryCorrPerNChShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryErrorPerNChShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryCorrPerNCh[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryErrorPerNCh[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonCorrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonErrorPerNChShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonCorrPerNChShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonErrorPerNCh[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonCorrPerNCh[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadCorrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadronErrorPerNChShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadronCorrPerNChShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadronErrorPerNCh[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadronCorrPerNCh[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t minEtErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t minEtCorrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t minEtError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t minEtCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t neutronCorrNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t neutronErrorNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t neutronErrorShortNoEffCorr[11] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0}; Float_t neutronCorrShortNoEffCorr[11] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0}; Float_t neutronErrorPerNChShortNoEffCorr[11] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0}; Float_t neutronCorrPerNChShortNoEffCorr[11] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0}; Float_t neutronErrorPerNChNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t neutronCorrPerNChNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryErrorShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryCorrShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryCorrNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryErrorNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryCorrPerNChShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryErrorPerNChShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryCorrPerNChNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t secondaryErrorPerNChNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonErrorNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonCorrNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonErrorShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonCorrShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonErrorPerNChShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonCorrPerNChShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonErrorPerNChNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonCorrPerNChNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadErrorShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadCorrShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadErrorNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadCorrNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadronErrorPerNChShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadronCorrPerNChShortNoEffCorr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadronErrorPerNChNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t hadronCorrPerNChNoEffCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonYield[10] = {109,90.5,68,46,30,18.2,10.2,5.1,2.3,0.855}; Float_t kaonYieldStatErr[10] = {0.3,0.2,0.1,0.1,0.1, 0.06,0.04,0.03,0.02,0.01}; Float_t kaonYieldSysErr[10] = {9,7,5,4,2, 1.5,0.8,0.4,0.2,0.09}; Float_t kaonYieldTotErr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonYieldPerNCh[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonYieldPerNChErr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonEtPerNCh[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Float_t kaonEtPerNChErr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0}; Double_t kaonPlusEt[2][10] = {{91.7712,75.8971,56.841,37.6962,23.9923,14.255,7.73469,3.74477,1.60505,0.578278},{6.61811,5.39337,3.9978,2.6337,1.67854,1.01849,0.557879,0.278199,0.125057,0.0592682}}; Double_t kaonMinusEt[2][10] = {{90.4723,74.9444,55.9463,37.286,23.6591,14.0413,7.63067,3.69337,1.59219,0.571019},{7.01588,5.76588,4.20933,2.80388,1.77983,1.06934,0.588003,0.292737,0.138191,0.0600075}}; Float_t averageHadEnergy = -1; Float_t averageHadEnergyError = -1; ofstream myfileHadCorrTable; void ReadMinEtCorrections(){ cout<<"Reading in min et corrections..."<> value; tmp >> error; if(i<10){ minEtCorrShort[i] = value; minEtErrorShort[i] = error; } //cout<<"min et corr cb "<Eval(trackmultiplicity[i]); int altbin = shortbin-1; if(i%2==1){altbin = shortbin+1;} //cout<<" altbin "<minEtErrorShort[altbin]) minEtError[i] = minEtErrorShort[shortbin]; else{minEtError[i] = minEtErrorShort[altbin];} if(i%2==1 && shortbin<10){shortbin++;} } // cout<<"min et corr cb "<> value; tmp >> error; if(i<20){ neutronCorr[i] = value; neutronError[i] = error; if(trackmultiplicity[i]>0){ neutronCorrPerNCh[i] = value/(trackmultiplicity[i])/2.0; neutronErrorPerNCh[i] = error/(trackmultiplicity[i])/2.0; } } // cout<<"neutroncorr cb "<> value; tmp >> error; if(i<10){ neutronCorrShort[i] = value; neutronErrorShort[i] = error; neutronCorrPerNChShort[i] = value/(trackmultiplicityShort[i])/2.0; neutronErrorPerNChShort[i] = error/(trackmultiplicityShort[i])/2.0; } //cout<<"neutroncorr cb "<> value; tmp >> error; if(i<20){ neutronCorrNoEffCorr[i] = value; neutronErrorNoEffCorr[i] = error; if(trackmultiplicity[i]>0){ neutronCorrPerNChNoEffCorr[i] = value/(trackmultiplicity[i])/2.0; neutronErrorPerNChNoEffCorr[i] = error/(trackmultiplicity[i])/2.0; } } //cout<<"neutroncorr cb "<> value; tmp >> error; if(i<10){ neutronCorrShortNoEffCorr[i] = value; neutronErrorShortNoEffCorr[i] = error; neutronCorrPerNChShortNoEffCorr[i] = value/(trackmultiplicityShort[i])/2; neutronErrorPerNChShortNoEffCorr[i] = error/(trackmultiplicityShort[i])/2; } //cout<<"neutroncorr cb "<> value; tmp >> error; if(i<20){ secondaryCorr[i] = value; secondaryError[i] = error; if(trackmultiplicity[i]>0){ secondaryCorrPerNCh[i] = value/(trackmultiplicity[i])/5.0; secondaryErrorPerNCh[i] = error/(trackmultiplicity[i])/5.0; } } //cout<<"secondarycorr cb "<> value; tmp >> error; if(i<10){ secondaryCorrShort[i] = value; secondaryErrorShort[i] = error; secondaryCorrPerNChShort[i] = value/(trackmultiplicityShort[i])/5.0; secondaryErrorPerNChShort[i] = error/(trackmultiplicityShort[i])/5.0; } i++; } mysecondaryShortfile.close(); } //Begin reading in no eff corr corrections TString secondaryInfileName = "Secondaries"+detector+"NoEffCorr.dat"; ifstream mysecondaryfile3 (secondaryInfileName.Data()); value = 0; error = 0; i=0; if (mysecondaryfile3.is_open()){ while ( mysecondaryfile3.good() ) { getline (mysecondaryfile3,inline); istringstream tmp(inline); tmp >> value; tmp >> error; if(i<20){ secondaryCorrNoEffCorr[i] = value; secondaryErrorNoEffCorr[i] = error; if(trackmultiplicity[i]>0){ secondaryCorrPerNChNoEffCorr[i] = value/(trackmultiplicity[i])/5.0; secondaryErrorPerNChNoEffCorr[i] = error/(trackmultiplicity[i])/5.0; } } //cout<<"secondarycorr cb "<> value; tmp >> error; if(i<10){ secondaryCorrShortNoEffCorr[i] = value; secondaryErrorShortNoEffCorr[i] = error; secondaryCorrPerNChShortNoEffCorr[i] = value/(trackmultiplicityShort[i])/5.0; secondaryErrorPerNChShortNoEffCorr[i] = error/(trackmultiplicityShort[i])/5.0; } //cout<<"secondarycorr cb "<> value; tmp >> error; if(i<10){ kaonCorrShort[i] = value; kaonErrorShort[i] = error; kaonCorrPerNChShort[i] = value/(trackmultiplicityShort[i]); kaonErrorPerNChShort[i] = error/(trackmultiplicityShort[i]); // cout<<"kaoncorr cb "<Eval(trackmultiplicity[i]) * trackmultiplicity[i]; int altbin = shortbin-1; if(i%2==1){altbin = shortbin+1;} //cout<<" altbin "<kaonErrorPerNChShort[altbin]) kaonError[i] = kaonErrorPerNChShort[shortbin] * trackmultiplicity[i]; else{kaonError[i] = kaonErrorPerNChShort[altbin] * trackmultiplicity[i];} if(i%2==1 && shortbin<10){shortbin++;} } //cout<<"kaoncorr cb "<> value; tmp >> error; if(i<10){ kaonCorrShortNoEffCorr[i] = value; kaonErrorShortNoEffCorr[i] = error; kaonCorrPerNChShortNoEffCorr[i] = value/(trackmultiplicityShort[i]); kaonErrorPerNChShortNoEffCorr[i] = error/(trackmultiplicityShort[i]); //cout<<"kaoncorr cb "<Eval(trackmultiplicity[i]) * trackmultiplicity[i]; int altbin = shortbin-1; if(i%2==1){altbin = shortbin+1;} //cout<<" altbin "<kaonErrorPerNChShortNoEffCorr[altbin]) kaonErrorNoEffCorr[i] = kaonErrorPerNChShortNoEffCorr[shortbin] * trackmultiplicity[i]; else{kaonErrorNoEffCorr[i] = kaonErrorPerNChShortNoEffCorr[altbin] * trackmultiplicity[i];} if(i%2==1 && shortbin<10){shortbin++;} } //cout<<"kaoncorr cb "<GetEntries()<GetZaxis()->SetRange(centbin1,centbin2); fHistPeripheralMatchedTracksEvspTvsCentEffCorr->GetZaxis()->SetRange(centbin1,centbin2); fHistMatchedTracksEvspTvsCentEffCorr500MeV->GetZaxis()->SetRange(centbin1,centbin2); fHistMatchedTracksEvspTvsCent->GetZaxis()->SetRange(centbin1,centbin2); TH1D *dataEffCorrTmp = NULL; TH1D *dataEffCorrTmp2 = NULL; TH1D *dataEffCorrPeripheralTmp = (TH1D*)fHistPeripheralMatchedTracksEvspTvsCentEffCorr->Project3D("y"); float myDataEffCorrFromPeripheral = dataEffCorrPeripheralTmp->GetMean(); TH1D *dataTmp = NULL; TH1D *foundTmp = NULL; TH1D *notfoundTmp = NULL; dataTmp = (TH1D*)fHistMatchedTracksEvspTvsCent->Project3D("y"); dataTmp->SetName(Form("dataTmp%i",centbin1)); if(isOver500MeV){ dataEffCorrTmp =(TH1D*) fHistMatchedTracksEvspTvsCentEffCorr500MeV->Project3D("y"); dataEffCorrTmp2 =(TH1D*) fHistMatchedTracksEvspTvsCentEffCorr->Project3D("y"); dataEffCorrTmp2->SetName("dataEffCorrNotOver500"); dataEffCorrTmp->SetName("dataEffCorrOver500"); foundTmp = fHistFoundHadronsvsCent500MeV->ProjectionX(Form("Found%iTmp",centbin1),centbin1,centbin2); notfoundTmp = fHistNotFoundHadronsvsCent500MeV->ProjectionX(Form("NotFound%iTmp",centbin1),centbin1,centbin2); } else{ if(effCorr){ dataEffCorrTmp = (TH1D*)fHistMatchedTracksEvspTvsCentEffCorr->Project3D("y"); dataEffCorrTmp->SetName("dataEffCorr"); } else{ dataEffCorrTmp = (TH1D*)fHistMatchedTracksEvspTvsCent->Project3D("y"); dataEffCorrTmp->SetName("dataNoEffCorr"); } dataEffCorrTmp2 = dataEffCorrTmp; //cout<<" Using "<GetName()<<" entries "<GetEntries()<ProjectionX(Form("Found%iTmp",centbin1),centbin1,centbin2); notfoundTmp = fHistNotFoundHadronsvsCent->ProjectionX(Form("NotFound%iTmp",centbin1),centbin1,centbin2); } float nfound = foundTmp->GetMean();//fHistFoundHadronsvsCent->GetBinContent(bin); float nnotfound = notfoundTmp->GetMean();//fHistNotFoundHadronsvsCent->GetBinContent(bin); //cout<<" nfound "<=refBin){//for peripheral just rescale scaleHigh = 1.01; scaleLow = 0.99; } else{ //float refData = ((TH1D*)data[refBin])->GetMean(); float refData =dataRefBin->GetMean(); float myData = ((TH1D*)dataTmp)->GetMean(); //float refDataEffCorr = ((TH1D*)dataEffCorr[refBin])->GetMean(); //cout<<" ref bin n entries "<<((TH1D*)dataEffCorr[refBin])->GetEntries()<<", "<GetEntries()<<" "; float refDataEffCorr = dataEffCorrRefBin->GetMean(); float myDataEffCorr = ((TH1D*)dataEffCorrTmp2)->GetMean(); //cout<<"ranges "<1e-5) scale1 = refData/myData;//scale without efficiency correction -> weights peripheral data by average efficiency of central bin if(TMath::Abs(myDataEffCorr)>1e-5){ //dataEffCorrRefBin->GetMean()/dataEffCorrTmp->GetMean()* dataEffCorrTmp->GetMean(); scale2 = refDataEffCorr/myDataEffCorr;//scale with efficiency correction ->actual data range scale3 = myDataEffCorrFromPeripheral/myDataEffCorr; } //cout<<" scale1 (uncorr ref) "<GetMean(); // //cout<<" i "<high) high = val; // } //cout<GetMean(); //if(myavg>high && !isPhos) high = myavg; averageHadEnergy = (low+high)/2.0; averageHadEnergyError = (high-low)/2.0; //cout<<" AVERAGE HAD ENERGY "< + fnotfound*Etotal //centrality, Nnotfound, , fnotcound, Etotal, correction if(writeTable){ myfileHadCorrTable<GetMean())<<" & "<GetMean())<(f->Get("out1")); if (!l) { std::cerr << "Could not get object list from: " << filename << std::endl; } TString prefix = "fHistNominal"; fHistNominalRawEt =(TH2F*) l->FindObject((prefix+"RawEt"+det+"Rec").Data()); fHistNominalNonLinLowEt = (TH2F*)l->FindObject((prefix+"NonLinLowEt"+det+"Rec").Data()); fHistNominalNonLinHighEt = (TH2F*)l->FindObject((prefix+"NonLinHighEt"+det+"Rec").Data()); fHistNominalEffLowEt = (TH2F*)l->FindObject((prefix+"EffLowEt"+det+"Rec").Data()); fHistNominalEffHighEt = (TH2F*)l->FindObject((prefix+"EffHighEt"+det+"Rec").Data()); fHistTotRawEt =(TH2F*) l->FindObject("fHistTotRawEtEffCorr"); fHistTotAllRawEt = (TH2F*) l->FindObject("fHistTotAllRawEtEffCorr"); fHistTotRawEtNoEffCorr = (TH2F*)l->FindObject("fHistTotRawEt"); fHistTotAllRawEtNoEffCorr = (TH2F*)l->FindObject("fHistTotAllRawEt"); fHistTotRawEt500MeV =(TH2F*) l->FindObject("fHistTotRawEtEffCorr500MeV"); fHistCentVsNchVsNcl =(TH3F*) l->FindObject("fHistCentVsNchVsNclReco"); fHistMatchedTracksEvspTvsCent =(TH3F*) l->FindObject("fHistMatchedTracksEvspTvsCent"); fHistMatchedTracksEvspTvsCentEffCorr =(TH3F*) l->FindObject("fHistMatchedTracksEvspTvsCentEffTMCorr"); fHistPeripheralMatchedTracksEvspTvsCentEffCorr =(TH3F*) l->FindObject("fHistPeripheralMatchedTracksEvspTvsCentEffTMCorr"); fHistMatchedTracksEvspTvsCentEffCorr500MeV = (TH3F*) l->FindObject("fHistMatchedTracksEvspTvsCentEffTMCorr500MeV"); fHistFoundHadronsvsCent = (TH2F*)l->FindObject("fHistFoundHadronsvsCent"); fHistNotFoundHadronsvsCent = (TH2F*)l->FindObject("fHistNotFoundHadronsvsCent"); fHistFoundHadronsvsCent500MeV = (TH2F*)l->FindObject("fHistFoundHadronsvsCent500MeV"); fHistNotFoundHadronsvsCent500MeV = (TH2F*)l->FindObject("fHistNotFoundHadronsvsCent500MeV"); fHistMatchedTracksEvspTvsCent->GetZaxis()->SetRange(refBin,refBinHigh); dataRefBin = (TH1D*) fHistMatchedTracksEvspTvsCent->Project3D("y"); dataRefBin->SetName("dataRefBin"); fHistMatchedTracksEvspTvsCentEffCorr->GetZaxis()->SetRange(refBin,refBinHigh); dataEffCorrRefBin =(TH1D*) fHistMatchedTracksEvspTvsCentEffCorr->Project3D("y"); dataEffCorrRefBin->SetName("dataEffCorrRefBin"); cout<<"Using reference centrality bins "<GetZaxis()->SetRange(bin,bin); data[bin] = fHistMatchedTracksEvspTvsCent->Project3D("y"); fHistMatchedTracksEvspTvsCentEffCorr->GetZaxis()->SetRange(bin,bin); dataEffCorr[bin] = fHistMatchedTracksEvspTvsCentEffCorr->Project3D("y"); fHistMatchedTracksEvspTvsCentEffCorr500MeV->GetZaxis()->SetRange(bin,bin); dataEffCorr500MeV[bin] = fHistMatchedTracksEvspTvsCentEffCorr500MeV->Project3D("y"); ((TH1D*)data[bin])->SetName(Form("DataEff%i",bin)); ((TH1D*)dataEffCorr[bin])->SetName(Form("DataEffCorr%i",bin)); Int_t nentries = ((TH1D*)dataEffCorr[bin])->GetEntries(); cout<<"centbin "<SetName(Form("DataEffCorr500MeV%i",bin)); rawEt[bin]= fHistTotRawEt->ProjectionX(Form("RawEt%i",bin),bin,bin); ((TH1D*)rawEt[bin])->SetName(Form("rawEt%i",bin)); partialCorrEtValues[bin-1] = (Float_t)((TH1D*)rawEt[bin])->GetMean(); partialCorrEtError[bin-1] = (Float_t) ((TH1D*)rawEt[bin])->GetMeanError(); partialCorrEtPerNPartPairValues[bin-1] = partialCorrEtValues[bin-1]/(npart[bin-1])/2.0*10; partialCorrEtPerNPartPairError[bin-1] = partialCorrEtError[bin-1]/(npart[bin-1])/2.0*10; rawEtNoEffCorr[bin]= fHistTotRawEtNoEffCorr->ProjectionX(Form("RawEtNoEffCorr%i",bin),bin,bin); ((TH1D*)rawEtNoEffCorr[bin])->SetName(Form("rawEtNoEffCorr%i",bin)); rawEtNoEffCorrValues[bin-1] = (Float_t)((TH1D*)rawEtNoEffCorr[bin])->GetMean(); rawEtNoEffCorrError[bin-1] = (Float_t) ((TH1D*)rawEtNoEffCorr[bin])->GetMeanError(); rawEtAllNoEffCorr[bin]= fHistTotAllRawEtNoEffCorr->ProjectionX(Form("RawEtAllNoEffCorr%i",bin),bin,bin); ((TH1D*)rawEtAllNoEffCorr[bin])->SetName(Form("rawEtAllNoEffCorr%i",bin)); rawEtAllNoEffCorrValues[bin-1] = (Float_t)((TH1D*)rawEtAllNoEffCorr[bin])->GetMean(); rawEtAllNoEffCorrError[bin-1] = (Float_t) ((TH1D*)rawEtAllNoEffCorr[bin])->GetMeanError(); rawEtAll[bin]= fHistTotAllRawEt->ProjectionX(Form("RawEtAll%i",bin),bin,bin); ((TH1D*)rawEtAll[bin])->SetName(Form("rawEtAll%i",bin)); rawEtAllValues[bin-1] = (Float_t)((TH1D*)rawEtAll[bin])->GetMean(); rawEtAllError[bin-1] = (Float_t) ((TH1D*)rawEtAll[bin])->GetMeanError(); //cout<<"bin "<0) averageEfficiency[bin-1] = rawEtNoEffCorrValues[bin-1]/partialCorrEtValues[bin-1]; TH1D *temp = fHistNominalRawEt->ProjectionX("temp",bin,bin); float nominal = temp->GetMean(); //cout<<" Mean "<GetMean()<<" nbins "<GetNbinsX()<ProjectionX("temp",bin,bin); float nonlinlow = temp->GetMean(); delete temp; temp = fHistNominalNonLinHighEt->ProjectionX("temp",bin,bin); float nonlinhigh = temp->GetMean(); delete temp; temp = fHistNominalEffLowEt->ProjectionX("temp",bin,bin); float efflow = temp->GetMean(); delete temp; temp = fHistNominalEffHighEt->ProjectionX("temp",bin,bin); float effhigh = temp->GetMean(); delete temp; float nonlinfracerr = 0; if(nonlinhigh >0 || nonlinlow >0) nonlinfracerr = TMath::Abs(nonlinhigh-nonlinlow)/(nonlinhigh+nonlinlow); float efffracerr = 0; if(effhigh >0 || efflow>0)efffracerr = TMath::Abs(effhigh-efflow)/(effhigh+efflow); //cout<<"cb "<ProjectionX(Form("Found%iTmp",bin),bin,bin); matchedtrackmultiplicity[bin-1] = temp->GetMean(); delete temp; temp = fHistNotFoundHadronsvsCent->ProjectionX(Form("NotFound%iTmp",bin),bin,bin); notmatchedtrackmultiplicity[bin-1] = temp->GetMean(); delete temp; } for(int cb=0;cb<20;cb++){ fHistCentVsNchVsNcl->GetXaxis()->SetRange(cb+1,cb+1); TH1D *trackmultiplicityHist = fHistCentVsNchVsNcl->Project3D("y"); TH1D *clustermultiplicityHist = fHistCentVsNchVsNcl->Project3D("z"); trackmultiplicity[cb] = (Float_t) trackmultiplicityHist->GetMean(); clustermultiplicity[cb] = (Float_t)clustermultiplicityHist->GetMean(); trackmultiplicityError[cb] = (Float_t) trackmultiplicityHist->GetMeanError(); clustermultiplicityError[cb] = (Float_t)clustermultiplicityHist->GetMeanError(); delete trackmultiplicityHist; delete clustermultiplicityHist; } int cb1 = 0; for(int cb=0;cb<10;cb++){ int cb2 = cb1+1; if(cb1<2) cb2 = cb1; //cout<<"From "<GetXaxis()->SetRange(cb1+1,cb2+1); TH1D *trackmultiplicityHistShort = fHistCentVsNchVsNcl->Project3D("y"); TH1D *clustermultiplicityHistShort = fHistCentVsNchVsNcl->Project3D("z"); trackmultiplicityShort[cb] = (Float_t) trackmultiplicityHistShort->GetMean(); clustermultiplicityShort[cb] = (Float_t)clustermultiplicityHistShort->GetMean(); trackmultiplicityShortError[cb] = (Float_t) trackmultiplicityHistShort->GetMeanError(); clustermultiplicityShortError[cb] = (Float_t)clustermultiplicityHistShort->GetMeanError(); delete trackmultiplicityHistShort; delete clustermultiplicityHistShort; if(cb1<2) cb1++; else{cb1+=2;} rawEtShort[cb]= fHistTotRawEt->ProjectionX(Form("RawEtShort%i",bin),cb1+1,cb2+1); ((TH1D*)rawEtShort[cb])->SetName(Form("rawEtShort%i",cb)); partialCorrEtValuesShort[cb] = (Float_t)((TH1D*)rawEtShort[cb])->GetMean(); partialCorrEtErrorShort[cb] = (Float_t) ((TH1D*)rawEtShort[cb])->GetMeanError(); partialCorrEtPerNChValuesShort[cb] = partialCorrEtValuesShort[cb]/(trackmultiplicityShort[cb])/2.0; partialCorrEtPerNChErrorShort[cb] = partialCorrEtErrorShort[cb]/(trackmultiplicityShort[cb])/2.0; partialCorrEtPerNPartValuesShort[cb] = partialCorrEtValuesShort[cb]/(npart[cb])/2.0; partialCorrEtPerNPartErrorShort[cb] = partialCorrEtErrorShort[cb]/(npart[cb])/2.0; partialCorrEtPerNPartPairValuesShort[cb] = partialCorrEtValues[cb]/(npart[cb])/2.0*10; partialCorrEtPerNPartPairErrorShort[cb] = partialCorrEtError[cb]/(npart[cb])/2.0*10; TH1D *temp = fHistNominalRawEt->ProjectionX("temp",cb1+1,cb2+1); float nominal = temp->GetMean(); //cout<<" Mean "<GetMean()<<" nbins "<GetNbinsX()<ProjectionX("temp",cb1+1,cb2+1); float nonlinlow = temp->GetMean(); delete temp; temp = fHistNominalNonLinHighEt->ProjectionX("temp",cb1+1,cb2+1); float nonlinhigh = temp->GetMean(); delete temp; temp = fHistNominalEffLowEt->ProjectionX("temp",cb1+1,cb2+1); float efflow = temp->GetMean(); delete temp; temp = fHistNominalEffHighEt->ProjectionX("temp",cb1+1,cb2+1); float effhigh = temp->GetMean(); delete temp; float nonlinfracerr = 0; if(nonlinhigh >0 || nonlinlow >0) nonlinfracerr = TMath::Abs(nonlinhigh-nonlinlow)/(nonlinhigh+nonlinlow); // if(isPhos){ // nonlinfracerr = 0.005; // } float efffracerr = 0; if(effhigh >0 || efflow>0)efffracerr = TMath::Abs(effhigh-efflow)/(effhigh+efflow); nonLinErrorShort[cb] = nonlinfracerr; if(isPhos){ efficiencyErrorShort[cb] = 0.005; } else{ efficiencyErrorShort[cb] = 0.02; } } } void ApplyCorrections(Float_t scale){//scale takes into account the acceptance in eta and phi and the 1/etaacc //correlation of errors: //hadCorr - calculated using matched tracks, correcting with tracking efficiency, systematic error dominated by uncertainty in energy deposited in calorimeter //kaon correction - calculated using kaon spectra, systematic errors from spectra systematic errors //neutron correction - systematic errors a bit of a fudge. //secondary correction - systematic errors from Nch vs Ncl scaling //etmin - calculated from kinematics, simulation, and pion spectra //efficiency error - determined from different material budgets //nonlinearity error - difference between test beam data and simulation //arguably kaon correction and etmin correction are somewhat correlated for(int cb = 0;cb<19;cb++){ if(trackmultiplicity[cb]>0){ partialCorrEtPerNChValues[cb] = partialCorrEtValues[cb]/(trackmultiplicity[cb]); partialCorrEtPerNChError[cb] = partialCorrEtError[cb]/(trackmultiplicity[cb]); partialCorrEtPerNPartValues[cb] = partialCorrEtValues[cb]/(npart[cb]); partialCorrEtPerNPartError[cb] = partialCorrEtError[cb]/(npart[cb]); rawEtNoEffCorrPerNChValues[cb] = rawEtNoEffCorrValues[cb]/(trackmultiplicity[cb]); rawEtNoEffCorrPerNChError[cb] = rawEtNoEffCorrError[cb]/(trackmultiplicity[cb]); rawEtAllNoEffCorrPerNChValues[cb] = rawEtAllNoEffCorrValues[cb]/(trackmultiplicity[cb]); rawEtAllNoEffCorrPerNChError[cb] = rawEtAllNoEffCorrError[cb]/(trackmultiplicity[cb]); rawEtAllPerNChValues[cb] = rawEtAllValues[cb]/(trackmultiplicity[cb]); rawEtAllPerNChError[cb] = rawEtAllError[cb]/(trackmultiplicity[cb]); rawEtNoEffCorrPerNPartValues[cb] = rawEtNoEffCorrValues[cb]/(npart[cb]); rawEtNoEffCorrPerNPartError[cb] = rawEtNoEffCorrError[cb]/(npart[cb]); rawEtAllNoEffCorrPerNPartValues[cb] = rawEtAllNoEffCorrValues[cb]/(npart[cb]); rawEtAllNoEffCorrPerNPartError[cb] = rawEtAllNoEffCorrError[cb]/(npart[cb]); rawEtAllPerNPartValues[cb] = rawEtAllValues[cb]/(npart[cb]); rawEtAllPerNPartError[cb] = rawEtAllError[cb]/(npart[cb]); matchedtrackmultiplicityPerNCh[cb] = matchedtrackmultiplicity[cb]/(trackmultiplicity[cb]); notmatchedtrackmultiplicityPerNCh[cb] = notmatchedtrackmultiplicity[cb]/(trackmultiplicity[cb]); } if(clustermultiplicity[cb]>0){ partialCorrEtPerNClValues[cb] = partialCorrEtValues[cb]/(clustermultiplicity[cb]); partialCorrEtPerNClError[cb] = partialCorrEtError[cb]/(clustermultiplicity[cb]); rawEtNoEffCorrPerNClValues[cb] = rawEtNoEffCorrValues[cb]/(clustermultiplicity[cb]); rawEtNoEffCorrPerNClError[cb] = rawEtNoEffCorrError[cb]/(clustermultiplicity[cb]); rawEtAllNoEffCorrPerNClValues[cb] = rawEtAllNoEffCorrValues[cb]/(clustermultiplicity[cb]); rawEtAllNoEffCorrPerNClError[cb] = rawEtAllNoEffCorrError[cb]/(clustermultiplicity[cb]); rawEtAllPerNClValues[cb] = rawEtAllValues[cb]/(clustermultiplicity[cb]); rawEtAllPerNClError[cb] = rawEtAllError[cb]/(clustermultiplicity[cb]); matchedtrackmultiplicityPerNCl[cb] = matchedtrackmultiplicity[cb]/(clustermultiplicity[cb]); notmatchedtrackmultiplicityPerNCl[cb] = notmatchedtrackmultiplicity[cb]/(clustermultiplicity[cb]); } totaltrackmultiplicityPerNCh[cb] = matchedtrackmultiplicityPerNCh[cb] + notmatchedtrackmultiplicityPerNCh[cb]; totaltrackmultiplicityPerNCl[cb] = matchedtrackmultiplicityPerNCl[cb] + notmatchedtrackmultiplicityPerNCl[cb]; // if(scale<4.0){ // kaonCorr[cb] = 100.0/40.0*kaonCorr[cb]; // kaonError[cb] = 100.0/40.0*kaonError[cb]; // } //cout<<"cb "<9) fracraw3 = 15.0; //cout<<"cb "<0) totEtError[cb] = TMath::Sqrt(totaletvariance); else{cout<<" var err "<0)cout<SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetOptFit(0); CutSet = cutset; TString filename, simfilename; if(cutset==0){ if(isPhos){ if(isMC){ //filename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.PHOS.LHC11a10a_bis.Run139465.root"; filename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.PHOS.LHC11a10a_bis.root"; } else{ filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.PHOS.LHC10hPass2.Run139465.root"; } simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.PHOS.LHC11a10a_bis.Run139465.root"; } else{ //filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal.LHC10hPass2.Run139465.LooseTrackMatchCuts.root"; //simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.LooseTrackMatchCuts.root"; if(isMC){ filename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.root"; } else{ filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal.LHC10hPass2.Run139465.root"; } simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.root"; } } if(cutset==1){ if(isPhos){ filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.PHOS350MeVCut.LHC10hPass2.Run139465.root"; simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.PHOS350MeVCut.LHC11a10a_bis.Run139465.root"; } else{ //filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal.LHC10hPass2.Run139465.LooseTrackMatchCuts.root"; //simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.LooseTrackMatchCuts.root"; filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal350MeVCut.LHC10hPass2.Run139465.root"; simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal350MeVCut.LHC11a10a_bis.Run139465.root"; } } if(cutset==2){ if(isPhos){ filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.PHOS400MeVCut.LHC10hPass2.Run139465.root"; simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.PHOS400MeVCut.LHC11a10a_bis.Run139465.root"; } else{ //filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal.LHC10hPass2.Run139465.LooseTrackMatchCuts.root"; //simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.LooseTrackMatchCuts.root"; filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal400MeVCut.LHC10hPass2.Run139465.root"; simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal400MeVCut.LHC11a10a_bis.Run139465.root"; } } if(cutset==3){ if(isPhos){ filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.PHOSOldHadMethod.LHC10hPass2.Run139465.root"; simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.PHOSOldHadMethod.LHC11a10a_bis.root"; corrfac = 0.174236; corrfacerr = 0.0423712; } else{ //filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal.LHC10hPass2.Run139465.LooseTrackMatchCuts.root"; //simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.LooseTrackMatchCuts.root"; filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCalOldHadMethod.LHC10hPass2.Run139465.root"; simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCalOldHadMethod.LHC11a10a_bis.root"; corrfac = 0.283921; corrfacerr = 0.0362492; } } if(cutset==4){ year = "2011"; if(isPhos){ if(isMC){ filename = "rootFiles/LHC13e1abcCombined/Et.ESD.simPbPb.PHOS.LHC13e1abc.root"; } else{ filename = "rootFiles/LHC11hPass2/Et.ESD.realPbPb.PHOS.LHC11hPass2.Run168464.root"; } corrfac = 0.16382; corrfacerr = 0.0830542; simfilename = "rootFiles/LHC13e1abcCombined/Et.ESD.simPbPb.PHOS.LHC13e1abc.root"; } else{ if(isMC){ filename = "rootFiles/LHC13e1abcCombined/Et.ESD.simPbPb.EMCal.LHC13e1abc.root"; } else{ //filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal.LHC10hPass2.Run139465.LooseTrackMatchCuts.root"; //simfilename = "rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.LooseTrackMatchCuts.root"; filename = "rootFiles/LHC11hPass2/Et.ESD.realPbPb.EMCal.LHC11hPass2.Run168464.root"; } corrfac = 0.196084; corrfacerr = 0.0410244; simfilename = "rootFiles/LHC13e1abcCombined/Et.ESD.simPbPb.EMCal.LHC13e1abc.root"; } } cout<<"data file name = "<LoadMacro("macros/PlotSecondariesCorr.C"); //PlotSecondariesCorr(simfilename,filename); ReadInData(filename,detector); ReadInNeutronCorrections(); ReadInSecondaryCorrections(); ReadInKaonCorrections(); ReadMinEtCorrections(); CalculateHadronCorrections(isPhos); ApplyCorrections(scale); TCanvas *c1 = new TCanvas("c1","Corrections",500,400); c1->SetTopMargin(0.02); c1->SetRightMargin(0.02); c1->SetBorderSize(0); c1->SetFillColor(0); c1->SetFillColor(0); c1->SetBorderMode(0); c1->SetFrameFillColor(0); c1->SetFrameBorderMode(0); c1->SetLeftMargin(0.120968); //c1->SetRightMargin(); //c1->SetTopMargin(); c1->SetBottomMargin(0.15); c1->SetLogx(); TGraphErrors *graphKaonCorrectionShort = GetKaonCorrectionGraphShort(); graphKaonCorrectionShort->Draw("AP"); //graphKaonCorrectionShort->SetMaximim(0.02); //graphKaonCorrectionShort->GetYaxis()->SetRange(1,graphKaonCorrectionShort->GetYaxis()->FindBin(0.02)); float emcalmax = 0.006; if(cutset==4){//2011 data emcalmax = 7.65/scale*emcalmax; } graphKaonCorrectionShort->GetHistogram()->SetMaximum(emcalmax); //set scales the same within naive geometric scaling if(isPhos) graphKaonCorrectionShort->GetHistogram()->SetMaximum(emcalmax*0.24/1.2*60.0/40.0); graphKaonCorrectionShort->GetHistogram()->GetXaxis()->SetLabelSize(0.04); graphKaonCorrectionShort->GetHistogram()->GetYaxis()->SetLabelSize(0.04); graphKaonCorrectionShort->GetHistogram()->GetXaxis()->SetTitleSize(0.06); graphKaonCorrectionShort->GetHistogram()->GetYaxis()->SetTitleSize(0.06); graphKaonCorrectionShort->GetXaxis()->SetTitle("N_{Ch}"); graphKaonCorrectionShort->GetYaxis()->SetTitle("Correction/N_{Ch}"); TGraphErrors *graphKaonCorrection = GetKaonCorrectionGraph(); graphKaonCorrection->Draw("P same"); TGraphErrors *graphSecondaryCorrectionShort = GetSecondaryCorrectionGraphShort(); graphSecondaryCorrectionShort->Draw("P same"); TGraphErrors *graphNeutronCorrectionShort = GetNeutronCorrectionGraphShort(); graphNeutronCorrectionShort->Draw("P same"); TGraphErrors *graphSecondaryCorrection = GetSecondaryCorrectionGraph(); graphSecondaryCorrection->Draw("P same"); TGraphErrors *graphNeutronCorrection = GetNeutronCorrectionGraph(); graphNeutronCorrection->Draw("P same"); TGraphErrors *graphHadronCorrection = GetHadronCorrectionGraph(); graphHadronCorrection->Draw("P same"); TGraphErrors *graphHadronCorrectionShort = GetHadronCorrectionGraphShort(); graphHadronCorrectionShort->Draw("P same"); TGraphErrors *graphTotalCorrection = GetTotalCorrectionPerNChGraph(); graphTotalCorrection->Draw("P same"); TLegend *leg = new TLegend(0.538306,0.756684,0.739919,0.97861); leg->SetFillStyle(0); leg->SetFillColor(0); leg->SetBorderSize(0); leg->SetTextSize(0.03); leg->SetTextSize(0.038682); leg->AddEntry(graphKaonCorrectionShort,"Kaon correction/N_{ch}","P"); leg->AddEntry(graphNeutronCorrectionShort,"Neutron correction/2.0 N_{ch}","P"); leg->AddEntry(graphSecondaryCorrectionShort,"Secondary correction/5.0 N_{ch}","P"); leg->AddEntry(graphHadronCorrectionShort,"Hadron correction/5.0 N_{ch}","P"); leg->AddEntry(graphTotalCorrection,"(E_{T}^{kaon}+E_{T}^{n}+E_{T}^{secondary}+E_{T}^{h})/20.0 N_{ch}","P"); leg->Draw(); TString corrplotname1 = "/tmp/CorrectionsVsNch"+detector+".eps"; c1->SaveAs(corrplotname1.Data()); // TH1F *frame = new TH1F("frame","frame",1,0,2); // frame->GetYaxis()->SetTitle("dE_{T}/d#eta"); // frame->GetXaxis()->SetTitle("N_{part}"); // //fPion->SetRange(0,2); // frame->SetMinimum(0); // frame->SetMaximum(10); // TCanvas *c1a = new TCanvas("c1a","CorrectionsNoEffCorr",500,400); // c1a->SetTopMargin(0.02); // c1a->SetRightMargin(0.02); // c1a->SetBorderSize(0); // c1a->SetFillColor(0); // c1a->SetFillColor(0); // c1a->SetBorderMode(0); // c1a->SetFrameFillColor(0); // c1a->SetFrameBorderMode(0); // c1a->SetLeftMargin(0.120968); // //c1a->SetRightMargin(); // //c1a->SetTopMargin(); // c1a->SetBottomMargin(0.15); // c1a->SetLogx(); // TGraphErrors *graphKaonCorrectionShortNoEffCorr = GetKaonCorrectionGraphShortNoEffCorr(); // graphKaonCorrectionShortNoEffCorr->Draw("AP"); // //graphKaonCorrectionShort->SetMaximim(0.02); // //graphKaonCorrectionShort->GetYaxis()->SetRange(1,graphKaonCorrectionShort->GetYaxis()->FindBin(0.02)); // float emcalmax = 0.006; // graphKaonCorrectionShortNoEffCorr->GetHistogram()->SetMaximum(emcalmax); // //set scales the same within naive geometric scaling // if(isPhos) graphKaonCorrectionShortNoEffCorr->GetHistogram()->SetMaximum(emcalmax*0.24/1.2*60.0/40.0); // graphKaonCorrectionShortNoEffCorr->GetHistogram()->GetXaxis()->SetLabelSize(0.04); // graphKaonCorrectionShortNoEffCorr->GetHistogram()->GetYaxis()->SetLabelSize(0.04); // graphKaonCorrectionShortNoEffCorr->GetHistogram()->GetXaxis()->SetTitleSize(0.06); // graphKaonCorrectionShortNoEffCorr->GetHistogram()->GetYaxis()->SetTitleSize(0.06); // graphKaonCorrectionShortNoEffCorr->GetXaxis()->SetTitle("N_{Ch}"); // graphKaonCorrectionShortNoEffCorr->GetYaxis()->SetTitle("Correction/N_{Ch}"); // TGraphErrors *graphKaonCorrectionNoEffCorr = GetKaonCorrectionGraphNoEffCorr(); // graphKaonCorrectionNoEffCorr->Draw("P same"); // TGraphErrors *graphSecondaryCorrectionShortNoEffCorr = GetSecondaryCorrectionGraphShortNoEffCorr(); // graphSecondaryCorrectionShortNoEffCorr->Draw("P same"); // TGraphErrors *graphNeutronCorrectionShortNoEffCorr = GetNeutronCorrectionGraphShortNoEffCorr(); // graphNeutronCorrectionShortNoEffCorr->Draw("P same"); // TGraphErrors *graphSecondaryCorrectionNoEffCorr = GetSecondaryCorrectionGraphNoEffCorr(); // graphSecondaryCorrectionNoEffCorr->Draw("P same"); // TGraphErrors *graphNeutronCorrectionNoEffCorr = GetNeutronCorrectionGraphNoEffCorr(); // graphNeutronCorrectionNoEffCorr->Draw("P same"); // TGraphErrors *graphHadronCorrectionNoEffCorr = GetHadronCorrectionGraphNoEffCorr(); // graphHadronCorrectionNoEffCorr->Draw("P same"); // TGraphErrors *graphHadronCorrectionShortNoEffCorr = GetHadronCorrectionGraphShortNoEffCorr(); // graphHadronCorrectionShortNoEffCorr->Draw("P same"); // TGraphErrors *graphTotalCorrectionNoEffCorr = GetTotalCorrectionPerNChGraphNoEffCorr(); // graphTotalCorrectionNoEffCorr->Draw("P same"); // TLegend *leg2 = new TLegend(0.538306,0.756684,0.739919,0.97861); // leg2->SetFillStyle(0); // leg2->SetFillColor(0); // leg2->SetBorderSize(0); // leg2->SetTextSize(0.03); // leg2->SetTextSize(0.038682); // leg2->AddEntry(graphKaonCorrectionShortNoEffCorr,"Kaon correction/N_{ch}","P"); // leg2->AddEntry(graphNeutronCorrectionShortNoEffCorr,"Neutron correction/N_{ch}","P"); // leg2->AddEntry(graphSecondaryCorrectionShortNoEffCorr,"Secondary correction/5.0 N_{ch}","P"); // leg2->AddEntry(graphHadronCorrectionShortNoEffCorr,"Hadron correction/5.0 N_{ch}","P"); // leg2->AddEntry(graphTotalCorrectionNoEffCorr,"(E_{T}^{kaon}+E_{T}^{n}+E_{T}^{secondary}+E_{T}^{h})/20.0 N_{ch}","P"); // leg2->Draw(); // TString corrplotname1 = "/tmp/CorrectionsVsNch"+detector+"NoEffCorr.eps"; // c1a->SaveAs(corrplotname1.Data()); // TCanvas *c2 = new TCanvas("c2","Min Et Correction",600,400); // c2->SetTopMargin(0.02); // c2->SetRightMargin(0.02); // c2->SetBorderSize(0); // c2->SetFillColor(0); // c2->SetFillColor(0); // c2->SetBorderMode(0); // c2->SetFrameFillColor(0); // c2->SetFrameBorderMode(0); // c2->SetLogx(); // TGraphErrors *graphMinEtCorrectionShort = GetMinEtCorrectionGraphShort(); // graphMinEtCorrectionShort->GetXaxis()->SetTitle("f_{ETmin}"); // graphMinEtCorrectionShort->GetYaxis()->SetTitle("Correction/N_{Ch}"); // // graphMinEtCorrectionShort->GetHistogram()->SetMaximum(1.0); // // graphMinEtCorrectionShort->GetHistogram()->SetMinimum(0.0); // graphMinEtCorrectionShort->Draw("AP"); // graphKaonCorrectionShort->GetXaxis()->SetTitle("N_{Ch}"); // graphKaonCorrectionShort->GetYaxis()->SetTitle("f_{EtMin}"); // TGraphErrors *graphMinEtCorrection = GetMinEtCorrectionGraph(); // graphMinEtCorrection->Draw("P same"); // TString corrplotname2 = "/tmp/EtMinVsNch"+detector+".eps"; // c2->SaveAs(corrplotname2.Data()); // TCanvas *c3 = new TCanvas("c3","Kaon Correction",600,400); // c3->SetTopMargin(0.02); // c3->SetRightMargin(0.02); // c3->SetBorderSize(0); // c3->SetFillColor(0); // c3->SetFillColor(0); // c3->SetBorderMode(0); // c3->SetFrameFillColor(0); // c3->SetFrameBorderMode(0); // c3->SetLogx(); // TGraphErrors *graphKaonGraph = GetKaonGraph(); // graphKaonGraph->Draw("AP"); // //graphKaonGraph->GetHistogram()->SetMaximum(); // graphKaonGraph->GetHistogram()->SetMinimum(0.0); // graphKaonGraph->GetXaxis()->SetTitle("N_{Ch}"); // graphKaonGraph->GetYaxis()->SetTitle("val/N_{Ch}"); // graphKaonCorrectionShort->Draw("P same"); // TGraphErrors *graphKaonEtGraph = GetKaonEtGraph(); // graphKaonEtGraph->Draw("P same"); // TLegend *leg3 = new TLegend(0.602349,0.362903,0.805369,0.586022); // leg3->SetFillStyle(0); // leg3->SetFillColor(0); // leg3->SetBorderSize(0); // leg3->SetTextSize(0.03); // leg3->SetTextSize(0.038682); // leg3->AddEntry(graphKaonGraph,"N_{K^{#pm}}/N_{Ch}","P"); // leg3->AddEntry(graphKaonCorrectionShort,"E_{T}^{kaon}","P"); // leg3->AddEntry(graphKaonEtGraph,"E_{T}^{K^{#pm}}/N_{Ch}","P"); // leg3->Draw(); // TString corrplotname3 = "/tmp/KaonVsNch"+detector+".eps"; // c3->SaveAs(corrplotname3.Data()); TCanvas *c4 = new TCanvas("c4", "dE_{T}/d#eta#frac{1}{0.5*N_{part}} [GeV]",700, 600); c4->SetTopMargin(0.02); c4->SetRightMargin(0.02); c4->SetBorderSize(0); c4->SetFillColor(0); c4->SetFillColor(0); c4->SetBorderMode(0); c4->SetFrameFillColor(0); c4->SetFrameBorderMode(0); TGraphErrors *graphEt = GetEtGraph(); graphEt->GetHistogram()->GetXaxis()->SetTitle("N_{part}"); graphEt->GetHistogram()->GetYaxis()->SetTitle("(E_{T}/(N_{part}/2)"); graphEt->GetHistogram()->SetMinimum(0.0); graphEt->GetHistogram()->SetMaximum(3.0); graphEt->Draw("AP"); TGraphErrors *graphPartialCorr = GetPartialCorrEtPerNPartPairGraph(); //graphPartialCorr->Draw("P same"); TGraphErrors *graphPionEt = GetPionEtGraph(); graphPionEt->Draw("P same"); TGraphErrors *graphPionEmEt = GetPionEmEtGraph(); graphPionEmEt->Draw("P same"); TGraphErrors *graphEtFormulaC = GetEtGraphFormulaC(); //graphEtFormulaC->Draw("P same"); TGraphErrors *graphEtFormulaB = GetEtGraphFormulaB(); //graphEtFormulaB->Draw("P same"); TLegend *leg2 = new TLegend(0.607383,0.704301,0.810403,0.927419); leg2->SetFillStyle(0); leg2->SetFillColor(0); leg2->SetBorderSize(0); leg2->SetTextSize(0.03); leg2->SetTextSize(0.038682); leg2->AddEntry(graphEt,"E_{T}^{EM}","P"); leg2->AddEntry(graphPionEt,"E_{T}^{#pi^{#pm}}","P"); leg2->AddEntry(graphPionEmEt,"E_{T}^{EM calc. from #pi}","P"); //leg2->AddEntry(graphEtFormulaC,"E_{T}^{EM} Formula C","P"); //leg2->AddEntry(graphEtFormulaB,"E_{T}^{EM} Formula B","P"); leg2->Draw(); TString corrplotname4 = "/tmp/EtVsNpart"+detector+".eps"; c4->SaveAs(corrplotname4.Data()); TString corrplotname4a = "/tmp/EtVsNpart"+detector+".png"; c4->SaveAs(corrplotname4a.Data()); // TCanvas *c5 = new TCanvas("c5", "Raw Et Vs NCh",1200, 400); // c5->SetTopMargin(0.02); // c5->SetRightMargin(0.02); // c5->SetBorderSize(0); // c5->SetFillColor(0); // c5->SetFillColor(0); // c5->SetBorderMode(0); // c5->SetFrameFillColor(0); // c5->SetFrameBorderMode(0); // c5->Divide(2); // c5->cd(1); // TGraphErrors *partialCorrEtPerNCh = GetPartialCorrEtPerNChGraph(); // partialCorrEtPerNCh->GetHistogram()->SetMaximum(0.1*7.5/scale);//so PHOS and EMCal scales are similar... partialCorrEtPerNCh->GetHistogram()->SetMinimum(0.0); // partialCorrEtPerNCh->GetHistogram()->GetXaxis()->SetTitle("N_{Ch}"); // partialCorrEtPerNCh->GetHistogram()->GetYaxis()->SetTitle("(E_{T}/#epsilon f_{nonlin})/N_{Ch}"); // partialCorrEtPerNCh->Draw("AP"); // TGraphErrors *graphRawNoEffCorrCh = GetRawEtNoEffCorrPerNChGraph(); // graphRawNoEffCorrCh->Draw("P same"); // TGraphErrors *graphRawAllNoEffCorrCh = GetRawEtAllNoEffCorrPerNChGraph(); // graphRawAllNoEffCorrCh->Draw("P same"); // TGraphErrors *graphRawAllCh = GetRawEtAllPerNChGraph(); // graphRawAllCh->Draw("P same"); // TLegend *leg5 = new TLegend(0.416667,0.173077,0.62069,0.396853); // leg5->SetFillStyle(0); // leg5->SetFillColor(0); // leg5->SetBorderSize(0); // leg5->SetTextSize(0.03); // leg5->SetTextSize(0.038682); // leg5->AddEntry(partialCorrEtPerNCh,"E_{T}#delta_{TM}/#epsilon f_{nonlin}","P"); // leg5->AddEntry(graphRawNoEffCorrCh,"E_{T}#delta_{TM}/ f_{nonlin}","P"); // leg5->AddEntry(graphRawAllCh,"E_{T}/#epsilon f_{nonlin}","P"); // leg5->AddEntry(graphRawAllNoEffCorrCh,"E_{T}/f_{nonlin}","P"); // leg5->Draw(); // TString corrplotname5 = "/tmp/RawEtVsNch"+detector+".eps"; // c5->SaveAs(corrplotname5.Data()); // // TCanvas *c6 = new TCanvas("c6", "Raw Et Vs NCl",700, 600); // // c6->SetTopMargin(0.02); // // c6->SetRightMargin(0.02); // // c6->SetBorderSize(0); // // c6->SetFillColor(0); // // c6->SetFillColor(0); // // c6->SetBorderMode(0); // // c6->SetFrameFillColor(0); // // c6->SetFrameBorderMode(0); // c5->cd(2); // TGraphErrors *graphRawAllCl = GetRawEtAllPerNClGraph(); // graphRawAllCl->GetHistogram()->GetXaxis()->SetTitle("N_{Ch}"); // graphRawAllCl->GetHistogram()->GetYaxis()->SetTitle("(E_{T}/#epsilon f_{nonlin})/N_{Ch}"); // graphRawAllCl->Draw("AP"); // TGraphErrors *partialCorrEtPerNCl = GetPartialCorrEtPerNClGraph(); // partialCorrEtPerNCl->GetHistogram()->GetXaxis()->SetTitle("N_{Ch}"); // partialCorrEtPerNCl->GetHistogram()->GetYaxis()->SetTitle("(E_{T}/#epsilon f_{nonlin})/N_{Ch}"); // partialCorrEtPerNCl->Draw("P same"); // TGraphErrors *graphRawNoEffCorrCl = GetRawEtNoEffCorrPerNClGraph(); // graphRawNoEffCorrCl->Draw("P same"); // TGraphErrors *graphRawAllNoEffCorrCl = GetRawEtAllNoEffCorrPerNClGraph(); // graphRawAllNoEffCorrCl->Draw("P same"); // TLegend *leg6 = new TLegend(0.416667,0.173077,0.62069,0.396853); // leg6->SetFillStyle(0); // leg6->SetFillColor(0); // leg6->SetBorderSize(0); // leg6->SetTextSize(0.03); // leg6->SetTextSize(0.038682); // leg6->AddEntry(partialCorrEtPerNCl,"E_{T}#delta_{TM}/#epsilon f_{nonlin}","P"); // leg6->AddEntry(graphRawNoEffCorrCl,"E_{T}#delta_{TM}/ f_{nonlin}","P"); // leg6->AddEntry(graphRawAllCl,"E_{T}/#epsilon f_{nonlin}","P"); // leg6->AddEntry(graphRawAllNoEffCorrCl,"E_{T}/f_{nonlin}","P"); // leg6->Draw(); // TString corrplotname5 = "/tmp/RawEtVsNcl"+detector+".eps"; // c5->SaveAs(corrplotname5.Data()); // TCanvas *c7 = new TCanvas("c7", "Matched tracks",1200, 400); // c7->SetTopMargin(0.02); // c7->SetRightMargin(0.02); // c7->SetBorderSize(0); // c7->SetFillColor(0); // c7->SetFillColor(0); // c7->SetBorderMode(0); // c7->SetFrameFillColor(0); // c7->SetFrameBorderMode(0); // c7->Divide(2); // c7->cd(1); // TGraphErrors *graphTotalPerNCh = GetTotalTracksPerNChGraph(); // graphTotalPerNCh->GetHistogram()->GetXaxis()->SetTitle("N_{Ch}"); // graphTotalPerNCh->GetHistogram()->GetYaxis()->SetTitle("Number of tracks/N_{Ch}"); // graphTotalPerNCh->GetHistogram()->SetMaximum(0.06*7.5/scale);//so PHOS and EMCal scales are similar... // graphTotalPerNCh->Draw("AP"); // TGraphErrors *graphMatchedPerNCh = GetMatchedTracksPerNChGraph(); // graphMatchedPerNCh->Draw("P same"); // TGraphErrors *graphNotMatchedPerNCh = GetNotMatchedTracksPerNChGraph(); // graphNotMatchedPerNCh->Draw("P same"); // TLegend *leg7 = new TLegend(0.176003,0.637152,0.379808,0.86208); // leg7->SetFillStyle(0); // leg7->SetFillColor(0); // leg7->SetBorderSize(0); // leg7->SetTextSize(0.03); // leg7->SetTextSize(0.038682); // leg7->AddEntry(graphMatchedPerNCh,"Number of tracks matched to clusters","P"); // leg7->AddEntry(graphNotMatchedPerNCh,"Number of tracks not matched to clusters","P"); // leg7->AddEntry(graphTotalPerNCh,"Total number of tracks","P"); // leg7->Draw(); // c7->cd(2); // TGraphErrors *graphTotalPerNCl = GetTotalTracksPerNClGraph(); // graphTotalPerNCl->GetHistogram()->GetXaxis()->SetTitle("N_{Cl}"); // graphTotalPerNCl->GetHistogram()->GetYaxis()->SetTitle("Number of tracks/N_{Cl}"); // graphTotalPerNCl->GetHistogram()->SetMaximum(0.65); // graphTotalPerNCl->Draw("AP"); // TGraphErrors *graphMatchedPerNCl = GetMatchedTracksPerNClGraph(); // graphMatchedPerNCl->Draw("P same"); // TGraphErrors *graphNotMatchedPerNCl = GetNotMatchedTracksPerNClGraph(); // graphNotMatchedPerNCl->Draw("P same"); // TLine *line = new TLine(graphTotalPerNCl->GetHistogram()->GetXaxis()->GetBinLowEdge(1),0.5,graphTotalPerNCl->GetHistogram()->GetXaxis()->GetBinLowEdge(graphTotalPerNCl->GetHistogram()->GetXaxis()->GetNbins()),0.5); // line->Draw(); // TString corrplotname7 = "/tmp/TrackMatchCrossCheck"+detector+".eps"; // c7->SaveAs(corrplotname7.Data()); TCanvas *c8 = new TCanvas("c8","Signal Fraction",600,400); c8->SetTopMargin(0.02); c8->SetRightMargin(0.02); c8->SetBorderSize(0); c8->SetFillColor(0); c8->SetFillColor(0); c8->SetBorderMode(0); c8->SetFrameFillColor(0); c8->SetFrameBorderMode(0); //c8->SetLogx(); TGraphErrors *graphSignalFraction = GetSignalFractionGraph(); graphSignalFraction->GetXaxis()->SetTitle("f_{ETmin}"); graphSignalFraction->GetYaxis()->SetTitle("Correction/N_{Ch}"); graphSignalFraction->GetHistogram()->SetMaximum(0.4);//so PHOS and EMCal scales are similar... graphSignalFraction->GetHistogram()->SetMinimum(0.0);//so PHOS and EMCal scales are similar... //graphSignalFraction->GetHistogram()->SetMaximum(1.0); //graphSignalFraction->GetHistogram()->SetMinimum(0.0); graphSignalFraction->Draw("AP"); TString corrplotname8 = "/tmp/SignalFraction"+detector+".eps"; c8->SaveAs(corrplotname8.Data()); TCanvas *c9 = new TCanvas("c9","Event by event ET distribution",600,400); c9->SetTopMargin(0.02); c9->SetRightMargin(0.02); c9->SetBorderSize(0); c9->SetFillColor(0); c9->SetFillColor(0); c9->SetBorderMode(0); c9->SetFrameFillColor(0); c9->SetFrameBorderMode(0); c9->SetLogy(); c9->SetLogx(); int nbins = 15; if(isPhos) nbins = 8; //nbins = 20; for(bin = 1; bin<=nbins;bin++){ dataFits[bin] = new TF1(Form("Fit%i",bin),"[0]*exp(-(x-[1])*(x-[1])/[2])",0,250); ((TF1*)dataFits[bin])->SetParameter(0,1e3); ((TF1*)dataFits[bin])->SetParameter(1,partialCorrEtValues[bin-1]); ((TF1*)dataFits[bin])->SetParameter(2,20); //((TH1D*)rawEt[bin])->Fit(((TF1*)dataFits[bin])); } int bin = 1; ((TH1D*)rawEt[bin])->GetXaxis()->SetTitle("E_{T}^{raw}"); //if(isPhos){((TH1D*)rawEt[bin])->GetXaxis()->SetRange(1,((TH1D*)rawEt[bin])->GetXaxis()->FindBin(100));} //else{((TH1D*)rawEt[bin])->GetXaxis()->SetRange(1,((TH1D*)rawEt[bin])->GetXaxis()->FindBin(200));} ((TH1D*)rawEt[bin])->Draw(); ((TH1D*)rawEt[bin])->SetMaximum(5e4); for(bin = 1; bin<=nbins;bin+=1){ ((TH1D*)rawEt[bin])->Draw("same"); ((TH1D*)rawEt[bin])->SetLineColor(colors[bin-1]); ((TH1D*)rawEt[bin])->SetMarkerColor(colors[bin-1]); //((TF1*)dataFits[bin])->SetLineColor(colors[bin-1]); //Float_t mostlikely = GetMostLikelyValue((TH1D*)rawEt[bin]); //cout<<"cb "<GetParameter(1)<SaveAs(name9.Data()); // TCanvas *c10 = new TCanvas("c10", "Raw Et Vs NPart",1200, 400); // c10->SetTopMargin(0.02); // c10->SetRightMargin(0.02); // c10->SetBorderSize(0); // c10->SetFillColor(0); // c10->SetFillColor(0); // c10->SetBorderMode(0); // c10->SetFrameFillColor(0); // c10->SetFrameBorderMode(0); // c10->Divide(2); // c10->cd(1); // TGraphErrors *partialCorrEtPerNPart = GetPartialCorrEtPerNPartGraph(); // partialCorrEtPerNPart->GetHistogram()->SetMaximum(0.1*7.5/scale);//so PHOS and EMCal scales are similar... partialCorrEtPerNPart->GetHistogram()->SetMinimum(0.0); // partialCorrEtPerNPart->GetHistogram()->GetXaxis()->SetTitle("N_{Ch}"); // partialCorrEtPerNPart->GetHistogram()->GetYaxis()->SetTitle("(E_{T}/#epsilon f_{nonlin})/N_{Ch}"); // partialCorrEtPerNPart->Draw("AP"); // TGraphErrors *graphRawNoEffCorrNPart = GetRawEtNoEffCorrPerNPartGraph(); // graphRawNoEffCorrNPart->Draw("P same"); // TGraphErrors *graphRawAllNoEffCorrNPart = GetRawEtAllNoEffCorrPerNPartGraph(); // graphRawAllNoEffCorrNPart->Draw("P same"); // TGraphErrors *graphRawAllNPart = GetRawEtAllPerNPartGraph(); // graphRawAllNPart->Draw("P same"); // TLegend *leg5 = new TLegend(0.416667,0.173077,0.62069,0.396853); // leg5->SetFillStyle(0); // leg5->SetFillColor(0); // leg5->SetBorderSize(0); // leg5->SetTextSize(0.03); // leg5->SetTextSize(0.038682); // leg5->AddEntry(partialCorrEtPerNPart,"E_{T}#delta_{TM}/#epsilon f_{nonlin}","P"); // leg5->AddEntry(graphRawNoEffCorrNPart,"E_{T}#delta_{TM}/ f_{nonlin}","P"); // leg5->AddEntry(graphRawAllNPart,"E_{T}/#epsilon f_{nonlin}","P"); // leg5->AddEntry(graphRawAllNoEffCorrNPart,"E_{T}/f_{nonlin}","P"); // leg5->Draw(); // TString corrplotname10 = "/tmp/RawEtVsNPart"+detector+".eps"; // c10->SaveAs(corrplotname10.Data()); TCanvas *c11 = new TCanvas("c11","Event by event ET distribution",600,400); c11->SetTopMargin(0.02); c11->SetRightMargin(0.02); c11->SetBorderSize(0); c11->SetFillColor(0); c11->SetFillColor(0); c11->SetBorderMode(0); c11->SetFrameFillColor(0); c11->SetFrameBorderMode(0); c11->SetLogy(); c11->SetLogx(); int nbins = 15; if(isPhos) nbins = 8; int bin = 1; ((TH1D*)rawEtAllNoEffCorr[bin])->GetXaxis()->SetTitle("E_{T}^{raw}"); //if(isPhos){((TH1D*)rawEtAllNoEffCorr[bin])->GetXaxis()->SetRange(1,((TH1D*)rawEtAllNoEffCorr[bin])->GetXaxis()->FindBin(100));} //else{((TH1D*)rawEtAllNoEffCorr[bin])->GetXaxis()->SetRange(1,((TH1D*)rawEtAllNoEffCorr[bin])->GetXaxis()->FindBin(200));} ((TH1D*)rawEtAllNoEffCorr[bin])->Draw(); ((TH1D*)rawEtAllNoEffCorr[bin])->SetMaximum(5e4); for(bin = 1; bin<=nbins;bin+=1){ ((TH1D*)rawEtAllNoEffCorr[bin])->Draw("same"); ((TH1D*)rawEtAllNoEffCorr[bin])->SetLineColor(colors[bin-1]); ((TH1D*)rawEtAllNoEffCorr[bin])->SetMarkerColor(colors[bin-1]); //((TF1*)dataFits[bin])->SetLineColor(colors[bin-1]); //Float_t mostlikely = GetMostLikelyValue((TH1D*)rawEtAllNoEffCorr[bin]); //cout<<"cb "<GetParameter(1)<SaveAs(name9.Data()); //Create correction file with fractional corrections so that I can use them for cross checks ofstream myfile; TString texfilename = "SignalFrac"+detector+".dat"; myfile.open (texfilename.Data()); //neutron, hadron, kaon, secondaries for(int i=0;i<20;i++){ myfile <> junk1; tmp >> junk2; tmp >> value; tmp >> error; if(i<20){ //cout<<"value "<> junk1; tmp >> junk2; tmp >> value; tmp >> error; if(i<20){ finalemetCorrPhos[i] = value; finalemetErrorPhos[i] = error; } i++; } myfinalemetfile4.close(); } ofstream myfile3; myfile3.open ("EmEt.tex"); for(int i=0;i<20;i++){ if(finalemetCorrPhos[i] > 1e-3 || finalemetCorrEmcal[i] > 1e-3){ if(finalemetCorrPhos[i] > 1e-3){ TString line = Form("%i-%i\\% & %2.3f $\\pm$ %2.3f & %2.3f $\\pm$ %2.3f \\\\",i*5,(i+1)*5,finalemetCorrPhos[i],finalemetErrorPhos[i],finalemetCorrEmcal[i],finalemetErrorEmcal[i]); myfile3<> junk1; tmp >> junk2; tmp >> value; tmp >> error; if(i<20){ //cout<<"value "<> junk1; tmp >> junk2; tmp >> value; tmp >> error; if(i<20){ finaltotaletCorrPhos[i] = value; finaltotaletErrorPhos[i] = error; } i++; } myfinaltotaletfile6.close(); } ofstream myfile4; myfile4.open ("TotEtFromCalorimeters.tex"); for(int i=0;i<20;i++){ if(finaltotaletCorrPhos[i] > 1e-3 || finaltotaletCorrEmcal[i] > 1e-3){ if(finaltotaletCorrPhos[i] > 1e-3){ TString line = Form("%i-%i\\% & %2.3f $\\pm$ %2.3f & %2.3f $\\pm$ %2.3f \\\\",i*5,(i+1)*5,finaltotaletCorrPhos[i],finaltotaletErrorPhos[i],finaltotaletCorrEmcal[i],finaltotaletErrorEmcal[i]); myfile4<