]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/macros/PlotDoseExtrapolat.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / ITS / UPGRADE / macros / PlotDoseExtrapolat.C
CommitLineData
b8722ed0 1Double_t OccupancyAtZAndR(Double_t z=0., Double_t r=2.2, Double_t occ0=2800, Double_t r0=3.7);
2Double_t DoseAtZAndR(Double_t z=0., Double_t r=2.2, Double_t dose0=2800, Double_t z0=14.1, Double_t r0=3.7);
3Double_t focc(Double_t* zr, Double_t* par);
4Double_t fdosez(Double_t* zz, Double_t* par);
5Double_t fdose(Double_t* zr, Double_t* par);
6
7void PlotDoseExtrapolat(Bool_t zoom=kTRUE) {
8//Double_t sigma=5.9; // PbPb 2010 run
9 Double_t sigma=7.94; // nominal parameter ( https://edms.cern.ch/file/445882/5/Vol_1_Chapter_21.pdf )
10TFile *f = new TFile("prova.root","RECREATE");
11//
12//// Now the estimate of the occupancy
13//
14TF1 *occh = new TF1("Dose vs z at given r ",fdosez,-60.,60.,3);
15//
16Double_t r0=3.7;
17Double_t z0=14.1;
18Double_t dose0=2.2E+3 / 1.;
19occh->SetParameter(0,1); // average occupancy at r0
20occh->SetParameter(2,r0); // r0
21occh->SetParameter(1,z0); // z0
22Double_t tot=occh->Integral(-1.*z0,z0);
23tot/=2*z0;
24cout << tot << endl;
25// now you can normalize
26TF2 *occ;
27if (zoom) occ = new TF2("Dose vs z and r ",fdose,-20.,20.,1.5,5.,3); // zoomed
28else occ = new TF2("Dose vs z and r ",fdose,-60.,60.,2.,50.,3); // not zoomed
29TCanvas *c4=new TCanvas();
30c4->SetRightMargin(0.15);
31//occh->Draw();
32//c3->SetLogy();
33// 1 sigma
34occ->SetParameter(0,dose0/tot); // occupancy at r0
35occ->SetParameter(2,r0); // r0
36occ->SetParameter(1,z0); // z0
37occ->GetXaxis()->SetTitle("z (cm)");
38occ->GetYaxis()->SetTitle("r (cm)");
39occ->GetZaxis()->SetTitle("Dose (Gy)");
40occ->GetZaxis()->SetTitleOffset(1.25);
41occ->SetContour(20);
42occ->Draw("colz");
43occ->Write();
44
45//
46f->Close();
47}
48
49
50Double_t DoseAtZAndR(Double_t z, Double_t r, Double_t occ0, Double_t z0, Double_t r0) {
51if(r<=0) {
52 cout << "r should be positive " << endl;
53 return 0;
54}
55
56Double_t occ=0;
57cout << " occ0=" << occ0 << " r0=" << r0 << " r=" << r << " z=" << z << endl;
58if (TMath::Abs(z)<0.0000001) occ=occ0;
59else occ=occ0*r0/r * TMath::Sin(TMath::ATan(r/z));
60cout << occ << endl;
61return TMath::Abs(occ);
62}
63
64
65Double_t focc(Double_t* zr, Double_t* par) {
66Double_t z=zr[0];
67Double_t r=zr[1];
68Double_t occ0=par[0];
69Double_t r0=par[1];
70return OccupancyAtZAndR(z,r,occ0,r0);
71}
72
73Double_t fdosez(Double_t* zz, Double_t* par) {
74Double_t z=zz[0];
75Double_t r=par[2];
76Double_t pippo=par[0];
77Double_t r0=par[2];
78Double_t z0=par[1];
79return DoseAtZAndR(z,r,pippo,z0,r0);
80}
81
82
83Double_t fdose(Double_t* zr, Double_t* par) {
84Double_t z=zr[0];
85Double_t r=zr[1];
86Double_t dose0=par[0];
87Double_t z0=par[1];
88Double_t r0=par[2];
89return DoseAtZAndR(z,r,dose0,z0,r0);
90}
91