Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-23 09:21:11

0001 // Function for the computation of the channeling efficiency
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 // Function for the computation of channeling efficiency at various incoming angle
0021 Int_t AnalyseChannelingEfficiency(TTree *fTree,Float_t fChannelingMinimum = 35., Float_t fChannelingMaximum = 70.){
0022     //**//Channeling Gaussian Fit Function
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; // Normalization for channeling efficiency, see PRSTAB 11, 063501 (2008)
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 }