3 #include "G4Poisson.hh" 4 #include "Randomize.hh" 10 #include "CLHEP/Units/PhysicalConstants.h" 11 using namespace CLHEP;
15 map<string, double> dgtz;
16 vector<identifier> identity = aHit->
GetId();
18 int sector = identity[0].id;
19 int veto_id = identity[1].id;
20 int channel = identity[2].id;
51 double paddle_surface = 0;
52 double light_yield = 0;
53 double att_length = 0;
56 double sensor_surface = 0;
57 double sensor_effective_area = 0;
59 double sensor_gain = 0;
60 double light_coll = 0;
61 double light_guide_att = 0;
75 double optical_coupling[13]= {0., 0.94,0.57, 0.35, 0.7, 0.094, 0.177, 0.52, 0.75, 0.52, 0.52, 0.38, 1.0 };
76 for (
int s=0; s<13; s++) optical_coupling[s] = optical_coupling[s]*0.68;
79 sensor_effective_area=0.9;
84 if(channel==1 || channel==2)
90 paddle_surface = 2*s1*2*s2;
91 sensor_surface=pow(2.5*cm,2)*pi;
96 if(channel==5 || channel==6)
100 paddle_surface = 2*s1*2*s2;
101 sensor_surface=pow((2.5/2)*cm,2)*pi;
103 light_guide_att=0.19;
106 if(channel==3 || channel==4)
112 sensor_surface=pow(2.5*cm,2)*pi;
113 paddle_surface = 2*s1*2*s2;
119 light_coll=sensor_surface/paddle_surface;
120 if (sensor_surface>paddle_surface) light_coll=1.;
121 light_coll=optical_coupling[1]*light_coll*sensor_effective_area*light_guide_att;
125 double birks_constant=aHit->
GetDetector().
GetLogical()->GetMaterial()->GetIonisation()->GetBirksConstant();
130 double time_min[4] = {0,0,0,0};
132 vector<G4ThreeVector> Lpos = aHit->
GetLPos();
133 vector<G4double> Edep = aHit->
GetEdep();
134 vector<G4double> Dx = aHit->
GetDx();
137 vector<G4double> times = aHit->
GetTime();
139 unsigned int nsteps = Edep.size();
142 for(
unsigned int s=0; s<nsteps; s++) Etot = Etot + Edep[s];
146 for(
unsigned int s=0; s<nsteps; s++)
148 double dLeft =-10000.;
149 double dRight =-10000.;
152 if(channel==1 || channel==2)
154 dLeft = length - Lpos[s].z();
155 dRight = length + Lpos[s].z();
159 if(channel==3 || channel==4)
161 dLeft = length + Lpos[s].y();
162 dRight = length - Lpos[s].y();
164 if(channel==5 || channel==6)
167 dRight = Lpos[s].y();
168 double dCent=sqrt(dLeft*dLeft+dRight*dRight);
188 double Edep_B = BirksAttenuation(Edep[s],Dx[s],charge[s],birks_constant);
190 etot_g4=etot_g4+Edep_B;
196 etotL = etotL + Edep_B/2 * exp(-dLeft/att_length) * light_coll;
197 etotR = etotR + Edep_B/2 * exp(-dRight/att_length) * light_coll;
201 timeL= timeL + (times[s] + dLeft/veff) / nsteps;
202 timeR= timeR + (times[s] + dRight/veff) / nsteps;
205 if(s==0 || (time_min[0]>(times[s]+dLeft/veff))) time_min[0]=times[s]+dLeft/veff;
209 if(s==0 || (time_min[1]>(times[s]+dRight/veff))) time_min[1]=times[s]+ dRight/veff;
213 peL=G4Poisson(etotL*light_yield*sensor_qe);
214 peR=G4Poisson(etotR*light_yield*sensor_qe);
220 double sigmaTL=sqrt(pow(0.2*nanosecond,2.)+pow(1.*nanosecond,2.)/(peL+1.));
221 double sigmaTR=sqrt(pow(0.2*nanosecond,2.)+pow(1.*nanosecond,2.)/(peR+1.));
224 tL=(time_min[0]+G4RandGauss::shoot(0.,sigmaTL))*1000.;
225 tR=(time_min[1]+G4RandGauss::shoot(0.,sigmaTR))*1000.;
253 if(channel==1 || channel==2 )
261 if(channel==3 || channel ==4)
266 if(channel==5 || channel==6)
275 cout << log_msg <<
" veto: " << veto_id <<
", channel: " << channel <<
", sector: " << sector ;
276 cout << log_msg <<
" Etot=" << Etot/MeV << endl;
277 cout << log_msg <<
" TDC1=" << TDC1 <<
" TDC2=" << TDC2 <<
" ADC1=" << ADC1 <<
" ADC2=" << ADC2 << endl;
286 double veff=13*cm/ns ;
294 vector<G4ThreeVector> Lpos = aHit->
GetLPos();
295 vector<G4double> Edep = aHit->
GetEdep();
296 vector<G4double> Dx = aHit->
GetDx();
299 vector<G4double> times = aHit->
GetTime();
300 unsigned int nsteps = Edep.size();
306 double dLeft =-10000.;
308 for(
unsigned int s=0; s<nsteps; s++) Etot = Etot + Edep[s];
311 for(
unsigned int s=0; s<nsteps; s++)
313 double Edep_B=Edep[s];
314 etot_g4=etot_g4+Edep_B;
316 X_hit_ave=X_hit_ave+Lpos[s].x();
317 Y_hit_ave=Y_hit_ave+Lpos[s].y();
318 Z_hit_ave=Z_hit_ave+Lpos[s].z();
320 T_hit_ave=T_hit_ave+times[s];
325 X_hit_ave=X_hit_ave/nsteps;
326 Y_hit_ave=Y_hit_ave/nsteps;
327 Z_hit_ave=Z_hit_ave/nsteps;
328 T_hit_ave=T_hit_ave/nsteps;
330 timeL= dLeft/veff+T_hit_ave;
335 pe_sipm=IVresponseProposal(channel, X_hit_ave, Y_hit_ave, Z_hit_ave,sx,sy,sz);
337 ADC1=G4Poisson(pe_sipm[0]*etot_g4/2.05) ;
338 ADC2=G4Poisson(pe_sipm[1]*etot_g4/2.05) ;
339 ADC3=G4Poisson(pe_sipm[2]*etot_g4/2.05) ;
340 ADC4=G4Poisson(pe_sipm[3]*etot_g4/2.05) ;
341 double sigmaTL=sqrt(pow(0.2*nanosecond,2.)+pow(1.*nanosecond,2.)/(peL+1.));
343 TDC1=(timeL+G4RandGauss::shoot(0.,sigmaTL))*1000.;
344 TDC2=(timeL+G4RandGauss::shoot(0.,sigmaTL))*1000.;
345 TDC3=(timeL+G4RandGauss::shoot(0.,sigmaTL))*1000.;
346 TDC4=(timeL+G4RandGauss::shoot(0.,sigmaTL))*1000.;
371 double optical_coupling[13]= {0., 0.94,0.57, 0.35, 0.7, 0.094, 0.177, 0.52, 0.75, 0.52, 0.52, 0.38, 1.0 };
372 for (
int s=0; s<13; s++) optical_coupling[s] = optical_coupling[s]*0.68;
373 light_yield=9200/MeV;
375 sensor_effective_area=0.9;
380 if(channel==1 || channel==2 || channel==3 || channel ==4)
386 paddle_surface = 2*s1*2*s2;
387 sensor_surface=pow(2.5*cm,2)*pi;
392 if(channel==5 || channel==6)
396 paddle_surface = 2*s1*2*s2;
397 sensor_surface=pow((2.5/2)*cm,2)*pi;
399 light_guide_att=0.19;
402 if(channel==7 || channel==8 || channel==9 || channel ==10 || channel ==11 || channel ==12 )
408 sensor_surface=pow(2.5*cm,2)*pi;
409 paddle_surface = 2*s1*2*s2;
415 light_coll=sensor_surface/paddle_surface;
416 if (sensor_surface>paddle_surface) light_coll=1.;
417 light_coll=optical_coupling[channel]*light_coll*sensor_effective_area*light_guide_att;
421 double birks_constant=aHit->
GetDetector().
GetLogical()->GetMaterial()->GetIonisation()->GetBirksConstant();
426 double time_min[4] = {0,0,0,0};
428 vector<G4ThreeVector> Lpos = aHit->
GetLPos();
429 vector<G4double> Edep = aHit->
GetEdep();
430 vector<G4double> Dx = aHit->
GetDx();
433 vector<G4double> times = aHit->
GetTime();
435 unsigned int nsteps = Edep.size();
438 for(
unsigned int s=0; s<nsteps; s++) Etot = Etot + Edep[s];
442 for(
unsigned int s=0; s<nsteps; s++)
444 double dLeft =-10000.;
445 double dRight =-10000.;
448 if(channel==1 || channel==2 || channel==3 || channel ==4)
450 dLeft = length - Lpos[s].z();
451 dRight = length + Lpos[s].z();
455 if(channel==7 || channel==8 || channel==9 || channel ==10 || channel ==11 || channel ==12 )
457 dLeft = length + Lpos[s].y();
458 dRight = length - Lpos[s].y();
460 if(channel==5 || channel==6)
463 dRight = Lpos[s].y();
464 double dCent=sqrt(dLeft*dLeft+dRight*dRight);
484 double Edep_B = BirksAttenuation(Edep[s],Dx[s],charge[s],birks_constant);
486 etot_g4=etot_g4+Edep_B;
492 etotL = etotL + Edep_B/2 * exp(-dLeft/att_length) * light_coll;
493 etotR = etotR + Edep_B/2 * exp(-dRight/att_length) * light_coll;
497 timeL= timeL + (times[s] + dLeft/veff) / nsteps;
498 timeR= timeR + (times[s] + dRight/veff) / nsteps;
501 if(s==0 || (time_min[0]>(times[s]+dLeft/veff))) time_min[0]=times[s]+dLeft/veff;
505 if(s==0 || (time_min[1]>(times[s]+dRight/veff))) time_min[1]=times[s]+ dRight/veff;
509 peL=G4Poisson(etotL*light_yield*sensor_qe);
510 peR=G4Poisson(etotR*light_yield*sensor_qe);
516 double sigmaTL=sqrt(pow(0.2*nanosecond,2.)+pow(1.*nanosecond,2.)/(peL+1.));
517 double sigmaTR=sqrt(pow(0.2*nanosecond,2.)+pow(1.*nanosecond,2.)/(peR+1.));
520 tL=(time_min[0]+G4RandGauss::shoot(0.,sigmaTL))*1000.;
521 tR=(time_min[1]+G4RandGauss::shoot(0.,sigmaTR))*1000.;
544 cout << log_msg <<
" veto: " << veto_id <<
", channel: " << channel ;
545 cout << log_msg <<
" Etot=" << Etot/MeV << endl;
546 cout << log_msg <<
" TDC1=" << TDC1 <<
" TDC2=" << TDC2 <<
" ADC1=" << ADC1 <<
" ADC2=" << ADC2 << endl;
556 if(channel==1 || channel==3 )
561 if(channel==2 || channel ==4)
566 if(channel==5 || channel==6)
571 if(channel==7 || channel==8 || channel==9 || channel ==10 || channel ==11 || channel ==12 )
590 double veff=13*cm/ns ;
598 vector<G4ThreeVector> Lpos = aHit->
GetLPos();
599 vector<G4double> Edep = aHit->
GetEdep();
600 vector<G4double> Dx = aHit->
GetDx();
603 vector<G4double> times = aHit->
GetTime();
604 unsigned int nsteps = Edep.size();
610 double dLeft =-10000.;
612 for(
unsigned int s=0; s<nsteps; s++) Etot = Etot + Edep[s];
615 for(
unsigned int s=0; s<nsteps; s++)
617 double Edep_B=Edep[s];
618 etot_g4=etot_g4+Edep_B;
620 X_hit_ave=X_hit_ave+Lpos[s].x();
621 Y_hit_ave=Y_hit_ave+Lpos[s].y();
622 Z_hit_ave=Z_hit_ave+Lpos[s].z();
624 T_hit_ave=T_hit_ave+times[s];
629 X_hit_ave=X_hit_ave/nsteps;
630 Y_hit_ave=Y_hit_ave/nsteps;
631 Z_hit_ave=Z_hit_ave/nsteps;
632 T_hit_ave=T_hit_ave/nsteps;
634 timeL= dLeft/veff+T_hit_ave;
638 pe_sipm=IVresponse(channel, X_hit_ave, Y_hit_ave, Z_hit_ave);
640 ADC1=G4Poisson(pe_sipm[0]*etot_g4/2.05) ;
641 ADC2=G4Poisson(pe_sipm[1]*etot_g4/2.05) ;
642 ADC3=G4Poisson(pe_sipm[2]*etot_g4/2.05) ;
643 ADC4=G4Poisson(pe_sipm[3]*etot_g4/2.05) ;
644 double sigmaTL=sqrt(pow(0.2*nanosecond,2.)+pow(1.*nanosecond,2.)/(peL+1.));
646 TDC1=(timeL+G4RandGauss::shoot(0.,sigmaTL))*1000.;
647 TDC2=(timeL+G4RandGauss::shoot(0.,sigmaTL))*1000.;
648 TDC3=(timeL+G4RandGauss::shoot(0.,sigmaTL))*1000.;
649 TDC4=(timeL+G4RandGauss::shoot(0.,sigmaTL))*1000.;
671 double optical_coupling[3]= {0., 1.,0.37 };
672 for (
int s=0; s<3; s++) optical_coupling[s] = optical_coupling[s]*0.34;
674 light_yield=9200/MeV;
676 sensor_surface=pow(1.27*cm,2)*pi;
677 sensor_effective_area=0.9;
687 paddle_surface = 2*s1*2*s2;
692 light_coll=sensor_surface/paddle_surface;
693 if (sensor_surface>paddle_surface) light_coll=1.;
694 light_coll=optical_coupling[channel]*light_coll*sensor_effective_area*light_guide_att;
699 double birks_constant=aHit->
GetDetector().
GetLogical()->GetMaterial()->GetIonisation()->GetBirksConstant();
704 double time_min[4] = {0,0,0,0};
706 vector<G4ThreeVector> Lpos = aHit->
GetLPos();
707 vector<G4double> Edep = aHit->
GetEdep();
708 vector<G4double> Dx = aHit->
GetDx();
711 vector<G4double> times = aHit->
GetTime();
713 unsigned int nsteps = Edep.size();
716 for(
unsigned int s=0; s<nsteps; s++) Etot = Etot + Edep[s];
721 for(
unsigned int s=0; s<nsteps; s++)
723 double dLeft =-10000.;
724 double dRight =-10000.;
727 dLeft = length - Lpos[s].z();
728 dRight = length + Lpos[s].z();
744 double Edep_B = BirksAttenuation(Edep[s],Dx[s],charge[s],birks_constant);
746 etot_g4=etot_g4+Edep_B;
752 etotL = etotL + Edep_B/2 * exp(-dLeft/att_length) * light_coll;
753 etotR = etotR + Edep_B/2 * exp(-dRight/att_length) * light_coll;
757 timeL= timeL + (times[s] + dLeft/veff) / nsteps;
758 timeR= timeR + (times[s] + dRight/veff) / nsteps;
761 if(s==0 || (time_min[0]>(times[s]+dLeft/veff))) time_min[0]=times[s]+dLeft/veff;
765 if(s==0 || (time_min[1]>(times[s]+dRight/veff))) time_min[1]=times[s]+ dRight/veff;
769 peL=G4Poisson(etotL*light_yield*sensor_qe);
770 peR=G4Poisson(etotR*light_yield*sensor_qe);
776 double sigmaTL=sqrt(pow(0.2*nanosecond,2.)+pow(1.*nanosecond,2.)/(peL+1.));
777 double sigmaTR=sqrt(pow(0.2*nanosecond,2.)+pow(1.*nanosecond,2.)/(peR+1.));
780 tL=(time_min[0]+G4RandGauss::shoot(0.,sigmaTL))*1000.;
781 tR=(time_min[1]+G4RandGauss::shoot(0.,sigmaTR))*1000.;
805 cout << log_msg <<
" veto: " << veto_id <<
", channel: " << channel ;
806 cout << log_msg <<
" Etot=" << Etot/MeV << endl;
807 cout << log_msg <<
" TDC1=" << TDC1 <<
" TDC2=" << TDC2 <<
" ADC1=" << ADC1 <<
" ADC2=" << ADC2 << endl;
826 dgtz[
"sector"] = sector;
827 dgtz[
"veto"] = veto_id;
828 dgtz[
"channel"] = channel;
844 id[
id.size()-1].id_sharing = 1;
856 static double response[4];
858 for(
unsigned int s=0; s<4; s++)response[s] = 0.;
863 double y=(1058/2.-zz)/10.;
866 {1.99627e+01, 1.64910e-01, -5.83528e-01, -7.34483e-03, -1.25062e-03, 4.43805e-03, 5.63766e-05, 1.40682e-05},
867 {1.86162e+01, 4.36475e-02, -6.78752e-02, -5.47887e-03, -1.60512e-04, -2.33958e-02, 5.55285e-05, -5.94424e-05},
868 {1.85966e+01, 1.96301e-01, 1.34868e-01, -7.66131e-04, -1.61720e-03, -1.91598e-02, -1.76198e-06, -4.72970e-05},
869 {9.73394e+00, 1.56111e-01, 3.27558e-01, 2.45041e-03, -1.31615e-03, 5.82688e-03, -1.48528e-05, 2.35177e-05}
873 for(
unsigned int s=0; s<4; s++)
874 response[s] = parm[s][7]*x*x*y + parm[s][6]*x*y*y + parm[s][5]*x*x + parm[s][4]*y*y + parm[s][3]*x*y + parm[s][2]*x + parm[s][1]*y + parm[s][0];
882 double x=-(xx-428/2)/10;
883 double y=(1058/2.-zz)/10.;
886 for(
unsigned int s=0; s<4; s++) response[s] =0.;
887 if (x<10) response[0]= (-0.000303034)*y*y + (0.00658939)*y + 32.4847;
888 if (x>10 && x <20 ) response[1]= (0.00301674)*y*y + (-0.446544)*y + 27.6374;
889 if (x>20 && x <32.8 ) response[2]= (-0.000275694)*y*y + (0.00124251)*y + 18.8999;
890 if (x>32.8 && x <42.8 ) response[3]= (-0.00139525)*y*y + (0.104993)*y + 18.1047;
899 double y=(yy+346./2)/10.;
901 double parm[4]={-0.04, -0.05, 1.4, 85.};
904 for(
unsigned int s=0; s<4; s++) response[s] =0.;
905 response[0] = parm[0]*x*x + parm[1]*y*y + parm[2]*y + parm[3];
914 double y=(yy+346./2)/10.;
916 double parm[4]={-0.04, -0.05, 1.4, 75.};
919 for(
unsigned int s=0; s<4; s++) response[s] =0.;
920 response[0] = parm[0]*x*x + parm[1]*y*y + parm[2]*y + parm[3];
930 double y=(1058/2.-zz)/10.;
933 {2.34524e+01, 4.28317e-02, -5.91894e-01, -5.13309e-03, -2.47905e-04, -3.44887e-03, 4.25481e-05, -1.03817e-05},
934 {1.68313e+01, 5.36853e-02, -2.14037e-01, -4.80535e-03, -4.65364e-04, -1.66572e-02, 4.89028e-05, -3.33380e-05},
935 {2.50310e+01, -3.10007e-02, 3.57657e-01, -1.39833e-02, 2.99406e-04, -3.23669e-02, 1.27237e-04, -1.13100e-05},
936 {1.74834e+01, 1.83925e-01, 5.36737e-01, 7.09769e-04, -1.64490e-03, 7.48199e-03, 3.43011e-08, 2.11894e-05}
940 for(
unsigned int s=0; s<4; s++)
941 response[s] = parm[s][7]*x*x*y + parm[s][6]*x*y*y + parm[s][5]*x*x + parm[s][4]*y*y + parm[s][3]*x*y + parm[s][2]*x + parm[s][1]*y + parm[s][0];
950 double y=(1058/2.-zz)/10.;
953 {8.12418e+00, 6.61315e-02, -2.99641e-01, -9.10408e-04, -6.79474e-04, 2.00648e-03, 1.24963e-05, -1.73809e-05},
954 {1.19501e+01, 4.76291e-02, -1.77047e-01, 9.27111e-05, -4.63061e-04, -1.40014e-02, 4.39766e-06, -2.93896e-05},
955 {1.68607e+01, -4.15476e-02, 2.54857e-01, -6.87363e-03, 3.26876e-04, -2.65178e-02, 5.62748e-05, -3.56067e-06},
956 {9.73394e+00, 1.56111e-01, 3.27558e-01, 2.45041e-03, -1.31615e-03, 5.82688e-03, -1.48528e-05, 2.35177e-05}
960 for(
unsigned int s=0; s<4; s++)
961 response[s] = parm[s][7]*x*x*y + parm[s][6]*x*y*y + parm[s][5]*x*x + parm[s][4]*y*y + parm[s][3]*x*y + parm[s][2]*x + parm[s][1]*y + parm[s][0];
976 static double response[4];
978 for(
unsigned int s=0; s<4; s++)response[s] = 0.;
983 double y=(sz-zz)/10.;
986 {1.99627e+01, 1.64910e-01, -5.83528e-01, -7.34483e-03, -1.25062e-03, 4.43805e-03, 5.63766e-05, 1.40682e-05},
987 {1.86162e+01, 4.36475e-02, -6.78752e-02, -5.47887e-03, -1.60512e-04, -2.33958e-02, 5.55285e-05, -5.94424e-05},
988 {1.85966e+01, 1.96301e-01, 1.34868e-01, -7.66131e-04, -1.61720e-03, -1.91598e-02, -1.76198e-06, -4.72970e-05},
989 {9.73394e+00, 1.56111e-01, 3.27558e-01, 2.45041e-03, -1.31615e-03, 5.82688e-03, -1.48528e-05, 2.35177e-05}
993 for(
unsigned int s=0; s<4; s++)
994 response[s] = parm[s][7]*x*x*y + parm[s][6]*x*y*y + parm[s][5]*x*x + parm[s][4]*y*y + parm[s][3]*x*y + parm[s][2]*x + parm[s][1]*y + parm[s][0];
1000 else if (channel==2)
1002 double x=-(xx-sx)/10;
1003 double y=(sz-zz)/10.;
1006 for(
unsigned int s=0; s<4; s++) response[s] =0.;
1007 if (x<10) response[0]= (-0.000303034)*y*y + (0.00658939)*y + 32.4847;
1008 if (x>10 && x <20 ) response[1]= (0.00301674)*y*y + (-0.446544)*y + 27.6374;
1009 if (x>20 && x <32.8 ) response[2]= (-0.000275694)*y*y + (0.00124251)*y + 18.8999;
1010 if (x>32.8 && x <42.8 ) response[3]= (-0.00139525)*y*y + (0.104993)*y + 18.1047;
1016 else if (channel==6)
1019 double y=(yy+sy)/10.;
1021 double parm[4]={-0.04, -0.05, 1.4, 85.};
1024 for(
unsigned int s=0; s<4; s++) response[s] =0.;
1025 response[0] = parm[0]*x*x + parm[1]*y*y + parm[2]*y + parm[3];
1031 else if (channel==5)
1034 double y=(yy+sy)/10.;
1036 double parm[4]={-0.04, -0.05, 1.4, 75.};
1039 for(
unsigned int s=0; s<4; s++) response[s] =0.;
1040 response[0] = parm[0]*x*x + parm[1]*y*y + parm[2]*y + parm[3];
1047 else if (channel==3)
1050 double y=(sz-zz)/10.;
1053 {2.34524e+01, 4.28317e-02, -5.91894e-01, -5.13309e-03, -2.47905e-04, -3.44887e-03, 4.25481e-05, -1.03817e-05},
1054 {1.68313e+01, 5.36853e-02, -2.14037e-01, -4.80535e-03, -4.65364e-04, -1.66572e-02, 4.89028e-05, -3.33380e-05},
1055 {2.50310e+01, -3.10007e-02, 3.57657e-01, -1.39833e-02, 2.99406e-04, -3.23669e-02, 1.27237e-04, -1.13100e-05},
1056 {1.74834e+01, 1.83925e-01, 5.36737e-01, 7.09769e-04, -1.64490e-03, 7.48199e-03, 3.43011e-08, 2.11894e-05}
1060 for(
unsigned int s=0; s<4; s++)
1061 response[s] = parm[s][7]*x*x*y + parm[s][6]*x*y*y + parm[s][5]*x*x + parm[s][4]*y*y + parm[s][3]*x*y + parm[s][2]*x + parm[s][1]*y + parm[s][0];
1067 else if (channel==4)
1070 double y=(sz-zz)/10.;
1073 {8.12418e+00, 6.61315e-02, -2.99641e-01, -9.10408e-04, -6.79474e-04, 2.00648e-03, 1.24963e-05, -1.73809e-05},
1074 {1.19501e+01, 4.76291e-02, -1.77047e-01, 9.27111e-05, -4.63061e-04, -1.40014e-02, 4.39766e-06, -2.93896e-05},
1075 {1.68607e+01, -4.15476e-02, 2.54857e-01, -6.87363e-03, 3.26876e-04, -2.65178e-02, 5.62748e-05, -3.56067e-06},
1076 {9.73394e+00, 1.56111e-01, 3.27558e-01, 2.45041e-03, -1.31615e-03, 5.82688e-03, -1.48528e-05, 2.35177e-05}
1080 for(
unsigned int s=0; s<4; s++)
1081 response[s] = parm[s][7]*x*x*y + parm[s][6]*x*y*y + parm[s][5]*x*x + parm[s][4]*y*y + parm[s][3]*x*y + parm[s][2]*x + parm[s][1]*y + parm[s][0];
1098 double response = destep;
1099 if (birks*destep*stepl*charge != 0.)
1101 response = destep/(1. + birks*destep/stepl);
1113 double C=9.59*1E-4*mm*mm/MeV/MeV;
1114 double response = destep;
1115 if (birks*destep*stepl*charge != 0.)
1117 response = destep/(1. + birks*destep/stepl + C*pow(destep/stepl,2.));
1125 map< string, vector <int> > MH;
map< string, double > integrateDgt(MHit *, int)
G4LogicalVolume * GetLogical()
Returns Logical Volume pointer.
double * IVresponse(int, double, double, double)
vector< identifier > GetId()
double BirksAttenuation2(double, double, int, double)
vector< G4ThreeVector > GetLPos()
map< string, vector< int > > multiDgt(MHit *, int)
vector< double > GetTime()
double BirksAttenuation(double, double, int, double)
vector< double > dimensions
vector of dimensions. Size, units depends on solid type
vector< identifier > processID(vector< identifier >, G4Step *, detector)
vector< double > GetEdep()
double * IVresponseProposal(int, double, double, double, double, double, double)
vector< int > GetCharges()