31 double root32 = TMath::Sqrt(3.0) / 2.0;
34 double interaction_depth = 18.0;
35 double inter_crystal_gap = 1.0;
36 double dist_cap_crystal = 0.55;
37 double cap_thickness = 0.70;
38 double alpha_taper = 4.125 * TMath::DegToRad();
39 double dist_flat_to_flat = 61.35;
40 double dist_core_corner = dist_flat_to_flat / TMath::Sqrt(3.0);
41 double R = 0.5 * dist_core_corner - dist_cap_crystal - cap_thickness;
42 double focal_length = ( dist_core_corner + inter_crystal_gap * 0.5 );
43 focal_length /= TMath::Tan( alpha_taper );
48 interaction_depth = 0.0;
49 dist_core_corner = 34.0;
51 R = dist_core_corner * 0.5;
52 alpha_taper = TMath::ATan( dist_core_corner / focal_length );
63 for(
unsigned char i = 0; i <
ncry; i++ ) {
66 seg_offset[i][1].SetXYZ( R / 2, -R * root32, 0.0 );
67 seg_offset[i][2].SetXYZ( -R / 2, -R * root32, 0.0 );
69 seg_offset[i][4].SetXYZ( R / 2, R * root32, 0.0 );
71 seg_offset[i][6].SetXYZ( -R / 2, R * root32, 0.0 );
78 for(
unsigned char i = 0; i <
ncry; i++ ) {
80 for(
unsigned char j = 0; j <
nseg; j++ ) {
89 seg_offset[i][j].RotateZ( -TMath::TwoPi() * i / 3.0 );
103 double myalpha, myphi, mytheta;
105 if(
phi > TMath::Pi() ||
phi < 0 ) {
107 myphi = TMath::PiOver2() +
phi;
112 myphi = TMath::PiOver2() -
phi;
117 for(
unsigned char i = 0; i <
ncry; i++ ) {
118 for(
unsigned char j = 0; j <
nseg; j++ ) {
127 for(
unsigned char i = 0; i <
ncry; i++ ) {
128 for(
unsigned char j = 0; j <
nseg; j++ ) {