diff --git a/Makefile b/Makefile index d1f2e15f8df3f6b77baedd5aa000620b23de01e4..04a445385126ca18ca16e946956b4d356adbd79f 100644 --- a/Makefile +++ b/Makefile @@ -317,6 +317,33 @@ src/ModuleParameterisation.cc.s: $(MAKE) -f CMakeFiles/xgis_M7.dir/build.make CMakeFiles/xgis_M7.dir/src/ModuleParameterisation.cc.s .PHONY : src/ModuleParameterisation.cc.s +src/PCBParameterisation.o: src/PCBParameterisation.cc.o + +.PHONY : src/PCBParameterisation.o + +# target to build an object file +src/PCBParameterisation.cc.o: + $(MAKE) -f CMakeFiles/xgis_M7.dir/build.make CMakeFiles/xgis_M7.dir/src/PCBParameterisation.cc.o +.PHONY : src/PCBParameterisation.cc.o + +src/PCBParameterisation.i: src/PCBParameterisation.cc.i + +.PHONY : src/PCBParameterisation.i + +# target to preprocess a source file +src/PCBParameterisation.cc.i: + $(MAKE) -f CMakeFiles/xgis_M7.dir/build.make CMakeFiles/xgis_M7.dir/src/PCBParameterisation.cc.i +.PHONY : src/PCBParameterisation.cc.i + +src/PCBParameterisation.s: src/PCBParameterisation.cc.s + +.PHONY : src/PCBParameterisation.s + +# target to generate assembly for a file +src/PCBParameterisation.cc.s: + $(MAKE) -f CMakeFiles/xgis_M7.dir/build.make CMakeFiles/xgis_M7.dir/src/PCBParameterisation.cc.s +.PHONY : src/PCBParameterisation.cc.s + src/PhysicsList.o: src/PhysicsList.cc.o .PHONY : src/PhysicsList.o @@ -616,6 +643,9 @@ help: @echo "... src/ModuleParameterisation.o" @echo "... src/ModuleParameterisation.i" @echo "... src/ModuleParameterisation.s" + @echo "... src/PCBParameterisation.o" + @echo "... src/PCBParameterisation.i" + @echo "... src/PCBParameterisation.s" @echo "... src/PhysicsList.o" @echo "... src/PhysicsList.i" @echo "... src/PhysicsList.s" diff --git a/detector_params.inp b/detector_params.inp index f60721eca16d63c4d64b3a4e223d4f0adcf8125a..a00ee8f4d7801c302c4fbf92c79ad297f658ea3c 100644 --- a/detector_params.inp +++ b/detector_params.inp @@ -19,8 +19,10 @@ COLL_UPPER_1_THICK = 1000.0 # Upper internal collimator thickness (in um) COLL_UPPER_2_THICK = 250.0 # Upper external collimator thickness (in um) COLL_UPPER_2_HEIGHT = 63.0 # Upper external collimator height (in cm) OPTICAL_COUPLER_THICK = 1.0 # Optical coupler thickness (in mm) -POLYPROPYLENE_THICK = 15 # Polypropylene layer thickness (in um) - +POLYPROPYLENE_THICK = 15. # Polypropylene layer thickness (in um) +KAPTON_THICK = 7.6 # Kapton layer thickness (in um) +ALUMINUM_THICK = 0.2 # Aluminum layer thickness (in um) + # Module parameters N_SIDE = 89 # Number of scintillator bars per side (89x89=7921-81) N_SLICES_PER_BAR = 1 # Number of voxels (slices) for each scintillator bar @@ -36,4 +38,6 @@ MASK_MATERIAL = G4_W # Material of the coded mask COLL_UPPER_1_MATERIAL = G4_Al # Material of the upper internal collimator COLL_UPPER_2_MATERIAL = G4_W # Material of the upper external collimator OPTICAL_COUPLER_MATERIAL = Silicone # Material of the optical coupler -POLYPROPYLENE_MATERIAL = G4_POLYPROPYLENE # Material of the polypropylene layer \ No newline at end of file +POLYPROPYLENE_MATERIAL = G4_POLYPROPYLENE # Material of the polypropylene layer +KAPTON_MATERIAL = G4_KAPTON # Material of the kapton layer +ALUMINUM_MATERIAL = G4_Al # Material of the aluminum layer \ No newline at end of file diff --git a/fits/scorefile_grb_0_0.zip b/fits/scorefile_grb_0_0.zip new file mode 100644 index 0000000000000000000000000000000000000000..8194f3fd560551c5658e77807913ff4c23cec17c Binary files /dev/null and b/fits/scorefile_grb_0_0.zip differ diff --git a/fits_dep/S_grb_0.0_0.0.zip b/fits_dep/S_grb_0.0_0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..b784aff94335d256e4014a0d58a04e60dcbc4905 Binary files /dev/null and b/fits_dep/S_grb_0.0_0.0.zip differ diff --git a/fits_dep/X_grb_0.0_0.0.zip b/fits_dep/X_grb_0.0_0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..31d8b00a27155e99c8e9d48f5d8f6c254e0e80d9 Binary files /dev/null and b/fits_dep/X_grb_0.0_0.0.zip differ diff --git a/grb.mac b/grb00.mac similarity index 100% rename from grb.mac rename to grb00.mac diff --git a/grb40.mac b/grb40.mac new file mode 100644 index 0000000000000000000000000000000000000000..6d68a7063e9bc4c18d80230f0f5796284378804a --- /dev/null +++ b/grb40.mac @@ -0,0 +1,124 @@ +# Input spectrum +/gps/particle gamma +/gps/ene/type Arb +/gps/hist/type arb +/gps/ene/min 0.002 MeV +/gps/ene/max 2.000 MeV +/gps/hist/point 0.0020 4.9007e+01 +/gps/hist/point 0.0021 4.5642e+01 +/gps/hist/point 0.0023 4.2498e+01 +/gps/hist/point 0.0025 3.9570e+01 +/gps/hist/point 0.0026 3.6836e+01 +/gps/hist/point 0.0028 3.4288e+01 +/gps/hist/point 0.0030 3.1912e+01 +/gps/hist/point 0.0033 2.9696e+01 +/gps/hist/point 0.0035 2.7629e+01 +/gps/hist/point 0.0037 2.5702e+01 +/gps/hist/point 0.0040 2.3905e+01 +/gps/hist/point 0.0043 2.2229e+01 +/gps/hist/point 0.0046 2.0666e+01 +/gps/hist/point 0.0050 1.9210e+01 +/gps/hist/point 0.0053 1.7851e+01 +/gps/hist/point 0.0057 1.6584e+01 +/gps/hist/point 0.0061 1.5403e+01 +/gps/hist/point 0.0065 1.4301e+01 +/gps/hist/point 0.0070 1.3275e+01 +/gps/hist/point 0.0075 1.2317e+01 +/gps/hist/point 0.0081 1.1424e+01 +/gps/hist/point 0.0087 1.0593e+01 +/gps/hist/point 0.0093 9.8175e+00 +/gps/hist/point 0.0100 9.0939e+00 +/gps/hist/point 0.0107 8.4207e+00 +/gps/hist/point 0.0114 7.7929e+00 +/gps/hist/point 0.0123 7.2077e+00 +/gps/hist/point 0.0132 6.6626e+00 +/gps/hist/point 0.0141 6.1547e+00 +/gps/hist/point 0.0151 5.6817e+00 +/gps/hist/point 0.0162 5.2411e+00 +/gps/hist/point 0.0174 4.8309e+00 +/gps/hist/point 0.0187 4.4489e+00 +/gps/hist/point 0.0200 4.0936e+00 +/gps/hist/point 0.0214 3.7629e+00 +/gps/hist/point 0.0230 3.4554e+00 +/gps/hist/point 0.0247 3.1695e+00 +/gps/hist/point 0.0264 2.9036e+00 +/gps/hist/point 0.0283 2.6567e+00 +/gps/hist/point 0.0304 2.4273e+00 +/gps/hist/point 0.0326 2.2145e+00 +/gps/hist/point 0.0350 2.0172e+00 +/gps/hist/point 0.0375 1.8343e+00 +/gps/hist/point 0.0402 1.6650e+00 +/gps/hist/point 0.0431 1.5083e+00 +/gps/hist/point 0.0462 1.3636e+00 +/gps/hist/point 0.0495 1.2299e+00 +/gps/hist/point 0.0531 1.1067e+00 +/gps/hist/point 0.0570 9.9324e-01 +/gps/hist/point 0.0611 8.8895e-01 +/gps/hist/point 0.0655 7.9321e-01 +/gps/hist/point 0.0702 7.0557e-01 +/gps/hist/point 0.0753 6.2546e-01 +/gps/hist/point 0.0807 5.5239e-01 +/gps/hist/point 0.0866 4.8597e-01 +/gps/hist/point 0.0928 4.2574e-01 +/gps/hist/point 0.0995 3.7128e-01 +/gps/hist/point 0.1067 3.2223e-01 +/gps/hist/point 0.1144 2.7820e-01 +/gps/hist/point 0.1227 2.3885e-01 +/gps/hist/point 0.1316 2.0385e-01 +/gps/hist/point 0.1411 1.7287e-01 +/gps/hist/point 0.1513 1.4558e-01 +/gps/hist/point 0.1622 1.2172e-01 +/gps/hist/point 0.1739 1.0096e-01 +/gps/hist/point 0.1865 8.3027e-02 +/gps/hist/point 0.2000 6.7669e-02 +/gps/hist/point 0.2145 5.4886e-02 +/gps/hist/point 0.2300 4.4522e-02 +/gps/hist/point 0.2466 3.6112e-02 +/gps/hist/point 0.2644 2.9293e-02 +/gps/hist/point 0.2835 2.3760e-02 +/gps/hist/point 0.3040 1.9272e-02 +/gps/hist/point 0.3260 1.5633e-02 +/gps/hist/point 0.3495 1.2680e-02 +/gps/hist/point 0.3748 1.0285e-02 +/gps/hist/point 0.4018 8.3421e-03 +/gps/hist/point 0.4309 6.7668e-03 +/gps/hist/point 0.4620 5.4887e-03 +/gps/hist/point 0.4954 4.4521e-03 +/gps/hist/point 0.5312 3.6110e-03 +/gps/hist/point 0.5696 2.9292e-03 +/gps/hist/point 0.6108 2.3760e-03 +/gps/hist/point 0.6549 1.9272e-03 +/gps/hist/point 0.7022 1.5632e-03 +/gps/hist/point 0.7530 1.2680e-03 +/gps/hist/point 0.8074 1.0285e-03 +/gps/hist/point 0.8658 8.3423e-04 +/gps/hist/point 0.9283 6.7670e-04 +/gps/hist/point 0.9954 5.4888e-04 +/gps/hist/point 1.0673 4.4519e-04 +/gps/hist/point 1.1445 3.6112e-04 +/gps/hist/point 1.2272 2.9293e-04 +/gps/hist/point 1.3159 2.3760e-04 +/gps/hist/point 1.4110 1.9273e-04 +/gps/hist/point 1.5129 1.5632e-04 +/gps/hist/point 1.6223 1.2679e-04 +/gps/hist/point 1.7395 1.0285e-04 +/gps/hist/point 1.8652 8.3420e-05 +/gps/hist/point 2.0000 6.7669e-05 +/gps/hist/inter Lin + + +/gps/pos/type Plane +/gps/pos/shape Square +/gps/pos/halfx 70 cm +/gps/pos/halfy 70 cm + +/process/em/fluo true +/process/em/auger true +/process/em/pixe false + +/gps/pos/centre 128.558 0.000 153.209 +/gps/pos/rot1 -0.000 1.000 0.000 +/gps/pos/rot2 0.766 0.000 -0.643 +/gps/direction -0.643 -0.000 -0.766 + +/run/beamOn 100 diff --git a/grb44.mac b/grb44.mac new file mode 100644 index 0000000000000000000000000000000000000000..8b8398e44b446c22f4773e3c98da146d983a541e --- /dev/null +++ b/grb44.mac @@ -0,0 +1,124 @@ +# Input spectrum +/gps/particle gamma +/gps/ene/type Arb +/gps/hist/type arb +/gps/ene/min 0.002 MeV +/gps/ene/max 2.000 MeV +/gps/hist/point 0.0020 4.9007e+01 +/gps/hist/point 0.0021 4.5642e+01 +/gps/hist/point 0.0023 4.2498e+01 +/gps/hist/point 0.0025 3.9570e+01 +/gps/hist/point 0.0026 3.6836e+01 +/gps/hist/point 0.0028 3.4288e+01 +/gps/hist/point 0.0030 3.1912e+01 +/gps/hist/point 0.0033 2.9696e+01 +/gps/hist/point 0.0035 2.7629e+01 +/gps/hist/point 0.0037 2.5702e+01 +/gps/hist/point 0.0040 2.3905e+01 +/gps/hist/point 0.0043 2.2229e+01 +/gps/hist/point 0.0046 2.0666e+01 +/gps/hist/point 0.0050 1.9210e+01 +/gps/hist/point 0.0053 1.7851e+01 +/gps/hist/point 0.0057 1.6584e+01 +/gps/hist/point 0.0061 1.5403e+01 +/gps/hist/point 0.0065 1.4301e+01 +/gps/hist/point 0.0070 1.3275e+01 +/gps/hist/point 0.0075 1.2317e+01 +/gps/hist/point 0.0081 1.1424e+01 +/gps/hist/point 0.0087 1.0593e+01 +/gps/hist/point 0.0093 9.8175e+00 +/gps/hist/point 0.0100 9.0939e+00 +/gps/hist/point 0.0107 8.4207e+00 +/gps/hist/point 0.0114 7.7929e+00 +/gps/hist/point 0.0123 7.2077e+00 +/gps/hist/point 0.0132 6.6626e+00 +/gps/hist/point 0.0141 6.1547e+00 +/gps/hist/point 0.0151 5.6817e+00 +/gps/hist/point 0.0162 5.2411e+00 +/gps/hist/point 0.0174 4.8309e+00 +/gps/hist/point 0.0187 4.4489e+00 +/gps/hist/point 0.0200 4.0936e+00 +/gps/hist/point 0.0214 3.7629e+00 +/gps/hist/point 0.0230 3.4554e+00 +/gps/hist/point 0.0247 3.1695e+00 +/gps/hist/point 0.0264 2.9036e+00 +/gps/hist/point 0.0283 2.6567e+00 +/gps/hist/point 0.0304 2.4273e+00 +/gps/hist/point 0.0326 2.2145e+00 +/gps/hist/point 0.0350 2.0172e+00 +/gps/hist/point 0.0375 1.8343e+00 +/gps/hist/point 0.0402 1.6650e+00 +/gps/hist/point 0.0431 1.5083e+00 +/gps/hist/point 0.0462 1.3636e+00 +/gps/hist/point 0.0495 1.2299e+00 +/gps/hist/point 0.0531 1.1067e+00 +/gps/hist/point 0.0570 9.9324e-01 +/gps/hist/point 0.0611 8.8895e-01 +/gps/hist/point 0.0655 7.9321e-01 +/gps/hist/point 0.0702 7.0557e-01 +/gps/hist/point 0.0753 6.2546e-01 +/gps/hist/point 0.0807 5.5239e-01 +/gps/hist/point 0.0866 4.8597e-01 +/gps/hist/point 0.0928 4.2574e-01 +/gps/hist/point 0.0995 3.7128e-01 +/gps/hist/point 0.1067 3.2223e-01 +/gps/hist/point 0.1144 2.7820e-01 +/gps/hist/point 0.1227 2.3885e-01 +/gps/hist/point 0.1316 2.0385e-01 +/gps/hist/point 0.1411 1.7287e-01 +/gps/hist/point 0.1513 1.4558e-01 +/gps/hist/point 0.1622 1.2172e-01 +/gps/hist/point 0.1739 1.0096e-01 +/gps/hist/point 0.1865 8.3027e-02 +/gps/hist/point 0.2000 6.7669e-02 +/gps/hist/point 0.2145 5.4886e-02 +/gps/hist/point 0.2300 4.4522e-02 +/gps/hist/point 0.2466 3.6112e-02 +/gps/hist/point 0.2644 2.9293e-02 +/gps/hist/point 0.2835 2.3760e-02 +/gps/hist/point 0.3040 1.9272e-02 +/gps/hist/point 0.3260 1.5633e-02 +/gps/hist/point 0.3495 1.2680e-02 +/gps/hist/point 0.3748 1.0285e-02 +/gps/hist/point 0.4018 8.3421e-03 +/gps/hist/point 0.4309 6.7668e-03 +/gps/hist/point 0.4620 5.4887e-03 +/gps/hist/point 0.4954 4.4521e-03 +/gps/hist/point 0.5312 3.6110e-03 +/gps/hist/point 0.5696 2.9292e-03 +/gps/hist/point 0.6108 2.3760e-03 +/gps/hist/point 0.6549 1.9272e-03 +/gps/hist/point 0.7022 1.5632e-03 +/gps/hist/point 0.7530 1.2680e-03 +/gps/hist/point 0.8074 1.0285e-03 +/gps/hist/point 0.8658 8.3423e-04 +/gps/hist/point 0.9283 6.7670e-04 +/gps/hist/point 0.9954 5.4888e-04 +/gps/hist/point 1.0673 4.4519e-04 +/gps/hist/point 1.1445 3.6112e-04 +/gps/hist/point 1.2272 2.9293e-04 +/gps/hist/point 1.3159 2.3760e-04 +/gps/hist/point 1.4110 1.9273e-04 +/gps/hist/point 1.5129 1.5632e-04 +/gps/hist/point 1.6223 1.2679e-04 +/gps/hist/point 1.7395 1.0285e-04 +/gps/hist/point 1.8652 8.3420e-05 +/gps/hist/point 2.0000 6.7669e-05 +/gps/hist/inter Lin + + +/gps/pos/type Plane +/gps/pos/shape Square +/gps/pos/halfx 70 cm +/gps/pos/halfy 70 cm + +/process/em/fluo true +/process/em/auger true +/process/em/pixe false + +/gps/pos/centre 98.481 82.635 153.209 +/gps/pos/rot1 -0.643 0.766 0.000 +/gps/pos/rot2 0.587 0.492 -0.643 +/gps/direction -0.492 -0.413 -0.766 + +/run/beamOn 100 diff --git a/include/DetectorConstruction.hh b/include/DetectorConstruction.hh index 2fe9c91ea5c7ea4bf6518a9a5f8cd21610a7d874..6eb9330417961f79540c8797257805499f00e4cd 100644 --- a/include/DetectorConstruction.hh +++ b/include/DetectorConstruction.hh @@ -82,6 +82,10 @@ class DetectorConstruction : public G4VUserDetectorConstruction // Methods to get the polypropylene dimensions G4double GetPolypropThick() {return poly_thick;}; + // Methods to get the MLI dimensions + G4double GetKapThick() {return kap_thick;}; + G4double GetAlumThick() {return al_thick;}; + // Methods to get the materials G4Material* GetScintMaterial() {return scintMaterial;}; G4Material* GetCollSideMaterial() {return collSideMaterial;}; @@ -90,6 +94,8 @@ class DetectorConstruction : public G4VUserDetectorConstruction G4Material* GetMaskMaterial() {return maskMaterial;}; G4Material* GetOptCouplerMaterial() {return optCouplerMaterial;}; G4Material* GetPolyMaterial() {return polypropMaterial;}; + G4Material* GetKapMaterial() {return kapMaterial;}; + G4Material* GetAlumMaterial() {return alumMaterial;}; // Set methods // Method to set the world dimensions @@ -136,6 +142,10 @@ class DetectorConstruction : public G4VUserDetectorConstruction // Methods to set the polypropylene dimensions void SetPolypropThick(G4double poly) {poly_thick = poly;}; + // Methods to set the MLI dimensions + void SetKapThick(G4double kap) {kap_thick = kap;}; + void SetAlumThick(G4double alum) {al_thick = alum;}; + // Methods to set the materials void SetScintMaterial (G4String); void SetCollSideMaterial (G4String); @@ -146,6 +156,8 @@ class DetectorConstruction : public G4VUserDetectorConstruction void SetCollUpper2Material (G4String); void SetOptCouplerMaterial (G4String); void SetPolyMaterial (G4String); + void SetKapMaterial (G4String); + void SetAlumMaterial (G4String); // Print a list of parameters void PrintParameters(); @@ -177,10 +189,14 @@ class DetectorConstruction : public G4VUserDetectorConstruction G4LogicalVolume* coll_upper2Yp_log; G4LogicalVolume* coll_upper2Ym_log; G4LogicalVolume* polyprop_log; + G4LogicalVolume* kapton_log; + G4LogicalVolume* aluminum_log; + G4LogicalVolume* pcb_log; // Parameterisations G4VPVParameterisation* scintParam; G4VPVParameterisation* maskParam; + G4VPVParameterisation* pcbParam; // Physical volumes G4VPhysicalVolume* experimentalHall_phys; @@ -204,6 +220,9 @@ class DetectorConstruction : public G4VUserDetectorConstruction G4VPhysicalVolume* coll_upper2Yp_phys; G4VPhysicalVolume* coll_upper2Ym_phys; G4VPhysicalVolume* polyprop_phys; + G4VPhysicalVolume* kapton_phys; + G4VPhysicalVolume* aluminum_phys; + G4VPhysicalVolume* pcb_phys; // World dimensions @@ -250,6 +269,10 @@ class DetectorConstruction : public G4VUserDetectorConstruction // Polypropylene layer dimensions G4double poly_thick; + // MLI layer dimensions + G4double kap_thick; + G4double al_thick; + // Materials G4Material* defaultMaterial; G4Material* sddMaterial; @@ -261,6 +284,9 @@ class DetectorConstruction : public G4VUserDetectorConstruction G4Material* collUpper2Material; G4Material* optCouplerMaterial; G4Material* polypropMaterial; + G4Material* kapMaterial; + G4Material* alumMaterial; + G4Material* FR4; }; diff --git a/include/PCBParameterisation.hh b/include/PCBParameterisation.hh new file mode 100644 index 0000000000000000000000000000000000000000..5fba6bbcf7c8d9858087aabed5eb56d8fb34766a --- /dev/null +++ b/include/PCBParameterisation.hh @@ -0,0 +1,59 @@ +#ifndef PCBParameterisation_H +#define PCBParameterisation_H 1 + +#include "globals.hh" +#include "G4VPVParameterisation.hh" + +class G4VPhysicalVolume; +class G4Box; + +// Dummy declarations to get rid of warnings... +class G4Trd; +class G4Trap; +class G4Cons; +class G4Orb; +class G4Sphere; +class G4Torus; +class G4Para; +class G4Box; +class G4Hype; +class G4Tubs; +class G4Polycone; +class G4Polyhedra; +class G4BREPSolidPolyhedra; + +class PCBParameterisation : public G4VPVParameterisation +{ + public: + PCBParameterisation(G4double fSpacing, G4double fLength, G4double fHeight, G4double fThick, G4int fSide); + + virtual ~PCBParameterisation(); + + void ComputeTransformation (const G4int copyNo, G4VPhysicalVolume* physVol) const; + + + private: // Dummy declarations to get rid of warnings... + void ComputeDimensions (G4Trd&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Trap&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Cons&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Sphere&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Orb&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Torus&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Para&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Box&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Hype&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Tubs&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Polycone&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Polyhedra&,const G4int,const G4VPhysicalVolume*) const {} +// void ComputeDimensions (G4BREPSolidPolyhedra&,const G4int,const G4VPhysicalVolume*) const {} + + private: + G4double fSpacing; + G4double fLength; + G4double fHeight; + G4double fThick; + G4int fSide; +}; + + +#endif \ No newline at end of file diff --git a/python/__pycache__/convertRoot2Fits.cpython-312.pyc b/python/__pycache__/convertRoot2Fits.cpython-312.pyc index 3b4e64cafa2fcf42cd19ac6ee2f2441a270d1f8f..543c3e9d727e44404f702de3d652f79572d5d9bf 100644 Binary files a/python/__pycache__/convertRoot2Fits.cpython-312.pyc and b/python/__pycache__/convertRoot2Fits.cpython-312.pyc differ diff --git a/python/__pycache__/convertRoot2Fits.cpython-38.pyc b/python/__pycache__/convertRoot2Fits.cpython-38.pyc index f5a944a5abe16fceea8d616c9f72a74aac424ce6..92122c29b865e2c5413025cad8e5c413a55ea906 100644 Binary files a/python/__pycache__/convertRoot2Fits.cpython-38.pyc and b/python/__pycache__/convertRoot2Fits.cpython-38.pyc differ diff --git a/python/__pycache__/data.cpython-312.pyc b/python/__pycache__/data.cpython-312.pyc index e2be926d18e03674de011d500a71930904e487ce..02396291acae1954161a00ee91799777b763231f 100644 Binary files a/python/__pycache__/data.cpython-312.pyc and b/python/__pycache__/data.cpython-312.pyc differ diff --git a/python/__pycache__/macro.cpython-312.pyc b/python/__pycache__/macro.cpython-312.pyc index d53c88685e929b59ca57df3e93bb9633eb647b60..e6cb38914f7877cf21d707ab0d6b7db02f916909 100644 Binary files a/python/__pycache__/macro.cpython-312.pyc and b/python/__pycache__/macro.cpython-312.pyc differ diff --git a/python/__pycache__/macro.cpython-38.pyc b/python/__pycache__/macro.cpython-38.pyc index 31ca05152ccbec3956f9ba566334efa820ab1b60..b9c92f65d413ded729dd7a2f3738c05c9dc830fe 100644 Binary files a/python/__pycache__/macro.cpython-38.pyc and b/python/__pycache__/macro.cpython-38.pyc differ diff --git a/python/aeFF.py b/python/aeFF.py index 75c218ffb33fdea102dd6efdfc35ee0fb3cec446..1816602c41183cd40badc343edea33b99f5202c2 100644 --- a/python/aeFF.py +++ b/python/aeFF.py @@ -16,37 +16,37 @@ def main(): data_estraction(file_dat) #2 Filter data - data = np.loadtxt(file_dat, dtype=str) + # data = np.loadtxt(file_dat, dtype=str) - energy = data[:, 0].astype(float) - ratio_X = data[:, 1].astype(float) - ratio_S = data[:, 2].astype(float) - theta = data[:, 3].astype(float) - phi = data[:, 4].astype(float) - X_en_dep_file = data[:, 5] - S_en_dep_file = data[:, 6] + # energy = data[:, 0].astype(float) + # ratio_X = data[:, 1].astype(float) + # ratio_S = data[:, 2].astype(float) + # theta = data[:, 3].astype(float) + # phi = data[:, 4].astype(float) + # X_en_dep_file = data[:, 5] + # S_en_dep_file = data[:, 6] # Ottieni tutte le combinazioni uniche di theta e phi - angle_combinations = np.unique(np.column_stack((theta, phi)), axis=0) + #angle_combinations = np.unique(np.column_stack((theta, phi)), axis=0) # Inizializza due liste per tracciare i dati per conti X e conti S - plot_data_X = [] - plot_data_S = [] + # plot_data_X = [] + # plot_data_S = [] # Cicla attraverso tutte le combinazioni uniche di theta e phi - for combination in angle_combinations: # estrae dall'array due valori e gli da il nome - theta_val = combination[0] - phi_val = combination[1] + #for combination in angle_combinations: # estrae dall'array due valori e gli da il nome + # theta_val = combination[0] + # phi_val = combination[1] - # Maschera booleana per filtrare i dati per la combinazione corrente di theta e phi - # confronta i dati del file con i dati dell'array creato - mask = (theta == theta_val) & (phi == phi_val) + # # Maschera booleana per filtrare i dati per la combinazione corrente di theta e phi + # # confronta i dati del file con i dati dell'array creato + # mask = (theta == theta_val) & (phi == phi_val) - energy_filtered = energy[mask] - ratio_X_filtered = ratio_X[mask] - ratio_S_filtered = ratio_S[mask] - X_en_dep_file_filtered = X_en_dep_file[mask] - S_en_dep_file_filtered = S_en_dep_file[mask] + # energy_filtered = energy[mask] + # ratio_X_filtered = ratio_X[mask] + # ratio_S_filtered = ratio_S[mask] + # X_en_dep_file_filtered = X_en_dep_file[mask] + # S_en_dep_file_filtered = S_en_dep_file[mask] # Salva i dati per il plot #plot_data_X.append((energy_filtered, ratio_X_filtered, theta_val, phi_val)) diff --git a/python/data.py b/python/data.py index af7f0a61d383207ae9887290e277a0fa2fcb6cab..23148c0496e900e1ab2a3509065dfab5028e9035 100644 --- a/python/data.py +++ b/python/data.py @@ -8,7 +8,10 @@ from noisy import add_noise_X, add_noise_S def write_fits_dep(energy, en_primary, theta, phi, type, en_dep_noisy, en_dep, name_id, pos_id, x_pixel, y_pixel): # ! รจ qui che decido quali informazioni sulla simulazione voglio nei file fits_dep + x1_pixel = (pos_id // 89) +1 + y1_pixel = (pos_id % 89) +1 + X_Y = np.vstack([x1_pixel, y1_pixel]).T # Write FITS file # "Null" primary array @@ -18,14 +21,17 @@ def write_fits_dep(energy, en_primary, theta, phi, type, en_dep_noisy, en_dep, n tbhdu = pyfits.BinTableHDU.from_columns([ #pyfits.Column(name='En_dep_Noise', format='1D', unit='keV', array = en_dep_noisy), pyfits.Column(name='En_Primary', format='1D', unit='keV', array = en_primary), - #pyfits.Column(name='(X,Y)', format='2I', array = (x_pixel,y_pixel)) + #pyfits.Column(name=name_id, format='1I', array = pos_id), + pyfits.Column(name='X_Y', format='2J', array = X_Y), + pyfits.Column(name='X_Pixel_cm', format='1D', unit='cm', array = x_pixel), + pyfits.Column(name='Y_Pixel_cm', format='1D', unit='cm', array = y_pixel) #pyfits.Column(name='En_dep', format='1D', unit='keV', array = en_dep) ]) tbhdu.header['EXTNAME'] = 'EVENTS' tbhdu.header['TELESCOP'] = 'THESEUS' tbhdu.header['INSTRUME'] = 'XGIS' - tbhdu.header['COMMENT'] = "Simulated GRB spectrum, Band funcition alpha1 = -1, alpha2 = -3, Ebreak = 100 " + tbhdu.header['COMMENT'] = "Simulated GRB spectrum, Band function alpha1 = -1, alpha2 = -3, Ebreak = 100 keV" tbhdu.header['TUNIT1'] = "keV" tbhdu.header['TYPE'] = type #tbhdu.header['ENERGY'] = energy @@ -85,12 +91,12 @@ def get_data(files): def write_results(file_dat, results): with open(file_dat, "w") as f: - for energy, en_primary, ratio_X, ratio_S, theta, phi, X_en_dep_noisy, S_en_dep_noisy, X_en_dep, S_en_dep, pixel_id, scint_id in results: + for energy, en_primary, ratio_X, ratio_S, theta, phi, X_en_dep_noisy, S_en_dep_noisy, X_en_dep, S_en_dep, pixel_id, scint_id, x_pixel, y_pixel in results: - X_fits = write_fits_dep(energy, en_primary, theta, phi, 'X', X_en_dep_noisy, X_en_dep, 'Pixel_ID', pixel_id) - S_fits = write_fits_dep(energy, en_primary, theta, phi, 'S', S_en_dep_noisy, S_en_dep, 'Scint_ID', scint_id) + X_fits = write_fits_dep(energy, en_primary, theta, phi, 'X', X_en_dep_noisy, X_en_dep, 'Pixel_ID', pixel_id, x_pixel, y_pixel) + S_fits = write_fits_dep(energy, en_primary, theta, phi, 'S', S_en_dep_noisy, S_en_dep, 'Scint_ID', scint_id, x_pixel, y_pixel) - f.write(f"{energy:.1f}\t{ratio_X:.3f}\t{ratio_S:.3f}\t{theta}\t{phi}\t{X_fits}\t{S_fits}\n") + #f.write(f"{energy:.1f}\t{ratio_X:.3f}\t{ratio_S:.3f}\t{theta}\t{phi}\t{X_fits}\t{S_fits}\n") diff --git a/python/main.py b/python/main.py index 1267b68ec1062e57d7e27e9ac8d132bc29e2d171..64daed59639b0543e0f4b0e577c4e2b81c7dbf77 100644 --- a/python/main.py +++ b/python/main.py @@ -22,17 +22,17 @@ def main(): (rot1_x, rot1_y, rot1_z), (rot2_x, rot2_y, rot2_z) = tangent_plane(theta_rad, phi_rad) dir_x, dir_y, dir_z = beam_direction(theta_rad, phi_rad) - macro_name = "primo.mac" + macro_name = "grb44.mac" create_macro(macro_name, energy, x, y, z, rot1_x, rot1_y, rot1_z, rot2_x, rot2_y, rot2_z, dir_x, dir_y, dir_z) + + #run_macro(macro_name) - run_macro(macro_name) - - generate_fits(energy, theta_deg, phi_deg) + #generate_fits(energy, theta_deg, phi_deg) if __name__ == "__main__": main() diff --git a/src/DetectorConstruction.cc b/src/DetectorConstruction.cc index 52208e36c890e5a9a8f9958c3cba6e28750eb695..25e7ff7964b51bfb67444b013607a12da9631af6 100644 --- a/src/DetectorConstruction.cc +++ b/src/DetectorConstruction.cc @@ -1,6 +1,7 @@ #include "DetectorConstruction.hh" #include "ModuleParameterisation.hh" #include "MaskParameterisation.hh" +#include "PCBParameterisation.hh" #include "SDDSensitiveDetector.hh" #include "SensitiveDetector.hh" @@ -53,13 +54,16 @@ DetectorConstruction::DetectorConstruction() sddUpper_log(0), sddLower_log(0), optCoupler_log(0), + polyprop_log(0), coll_sideXp_log(0), coll_sideXm_log(0), coll_sideYp_log(0), coll_sideYm_log(0), bus1_log(0), -bus2_log(0), + bus2_log(0), mask_log(0), + kapton_log(0), + aluminum_log(0), coll_upper1Xp_log(0), coll_upper1Xm_log(0), coll_upper1Yp_log(0), @@ -75,13 +79,16 @@ bus2_log(0), sddUpper_phys(0), sddLower_phys(0), optCoupler_phys(0), + polyprop_phys(0), coll_sideXp_phys(0), coll_sideXm_phys(0), coll_sideYp_phys(0), coll_sideYm_phys(0), bus1_phys(0), -bus2_phys(0), + bus2_phys(0), mask_phys(0), + kapton_phys(0), + aluminum_phys(0), coll_upper1Xp_phys(0), coll_upper1Xm_phys(0), coll_upper1Yp_phys(0), @@ -171,6 +178,11 @@ void DetectorConstruction::DefineParameters() G4double opt_t = read *mm; config.readInto(read, "POLYPROPYLENE_THICK", 15.); G4double p_t = read *um; + config.readInto(read, "KAPTON_THICK", 7.6); + G4double k_t = read *um; + config.readInto(read, "ALUMINUM_THICK", 0.2); + G4double a_t = read *um; + SetScintX(s_x) ; @@ -195,6 +207,8 @@ void DetectorConstruction::DefineParameters() SetCollUpper2Height(cu2_h) ; SetOptCouplerThick(opt_t) ; SetPolypropThick(p_t) ; + SetKapThick(k_t) ; + SetAlumThick(a_t) ; // Materials @@ -217,6 +231,10 @@ void DetectorConstruction::DefineParameters() SetOptCouplerMaterial(readm); config.readInto<G4String>(readm, "POLYPROPYLENE_MATERIAL", "G4_POLYPROPYLENE"); SetPolyMaterial(readm); + config.readInto<G4String>(readm, "KAPTON_MATERIAL", "G4_KAPTON"); + SetKapMaterial(readm); + config.readInto<G4String>(readm, "ALUMINUM_MATERIAL", "G4_Al"); + SetAlumMaterial(readm); } @@ -229,13 +247,13 @@ void DetectorConstruction::DefineMaterials() G4double density; // Density G4int nel; // Number of elements in a compound G4int natoms; -// G4int ncomponents; // Number of components in a mixture -// G4double fractionmass; + G4int ncomponents; // Number of components in a mixture + G4double fractionmass; // Elements G4Element* H = new G4Element("Hydrogen" , "H" , z = 1. , a = 1.008*g/mole); G4Element* He = new G4Element("Helium" , "He", z = 2. , a = 4.003*g/mole); - // G4Element* C = new G4Element("Carbon" , "C" , z = 6. , a = 12.01*g/mole); + G4Element* C = new G4Element("Carbon" , "C" , z = 6. , a = 12.01*g/mole); G4Element* N = new G4Element("Nitrogen" , "N" , z = 7. , a = 14.01*g/mole); G4Element* O = new G4Element("Oxygen" , "O" , z = 8. , a = 16.00*g/mole); // G4Element* Na = new G4Element("Sodium" , "Na", z = 11., a = 22.99*g/mole); @@ -289,6 +307,8 @@ void DetectorConstruction::DefineMaterials() G4Material* G4_Al = man->FindOrBuildMaterial("G4_Al"); G4Material* G4_Fe = man->FindOrBuildMaterial("G4_Fe"); G4Material* G4_POLYPROPYLENE = man->FindOrBuildMaterial("G4_POLYPROPYLENE"); + G4Material* G4_KAPTON = man->FindOrBuildMaterial("G4_KAPTON"); + G4Material* G4_SILICON_DIOXIDE = man->FindOrBuildMaterial("G4_SILICON_DIOXIDE"); // LaBr3O G4Material* LaBr3 = new G4Material("LaBr3", density = 5.06 *g/cm3, nel = 2); @@ -299,6 +319,36 @@ void DetectorConstruction::DefineMaterials() G4Material* Silicone = new G4Material("Silicone", density = 1.08 *g/cm3, nel = 2); Silicone -> AddElement(Si, natoms=1); Silicone -> AddElement(O, natoms=2); + + // Diglycidyl Ether of Bisphenol A (First compound of epoxy resin Epotek 301-1) + G4Material* Epoxy_1 = new G4Material("Epoxy_1", density = 1.16*g/cm3, nel = 3); + Epoxy_1 -> AddElement(C, natoms=19); + Epoxy_1 -> AddElement(H, natoms=20); + Epoxy_1 -> AddElement(O, natoms=4); + + // 1,4-Butanediol Diglycidyl Ether (Second compound of epoxy resin Epotek 301-1) + G4Material* Epoxy_2 = new G4Material("Epoxy_2", density = 1.10*g/cm3, nel = 3); + Epoxy_2 -> AddElement(C, natoms=10); + Epoxy_2 -> AddElement(H, natoms=18); + Epoxy_2 -> AddElement(O, natoms=4); + + // 1,6-Hexanediamine 2,2,4-trimetyl (Third compound of epoxy resin Epotek 301-1) + G4Material* Epoxy_3 = new G4Material("Epoxy_3", density = 1.16*g/cm3, nel = 3); + Epoxy_3 -> AddElement(C, natoms=9); + Epoxy_3 -> AddElement(H, natoms=22); + Epoxy_3 -> AddElement(N, natoms=2); + + // Epoxy resin Epotek 301-1 + G4Material* Epoxy_Resin = new G4Material("Epoxy_Resin", density = 1.19*g/cm3, ncomponents=3); + Epoxy_Resin -> AddMaterial(Epoxy_1, fractionmass=56*perCent); + Epoxy_Resin -> AddMaterial(Epoxy_2, fractionmass=24*perCent); + Epoxy_Resin -> AddMaterial(Epoxy_3, fractionmass=20*perCent); + + // FR4 PCB material + G4Material* FR4 = new G4Material("FR4", density = 1.8*g/cm3, ncomponents=2); + FR4 -> AddMaterial(G4_SILICON_DIOXIDE, fractionmass=60*perCent); + FR4 -> AddMaterial(Epoxy_Resin, fractionmass=40*perCent); + // Default materials of the World: vacuum defaultMaterial = Vacuum; } @@ -331,7 +381,6 @@ G4VPhysicalVolume* DetectorConstruction::Construct() 0, false, 0); - // ! Scintillator @@ -346,8 +395,10 @@ G4VPhysicalVolume* DetectorConstruction::Construct() G4double scint_container_side_z = scint_z; G4Box* scint_container_box = new G4Box("scint_container_box", scint_container_side_x/2., scint_container_side_y/2., scint_container_side_z/2.); + G4LogicalVolume* scint_container_log = new G4LogicalVolume(scint_container_box, defaultMaterial, "scint_container_log", 0, 0, 0); + G4VPhysicalVolume* scint_container_phys = new G4PVPlacement(0, G4ThreeVector(0.,0.,-scint_z/2.), scint_container_log, @@ -370,9 +421,7 @@ G4VPhysicalVolume* DetectorConstruction::Construct() numberOfBars, // Number of replicas scintParam); // The parametrisation - - - + // ! Side Collimator G4double coll_side_x = scint_container_side_x; @@ -534,7 +583,51 @@ G4VPhysicalVolume* DetectorConstruction::Construct() false, 0); + + // ! PCB + + // Solid + G4double pcb_side_x = coll_side_x *cm; + G4double pcb_side_y = coll_side_y *cm; + G4double pcb_thick = 1.6 *mm; // ! si potrebbe mettere come parametro + G4double pcb_height = optCoupler_thick+sdd_thick+pcb_thick/2. *cm; + + G4Box* pcb_container_box = new G4Box("pcb_container_box", pcb_side_x/2., pcb_side_y/2., pcb_thick/2.); + // Logical + G4LogicalVolume* pcb_container_log = new G4LogicalVolume(pcb_container_box, defaultMaterial, "pcb_container_log", 0, 0, 0); + + // Physical + G4VPhysicalVolume* pcb_container_phys = new G4PVPlacement(0, + G4ThreeVector(0,0,pcb_height), + pcb_container_log, + "pcb_container_phys", + experimentalHall_log, + false, + 0); + + // Solid + G4double pcb_elem_side_x = 3.*mm; + G4double pcb_elem_side_y = pcb_side_y; + + G4Box* pcb_box = new G4Box("pcb_box", pcb_elem_side_x/2., pcb_elem_side_y/2., pcb_thick/2.); + + // Logical + pcb_log = new G4LogicalVolume(pcb_box, FR4, "pcb_log", 0, 0, 0); + + // Physical + G4int n_rep = (n_side-1)/2; // repliche di PCB usando il numero di scintillatori per side + + pcbParam = new PCBParameterisation(pcb_elem_side_x, pcb_elem_side_y, pcb_height, pcb_thick, n_rep); + + pcb_phys = new G4PVParameterised("pcb_phys", // their name + pcb_log, // their logical volume + pcb_container_log, // Mother logical volume + kXAxis, // Are placed along this axis + n_rep, // Number of replicas + pcbParam); // The parametrisation + + // ! Mask // Solid @@ -596,7 +689,6 @@ G4VPhysicalVolume* DetectorConstruction::Construct() } else { G4cerr << "Errore durante il caricamento del file mask.dat." << G4endl; } - // mask_phys = new G4PVParameterised("mask_phys", // their name // mask_log, // their logical volume @@ -605,6 +697,38 @@ G4VPhysicalVolume* DetectorConstruction::Construct() // n_mask_elem_replicas, // Number of replicas // maskParam); // The parametrisation + + // ! MLI Kapton + Aluminum + + // Solid + G4Box* kapton_box = new G4Box("kapton_box", mask_side_x/2., mask_side_y/2., kap_thick/2.); + G4Box* aluminum_box = new G4Box("aluminum_box", mask_side_x/2., mask_side_y/2., al_thick/2.); + + // Logical + kapton_log = new G4LogicalVolume(kapton_box, kapMaterial, "kapton_log", 0, 0, 0); + aluminum_log = new G4LogicalVolume(aluminum_box, alumMaterial, "aluminum_log", 0, 0, 0); + + // Physical + G4double kapton_x = 0; + G4double kapton_y = 0; + G4double kapton_z = optCoupler_thick + sdd_thick + mask_focalDistance + mask_thick + kap_thick/2.; + kapton_phys = new G4PVPlacement(0, + G4ThreeVector(kapton_x,kapton_y,kapton_z), + kapton_log, + "kapton_phys", + experimentalHall_log, + false, + 0); + G4double aluminum_x = 0; + G4double aluminum_y = 0; + G4double aluminum_z = optCoupler_thick + sdd_thick + mask_focalDistance + mask_thick + kap_thick + al_thick/2.; + aluminum_phys = new G4PVPlacement(0, + G4ThreeVector(aluminum_x,aluminum_y,aluminum_z), + aluminum_log, + "aluminum_phys", + experimentalHall_log, + false, + 0); // ! Upper Collimator, internal @@ -637,8 +761,8 @@ G4VPhysicalVolume* DetectorConstruction::Construct() double xrotTheta = atan((mask_side_x + coll_upper1_thick/2 - base_side_x)/(2*mask_focalDistance)); double yrotTheta = atan((mask_side_y + coll_upper1_thick/2 - base_side_y)/(2*mask_focalDistance)); - //G4cout << "xrotTheta, yrotTheta (rad) " << xrotTheta << " " << yrotTheta << G4endl; - //G4cout << "xrotTheta, yrotTheta (deg) " << 180/3.141592*(xrotTheta) << " " << 180/3.141592*(yrotTheta) << G4endl; + // G4cout << "xrotTheta, yrotTheta (rad) " << xrotTheta << " " << yrotTheta << G4endl; + // G4cout << "xrotTheta, yrotTheta (deg) " << 180/3.141592*(xrotTheta) << " " << 180/3.141592*(yrotTheta) << G4endl; // Solid (for yPlus, yMinus) G4double pDzY = mask_focalDistance/cos(yrotTheta)/2. ; // half-height @@ -820,13 +944,14 @@ G4VPhysicalVolume* DetectorConstruction::Construct() experimentalHall_log, false, 0); - - + + // ! Polypropylene // Solid - G4double poly_side_x = coll_side_x + 2*coll_side_thick + 2*10.* tan(xrotTheta) *cm; - G4double poly_side_y = coll_side_y + 2*coll_side_thick + 2*10.* tan(yrotTheta) *cm; + G4double poly_height = 10.*cm; + G4double poly_side_x = coll_side_x + (2*coll_side_thick) + (2*poly_height) * tan(xrotTheta); + G4double poly_side_y = coll_side_y + (2*coll_side_thick) + (2*poly_height) * tan(yrotTheta); G4Box* polyprop_box = new G4Box("polyprop_box", poly_side_x/2., poly_side_y/2., poly_thick/2.); @@ -836,7 +961,7 @@ G4VPhysicalVolume* DetectorConstruction::Construct() // Physical G4double polyprop_x = 0; G4double polyprop_y = 0; - G4double polyprop_z = 10.*cm; + G4double polyprop_z = poly_height; polyprop_phys = new G4PVPlacement(0, G4ThreeVector(polyprop_x,polyprop_y,polyprop_z), polyprop_log, @@ -851,11 +976,14 @@ G4VPhysicalVolume* DetectorConstruction::Construct() G4Colour white (1.0, 1.0, 1.0); G4Colour red (1.0, 0.0, 0.0); G4Colour green (0.0, 1.0, 0.0); + G4Colour dgreen (0.0, 0.8, 0.0); G4Colour blue (0.0, 0.0, 1.0); G4Colour yellow (1.0, 1.0, 0.0); G4Colour magenta (1.0, 0.0, 1.0); G4Colour cyan (0.0, 1.0, 1.0); - G4Colour grey (0.5, 0.5, 0.5); + G4Colour brown (0.65, 0.16, 0.16); + G4Colour gold (1.0, 0.84, 0.0); + G4Colour silver (0.75, 0.75, 0.75); experimentalHall_log -> SetVisAttributes(G4VisAttributes::GetInvisible()); @@ -877,12 +1005,27 @@ G4VPhysicalVolume* DetectorConstruction::Construct() G4VisAttributes* OptCouplerVisAtt= new G4VisAttributes(cyan); optCoupler_log -> SetVisAttributes(OptCouplerVisAtt); +// G4VisAttributes* PCBContainerVisAtt= new G4VisAttributes(white); + pcb_container_log -> SetVisAttributes(G4VisAttributes::GetInvisible()); + + G4VisAttributes* PCBVisAtt= new G4VisAttributes(dgreen); + pcb_log -> SetVisAttributes(PCBVisAtt); + + G4VisAttributes* PolyVisAtt= new G4VisAttributes(brown); + polyprop_log -> SetVisAttributes(PolyVisAtt); + // G4VisAttributes* MaskContainerVisAtt= new G4VisAttributes(white); mask_container_log -> SetVisAttributes(G4VisAttributes::GetInvisible()); G4VisAttributes* MaskVisAtt= new G4VisAttributes(magenta); mask_log -> SetVisAttributes(MaskVisAtt); + G4VisAttributes* KapVisAtt= new G4VisAttributes(gold); + kapton_log -> SetVisAttributes(KapVisAtt); + + G4VisAttributes* AlumVisAtt= new G4VisAttributes(silver); + aluminum_log -> SetVisAttributes(AlumVisAtt); + G4VisAttributes* Coll1VisAtt= new G4VisAttributes(blue); coll_upper1Xp_log -> SetVisAttributes(Coll1VisAtt); coll_upper1Xm_log -> SetVisAttributes(Coll1VisAtt); @@ -895,9 +1038,6 @@ G4VPhysicalVolume* DetectorConstruction::Construct() coll_upper2Yp_log -> SetVisAttributes(Coll2VisAtt); coll_upper2Ym_log -> SetVisAttributes(Coll2VisAtt); - G4VisAttributes* PolyVisAtt= new G4VisAttributes(grey); - polyprop_log -> SetVisAttributes(PolyVisAtt); - // Dump the geometry in a GDML file, solo se non esiste @@ -1004,6 +1144,17 @@ void DetectorConstruction::SetPolyMaterial(G4String materialChoice) if (pttoMaterial) polypropMaterial = pttoMaterial; } +void DetectorConstruction::SetKapMaterial(G4String materialChoice) +{ + G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); + if (pttoMaterial) kapMaterial = pttoMaterial; +} + +void DetectorConstruction::SetAlumMaterial(G4String materialChoice) +{ + G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); + if (pttoMaterial) alumMaterial = pttoMaterial; +} void DetectorConstruction::PrintParameters() diff --git a/src/PCBParameterisation.cc b/src/PCBParameterisation.cc index b1cbb93c5f8cc87b7ddf87990bd2747f5b376af5..b5393b5b0ffd3b2453368a4d282799df779dce32 100644 --- a/src/PCBParameterisation.cc +++ b/src/PCBParameterisation.cc @@ -8,10 +8,12 @@ #include "G4Box.hh" -PCBParameterisation::PCBParameterisation(G4double barSide, G4double barLength, G4int nSide) +PCBParameterisation::PCBParameterisation(G4double barSide, G4double barLength, G4double barHeight, G4double barThick, G4int nSide) { fSpacing = barSide; fLength = barLength; + fHeight = barHeight; + fThick = barThick; fSide = nSide; } @@ -19,17 +21,22 @@ PCBParameterisation::PCBParameterisation(G4double barSide, G4double barLength, G PCBParameterisation::~PCBParameterisation() {;} -// void PCBParameterisation::ComputeDimensions (G4Box &, const G4int, G4VPhysicalVolume* physVol) const -// { - -// } void PCBParameterisation::ComputeTransformation (const G4int copyNo, G4VPhysicalVolume* physVol) const { + G4double xPos = 0.*cm; + G4double yPos = 0.*cm; + G4double zPos = fHeight; + + xPos = (-fLength)/2. +1.*cm + copyNo* 1.*cm; //sono al centro della barra capisci se indietreggiare di mezza barra + - physVol->SetTranslation(G4ThreeVector(xCell, yCell, zCell)); + G4cout << "*** DEBUG ***: Replica number " << copyNo << G4endl; + G4cout << "*** DEBUG ***: " << xPos << " " << yPos << " " << zPos << G4endl; + + + physVol->SetTranslation(G4ThreeVector(xPos, yPos, zPos)); } - diff --git a/xgis_M7 b/xgis_M7 index dbcfc0f2d644f884c645d654097d1a4823119b39..7ab6988c222767c89e652f98ebfc0c19afc0e3bb 100755 Binary files a/xgis_M7 and b/xgis_M7 differ