ROOT logo
Double_t OccupancyAtZAndR(Double_t z=0., Double_t r=2.2, Double_t occ0=2800, Double_t r0=3.7);
Double_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);
Double_t focc(Double_t* zr, Double_t* par);
Double_t fdosez(Double_t* zz, Double_t* par);
Double_t fdose(Double_t* zr, Double_t* par);

void PlotDoseExtrapolat(Bool_t zoom=kTRUE) {
//Double_t sigma=5.9; // PbPb 2010 run 
 Double_t sigma=7.94; // nominal parameter ( https://edms.cern.ch/file/445882/5/Vol_1_Chapter_21.pdf )
TFile *f = new TFile("prova.root","RECREATE");
//
//// Now the estimate of the occupancy
//
TF1 *occh = new TF1("Dose vs z at given r ",fdosez,-60.,60.,3);
//
Double_t r0=3.7;
Double_t z0=14.1;
Double_t dose0=2.2E+3 / 1.;
occh->SetParameter(0,1);  //  average occupancy at r0
occh->SetParameter(2,r0);  // r0
occh->SetParameter(1,z0);  // z0
Double_t tot=occh->Integral(-1.*z0,z0);
tot/=2*z0;
cout << tot << endl;
// now you can normalize
TF2 *occ; 
if (zoom) occ = new TF2("Dose vs z and r ",fdose,-20.,20.,1.5,5.,3); // zoomed
else occ = new TF2("Dose vs z and r ",fdose,-60.,60.,2.,50.,3); // not zoomed
TCanvas *c4=new TCanvas();
c4->SetRightMargin(0.15);
//occh->Draw();
//c3->SetLogy();
// 1 sigma
occ->SetParameter(0,dose0/tot);  //  occupancy at r0
occ->SetParameter(2,r0);  // r0
occ->SetParameter(1,z0);  // z0
occ->GetXaxis()->SetTitle("z (cm)");
occ->GetYaxis()->SetTitle("r (cm)");
occ->GetZaxis()->SetTitle("Dose (Gy)");
occ->GetZaxis()->SetTitleOffset(1.25);
occ->SetContour(20);
occ->Draw("colz");
occ->Write();

//
f->Close();
}


Double_t DoseAtZAndR(Double_t z, Double_t r, Double_t occ0, Double_t z0, Double_t r0) {
if(r<=0) {
  cout << "r should be positive " << endl;
 return 0;
}

Double_t occ=0;
cout << " occ0=" << occ0 << "  r0=" << r0 << "  r=" << r << " z=" << z << endl;
if (TMath::Abs(z)<0.0000001) occ=occ0;
else occ=occ0*r0/r * TMath::Sin(TMath::ATan(r/z));
cout << occ << endl;
return TMath::Abs(occ);
}


Double_t focc(Double_t* zr, Double_t* par) {
Double_t z=zr[0];
Double_t r=zr[1];
Double_t occ0=par[0];
Double_t r0=par[1];
return OccupancyAtZAndR(z,r,occ0,r0);
}

Double_t fdosez(Double_t* zz, Double_t* par) {
Double_t z=zz[0];
Double_t r=par[2];
Double_t pippo=par[0];
Double_t r0=par[2];
Double_t z0=par[1];
return DoseAtZAndR(z,r,pippo,z0,r0);
}


