Geant4 Cross Reference |
1 //*********************************************************************************************************** 2 // Check_PixeEventFile.C 3 // Root command file 4 // Use it by typing in the command line of Root terminal: root Check_PixeEventFile.C 5 // 6 // 7 // More information is available in UserGuide 8 // Created by Z.LI LP2i Bordeaux 2022 9 //*********************************************************************************************************** 10 11 #include <math.h> 12 #include <stdint.h> 13 #include <stdio.h> 14 #include <string.h> 15 16 #include <vector> 17 // using namespace std; 18 19 #define PI 3.14159265f 20 21 // Define a structure to read and write each event in the required binary format 22 struct PixeEvent 23 { 24 uint16_t energy_10eV; 25 uint16_t pixelIndex; 26 uint16_t sliceIndex; 27 uint8_t projectionIndex; 28 }; 29 struct ParticleInfo 30 { 31 float energy_keV; 32 float mx; 33 float my; 34 float mz; 35 }; 36 struct RunInfo 37 { 38 // uint_16t 39 uint8_t projectionIndex; // 1 byte 40 uint16_t sliceIndex; // 41 uint16_t pixelIndex; 42 uint32_t nbParticle; // 4 bytes int 43 }; 44 45 double DegreeToRadian(double degree) 46 { 47 return (PI * degree / 180.); 48 } 49 50 struct Point 51 { 52 double m_x; 53 double m_y; 54 double m_z; 55 }; 56 bool IsDetected(Point poi1, Point poi2, double theta) 57 { 58 double a = (poi1.m_x * poi2.m_x + poi1.m_y * poi2.m_y + poi1.m_z * poi2.m_z) 59 / sqrt(poi1.m_x * poi1.m_x + poi1.m_y * poi1.m_y + poi1.m_z * poi1.m_z) 60 / sqrt(poi2.m_x * poi2.m_x + poi2.m_y * poi2.m_y + poi2.m_z * poi2.m_z); 61 if (a > 1.0) a = 1; 62 if (a < -1.0) a = -1; 63 double r = acos(a); 64 if (r > theta) 65 return false; 66 else 67 return true; 68 } 69 70 void Check_PixeEventFile() 71 { 72 FILE* input2 = 73 fopen("../build/PixeEvent_std_AtExit_Detector135_Aperture70_50Projections.DAT", "rb"); 74 PixeEvent ppp; 75 int proj = -1; 76 while (fread(&ppp, 7, 1, input2)) { 77 if (ppp.projectionIndex != proj) { 78 printf("__ProjectionIndex=%d\n", ppp.projectionIndex); 79 proj = ppp.projectionIndex; 80 } 81 // printf("__ProjectionIndex=%d, SliceIndex=%d, PixelIndex=%d, Energy_10eV=%d\n", 82 // ppp.projectionIndex, ppp.sliceIndex, ppp.pixelIndex, ppp.energy_10eV); 83 } 84 fclose(input2); 85 } 86