File indexing completed on 2025-02-23 09:21:11
0001
0002 Double_t ComputeEfficiency(TH1D *h1,Double_t *fPar){
0003
0004 Double_t vXMin = fPar[1] - 3. * fPar[2];
0005 Double_t vXMax = fPar[1] + 3. * fPar[2];
0006
0007 Int_t vBinMin = h1->FindBin(vXMin);
0008 Int_t vBinMed = h1->FindBin(fPar[1]);
0009 Int_t vBinMax = h1->FindBin(vXMax);
0010
0011 Double_t vEfficiency = h1->Integral(vBinMin+1,vBinMax-1);
0012 vEfficiency += h1->GetBinContent(vBinMin)*(h1->GetBinLowEdge(vBinMin+1)-vXMin)/h1->GetBinWidth(vBinMin);
0013 vEfficiency += h1->GetBinContent(vBinMax)*(-h1->GetBinLowEdge(vBinMax)+vXMax)/h1->GetBinWidth(vBinMax);
0014 vEfficiency /= h1->Integral(0,-1);
0015 vEfficiency *= 100.;
0016
0017 return vEfficiency;
0018 }
0019
0020
0021 Int_t AnalyseChannelingEfficiency(TTree *fTree,Float_t fChannelingMinimum = 35., Float_t fChannelingMaximum = 70.){
0022
0023 TF1 *vChanneling = new TF1("vChanneling","gaus",fChannelingMinimum,fChannelingMaximum);
0024 vChanneling->SetParNames("Const","Mean","Sigma");
0025 vChanneling->SetLineColor(4);
0026 vChanneling->SetLineStyle(2);
0027
0028 TH2D *hChannelingPlot = new TH2D("hChannelingPlot","Deflection Angle vs. Incoming Angle;Horizontal Incoming Angle [#murad];Horizontal Deflection Angle [#murad]",21,-10.5,10.5,256,-127.5,128.5);
0029
0030 TH1F *hChannelingEfficiency = new TH1F("hChannelingEfficiency","G4Channeling;Horizontal Incoming Angle [#murad];Efficiency [%]",21,-10.5,10.5);
0031
0032 fTree->Draw("(angXout-angXin):angXin>>hChannelingPlot");
0033
0034 Double_t vNormalizationToAmorphous = 0.965;
0035
0036 for(int i=2;i<=21;i++){
0037 TH1D* h1 = hChannelingPlot->ProjectionY("h1",i,i);
0038 h1->Fit(vChanneling,"QR");
0039 Double_t *vChannelingParameters;
0040 vChannelingParameters = vChanneling->GetParameters();
0041 hChannelingEfficiency->SetBinContent(i,ComputeEfficiency(h1,vChannelingParameters)/vNormalizationToAmorphous);
0042 h1->Delete();
0043 }
0044 hChannelingEfficiency->SetLineColor(3);
0045 hChannelingEfficiency->SetLineStyle(4);
0046 hChannelingEfficiency->SetMarkerColor(3);
0047 hChannelingEfficiency->SetFillStyle(0);
0048 hChannelingEfficiency->SetMarkerStyle(20);
0049 hChannelingEfficiency->Draw("PL");
0050
0051 TGraph* gRoughExperimentalData = new TGraph(11);
0052 gRoughExperimentalData->SetPoint( 0 , -10 , 20 );
0053 gRoughExperimentalData->SetPoint( 1 , -8 , 38 );
0054 gRoughExperimentalData->SetPoint( 2 , -6 , 56 );
0055 gRoughExperimentalData->SetPoint( 3 , -4 , 72 );
0056 gRoughExperimentalData->SetPoint( 4 , -2 , 80 );
0057 gRoughExperimentalData->SetPoint( 5 , 0 , 84 );
0058 gRoughExperimentalData->SetPoint( 6 , 2 , 82 );
0059 gRoughExperimentalData->SetPoint( 7 , 4 , 78 );
0060 gRoughExperimentalData->SetPoint( 8 , 6 , 66 );
0061 gRoughExperimentalData->SetPoint( 9 , 8 , 52 );
0062 gRoughExperimentalData->SetPoint( 10 , 10 , 37 );
0063
0064 gRoughExperimentalData->SetLineColor(4);
0065 gRoughExperimentalData->SetLineStyle(3);
0066 gRoughExperimentalData->SetFillStyle(0);
0067 gRoughExperimentalData->SetFillColor(0);
0068 gRoughExperimentalData->SetMarkerColor(4);
0069 gRoughExperimentalData->SetMarkerStyle(21);
0070 gRoughExperimentalData->SetTitle("Phys. Lett. B 680, 129");
0071
0072 gRoughExperimentalData->Draw("sameCP");
0073
0074 TLegend *aLegend = new TLegend(0.30,0.15,0.55,0.3);
0075 aLegend->AddEntry(hChannelingEfficiency);
0076 aLegend->AddEntry(gRoughExperimentalData);
0077 aLegend->SetFillStyle(0);
0078 aLegend->SetLineColor(0);
0079 aLegend->Draw();
0080
0081 return 0;
0082 }