CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/SimG4CMS/Calo/src/HEDarkening.cc

Go to the documentation of this file.
00001 
00002 // File: HEDarkening.cc
00003 // Description: simple helper class containing parameterized function 
00004 //              to be used for the SLHC darkening calculation in HE 
00006 
00007 #include "SimG4CMS/Calo/interface/HEDarkening.h"
00008 #include <cmath>
00009 
00010 HEDarkening::HEDarkening() {
00011   // RADIUS (cm)
00012   for(int i=0;i<24;i++) radius[i]=40+i*10;
00013   //DOSES for 500fb-1 (Mrad)
00014   //LAYER -1 and 0
00015   dose_lm1_l0[0 ]=6.54;    dose_lm1_l0[1 ]=3.12;    dose_lm1_l0[2 ]=2.90;    dose_lm1_l0[3 ]=1.79;    dose_lm1_l0[4 ]=1.35;    dose_lm1_l0[5 ]=.811;     
00016   dose_lm1_l0[6 ]=.656;    dose_lm1_l0[7 ]=.312;    dose_lm1_l0[8 ]=.264;    dose_lm1_l0[9 ]=.231;    dose_lm1_l0[10]=.196;    dose_lm1_l0[11]=.151;     
00017   dose_lm1_l0[12]=.139;    dose_lm1_l0[13]=.102;    dose_lm1_l0[14]=.0441;   dose_lm1_l0[15]=.0217;   dose_lm1_l0[16]=.0154;   dose_lm1_l0[17]=.00699;     
00018   dose_lm1_l0[18]=.00324;  dose_lm1_l0[19]=.00202;  dose_lm1_l0[20]=.000967; dose_lm1_l0[21]=.000729; dose_lm1_l0[22]=.000204; dose_lm1_l0[23]=.000117;     
00019   //LAYER 1 - 3 
00020   dose_l1_l3[0 ]=156.;    dose_l1_l3[1 ]=2.35;    dose_l1_l3[2 ]=.879;    dose_l1_l3[3 ]=.511;    dose_l1_l3[4 ]=.387;    dose_l1_l3[5 ]=.216;     
00021   dose_l1_l3[6 ]=.172;    dose_l1_l3[7 ]=.102;    dose_l1_l3[8 ]=.0611;   dose_l1_l3[9 ]=.0515;   dose_l1_l3[10]=.0411;   dose_l1_l3[11]=.0340;     
00022   dose_l1_l3[12]=.0286;   dose_l1_l3[13]=.0244;   dose_l1_l3[14]=.0170;   dose_l1_l3[15]=.00931;  dose_l1_l3[16]=.00642;  dose_l1_l3[17]=.00417;     
00023   dose_l1_l3[18]=.00206;  dose_l1_l3[19]=.00162;  dose_l1_l3[20]=.00103;  dose_l1_l3[21]=.000769; dose_l1_l3[22]=.000315; dose_l1_l3[23]=.000231;     
00024   //LAYER 4 - 5 
00025   dose_l4_l5[0 ]=33.9;    dose_l4_l5[1 ]=6.61;    dose_l4_l5[2 ]=.379;    dose_l4_l5[3 ]=.198;    dose_l4_l5[4 ]=.152;    dose_l4_l5[5 ]=.086;     
00026   dose_l4_l5[6 ]=.0666;   dose_l4_l5[7 ]=.0401;   dose_l4_l5[8 ]=.0213;   dose_l4_l5[9 ]=.0172;   dose_l4_l5[10]=.0131;   dose_l4_l5[11]=.0113;     
00027   dose_l4_l5[12]=.00898;  dose_l4_l5[13]=.00871;  dose_l4_l5[14]=.00740;  dose_l4_l5[15]=.00444;  dose_l4_l5[16]=.00302;  dose_l4_l5[17]=.00190;     
00028   dose_l4_l5[18]=.000987; dose_l4_l5[19]=.000873; dose_l4_l5[20]=.000490; dose_l4_l5[21]=.000312; dose_l4_l5[22]=.000245; dose_l4_l5[23]=.000131;     
00029   //LAYER 6 - 8 
00030   dose_l6_l8[0 ]=5.66;    dose_l6_l8[1 ]=2.45;    dose_l6_l8[2 ]=.327;    dose_l6_l8[3 ]=.0990;   dose_l6_l8[4 ]=.0773;    dose_l6_l8[5 ]=.0439;     
00031   dose_l6_l8[6 ]=.0334;   dose_l6_l8[7 ]=.0194;   dose_l6_l8[8 ]=.0102;   dose_l6_l8[9 ]=.00847;  dose_l6_l8[10]=.00491;   dose_l6_l8[11]=.00507;     
00032   dose_l6_l8[12]=.00389;  dose_l6_l8[13]=.00296;  dose_l6_l8[14]=.00300;  dose_l6_l8[15]=.00369;  dose_l6_l8[16]=.00219;   dose_l6_l8[17]=.00111;     
00033   dose_l6_l8[18]=.000543; dose_l6_l8[19]=.000284; dose_l6_l8[20]=.000191; dose_l6_l8[21]=.000165; dose_l6_l8[22]=.0000985; dose_l6_l8[23]=.0000435;     
00034   //LAYER 9 - 10 
00035   dose_l9_l10[0 ]=5.93;    dose_l9_l10[1 ]=2.96;    dose_l9_l10[2 ]=.163;     dose_l9_l10[3 ]=.0463;    dose_l9_l10[4 ]=.0292;    dose_l9_l10[5 ]=.0156;     
00036   dose_l9_l10[6 ]=.0142;   dose_l9_l10[7 ]=.00669;  dose_l9_l10[8 ]=.00415;   dose_l9_l10[9 ]=.00273;   dose_l9_l10[10]=.00177;   dose_l9_l10[11]=.00195;     
00037   dose_l9_l10[12]=.00152;  dose_l9_l10[13]=.000911; dose_l9_l10[14]=.000894;  dose_l9_l10[15]=.000728;  dose_l9_l10[16]=.000768;  dose_l9_l10[17]=.000410;     
00038   dose_l9_l10[18]=.000219; dose_l9_l10[19]=.000183; dose_l9_l10[20]=.0000959; dose_l9_l10[21]=.0000836; dose_l9_l10[22]=.0000363; dose_l9_l10[23]=.0000300;     
00039   //LAYER 11 - 13 
00040   dose_l11_l13[0 ]=5.17;     dose_l11_l13[1 ]=7.70;     dose_l11_l13[2 ]=.0974;    dose_l11_l13[3 ]=.0301;    dose_l11_l13[4 ]=.0168;    dose_l11_l13[5 ]=.00865;     
00041   dose_l11_l13[6 ]=.00597;   dose_l11_l13[7 ]=.00320;   dose_l11_l13[8 ]=.00178;   dose_l11_l13[9 ]=.00136;   dose_l11_l13[10]=.000692;  dose_l11_l13[11]=.000684;     
00042   dose_l11_l13[12]=.000518;  dose_l11_l13[13]=.000414;  dose_l11_l13[14]=.000296;  dose_l11_l13[15]=.000323;  dose_l11_l13[16]=.000346;   dose_l11_l13[17]=.000275;     
00043   dose_l11_l13[18]=.0000684; dose_l11_l13[19]=.0000523; dose_l11_l13[20]=.0000252; dose_l11_l13[21]=.0000350; dose_l11_l13[22]=.0000226; dose_l11_l13[23]=.0000125;     
00044   //LAYER 14 - 15 
00045   dose_l14_l15[0 ]=5.38;     dose_l14_l15[1 ]=2.62;     dose_l14_l15[2 ]=.1000;    dose_l14_l15[3 ]=.0171;    dose_l14_l15[4 ]=.0111;    dose_l14_l15[5 ]=.00420;     
00046   dose_l14_l15[6 ]=.00334;   dose_l14_l15[7 ]=.00177;   dose_l14_l15[8 ]=.000822;   dose_l14_l15[9 ]=.000626;  dose_l14_l15[10]=.000449;  dose_l14_l15[11]=.000277;     
00047   dose_l14_l15[12]=.000229;  dose_l14_l15[13]=.000266;  dose_l14_l15[14]=.000129;  dose_l14_l15[15]=.000968;  dose_l14_l15[16]=.000118;  dose_l14_l15[17]=.000104;     
00048   dose_l14_l15[18]=.0000601; dose_l14_l15[19]=.0000253; dose_l14_l15[20]=.0000267; dose_l14_l15[21]=.0000498; dose_l14_l15[22]=.0000604; dose_l14_l15[23]=.00000281;     
00049   //LAYER 16 - 17 
00050   dose_l16_l17[0 ]=5.02;     dose_l16_l17[1 ]=2.55;     dose_l16_l17[2 ]=.222;     dose_l16_l17[3 ]=.0492;    dose_l16_l17[4 ]=.0105;    dose_l16_l17[5 ]=.00434;     
00051   dose_l16_l17[6 ]=.00293;   dose_l16_l17[7 ]=.00153;   dose_l16_l17[8 ]=.000816;  dose_l16_l17[9 ]=.000683;  dose_l16_l17[10]=.000426;  dose_l16_l17[11]=.000438;     
00052   dose_l16_l17[12]=.000196;  dose_l16_l17[13]=.000101;  dose_l16_l17[14]=.000162;  dose_l16_l17[15]=.000139;  dose_l16_l17[16]=.0000726; dose_l16_l17[17]=.0000796;     
00053   dose_l16_l17[18]=.0000684; dose_l16_l17[19]=.0000819; dose_l16_l17[20]=.0000149; dose_l16_l17[21]=.0000376; dose_l16_l17[22]=.0000254; dose_l16_l17[23]=.0000214;     
00054   
00055 }
00056 
00057 HEDarkening::~HEDarkening() { }
00058 
00059 float HEDarkening::dose(int layer,float Radius)  {
00060 
00061   //      if((layer<-1)||(layer>17)) return (0.);
00062 
00063   int ind = (Radius-40.)/10.;
00064 
00065   if((layer==-1)||(layer==0)) {
00066     if(ind<0) return (dose_lm1_l0[0]); if(ind>=23) return (dose_lm1_l0[23]);
00067     if((ind>=0)&&(ind<=23)) {float delta = (dose_lm1_l0[ind+1]-dose_lm1_l0[ind])/10; return (dose_lm1_l0[ind]+delta*(Radius-radius[ind]));}
00068   }
00069   if((layer>=1)&&(layer<=3)) {
00070     if(ind<0) return (dose_l1_l3[0]); if(ind>=23) return (dose_l1_l3[23]);
00071     if((ind>=0)&&(ind<=23)) {float delta = (dose_l1_l3[ind+1]-dose_l1_l3[ind])/10; return (dose_l1_l3[ind]+delta*(Radius-radius[ind]));}
00072   }
00073   if((layer==4)||(layer==5)) {
00074     if(ind<0) return (dose_l4_l5[0]); if(ind>=23) return (dose_l4_l5[23]);
00075     if((ind>=0)&&(ind<=23)) {float delta = (dose_l4_l5[ind+1]-dose_l4_l5[ind])/10; return (dose_l4_l5[ind]+delta*(Radius-radius[ind]));}
00076   }
00077   if((layer>=6)&&(layer<=8)) {
00078     if(ind<0) return (dose_l6_l8[0]); if(ind>=23) return (dose_l6_l8[23]);
00079     if((ind>=0)&&(ind<=23)) {float delta = (dose_l6_l8[ind+1]-dose_l6_l8[ind])/10; return (dose_l6_l8[ind]+delta*(Radius-radius[ind]));}
00080   }
00081   if((layer==9)||(layer==10)) {
00082     if(ind<0) return (dose_l9_l10[0]); if(ind>=23) return (dose_l9_l10[23]);
00083     if((ind>=0)&&(ind<=23)) {float delta = (dose_l9_l10[ind+1]-dose_l9_l10[ind])/10; return (dose_l9_l10[ind]+delta*(Radius-radius[ind]));}
00084   }
00085   if((layer>=11)&&(layer<=13)) {
00086     if(ind<0) return (dose_l11_l13[0]); if(ind>=23) return (dose_l11_l13[23]);
00087     if((ind>=0)&&(ind<=23)) {float delta = (dose_l11_l13[ind+1]-dose_l11_l13[ind])/10; return (dose_l11_l13[ind]+delta*(Radius-radius[ind]));}
00088   }
00089   if((layer==14)||(layer==15)) {
00090     if(ind<0) return (dose_l14_l15[0]); if(ind>=23) return (dose_l14_l15[23]);
00091     if((ind>=0)&&(ind<=23)) {float delta = (dose_l14_l15[ind+1]-dose_l14_l15[ind])/10; return (dose_l14_l15[ind]+delta*(Radius-radius[ind]));}
00092   }
00093   if((layer==16)||(layer==17)) {
00094     if(ind<0) return (dose_l16_l17[0]); if(ind>=23) return (dose_l16_l17[23]);
00095     if((ind>=0)&&(ind<=23)) {float delta = (dose_l16_l17[ind+1]-dose_l16_l17[ind])/10; return (dose_l16_l17[ind]+delta*(Radius-radius[ind]));}
00096   }
00097 
00098   return 0.;   
00099 
00100 }
00101 
00102 float HEDarkening::degradation(float mrad) {
00103   return (exp(-mrad/6.4));
00104 }
00105 
00106 float HEDarkening::int_lumi(float intlumi) {
00107   return (intlumi/500.);
00108 }