Double_t fdose(Double_t* zr, Double_t* par) {
Double_t z=zr[0];
Double_t r=zr[1];
Double_t dose0=par[0];
Double_t z0=par[1];
Double_t r0=par[2];
return DoseAtZAndR(z,r,dose0,z0,r0);
}

 PlotDoseExtrapolat.C:1
 PlotDoseExtrapolat.C:2
 PlotDoseExtrapolat.C:3
 PlotDoseExtrapolat.C:4
 PlotDoseExtrapolat.C:5
 PlotDoseExtrapolat.C:6
 PlotDoseExtrapolat.C:7
 PlotDoseExtrapolat.C:8
 PlotDoseExtrapolat.C:9
 PlotDoseExtrapolat.C:10
 PlotDoseExtrapolat.C:11
 PlotDoseExtrapolat.C:12
 PlotDoseExtrapolat.C:13
 PlotDoseExtrapolat.C:14
 PlotDoseExtrapolat.C:15
 PlotDoseExtrapolat.C:16
 PlotDoseExtrapolat.C:17
 PlotDoseExtrapolat.C:18
 PlotDoseExtrapolat.C:19
 PlotDoseExtrapolat.C:20
 PlotDoseExtrapolat.C:21
 PlotDoseExtrapolat.C:22
 PlotDoseExtrapolat.C:23
 PlotDoseExtrapolat.C:24
 PlotDoseExtrapolat.C:25
 PlotDoseExtrapolat.C:26
 PlotDoseExtrapolat.C:27
 PlotDoseExtrapolat.C:28
 PlotDoseExtrapolat.C:29
 PlotDoseExtrapolat.C:30
 PlotDoseExtrapolat.C:31
 PlotDoseExtrapolat.C:32
 PlotDoseExtrapolat.C:33
 PlotDoseExtrapolat.C:34
 PlotDoseExtrapolat.C:35
 PlotDoseExtrapolat.C:36
 PlotDoseExtrapolat.C:37
 PlotDoseExtrapolat.C:38
 PlotDoseExtrapolat.C:39
 PlotDoseExtrapolat.C:40
 PlotDoseExtrapolat.C:41
 PlotDoseExtrapolat.C:42
 PlotDoseExtrapolat.C:43
 PlotDoseExtrapolat.C:44
 PlotDoseExtrapolat.C:45
 PlotDoseExtrapolat.C:46
 PlotDoseExtrapolat.C:47
 PlotDoseExtrapolat.C:48
 PlotDoseExtrapolat.C:49
 PlotDoseExtrapolat.C:50
 PlotDoseExtrapolat.C:51
 PlotDoseExtrapolat.C:52
 PlotDoseExtrapolat.C:53
 PlotDoseExtrapolat.C:54
 PlotDoseExtrapolat.C:55
 PlotDoseExtrapolat.C:56
 PlotDoseExtrapolat.C:57
 PlotDoseExtrapolat.C:58
 PlotDoseExtrapolat.C:59
 PlotDoseExtrapolat.C:60
 PlotDoseExtrapolat.C:61
 PlotDoseExtrapolat.C:62
 PlotDoseExtrapolat.C:63
 PlotDoseExtrapolat.C:64
 PlotDoseExtrapolat.C:65
 PlotDoseExtrapolat.C:66
 PlotDoseExtrapolat.C:67
 PlotDoseExtrapolat.C:68
 PlotDoseExtrapolat.C:69
 PlotDoseExtrapolat.C:70
 PlotDoseExtrapolat.C:71
 PlotDoseExtrapolat.C:72
 PlotDoseExtrapolat.C:73
 PlotDoseExtrapolat.C:74
 PlotDoseExtrapolat.C:75
 PlotDoseExtrapolat.C:76
 PlotDoseExtrapolat.C:77
 PlotDoseExtrapolat.C:78
 PlotDoseExtrapolat.C:79
 PlotDoseExtrapolat.C:80
 PlotDoseExtrapolat.C:81
 PlotDoseExtrapolat.C:82
 PlotDoseExtrapolat.C:83
 PlotDoseExtrapolat.C:84
 PlotDoseExtrapolat.C:85
 PlotDoseExtrapolat.C:86
 PlotDoseExtrapolat.C:87
 PlotDoseExtrapolat.C:88
 PlotDoseExtrapolat.C:89
 PlotDoseExtrapolat.C:90
 PlotDoseExtrapolat.C:91
 PlotDoseExtrapolat.C:92