]>
Commit | Line | Data |
---|---|---|
d48cca74 | 1 | #ifdef __CINT__ |
2 | void Opticals() | |
3 | { | |
4 | gROOT->Reset(); | |
5 | #endif | |
6 | int i; | |
a25b3368 | 7 | const Int_t kNbins=30;//number of photon energy points |
d48cca74 | 8 | |
a25b3368 | 9 | Float_t aPckov[kNbins]; for(i=0;i<kNbins;i++) aPckov[i]=1e-9*AliRICHParam::PhotonEnergy(i); |
aed240d4 | 10 | |
11 | ||
a25b3368 | 12 | Float_t aIdxC6F14[kNbins]; //Freon ref index |
13 | Float_t aIdxCH4[kNbins]; //Methane ref index | |
14 | Float_t aIdxSiO2[kNbins]; //Quartz ref index | |
15 | Float_t aIdxMetal[kNbins]; //Metal ref index always 0 | |
16 | Float_t aIdxGel[kNbins]; //Aerogel ref index | |
d48cca74 | 17 | |
d48cca74 | 18 | for (i=0;i<kNbins;i++){ |
a25b3368 | 19 | aIdxC6F14[i] = AliRICHParam::RefIdxC6F14(aPckov[i]*1e9); |
20 | aIdxSiO2[i] = AliRICHParam::RefIdxSiO2(aPckov[i]*1e9); | |
21 | aIdxCH4[i] = AliRICHParam::RefIdxCH4(5.5); | |
22 | aIdxGel[i] = AliRICHParam::RefIdxGel(5.5); | |
23 | aIdxMetal[i] =0;//metal | |
d48cca74 | 24 | } |
25 | ||
a25b3368 | 26 | Float_t aAbsC6F14[kNbins]={//New values from A.DiMauro 28.10.03 total 30 |
af3d25a6 | 27 | 32701.4219, 17996.1141, 10039.7281, 1799.1230, 1799.1231, 1799.1231, 1241.4091, 179.0987, 179.0986, 179.0987, |
aed240d4 | 28 | 179.0987, 118.9800, 39.5058, 23.7244, 11.1283, 7.1573, 3.6249, 2.1236, 0.7362, 0.5348, |
29 | 0.3387, 0.3074, 0.3050, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001}; | |
a25b3368 | 30 | Float_t aAbsSiO2[kNbins]={//New values from A.DiMauro 28.10.03 total 30 |
aed240d4 | 31 | 34.4338, 30.5424, 30.2584, 31.4928, 31.7868, 17.8397, 9.3410, 6.4492, 6.1128, 5.8128, |
32 | 5.5589, 5.2877, 5.0162, 4.7999, 4.5734, 4.2135, 3.7471, 2.6033, 1.5223, 0.9658, | |
33 | 0.4242, 0.2500, 0.1426, 0.0863, 0.0793, 0.0724, 0.0655, 0.0587, 0.0001, 0.0001}; | |
d48cca74 | 34 | |
aed240d4 | 35 | Float_t aAbsOpSiO2[kNbins]; |
d48cca74 | 36 | Float_t aAbsCH4[kNbins]; |
37 | Float_t aAbsGrid[kNbins]; | |
38 | Float_t aAbsCsI[kNbins]; | |
a25b3368 | 39 | Float_t aAbsGel[kNbins]; |
40 | Float_t aAbsRef[kNbins];//abs prob on reflector | |
41 | ||
d48cca74 | 42 | for (i=0;i<kNbins;i++){ |
a25b3368 | 43 | aAbsCH4[i] =AliRICHParam::AbsCH4(AliRICHParam::PhotonEnergy(i)); |
aed240d4 | 44 | aAbsOpSiO2[i] =1e-5; |
45 | aAbsCsI[i] =1e-4; | |
a25b3368 | 46 | aAbsGrid[i] =1e-4; |
47 | aAbsGel[i] =AliRICHParam::AbsGel(AliRICHParam::PhotonEnergy(i)); | |
48 | aAbsRef[i] =0.01;//1% reflector abs prob | |
d48cca74 | 49 | } |
50 | ||
af3d25a6 | 51 | Float_t aQeCsI[kNbins] = {//New values from A.DiMauro 28.10.03 total 31 |
52 | 0.0002, 0.0006, 0.0007, 0.0010, 0.0049, 0.0073, 0.0104, 0.0519, 0.0936, 0.1299, | |
53 | 0.1560, 0.1768, 0.1872, 0.1976, 0.2142, 0.2288, 0.2434, 0.2599, 0.2673, 0.2808, | |
54 | 0.2859, 0.2954, 0.3016, 0.3120, 0.3172, 0.3224, 0.3266, 0.3328, 0.3359, 0.3390}; | |
aed240d4 | 55 | // 0.3431}; |
56 | ||
c67b2d9f | 57 | |
d48cca74 | 58 | Float_t aQeAll[kNbins]; |
59 | for(i=0;i<kNbins;i++){ | |
a25b3368 | 60 | aQeCsI[i]/= (1.0-Fresnel(AliRICHParam::PhotonEnergy(i),1.0,0)); //FRESNEL LOSS CORRECTION |
d48cca74 | 61 | aQeAll[i]=1; //QE for all other materials except for PC must be 1. |
62 | } | |
63 | ||
64 | ||
65 | #ifdef __CINT__ | |
66 | ||
af3d25a6 | 67 | Float_t aAbsC6F14old[kNbins]={//previous values 26 in total added 0.0001 to the 30 |
68 | 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 179.0987, 142.9206, | |
69 | 56.6496, 25.5862, 13.9529, 12.0391, 10.4295, 8.8042, 7.0690, 4.4611, 2.0284, 1.2930, | |
70 | 0.5772, 0.4074, 0.3350, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001}; | |
71 | Float_t aAbsSiO2old[kNbins]={//previous values 26 in total added 0.0001 to the 30 | |
72 | 105.8000, 65.5200, 48.5800, 42.8500, 35.7900, 31.2620, 28.5980, 27.5270, 25.0070, 22.8150, | |
73 | 21.0040, 19.2660, 17.5250, 15.8780, 14.1770, 11.7190, 9.2820, 6.6200, 4.0930, 2.6010, | |
74 | 1.1490, 0.6670, 0.3630, 0.1920, 0.1500, 0.1090, 0.0001, 0.0001, 0.0001, 0.0001}; | |
75 | Float_t aQeCsIold[kNbins]={ | |
76 | 0.0002, 0.0006, 0.0007, 0.0050, 0.0075, 0.0101, 0.0243, 0.0405, 0.0689, 0.1053, | |
77 | 0.1215, 0.1417, 0.1579, 0.1620, 0.1661, 0.1677, 0.1743, 0.1768, 0.1793, 0.1826, | |
78 | 0.1859, 0.1876, 0.1892, 0.1909, 0.2075, 0.2158, 0.0001, 0.0001, 0.0001, 0.0001 }; | |
79 | ||
c67b2d9f | 80 | //Now plot all the thigs |
a25b3368 | 81 | //Markers and colors for different curves: |
82 | ||
83 | const Double_t kWidth=0.25,kHeight=0.2; | |
84 | const Int_t kC6F14Marker=24 , kC6F14Color=kRed; | |
85 | const Int_t kCH4Marker =25 , kCH4Color =kGreen; | |
86 | const Int_t kSiO2M =26 , kSiO2Color =kBlue; | |
87 | const Int_t kCsIMarker = 2 , kCsIColor =kMagenta; | |
88 | const Int_t kGelMarker =27 , kGelColor =46; | |
89 | const Int_t kRefMarker =28 , kRefColor =47; | |
d48cca74 | 90 | |
c67b2d9f | 91 | TCanvas *pC=new TCanvas("c1","RICH optics to check",1100,900); |
d48cca74 | 92 | |
c67b2d9f | 93 | pC->Divide(3,2); |
a25b3368 | 94 | //Ref index |
d48cca74 | 95 | pC->cd(1); |
a25b3368 | 96 | TGraph *pIdxC6F14=new TGraph(kNbins,aPckov,aIdxC6F14);pIdxC6F14->SetMarkerStyle(kC6F14Marker);pIdxC6F14->SetMarkerColor(kC6F14Color); |
97 | TGraph *pIdxSiO2 =new TGraph(kNbins,aPckov,aIdxSiO2); pIdxSiO2 ->SetMarkerStyle(kSiO2M) ;pIdxSiO2 ->SetMarkerColor(kSiO2Color); | |
98 | TGraph *pIdxCH4 =new TGraph(kNbins,aPckov,aIdxCH4); pIdxCH4 ->SetMarkerStyle(kCH4Marker) ;pIdxCH4 ->SetMarkerColor(kCH4Color); | |
99 | TGraph *pIdxGel =new TGraph(kNbins,aPckov,aIdxGel); pIdxGel ->SetMarkerStyle(kGelMarker) ;pIdxGel ->SetMarkerColor(kGelColor); | |
100 | ||
101 | TMultiGraph *pIdxMG=new TMultiGraph(); TLegend *pIdxLe=new TLegend(0.5,0.21,0.5+kWidth,0.21+kHeight); | |
102 | pIdxMG->Add(pIdxC6F14); pIdxLe->AddEntry(pIdxC6F14,"C6F14" ,"p"); | |
103 | pIdxMG->Add(pIdxSiO2) ; pIdxLe->AddEntry(pIdxSiO2 ,"SiO2" ,"p"); | |
104 | pIdxMG->Add(pIdxCH4) ; pIdxLe->AddEntry(pIdxCH4 ,"CH4" ,"p"); | |
105 | pIdxMG->Add(pIdxGel) ; pIdxLe->AddEntry(pIdxGel ,"Aerogel","p"); | |
106 | pIdxMG->Draw("APL"); | |
107 | pIdxMG->SetTitle("Refractive index"); pIdxMG->GetXaxis()->SetTitle("energy, GeV"); | |
108 | pIdxMG->Draw("APL"); | |
aed240d4 | 109 | pIdxLe->Draw(); |
a25b3368 | 110 | //Absorbtion |
d48cca74 | 111 | pC->cd(2); |
a25b3368 | 112 | gPad->SetLogy(); |
113 | TGraph *pAbsC6F14=new TGraph(kNbins,aPckov,aAbsC6F14);pAbsC6F14->SetMarkerStyle(kC6F14Marker); pAbsC6F14->SetMarkerColor(kC6F14Color); | |
114 | TGraph *pAbsSiO2 =new TGraph(kNbins,aPckov,aAbsSiO2) ;pAbsSiO2 ->SetMarkerStyle(kSiO2M) ; pAbsSiO2 ->SetMarkerColor(kSiO2Color); | |
115 | TGraph *pAbsCH4 =new TGraph(kNbins,aPckov,aAbsCH4) ;pAbsCH4 ->SetMarkerStyle(kCH4Marker) ; pAbsCH4 ->SetMarkerColor(kCH4Color); | |
116 | TGraph *pAbsGel =new TGraph(kNbins,aPckov,aAbsGel) ;pAbsGel ->SetMarkerStyle(kGelMarker) ; pAbsGel ->SetMarkerColor(kGelColor); | |
117 | TGraph *pAbsRef =new TGraph(kNbins,aPckov,aAbsRef) ;pAbsRef ->SetMarkerStyle(kRefMarker) ; pAbsRef ->SetMarkerColor(kRefColor); | |
c67b2d9f | 118 | |
a25b3368 | 119 | TMultiGraph *pAbsMG=new TMultiGraph(); TLegend *pAbsLe=new TLegend(0.2,0.15,0.2+kWidth,0.15+kHeight); |
120 | pAbsMG->Add(pAbsC6F14); pAbsLe->AddEntry(pAbsC6F14, "C6F14" ,"p"); | |
121 | pAbsMG->Add(pAbsSiO2); pAbsLe->AddEntry(pAbsSiO2 , "SiO2" ,"p"); | |
122 | pAbsMG->Add(pAbsCH4); pAbsLe->AddEntry(pAbsCH4 , "CH4" ,"p"); | |
123 | pAbsMG->Add(pAbsGel); pAbsLe->AddEntry(pAbsGel , "Aerogel" ,"p"); | |
124 | pAbsMG->Add(pAbsRef); pAbsLe->AddEntry(pAbsRef , "Reflector","p"); | |
125 | pAbsMG->Draw("APL"); | |
126 | pAbsMG->SetTitle("Absorbtion length,cm"); pAbsMG->GetXaxis()->SetTitle("energy, GeV"); | |
127 | pAbsMG->Draw("APL"); | |
128 | pAbsLe->Draw(); | |
129 | //QE | |
c67b2d9f | 130 | pC->cd(4); |
a25b3368 | 131 | TGraph *pQeCsI=new TGraph(kNbins,aPckov,aQeCsI); pQeCsI->SetMarkerStyle(kCsIMarker); pQeCsI->SetMarkerColor(kCsIColor); |
132 | pQeCsI->Draw("APL"); | |
133 | pQeCsI->SetTitle("QE"); pQeCsI->GetXaxis()->SetTitle("energy, GeV"); | |
134 | pQeCsI->Draw("APL"); | |
aed240d4 | 135 | //transmission |
c67b2d9f | 136 | pC->cd(5); |
13b5ac37 | 137 | Float_t mm =0.1;Float_t cm=1.; |
aed240d4 | 138 | Float_t aTrC6F14[kNbins],aTrSiO2[kNbins],aTrCH4[kNbins]; |
c67b2d9f | 139 | Float_t aTotTr[kNbins]; |
a25b3368 | 140 | for(Int_t i=0;i<kNbins;i++){//calculate probability for photon to survive during transversing a volume of material with absorption length |
06c19e21 | 141 | aTrC6F14[i]=TMath::Exp(-15*mm/(aAbsC6F14[i]+0.0001)); |
142 | aTrSiO2[i] =TMath::Exp(-5*mm/(aAbsSiO2[i] +0.0001)); | |
143 | aTrCH4[i] =TMath::Exp(-8*cm/(aAbsCH4[i] +0.0001)); | |
af3d25a6 | 144 | aTotTr[i] =aTrC6F14[i]*aTrSiO2[i]*aTrCH4[i]*aQeCsI[i]; |
c67b2d9f | 145 | } |
a25b3368 | 146 | TGraph *pTrC6F14=new TGraph(kNbins,aPckov,aTrC6F14);pTrC6F14->SetMarkerStyle(kC6F14Marker);pTrC6F14->SetMarkerColor(kC6F14Color); |
147 | TGraph *pTrSiO2 =new TGraph(kNbins,aPckov,aTrSiO2) ;pTrSiO2 ->SetMarkerStyle(kSiO2M) ;pTrSiO2 ->SetMarkerColor(kSiO2Color); | |
148 | TGraph *pTrCH4 =new TGraph(kNbins,aPckov,aTrCH4) ;pTrCH4 ->SetMarkerStyle(kCH4Marker) ;pTrCH4 ->SetMarkerColor(kCH4Color); | |
149 | TGraph *pTotTr =new TGraph(kNbins,aPckov,aTotTr) ;pTotTr ->SetMarkerStyle(30) ;pTotTr ->SetMarkerColor(kYellow); | |
150 | ||
151 | TMultiGraph *pTrMG=new TMultiGraph(); TLegend *pTrLe=new TLegend(0.2,0.4,0.2+kWidth,0.4+kHeight); | |
152 | pTrMG->Add(pQeCsI); pTrLe->AddEntry(pQeCsI, "CsI QE", "p"); | |
153 | pTrMG->Add(pTrC6F14); pTrLe->AddEntry(pTrC6F14, "C6F14", "p"); | |
154 | pTrMG->Add(pTrSiO2); pTrLe->AddEntry(pTrSiO2, "SiO2", "p"); | |
155 | pTrMG->Add(pTrCH4); pTrLe->AddEntry(pTrCH4, "CH4", "p"); | |
156 | pTrMG->Add(pTotTr); pTrLe->AddEntry(pTotTr, "total", "p"); | |
157 | pTrMG->Draw("APL"); | |
158 | pTrMG->SetTitle("Transmission"); pTrMG->GetXaxis()->SetTitle("energy, GeV"); | |
159 | pTrMG->Draw("APL"); | |
160 | pTrLe->Draw(); | |
161 | //comparison of new and old staff | |
aed240d4 | 162 | pC->cd(6); |
a25b3368 | 163 | TGraph *pQeCsIold=new TGraph(kNbins,aPckov,aQeCsIold); pQeCsIold->SetMarkerStyle(kC6F14Marker);pQeCsIold->SetMarkerColor(kC6F14Color); |
c67b2d9f | 164 | |
a25b3368 | 165 | TMultiGraph *pCompMG=new TMultiGraph; TLegend *pCompLe=new TLegend(0.2,0.6,0.2+kWidth,0.6+kHeight); |
166 | pCompMG->Add(pQeCsI); pCompLe->AddEntry(pQeCsI, "QE new 30.10.03", "p"); | |
167 | pCompMG->Add(pQeCsIold); pCompLe->AddEntry(pQeCsIold, "QE old 01.01.02", "p"); | |
168 | pCompMG->Draw("APL"); | |
169 | pCompMG->SetTitle("Comparison of new and old staff"); | |
170 | pCompMG->GetXaxis()->SetTitle("energy, GeV"); | |
171 | pCompMG->Draw("APL"); | |
172 | pCompLe->Draw(); | |
aed240d4 | 173 | |
c67b2d9f | 174 | return; |
303f57b3 | 175 | TCanvas *pQeC=new TCanvas("pQeC","CsI QE currently all the same",800,900); |
176 | pQeC->Divide(2,4); | |
177 | for(int i=1;i<=7;i++){ | |
178 | pQeC->cd(i); | |
179 | switch(i){ | |
af3d25a6 | 180 | case 1: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 1");break; |
181 | case 2: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 2");break; | |
182 | case 3: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 3");break; | |
183 | case 4: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 4");break; | |
184 | case 5: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 5");break; | |
185 | case 6: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 6");break; | |
186 | case 7: TGraph *pQeCsIGr=new TGraph(kNbins,aPckov,aQeCsI);pQeCsIGr->SetTitle("Module 7");break; | |
303f57b3 | 187 | } |
188 | pQeCsIGr->SetMarkerStyle(kCsIMarker); pQeCsIGr->SetMarkerColor(kCsIColor); | |
189 | pQeCsIGr->Draw("APL"); | |
190 | pQeCsIGr->GetXaxis()->SetTitle("energy, GeV"); | |
191 | pQeCsIGr->Draw("APL"); | |
192 | } | |
d48cca74 | 193 | }//main |
c67b2d9f | 194 | //__________________________________________________________________________________________________ |
d48cca74 | 195 | Float_t Fresnel(Float_t ene,Float_t pdoti, Bool_t pola) |
c67b2d9f | 196 | {//ENE(EV), PDOTI=COS(INC.ANG.), PDOTR=COS(POL.PLANE ROT.ANG.) |
d48cca74 | 197 | |
198 | Float_t en[36] = {5.0,5.1,5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,6.0,6.1,6.2, | |
199 | 6.3,6.4,6.5,6.6,6.7,6.8,6.9,7.0,7.1,7.2,7.3,7.4,7.5,7.6,7.7, | |
200 | 7.8,7.9,8.0,8.1,8.2,8.3,8.4,8.5}; | |
201 | ||
202 | ||
203 | Float_t csin[36] = {2.14,2.21,2.33,2.48,2.76,2.97,2.99,2.59,2.81,3.05, | |
204 | 2.86,2.53,2.55,2.66,2.79,2.96,3.18,3.05,2.84,2.81,2.38,2.11, | |
205 | 2.01,2.13,2.39,2.73,3.08,3.15,2.95,2.73,2.56,2.41,2.12,1.95, | |
206 | 1.72,1.53}; | |
207 | ||
208 | Float_t csik[36] = {0.,0.,0.,0.,0.,0.196,0.408,0.208,0.118,0.49,0.784,0.543, | |
209 | 0.424,0.404,0.371,0.514,0.922,1.102,1.139,1.376,1.461,1.253,0.878, | |
210 | 0.69,0.612,0.649,0.824,1.347,1.571,1.678,1.763,1.857,1.824,1.824, | |
211 | 1.714,1.498}; | |
212 | Float_t xe=ene; | |
213 | Int_t j=Int_t(xe*10)-49; | |
214 | Float_t cn=csin[j]+((csin[j+1]-csin[j])/0.1)*(xe-en[j]); | |
215 | Float_t ck=csik[j]+((csik[j+1]-csik[j])/0.1)*(xe-en[j]); | |
216 | ||
217 | //FORMULAE FROM HANDBOOK OF OPTICS, 33.23 OR | |
218 | //W.R. HUNTER, J.O.S.A. 54 (1964),15 , J.O.S.A. 55(1965),1197 | |
219 | ||
220 | Float_t sinin=TMath::Sqrt(1-pdoti*pdoti); | |
221 | Float_t tanin=sinin/pdoti; | |
222 | ||
223 | Float_t c1=cn*cn-ck*ck-sinin*sinin; | |
224 | Float_t c2=4*cn*cn*ck*ck; | |
225 | Float_t aO=TMath::Sqrt(0.5*(TMath::Sqrt(c1*c1+c2)+c1)); | |
226 | Float_t b2=0.5*(TMath::Sqrt(c1*c1+c2)-c1); | |
227 | ||
228 | Float_t rs=((aO-pdoti)*(aO-pdoti)+b2)/((aO+pdoti)*(aO+pdoti)+b2); | |
229 | Float_t rp=rs*((aO-sinin*tanin)*(aO-sinin*tanin)+b2)/((aO+sinin*tanin)*(aO+sinin*tanin)+b2); | |
230 | ||
231 | ||
232 | //CORRECTION FACTOR FOR SURFACE ROUGHNESS | |
233 | //B.J. STAGG APPLIED OPTICS, 30(1991),4113 | |
234 | ||
235 | Float_t sigraf=18.; | |
236 | Float_t lamb=1240/ene; | |
237 | Float_t fresn; | |
238 | ||
239 | Float_t rO=TMath::Exp(-(4*TMath::Pi()*pdoti*sigraf/lamb)*(4*TMath::Pi()*pdoti*sigraf/lamb)); | |
240 | ||
241 | if(pola) | |
242 | { | |
243 | Float_t pdotr=0.8; //DEGREE OF POLARIZATION : 1->P , -1->S | |
244 | fresn=0.5*(rp*(1+pdotr)+rs*(1-pdotr)); | |
245 | } | |
246 | else | |
247 | fresn=0.5*(rp+rs); | |
248 | ||
249 | fresn = fresn*rO; | |
250 | return(fresn); | |
aed240d4 | 251 | }//Fresnel() |
d48cca74 | 252 | #endif |