From 43a9450d968b8e8405e19a559e9e62a34c5be060 Mon Sep 17 00:00:00 2001 From: deserevi <deserevi@nptool> Date: Tue, 28 Sep 2010 16:01:59 +0000 Subject: [PATCH] * Add work from M. Labiche on the NPTool.Paris branch + NPLib - Add TParisPhysics.{h,cxx} class - Add Paris.{h,cxx} class + NPSimulation - Add Cluster class for Paris - Add Shields classes for Paris - Add scorers - Add reaction chamber class (Chamber.{hh,cc}) + NPAnalysis - Add framework for analysings the results of the G4 simulation + Inputs - Add a lot of different Paris geometrical files --- Inputs/DetectorConfiguration/Paris1.detector | 153 +++ .../Paris1moduleChamber.detector | 53 + Inputs/DetectorConfiguration/Paris2.detector | 195 +++ .../Paris3by3_CsIshield.detector | 126 ++ .../Paris3by3_CsIshield208.detector | 674 ++++++++++ .../Paris3by3module.detector | 35 + .../ParisAll_208.detector | 792 ++++++++++++ .../ParisAll_208pipe1.detector | 792 ++++++++++++ .../ParisAll_208pipe1noshield.detector | 212 ++++ .../ParisAll_208pipe2.detector | 792 ++++++++++++ .../ParisAll_208pipe2noshield.detector | 211 ++++ .../ParisAll_208tilt.detector | 220 ++++ .../ParisAll_235.detector | 340 ++++++ .../ParisAll_278.detector | 213 ++++ .../ParisPhShield.detector | 112 ++ .../gaspardParis.detector | 557 +++++++++ .../gaspardParisAll.detector | 741 +++++++++++ .../gaspardV1_r150.detector | 672 ++++++++++ .../gaspardV1_r150_69det.detector | 711 +++++++++++ .../gaspardV1_r150asy.detector | 690 +++++++++++ .../gaspardV1_r150asy_1.detector | 670 ++++++++++ Inputs/EventGenerator/Source.reaction | 22 + Inputs/EventGenerator/gamma.source | 16 + Inputs/EventGenerator/isotropic.source | 6 +- Licence/Contributor | 5 +- NPAnalysis/Paris/Makefile | 10 + NPAnalysis/Paris/RunToTreat.txt | 5 + NPAnalysis/Paris/include/ObjectManager.hh | 130 ++ NPAnalysis/Paris/src/Analysis.cc | 199 +++ NPAnalysis/Paris/src/GNUmakefile | 42 + NPEnvironment.tchrc | 6 +- NPLib/Makefile | 16 +- NPLib/Paris/Makefile | 15 +- NPLib/Paris/Paris.cxx | 886 ++++++++++++++ NPLib/Paris/Paris.h | 139 +++ NPLib/Paris/TParisData.cxx | 54 +- NPLib/Paris/TParisData.h | 177 ++- NPLib/Paris/TParisPhysics.cxx | 146 +++ NPLib/Paris/TParisPhysics.h | 82 ++ NPLib/README | 29 +- NPLib/Shield/Makefile | 313 +++++ NPLib/Shield/Shield.cxx | 871 +++++++++++++ NPLib/Shield/Shield.h | 138 +++ NPLib/Shield/TShieldData.cxx | 84 ++ NPLib/Shield/TShieldData.h | 155 +++ NPLib/Shield/TShieldPhysics.cxx | 103 ++ NPLib/Shield/TShieldPhysics.h | 81 ++ NPLib/VDetector/DetectorManager.cxx | 39 + NPLib/liblist | 3 +- NPSimulation/include/Chamber.hh | 111 ++ NPSimulation/include/DetectorConstruction.hh | 9 +- .../include/EventGeneratorIsotropic.hh | 2 +- NPSimulation/include/GaspardTrackerSquare.hh | 8 +- NPSimulation/include/Paris.hh | 2 +- NPSimulation/include/ParisCluster.hh | 162 +++ NPSimulation/include/ParisModule.hh | 2 +- .../{ParisPhoswitch.hh => ParisPhoswich.hh} | 33 +- NPSimulation/include/ParisScorers.hh | 175 +++ NPSimulation/include/Shield.hh | 73 ++ NPSimulation/include/ShieldClParis.hh | 148 +++ NPSimulation/include/ShieldModule.hh | 92 ++ NPSimulation/include/ShieldPhParis.hh | 158 +++ NPSimulation/include/ShieldScorers.hh | 107 ++ NPSimulation/src/Chamber.cc | 255 ++++ NPSimulation/src/DetectorConstruction.cc | 84 +- NPSimulation/src/EventGeneratorIsotropic.cc | 2 + NPSimulation/src/GaspardTrackerDummyShape.cc | 9 + NPSimulation/src/GeneralScorers.cc | 4 +- NPSimulation/src/Paris.cc | 29 +- NPSimulation/src/ParisCluster.cc | 1084 +++++++++++++++++ NPSimulation/src/ParisModule.cc | 5 +- NPSimulation/src/ParisPhoswich.cc | 996 +++++++++++++++ NPSimulation/src/ParisScorers.cc | 423 +++++++ NPSimulation/src/PhysicsList.cc | 86 +- NPSimulation/src/Shield.cc | 150 +++ .../{ParisPhoswitch.cc => ShieldClParis.cc} | 365 ++++-- NPSimulation/src/ShieldModule.cc | 61 + NPSimulation/src/ShieldPhParis.cc | 805 ++++++++++++ NPSimulation/src/ShieldScorers.cc | 231 ++++ NPSimulation/vasigamma.mac | 27 + NPSimulation/vis.mac | 34 +- 81 files changed, 18292 insertions(+), 173 deletions(-) create mode 100644 Inputs/DetectorConfiguration/Paris1.detector create mode 100644 Inputs/DetectorConfiguration/Paris1moduleChamber.detector create mode 100644 Inputs/DetectorConfiguration/Paris2.detector create mode 100644 Inputs/DetectorConfiguration/Paris3by3_CsIshield.detector create mode 100644 Inputs/DetectorConfiguration/Paris3by3_CsIshield208.detector create mode 100644 Inputs/DetectorConfiguration/Paris3by3module.detector create mode 100644 Inputs/DetectorConfiguration/ParisAll_208.detector create mode 100644 Inputs/DetectorConfiguration/ParisAll_208pipe1.detector create mode 100644 Inputs/DetectorConfiguration/ParisAll_208pipe1noshield.detector create mode 100644 Inputs/DetectorConfiguration/ParisAll_208pipe2.detector create mode 100644 Inputs/DetectorConfiguration/ParisAll_208pipe2noshield.detector create mode 100644 Inputs/DetectorConfiguration/ParisAll_208tilt.detector create mode 100644 Inputs/DetectorConfiguration/ParisAll_235.detector create mode 100644 Inputs/DetectorConfiguration/ParisAll_278.detector create mode 100644 Inputs/DetectorConfiguration/ParisPhShield.detector create mode 100644 Inputs/DetectorConfiguration/gaspardParis.detector create mode 100644 Inputs/DetectorConfiguration/gaspardParisAll.detector create mode 100644 Inputs/DetectorConfiguration/gaspardV1_r150.detector create mode 100644 Inputs/DetectorConfiguration/gaspardV1_r150_69det.detector create mode 100644 Inputs/DetectorConfiguration/gaspardV1_r150asy.detector create mode 100644 Inputs/DetectorConfiguration/gaspardV1_r150asy_1.detector create mode 100644 Inputs/EventGenerator/Source.reaction create mode 100644 Inputs/EventGenerator/gamma.source create mode 100644 NPAnalysis/Paris/Makefile create mode 100644 NPAnalysis/Paris/RunToTreat.txt create mode 100644 NPAnalysis/Paris/include/ObjectManager.hh create mode 100644 NPAnalysis/Paris/src/Analysis.cc create mode 100644 NPAnalysis/Paris/src/GNUmakefile create mode 100644 NPLib/Paris/Paris.cxx create mode 100644 NPLib/Paris/Paris.h create mode 100644 NPLib/Paris/TParisPhysics.cxx create mode 100644 NPLib/Paris/TParisPhysics.h create mode 100644 NPLib/Shield/Makefile create mode 100644 NPLib/Shield/Shield.cxx create mode 100644 NPLib/Shield/Shield.h create mode 100644 NPLib/Shield/TShieldData.cxx create mode 100644 NPLib/Shield/TShieldData.h create mode 100644 NPLib/Shield/TShieldPhysics.cxx create mode 100644 NPLib/Shield/TShieldPhysics.h create mode 100644 NPSimulation/include/Chamber.hh create mode 100644 NPSimulation/include/ParisCluster.hh rename NPSimulation/include/{ParisPhoswitch.hh => ParisPhoswich.hh} (89%) create mode 100644 NPSimulation/include/ParisScorers.hh create mode 100644 NPSimulation/include/Shield.hh create mode 100644 NPSimulation/include/ShieldClParis.hh create mode 100644 NPSimulation/include/ShieldModule.hh create mode 100644 NPSimulation/include/ShieldPhParis.hh create mode 100644 NPSimulation/include/ShieldScorers.hh create mode 100644 NPSimulation/src/Chamber.cc create mode 100644 NPSimulation/src/ParisCluster.cc create mode 100644 NPSimulation/src/ParisPhoswich.cc create mode 100644 NPSimulation/src/ParisScorers.cc create mode 100644 NPSimulation/src/Shield.cc rename NPSimulation/src/{ParisPhoswitch.cc => ShieldClParis.cc} (54%) create mode 100644 NPSimulation/src/ShieldModule.cc create mode 100644 NPSimulation/src/ShieldPhParis.cc create mode 100644 NPSimulation/src/ShieldScorers.cc create mode 100644 NPSimulation/vasigamma.mac diff --git a/Inputs/DetectorConfiguration/Paris1.detector b/Inputs/DetectorConfiguration/Paris1.detector new file mode 100644 index 000000000..b2dd336b3 --- /dev/null +++ b/Inputs/DetectorConfiguration/Paris1.detector @@ -0,0 +1,153 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2l + NBLAYERS= 50 + X= 0 + Y= 0 + Z= 0 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 -235 84.5 + X1_Y128= 84.5 -235 84.5 + X128_Y1= -84.5 -235 -84.5 + X128_Y128= 84.5 -235 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -225.920617 -106.419571 84.5 + X1_Y128= -106.419571 -225.920617 84.5 + X128_Y1= -225.920617 -106.419571 -84.5 + X128_Y128= -106.419571 -225.920617 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -235 84.5 84.5 + X1_Y128= -235 -84.5 84.5 + X128_Y1= -235 84.5 -84.5 + X128_Y128= -235 -84.5 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ParisCluster + X1_Y1= -106.419571 225.920617 84.5 + X1_Y128= -225.920617 106.419571 84.5 + X128_Y1= -106.419571 225.920617 -84.5 + X128_Y128= -225.920617 106.419571 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 84.5 235 84.5 + X1_Y128= -84.5 235 84.5 + X128_Y1= 84.5 235 -84.5 + X128_Y128= -84.5 235 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 225.920617 106.419571 84.5 + X1_Y128= 106.419571 225.920617 84.5 + X128_Y1= 225.920617 106.419571 -84.5 + X128_Y128= 106.419571 225.920617 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 235 -84.5 84.5 + X1_Y128= 235 84.5 84.5 + X128_Y1= 235 -84.5 -84.5 + X128_Y128= 235 84.5 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 106.419571 -225.920617 84.5 + X1_Y128= 225.920617 -106.419571 84.5 + X128_Y1= 106.419571 -225.920617 -84.5 + X128_Y128= 225.920617 -106.419571 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 84.5 84.5 -235 + X1_Y128= -84.5 84.5 -235 + X128_Y1= 84.5 -84.5 -235 + X128_Y128= -84.5 -84.5 -235 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 225.920617 84.5 -106.419571 + X1_Y128= 106.419571 84.5 -225.920617 + X128_Y1= 225.920617 -84.5 -106.419571 + X128_Y128= 106.419571 -84.5 -225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 106.419571 84.5 225.920617 + X1_Y128= 225.920617 84.5 106.419571 + X128_Y1= 106.419571 -84.5 225.920617 + X128_Y128= 225.920617 -84.5 106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 84.5 235 + X1_Y128= 84.5 84.5 235 + X128_Y1= -84.5 -84.5 235 + X128_Y128= 84.5 -84.5 235 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -225.920617 84.5 106.419571 + X1_Y128= -106.419571 84.5 225.920617 + X128_Y1= -225.920617 -84.5 106.419571 + X128_Y128= -106.419571 -84.5 225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -106.419571 84.5 -225.920617 + X1_Y128= -225.920617 84.5 -106.419571 + X128_Y1= -106.419571 -84.5 -225.920617 + X128_Y128= -225.920617 -84.5 -106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 106.419571 -225.920617 + X1_Y128= 84.5 106.419571 -225.920617 + X128_Y1= -84.5 225.920617 -106.419571 + X128_Y128= 84.5 225.920617 -106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 225.920617 106.419571 + X1_Y128= 84.5 225.920617 106.419571 + X128_Y1= -84.5 106.419571 225.920617 + X128_Y128= 84.5 106.419571 225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 -106.419571 225.920617 + X1_Y128= 84.5 -106.419571 225.920617 + X128_Y1= -84.5 -225.920617 106.419571 + X128_Y128= 84.5 -225.920617 106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 -225.920617 -106.419571 + X1_Y128= 84.5 -225.920617 -106.419571 + X128_Y1= -84.5 -106.419571 -225.920617 + X128_Y128= 84.5 -106.419571 -225.920617 + VIS= all diff --git a/Inputs/DetectorConfiguration/Paris1moduleChamber.detector b/Inputs/DetectorConfiguration/Paris1moduleChamber.detector new file mode 100644 index 000000000..ba031432a --- /dev/null +++ b/Inputs/DetectorConfiguration/Paris1moduleChamber.detector @@ -0,0 +1,53 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Target +% THICKNESS= 10.3 +% ANGLE= 0 +% RADIUS= 12 +% MATERIAL= CD2 +% NBLAYERS= 50 +% X= 0 +% Y= 0 +% Z= 0 + + +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralChamber +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Chamber + Rmin= 200 + Rmax= 202 + PhiMin= 0. + PhiMax= 6.283185 + ThetaMin= 0. + ThetaMax= 3.14159 +% MATERIAL= 12C + MATERIAL= Alu +% MATERIAL= Cu + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisPhoswich + X1_Y1= -28.5 -235 28.5 + X1_Y128= 28.5 -235 28.5 + X128_Y1= -28.5 -235 -28.5 + X128_Y128= 28.5 -235 -28.5 + VIS= 0 diff --git a/Inputs/DetectorConfiguration/Paris2.detector b/Inputs/DetectorConfiguration/Paris2.detector new file mode 100644 index 000000000..f56a3d768 --- /dev/null +++ b/Inputs/DetectorConfiguration/Paris2.detector @@ -0,0 +1,195 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2l + NBLAYERS= 50 + X= 0 + Y= 0 + Z= 0 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -175.9824 135.677313 -95.372227 + X1_Y128= -199.252552 89.137008 -118.642379 + X128_Y1= -135.677313 135.677313 -135.677313 + X128_Y128= -158.947466 89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -135.677313 135.677313 -135.677313 + X1_Y128= -158.947466 89.137008 -158.947466 + X128_Y1= -95.372227 135.677313 -175.9824 + X128_Y128= -118.642379 89.137008 -199.252552 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -132.559704 182.217618 -92.254617 + X1_Y128= -155.829857 135.677313 -115.52477 + X128_Y1= -92.254617 182.217618 -132.559704 + X128_Y128= -115.52477 135.677313 -155.829857 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -95.372227 135.677313 175.9824 + X1_Y128= -118.642379 89.137008 199.252552 + X128_Y1= -135.677313 135.677313 135.677313 + X128_Y128= -158.947466 89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -135.677313 135.677313 135.677313 + X1_Y128= -158.947466 89.137008 158.947466 + X128_Y1= -175.9824 135.677313 95.372227 + X128_Y128= -199.252552 89.137008 118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -92.254617 182.217618 132.559704 + X1_Y128= -115.52477 135.677313 155.829857 + X128_Y1= -132.559704 182.217618 92.254617 + X128_Y128= -155.829857 135.677313 115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 175.9824 135.677313 95.372227 + X1_Y128= 199.252552 89.137008 118.642379 + X128_Y1= 135.677313 135.677313 135.677313 + X128_Y128= 158.947466 89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 135.677313 135.677313 135.677313 + X1_Y128= 158.947466 89.137008 158.947466 + X128_Y1= 95.372227 135.677313 175.9824 + X128_Y128= 118.642379 89.137008 199.252552 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 132.559704 182.217618 92.254617 + X1_Y128= 155.829857 135.677313 115.52477 + X128_Y1= 92.254617 182.217618 132.559704 + X128_Y128= 115.52477 135.677313 155.829857 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 95.372227 135.677313 -175.9824 + X1_Y128= 118.642379 89.137008 -199.252552 + X128_Y1= 135.677313 135.677313 -135.677313 + X128_Y128= 158.947466 89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 135.677313 135.677313 -135.677313 + X1_Y128= 158.947466 89.137008 -158.947466 + X128_Y1= 175.9824 135.677313 -95.372227 + X128_Y128= 199.252552 89.137008 -118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 92.254617 182.217618 -132.559704 + X1_Y128= 115.52477 135.677313 -155.829857 + X128_Y1= 132.559704 182.217618 -92.254617 + X128_Y128= 155.829857 135.677313 -115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -95.372227 -135.677313 -175.9824 + X1_Y128= -118.642379 -89.137008 -199.252552 + X128_Y1= -135.677313 -135.677313 -135.677313 + X128_Y128= -158.947466 -89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -135.677313 -135.677313 -135.677313 + X1_Y128= -158.947466 -89.137008 -158.947466 + X128_Y1= -175.9824 -135.677313 -95.372227 + X128_Y128= -199.252552 -89.137008 -118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -92.254617 -182.217618 -132.559704 + X1_Y128= -115.52477 -135.677313 -155.829857 + X128_Y1= -132.559704 -182.217618 -92.254617 + X128_Y128= -155.829857 -135.677313 -115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 175.9824 -135.677313 -95.372227 + X1_Y128= 199.252552 -89.137008 -118.642379 + X128_Y1= 135.677313 -135.677313 -135.677313 + X128_Y128= 158.947466 -89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 135.677313 -135.677313 -135.677313 + X1_Y128= 158.947466 -89.137008 -158.947466 + X128_Y1= 95.372227 -135.677313 -175.9824 + X128_Y128= 118.642379 -89.137008 -199.252552 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 132.559704 -182.217618 -92.254617 + X1_Y128= 155.829857 -135.677313 -115.52477 + X128_Y1= 92.254617 -182.217618 -132.559704 + X128_Y128= 115.52477 -135.677313 -155.829857 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 95.372227 -135.677313 175.9824 + X1_Y128= 118.642379 -89.137008 199.252552 + X128_Y1= 135.677313 -135.677313 135.677313 + X128_Y128= 158.947466 -89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 135.677313 -135.677313 135.677313 + X1_Y128= 158.947466 -89.137008 158.947466 + X128_Y1= 175.9824 -135.677313 95.372227 + X128_Y128= 199.252552 -89.137008 118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 92.254617 -182.217618 132.559704 + X1_Y128= 115.52477 -135.677313 155.829857 + X128_Y1= 132.559704 -182.217618 92.254617 + X128_Y128= 155.829857 -135.677313 115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -175.9824 -135.677313 95.372227 + X1_Y128= -199.252552 -89.137008 118.642379 + X128_Y1= -135.677313 -135.677313 135.677313 + X128_Y128= -158.947466 -89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -135.677313 -135.677313 135.677313 + X1_Y128= -158.947466 -89.137008 158.947466 + X128_Y1= -95.372227 -135.677313 175.9824 + X128_Y128= -118.642379 -89.137008 199.252552 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -132.559704 -182.217618 92.254617 + X1_Y128= -155.829857 -135.677313 115.52477 + X128_Y1= -92.254617 -182.217618 132.559704 + X128_Y128= -115.52477 -135.677313 155.829857 + VIS= all diff --git a/Inputs/DetectorConfiguration/Paris3by3_CsIshield.detector b/Inputs/DetectorConfiguration/Paris3by3_CsIshield.detector new file mode 100644 index 000000000..90998c27d --- /dev/null +++ b/Inputs/DetectorConfiguration/Paris3by3_CsIshield.detector @@ -0,0 +1,126 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Target +% THICKNESS= 10.3 +% ANGLE= 0 +% RADIUS= 12 +% MATERIAL= CD2l +% NBLAYERS= 50 +% X= 0 +% Y= 0 +% Z= 0 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 84.5 0 + X1_Y128= 84.5 84.5 0 + X128_Y1= -84.5 -84.5 0 + X128_Y128= 84.5 -84.5 0 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +%ParisCluster +% X1_Y1= -84.5 -235 84.5 +% X1_Y128= 84.5 -235 84.5 +% X128_Y1= -84.5 -235 -84.5 +% X128_Y128= 84.5 -235 -84.5 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 = centre of the volume +%ParisClShield +% X1_Y1= 117.94 31.125 0. +% X1_Y128= 117.94 -31.125 0. +% X128_Y1= -117.94 31.125 0. +% X128_Y128= -117.94 -31.125 0. +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%A one bottom corner +%ParisClShield +% X1_Y1= 31.125 62.25 75. +% X1_Y128= 31.125 0. 75. +% X128_Y1= -204.75 62.25 75. +% X128_Y128= -204.75 0. 75. +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0A on top corner +%ParisClShield +% X1_Y1= -31.125. 62.25 -75. +% X1_Y128= -31.125. 0. -75. +% X128_Y1= -267. 62.25 -75. +% X128_Y128= -267. 0. -75. +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% from bottom corner +ParisClShield + X1_Y1= 151.375 153.75 156. + X128_Y1= -84.5 153.75 156. + X128_Y128= -84.5 91.5 156. + X1_Y128= 151.375 91.5 156. + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% from top corner +%ParisClShield +% X1_Y1= 146.375 153.75 77 +% X128_Y1= -89.5 153.75 77. +% X128_Y128= -89.5 91.5 77. +% X1_Y128= 146.375 91.5 77. +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% from bottom corner +ParisClShield + X1_Y1= 153.75 -151.375 156 + X128_Y1= 153.75 84.5 156. + X128_Y128= 91.5 84.5 156. + X1_Y128= 91.5 -151.375 156. + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% from top corner +%ParisClShield +% X1_Y1= 153.75 -146.625 77 +% X128_Y1= 153.75 89.25 77. +% X128_Y128= 91.5 89.25 77. +% X1_Y128= 91.5 -146.625 77. +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% from bottom corner +ParisClShield + X1_Y1= -151.375 -153.75 156 + X128_Y1= 84.25 -153.75 156. + X128_Y128= 84.25 -91.5 156. + X1_Y128= -151.375 -91.5 156. + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% from top corner +%ParisClShield +% X1_Y1= -146.625 -153.75 77 +% X128_Y1= 89.25 -153.75 77. +% X128_Y128= 89.25 -91.5 77. +% X1_Y128= -146.625 -91.5 77. +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% from bottom corner +ParisClShield + X1_Y1= -153.75 151.375 156 + X128_Y1= -153.75 -84.5 156. + X128_Y128= -91.5 -84.5 156. + X1_Y128= -91.5 151.375 156. + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% from top corner +%ParisClShield +% X1_Y1= -153.75 146.375 77 +% X128_Y1= -153.75 -89.5 77. +% X128_Y128= -91.5 -89.5 77. +% X1_Y128= -91.5 146.375 77. +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0A +%ParisClShield +% THETA= 0. +% PHI= 0. +% R= 150. +% BETA= 0. 0. 0. +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Inputs/DetectorConfiguration/Paris3by3_CsIshield208.detector b/Inputs/DetectorConfiguration/Paris3by3_CsIshield208.detector new file mode 100644 index 000000000..b551d5d1f --- /dev/null +++ b/Inputs/DetectorConfiguration/Paris3by3_CsIshield208.detector @@ -0,0 +1,674 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Target +% THICKNESS= 10.3 +% ANGLE= 0 +% RADIUS= 12 +% MATERIAL= CD2l +% NBLAYERS= 50 +% X= 0 +% Y= 0 +% Z= 0 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -50.418664 -87.327687 -217.661051 + X1_Y128= -188.406586 -87.327687 -120.088856 + X128_Y1= 18.575297 -206.828733 -120.088856 + X128_Y128= -119.412625 -206.828733 -22.51666 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%% 1 +%ShieldClParis +%X1_Y1= -334.9677217 -148.6692001 -211.5267063 +%X1_Y128= -309.5542658 -192.6865973 -175.586652 +%X128_Y1= -142.3765903 -148.6692 -347.7092004 +%X128_Y128= -116.9631343 -192.6865972 -311.7691461 +%VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -212.3401423 -364.4251571 -33.9914984 +X1_Y128= -161.51323 -364.4251571 -69.93155248 +X128_Y1= -308.6357072 -197.6363448 -170.1739932 +X128_Y128= -257.8087949 -197.6363448 -206.1140473 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 37.76296724 -366.1045357 -208.7842915 +X1_Y128= 12.34951131 -322.0871385 -244.7243458 +X128_Y1= -154.8281642 -366.1045357 -72.60179742 +X128_Y128= -180.2416202 -322.0871385 -108.5418517 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -84.86461219 -150.3485787 -386.3194994 +X1_Y128= -135.6915245 -150.3485787 -350.3794453 +X128_Y1= 11.43095278 -317.137391 -250.1370047 +X128_Y128= -39.3959595 -317.137391 -214.1969506 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ParisCluster + X1_Y1= -190.237216 -86.499477 -117.780059 + X1_Y128= -239.023313 -1.999477 20.207863 + X128_Y1= -121.243255 -206.000523 -20.207863 + X128_Y128= -170.029352 -121.500523 117.780059 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 2 +%ShieldClParis +%X1_Y1= -421.6181269 2.264017201 35.81176364 +%X1_Y128= -396.1220195 -41.89653619 71.51689679 +%X128_Y1= -353.971956 -114.9025878 -157.4057249 +%X128_Y128= -328.4758486 -159.0631412 -121.7005917 +%VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -297.3273652 -213.0138971 212.7697599 +X1_Y128= -279.4747986 -243.9354494 161.7775451 +X128_Y1= -393.9361094 -45.68264358 77.47741798 +X128_Y128= -376.0835428 -76.60419594 26.48520322 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -208.848367 -366.2640172 -35.81176364 +X1_Y128= -234.3444744 -322.1034638 -71.51689679 +X128_Y1= -276.494538 -249.0974122 157.4057249 +X128_Y128= -301.9906454 -204.9368588 121.7005917 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +%ShieldClParis +%X1_Y1= -333.1391288 -150.9861029 -212.7697599 +%X1_Y128= -350.9916954 -120.0645506 -161.7775451 +%X128_Y1= -236.5303845 -318.3173564 -77.47741806 +%X128_Y128= -254.3829511 -287.3958041 -26.48520328 +%VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ParisCluster + X1_Y1= -238.82525 0 22.51666 + X1_Y128= -169.831289 119.501046 120.088856 + X128_Y1= -169.831289 -119.501046 120.088856 + X128_Y128= -100.837328 0 217.661051 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 3 +ShieldClParis +X1_Y1= -298.1743452 215.7559566 208.784291 +X1_Y128= -272.7608891 171.7385595 244.7243453 +X128_Y1= -394.4699107 48.9671447 72.60179615 +X128_Y128= -369.0564547 4.949747549 108.5418504 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -172.637996 1.679378555 386.3194988 +X1_Y128= -198.0514521 -42.33801856 350.3794445 +X128_Y1= -268.9335614 168.4681906 250.1370041 +X128_Y128= -294.3470175 124.4507935 214.1969498 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -296.2351659 -215.7559566 211.5267047 +X1_Y128= -321.6486219 -171.7385595 175.5866504 +X128_Y1= -199.9396004 -48.9671447 347.7091996 +X128_Y128= -225.3530564 -4.949747549 311.7691453 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -421.7715151 -1.679378528 33.99149691 +X1_Y128= -396.358059 42.33801857 69.9315512 +X128_Y1= -325.4759497 -168.4681907 170.1739916 +X128_Y128= -300.0624936 -124.4507936 206.1140459 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ParisCluster + X1_Y1= -167.720555 121.500523 121.045191 + X1_Y128= -21.362262 206.000523 121.045191 + X128_Y1= -98.726594 1.999477 218.617387 + X128_Y128= 47.631699 86.499477 218.617387 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 4 +ShieldClParis +X1_Y1= -35.85246778 366.2640171 208.8413835 +X1_Y128= -10.68804787 322.1034637 244.7810551 +X128_Y1= -240.5683866 249.0974121 208.2129755 +X128_Y128= -215.4039666 204.9368587 244.1526471 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 89.5548772 150.9861028 385.009836 +X1_Y128= 35.52810055 120.0645505 384.8439923 +X128_Y1= -5.797051298 318.3173563 248.8287913 +X128_Y128= -59.82382795 287.395804 248.6629475 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -174.3030301 -2.264017362 385.5681276 +X1_Y128= -199.46745 41.89653603 349.6284561 +X128_Y1= 30.41288869 114.9025876 386.1965356 +X128_Y128= 5.248468782 159.063141 350.256864 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -299.7103751 213.013897 209.399675 +X1_Y128= -245.6835984 243.9354493 209.5655188 +X128_Y1= -204.3584466 45.68264341 345.5807198 +X128_Y128= -150.33167 76.60419575 345.7465636 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ParisCluster + X1_Y1= -18.575297 206.828733 120.088856 + X1_Y128= 119.412625 206.828733 22.51666 + X128_Y1= 50.418664 87.327687 217.661051 + X128_Y128= 188.406586 87.327687 120.088856 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 5 +ShieldClParis +X1_Y1= 209.4313732 366.1045359 33.99149673 +X1_Y128= 234.8448293 322.0871387 69.93155092 +X128_Y1= 16.84024247 366.104536 170.1739919 +X128_Y128= 42.25369861 322.0871388 206.1140461 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 335.9373126 150.3485792 208.7842904 +X1_Y128= 285.1104005 150.3485792 244.7243447 +X128_Y1= 239.6417468 317.1373913 72.60179588 +X128_Y128= 188.8148347 317.1373913 108.5418502 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 87.77338339 148.6692006 386.3194987 +X1_Y128= 62.35992725 192.6865977 350.3794445 +X128_Y1= 280.3645141 148.6692005 250.1370036 +X128_Y128= 254.951058 192.6865977 214.1969494 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -38.73255596 364.4251573 211.5267051 +X1_Y128= 12.09435614 364.4251573 175.5866507 +X128_Y1= 57.56300972 197.6363452 347.7091996 +X128_Y128= 108.3899218 197.6363452 311.7691452 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ParisCluster + X1_Y1= 121.243255 206.000523 20.207863 + X1_Y128= 170.029352 121.500523 -117.780059 + X128_Y1= 190.237216 86.499477 117.780059 + X128_Y128= 239.023313 1.999477 -20.207863 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 6 +ShieldClParis +X1_Y1= 295.6735001 215.8784753 -212.1865178 +X1_Y128= 321.1696075 171.717922 -176.4813846 +X128_Y1= 228.0273291 333.0450805 -18.96902942 +X128_Y128= 253.5234365 288.8845271 16.73610377 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 421.3265059 -1.758914768 -39.11949374 +X1_Y128= 403.4739393 29.16263761 11.87272101 +X128_Y1= 324.7177617 165.5723387 -174.4118357 +X128_Y128= 306.8651951 196.493891 -123.419621 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 334.7929938 148.1215246 212.1865178 +X1_Y128= 309.2968865 192.282078 176.4813846 +X128_Y1= 402.4391648 30.95491952 18.96902942 +X128_Y128= 376.9430575 75.11547288 -16.73610377 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 209.1399881 365.7589148 39.11949372 +X1_Y128= 226.9925547 334.8373624 -11.87272102 +X128_Y1= 305.7487323 198.4276614 174.4118358 +X128_Y128= 323.6012989 167.506109 123.419621 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ParisCluster + X1_Y1= 169.831289 119.501046 -120.088856 + X1_Y128= 100.837328 0 -217.661051 + X128_Y1= 238.82525 0 -22.51666 + X128_Y128= 169.831289 -119.501046 -120.088856 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 7 +ShieldClParis +X1_Y1= 172.6379967 1.679378615 -386.3194985 +X1_Y128= 198.0514528 -42.3380185 -350.3794441 +X128_Y1= 268.9335619 168.4681907 -250.1370035 +X128_Y128= 294.3470179 124.4507935 -214.1969492 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 296.2351663 -215.7559566 -211.5267042 +X1_Y128= 321.6486223 -171.7385595 -175.5866499 +X128_Y1= 199.9396011 -48.96714461 -347.7091992 +X128_Y128= 225.3530571 -4.949747477 -311.7691448 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 421.7715152 -1.679378615 -33.99149608 +X1_Y128= 396.3580592 42.3380185 -69.93155041 +X128_Y1= 325.47595 -168.4681907 -170.173991 +X128_Y128= 300.062494 -124.4507935 -206.1140454 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 298.1743456 215.7559566 -208.7842904 +X1_Y128= 272.7608897 171.7385595 -244.7243447 +X128_Y1= 394.4699109 48.96714468 -72.60179535 +X128_Y128= 369.0564549 4.949747536 -108.5418497 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +ParisCluster + X1_Y1= 98.726594 -1.999477 -218.617387 + X1_Y128= -47.631699 -86.499477 -218.617387 + X128_Y1= 167.720555 -121.500523 -121.045191 + X128_Y128= 21.362262 -206.000523 -121.045191 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 8 +ShieldClParis +X1_Y1= -88.45370297 -148.1215245 -386.374701 +X1_Y128= -63.28928301 -192.2820779 -350.4350294 +X128_Y1= 116.2622157 -30.95491938 -385.7462932 +X128_Y128= 141.4266357 -75.11547275 -349.8066216 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 32.83111694 -365.7589147 -210.2189031 +X1_Y128= 86.85789358 -334.8373623 -210.0530594 +X128_Y1= -62.52081164 -198.4276612 -346.3999479 +X128_Y128= -8.494035002 -167.5061088 -346.2341042 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 298.6092008 -215.8784752 -208.0348102 +X1_Y128= 273.4447809 -171.7179219 -243.9744817 +X128_Y1= 93.89328213 -333.0450804 -208.663218 +X128_Y128= 68.72886217 -288.884527 -244.6028895 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 177.3243809 1.758914928 -384.190608 +X1_Y128= 123.2976043 -29.16263747 -384.3564517 +X128_Y1= 272.6763096 -165.5723385 -248.0095632 +X128_Y128= 218.6495329 -196.4938909 -248.175407 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +ParisCluster + X1_Y1= 50.418664 -87.327687 217.661051 + X1_Y128= 188.406586 -87.327687 120.088856 + X128_Y1= -18.575297 -206.828733 120.088856 + X128_Y128= 119.412625 -206.828733 22.51666 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 9 +ShieldClParis +X1_Y1= 334.9677226 -148.6692001 211.5267049 +X1_Y128= 309.5542665 -192.6865973 175.5866508 +X128_Y1= 142.3765917 -148.6692 347.7091998 +X128_Y128= 116.9631356 -192.6865972 311.7691457 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 212.3401425 -364.4251571 33.99149755 +X1_Y128= 161.5132303 -364.4251571 69.93155184 +X128_Y1= 308.6357079 -197.6363448 170.173992 +X128_Y128= 257.8087958 -197.6363448 206.1140463 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -37.7629664 -366.1045357 208.7842917 +X1_Y128= -12.34951033 -322.0871385 244.7243459 +X128_Y1= 154.8281645 -366.1045357 72.6017968 +X128_Y128= 180.2416206 -322.0871385 108.541851 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 84.86461374 -150.3485787 386.3194991 +X1_Y128= 135.6915259 -150.3485787 350.3794448 +X128_Y1= -11.43095178 -317.137391 250.1370047 +X128_Y128= 39.39596036 -317.137391 214.1969504 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +ParisCluster + X1_Y1= 190.237216 -86.499477 117.780059 + X1_Y128= 239.023313 -1.999477 -20.207863 + X128_Y1= 121.243255 -206.000523 20.207863 + X128_Y128= 170.029352 -121.500523 -117.780059 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 10 +ShieldClParis +X1_Y1= 421.6181269 2.264017214 -35.81176364 +X1_Y128= 396.1220195 -41.89653617 -71.51689679 +X128_Y1= 353.971956 -114.9025878 157.4057249 +X128_Y128= 328.4758486 -159.0631412 121.7005917 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 297.3273652 -213.013897 -212.7697599 +X1_Y128= 279.4747986 -243.9354494 -161.7775451 +X128_Y1= 393.9361094 -45.68264357 -77.47741798 +X128_Y128= 376.0835428 -76.60419593 -26.48520322 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 208.8483671 -366.2640172 35.81176364 +X1_Y128= 234.3444744 -322.1034638 71.51689679 +X128_Y1= 276.494538 -249.0974122 -157.4057249 +X128_Y128= 301.9906454 -204.9368588 -121.7005917 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 333.1391288 -150.9861029 212.7697599 +X1_Y128= 350.9916954 -120.0645506 161.7775451 +X128_Y1= 236.5303846 -318.3173564 77.47741806 +X128_Y128= 254.3829511 -287.3958041 26.48520328 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +ParisCluster + X1_Y1= 167.720555 121.500523 -121.045191 + X1_Y128= 21.362262 206.000523 -121.045191 + X128_Y1= 98.726594 1.999477 -218.617387 + X128_Y128= -47.631699 86.499477 -218.617387 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 11 +ShieldClParis +X1_Y1= 35.85246778 366.2640171 -208.8413835 +X1_Y128= 10.68804787 322.1034637 -244.7810551 +X128_Y1= 240.5683866 249.0974121 -208.2129755 +X128_Y128= 215.4039666 204.9368587 -244.1526471 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -89.5548772 150.9861028 -385.009836 +X1_Y128= -35.52810055 120.0645505 -384.8439923 +X128_Y1= 5.797051298 318.3173563 -248.8287913 +X128_Y128= 59.82382795 287.395804 -248.6629475 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 174.3030301 -2.264017362 -385.5681276 +X1_Y128= 199.46745 41.89653603 -349.6284561 +X128_Y1= -30.41288869 114.9025876 -386.1965356 +X128_Y128= -5.248468782 159.063141 -350.256864 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 299.7103751 213.013897 -209.399675 +X1_Y128= 245.6835984 243.9354493 -209.5655188 +X128_Y1= 204.3584466 45.68264341 -345.5807198 +X128_Y128= 150.33167 76.60419575 -345.7465636 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +ParisCluster + X1_Y1= 18.575297 206.828733 -120.088856 + X1_Y128= -119.412625 206.828733 -22.51666 + X128_Y1= -50.418664 87.327687 -217.661051 + X128_Y128= -188.406586 87.327687 -120.088856 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 12 +ShieldClParis +X1_Y1= -209.4313732 366.1045359 -33.99149673 +X1_Y128= -234.8448293 322.0871387 -69.93155092 +X128_Y1= -16.84024247 366.104536 -170.1739919 +X128_Y128= -42.25369861 322.0871388 -206.1140461 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -335.9373126 150.3485792 -208.7842904 +X1_Y128= -285.1104005 150.3485792 -244.7243447 +X128_Y1= -239.6417468 317.1373913 -72.60179588 +X128_Y128= -188.8148347 317.1373913 -108.5418502 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -87.77338339 148.6692006 -386.3194987 +X1_Y128= -62.35992725 192.6865977 -350.3794445 +X128_Y1= -280.3645141 148.6692005 -250.1370036 +X128_Y128= -254.951058 192.6865977 -214.1969494 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 38.73255596 364.4251573 -211.5267051 +X1_Y128= -12.09435614 364.4251573 -175.5866507 +X128_Y1= -57.56300972 197.6363452 -347.7091996 +X128_Y128= -108.3899218 197.6363452 -311.7691452 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +ParisCluster + X1_Y1= -121.243255 206.000523 -20.207863 + X1_Y128= -170.029352 121.500523 117.780059 + X128_Y1= -190.237216 86.499477 -117.780059 + X128_Y128= -239.023313 1.999477 20.207863 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 13 +ShieldClParis +X1_Y1= -295.6735001 215.8784753 212.1865178 +X1_Y128= -321.1696075 171.717922 176.4813846 +X128_Y1= -228.0273291 333.0450805 18.96902942 +X128_Y128= -253.5234365 288.8845271 -16.73610377 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -421.3265059 -1.758914768 39.11949374 +X1_Y128= -403.4739393 29.16263761 -11.87272101 +X128_Y1= -324.7177617 165.5723387 174.4118357 +X128_Y128= -306.8651951 196.493891 123.419621 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -334.7929938 148.1215246 -212.1865178 +X1_Y128= -309.2968865 192.282078 -176.4813846 +X128_Y1= -402.4391648 30.95491952 -18.96902942 +X128_Y128= -376.9430575 75.11547288 16.73610377 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -209.1399881 365.7589148 -39.11949372 +X1_Y128= -226.9925547 334.8373624 11.87272102 +X128_Y1= -305.7487323 198.4276614 -174.4118358 +X128_Y128= -323.6012989 167.506109 -123.419621 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +ParisCluster + X1_Y1= -98.726594 -1.999477 218.617387 + X1_Y128= 47.631699 -86.499477 218.617387 + X128_Y1= -167.720555 -121.500523 121.045191 + X128_Y128= -21.362262 -206.000523 121.045191 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 14 +ShieldClParis +X1_Y1= 88.45370297 -148.1215245 386.374701 +X1_Y128= 63.28928301 -192.2820779 350.4350294 +X128_Y1= -116.2622157 -30.95491938 385.7462932 +X128_Y128= -141.4266357 -75.11547275 349.8066216 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -32.83111694 -365.7589147 210.2189031 +X1_Y128= -86.85789358 -334.8373623 210.0530594 +X128_Y1= 62.52081164 -198.4276612 346.3999479 +X128_Y128= 8.494035002 -167.5061088 346.2341042 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -298.6092008 -215.8784752 208.0348102 +X1_Y128= -273.4447809 -171.7179219 243.9744817 +X128_Y1= -93.89328213 -333.0450804 208.663218 +X128_Y128= -68.72886217 -288.884527 244.6028895 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -177.3243809 1.758914928 384.190608 +X1_Y128= -123.2976043 -29.16263747 384.3564517 +X128_Y1= -272.6763096 -165.5723385 248.0095632 +X128_Y128= -218.6495329 -196.4938909 248.175407 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +ParisCluster + X1_Y1= 189.082817 -84.5 121.045191 + X1_Y128= 51.094895 -84.5 218.617387 + X128_Y1= 189.082817 84.5 121.045191 + X128_Y128= 51.094895 84.5 218.617387 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 15 +ShieldClParis +X1_Y1= 333.7526679 153.75 209.8083586 +X1_Y128= 333.7526678 91.49999999 209.8083586 +X128_Y1= 141.1615368 153.7500001 345.9908533 +X128_Y128= 141.1615367 91.50000008 345.9908533 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 335.6918472 -151.375 208.4371517 +X1_Y128= 284.864935 -151.375 244.377206 +X128_Y1= 335.6918472 84.49999999 208.4371517 +X128_Y128= 284.8649351 84.5 244.3772059 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 86.55832786 -153.75 384.6011525 +X1_Y128= 86.55832788 -91.49999999 384.6011525 +X128_Y1= 279.1494589 -153.7500001 248.4186578 +X128_Y128= 279.149459 -91.50000008 248.4186578 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 84.61914852 151.375 385.9723594 +X1_Y128= 135.4460607 151.375 350.0323051 +X128_Y1= 84.6191484 -84.49999996 385.9723595 +X128_Y128= 135.4460606 -84.5 350.0323052 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +ParisCluster + X1_Y1= 117.780059 208 20.207863 + X1_Y128= -20.207863 208 117.780059 + X128_Y1= 20.207863 208 -117.780059 + X128_Y128= -117.780059 208 -20.207863 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 16 +ShieldClParis +X1_Y1= 35.81176366 364 -212.7697599 +X1_Y128= 71.51689679 364 -161.7775451 +X128_Y1= -157.4057249 364 -77.47741806 +X128_Y128= -121.7005917 364 -26.48520328 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 212.7697599 364 35.81176364 +X1_Y128= 161.7775451 364 71.51689679 +X128_Y1= 77.47741802 364 -157.4057249 +X128_Y128= 26.48520325 364 -121.7005917 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -35.81176363 364 212.7697599 +X1_Y128= -71.51689678 364 161.7775451 +X128_Y1= 157.4057248 364 77.47741798 +X128_Y128= 121.7005917 364 26.48520322 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -212.7697599 364 -35.81176364 +X1_Y128= -161.7775451 364 -71.51689679 +X128_Y1= -77.47741802 364 157.4057249 +X128_Y128= -26.48520325 364 121.7005917 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +ParisCluster + X1_Y1= -51.094895 84.5 -218.617387 + X1_Y128= -189.082817 84.5 -121.045191 + X128_Y1= -51.094895 -84.5 -218.617387 + X128_Y128= -189.082817 -84.5 -121.045191 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 17 +ShieldClParis +X1_Y1= -333.7526679 153.75 -209.8083586 +X1_Y128= -333.7526678 91.49999999 -209.8083586 +X128_Y1= -141.1615368 153.7500001 -345.9908533 +X128_Y128= -141.1615367 91.50000008 -345.9908533 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -335.6918472 -151.375 -208.4371517 +X1_Y128= -284.864935 -151.375 -244.377206 +X128_Y1= -335.6918472 84.49999999 -208.4371517 +X128_Y128= -284.8649351 84.5 -244.3772059 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -86.55832786 -153.75 -384.6011525 +X1_Y128= -86.55832788 -91.49999999 -384.6011525 +X128_Y1= -279.1494589 -153.7500001 -248.4186578 +X128_Y128= -279.149459 -91.50000008 -248.4186578 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -84.61914852 151.375 -385.9723594 +X1_Y128= -135.4460607 151.375 -350.0323051 +X128_Y1= -84.6191484 -84.49999996 -385.9723595 +X128_Y128= -135.4460606 -84.5 -350.0323052 +VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18 +ParisCluster + X1_Y1= 20.207863 -208 -117.780059 + X1_Y128= -117.780059 -208 -20.207863 + X128_Y1= 117.780059 -208 20.207863 + X128_Y128= -20.207863 -208 117.780059 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%% 18 +ShieldClParis +X1_Y1= 212.1865178 -364 39.11949374 +X1_Y128= 176.4813846 -364 -11.87272101 +X128_Y1= 18.96902938 -364 174.4118357 +X128_Y128= -16.73610379 -364 123.419621 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= 39.11949373 -364 -212.1865178 +X1_Y128= -11.87272101 -364 -176.4813846 +X128_Y1= 174.4118357 -364 -18.96902942 +X128_Y128= 123.419621 -364 16.73610377 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -212.1865178 -364 -39.11949372 +X1_Y128= -176.4813846 -364 11.87272102 +X128_Y1= -18.96902945 -364 -174.4118358 +X128_Y128= 16.73610374 -364 -123.419621 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis +X1_Y1= -39.11949373 -364 212.1865178 +X1_Y128= 11.87272101 -364 176.4813846 +X128_Y1= -174.4118357 -364 18.96902942 +X128_Y128= -123.419621 -364 -16.73610377 +VIS=all +%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Inputs/DetectorConfiguration/Paris3by3module.detector b/Inputs/DetectorConfiguration/Paris3by3module.detector new file mode 100644 index 000000000..59dca7e84 --- /dev/null +++ b/Inputs/DetectorConfiguration/Paris3by3module.detector @@ -0,0 +1,35 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2l + NBLAYERS= 50 + X= 0 + Y= 0 + Z= 0 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 -235 84.5 + X1_Y128= 84.5 -235 84.5 + X128_Y1= -84.5 -235 -84.5 + X128_Y128= 84.5 -235 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 diff --git a/Inputs/DetectorConfiguration/ParisAll_208.detector b/Inputs/DetectorConfiguration/ParisAll_208.detector new file mode 100644 index 000000000..07ea870f2 --- /dev/null +++ b/Inputs/DetectorConfiguration/ParisAll_208.detector @@ -0,0 +1,792 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 + NBLAYERS= 50 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 -208 84.5 + X1_Y128= 84.5 -208 84.5 + X128_Y1= -84.5 -208 -84.5 + X128_Y128= 84.5 -208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -206.8287414 -87.3276796 84.5 + X1_Y128= -87.32769537 -206.8287256 84.5 + X128_Y1= -206.8287414 -87.3276796 -84.5 + X128_Y128= -87.32769537 -206.8287256 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -208 84.50001115 84.5 + X1_Y128= -208 -84.49998885 84.5 + X128_Y1= -208 84.50001115 -84.5 + X128_Y128= -208 -84.49998885 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.3276796 206.8287414 84.5 + X1_Y128= -206.8287256 87.32769537 84.5 + X128_Y1= -87.3276796 206.8287414 -84.5 + X128_Y128= -206.8287256 87.32769537 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 84.50000557 208 84.5 + X1_Y128= -84.49999443 208 84.5 + X128_Y1= 84.50000557 208 -84.5 + X128_Y128= -84.49999443 208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 87.32768749 84.5 + X1_Y128= 87.32768749 206.8287335 84.5 + X128_Y1= 206.8287335 87.32768749 -84.5 + X128_Y128= 87.32768749 206.8287335 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 208 -84.50002229 84.5 + X1_Y128= 208 84.49997771 84.5 + X128_Y1= 208 -84.50002229 -84.5 + X128_Y128= 208 84.49997771 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32767172 -206.8287493 84.5 + X1_Y128= 206.8287177 -87.32770325 84.5 + X128_Y1= 87.32767172 -206.8287493 -84.5 + X128_Y128= 206.8287177 -87.32770325 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 84.5 84.5 -208 + X1_Y128= -84.5 84.5 -208 + X128_Y1= 84.5 -84.5 -208 + X128_Y128= -84.5 -84.5 -208 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 84.49998424 -87.32768749 + X1_Y128= 87.32768749 84.49998424 -206.8287335 + X128_Y1= 206.8287335 -84.50001576 -87.32768749 + X128_Y128= 87.32768749 -84.50001576 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32768749 84.49998424 206.8287335 + X1_Y128= 206.8287335 84.49998424 87.32768749 + X128_Y1= 87.32768749 -84.50001576 206.8287335 + X128_Y128= 206.8287335 -84.50001576 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.5 84.5 208 + X1_Y128= 84.5 84.5 208 + X128_Y1= -84.5 -84.5 208 + X128_Y128= 84.5 -84.5 208 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -206.8287335 84.50000788 87.32768749 + X1_Y128= -87.32768749 84.50000788 206.8287335 + X128_Y1= -206.8287335 -84.49999212 87.32768749 + X128_Y128= -87.32768749 -84.49999212 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.32768749 84.50000788 -206.8287335 + X1_Y128= -206.8287335 84.50000788 -87.32768749 + X128_Y1= -87.32768749 -84.49999212 -206.8287335 + X128_Y128= -206.8287335 -84.49999212 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 87.32768749 -206.8287335 + X1_Y128= 84.50000394 87.32768749 -206.8287335 + X128_Y1= -84.49999606 206.8287335 -87.32768749 + X128_Y128= 84.50000394 206.8287335 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 206.8287335 87.32768749 + X1_Y128= 84.50000394 206.8287335 87.32768749 + X128_Y1= -84.49999606 87.32768749 206.8287335 + X128_Y128= 84.50000394 87.32768749 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -87.32768749 206.8287335 + X1_Y128= 84.49998818 -87.32768749 206.8287335 + X128_Y1= -84.50001182 -206.8287335 87.32768749 + X128_Y128= 84.49998818 -206.8287335 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -206.8287335 -87.32768749 + X1_Y128= 84.49998818 -206.8287335 -87.32768749 + X128_Y1= -84.50001182 -87.32768749 -206.8287335 + X128_Y128= 84.49998818 -87.32768749 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -128.6063166 143.3590149 -88.30123599 + X1_Y128= -151.8764696 96.81870993 -111.571389 + X128_Y1= -88.30122956 143.3590149 -128.606323 + X128_Y128= -111.5713826 96.81870993 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30122956 143.3590149 128.606323 + X1_Y128= -111.5713826 96.81870993 151.876476 + X128_Y1= -128.6063166 143.3590149 88.30123599 + X128_Y128= -151.8764696 96.81870993 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.606323 143.3590085 88.30123599 + X1_Y128= 151.876476 96.81870349 111.571389 + X128_Y1= 88.30123599 143.3590085 128.606323 + X128_Y128= 111.571389 96.81870349 151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 88.30123599 143.3590085 -128.606323 + X1_Y128= 111.571389 96.81870349 -151.876476 + X128_Y1= 128.606323 143.3590085 -88.30123599 + X128_Y128= 151.876476 96.81870349 -111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30124243 -143.3590021 -128.606323 + X1_Y128= -111.5713954 -96.81869706 -151.876476 + X128_Y1= -128.6063294 -143.3590021 -88.30123599 + X128_Y128= -151.8764824 -96.81869706 -111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.6063101 -143.3590214 -88.30123599 + X1_Y128= 151.8764631 -96.81871636 -111.571389 + X128_Y1= 88.30122312 -143.3590214 -128.606323 + X128_Y128= 111.5713761 -96.81871636 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 88.30122312 -143.3590214 128.606323 + X1_Y128= 111.5713761 -96.81871636 151.876476 + X128_Y1= 128.6063101 -143.3590214 88.30123599 + X128_Y128= 151.8764631 -96.81871636 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -128.6063294 -143.3590021 88.30123599 + X1_Y128= -151.8764824 -96.81869706 111.571389 + X128_Y1= -88.30124243 -143.3590021 128.606323 + X128_Y128= -111.5713954 -96.81869706 151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Shield +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ShieldClParis + X1_Y1= 151.375 153.75 364 + X1_Y128= 151.375 91.5 364 + X128_Y1= -84.5 153.75 364 + X128_Y128= -84.5 91.5 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -151.375 364 + X1_Y128= 91.49999999 -151.375 364 + X128_Y1= 153.75 84.49999999 364 + X128_Y128= 91.50000004 84.5 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -153.75 364 + X1_Y128= -151.375 -91.49999999 364 + X128_Y1= 84.49999997 -153.7500001 364 + X128_Y128= 84.5 -91.50000008 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 151.375 364 + X1_Y128= -91.49999998 151.375 364 + X128_Y1= -153.7500001 -84.49999996 364 + X128_Y128= -91.50000013 -84.5 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ShieldClParis + X1_Y1= 151.375 -148.6692007 366.104536 + X1_Y128= 151.375 -192.6865979 322.0871388 + X128_Y1= -84.5 -148.6692007 366.104536 + X128_Y128= -84.5 -192.6865979 322.0871388 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -364.4251574 150.3485793 + X1_Y128= 91.49999999 -364.4251574 150.3485793 + X128_Y1= 153.75 -197.6363454 317.1373914 + X128_Y128= 91.50000004 -197.6363453 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -366.104536 148.6692008 + X1_Y128= -151.375 -322.0871388 192.6865979 + X128_Y1= 84.49999997 -366.104536 148.6692007 + X128_Y128= 84.5 -322.0871389 192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -150.3485793 364.4251574 + X1_Y128= -91.49999998 -150.3485793 364.4251574 + X128_Y1= -153.7500001 -317.1373913 197.6363454 + X128_Y128= -91.50000013 -317.1373914 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ShieldClParis + X1_Y1= 151.375 -364 153.75 + X1_Y128= 151.375 -364 91.5 + X128_Y1= -84.5 -364 153.75 + X128_Y128= -84.5 -364 91.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -364 -151.375 + X1_Y128= 91.49999999 -364 -151.375 + X128_Y1= 153.75 -364 84.49999999 + X128_Y128= 91.50000004 -364 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -364 -153.75 + X1_Y128= -151.375 -364 -91.49999999 + X128_Y1= 84.49999997 -364 -153.7500001 + X128_Y128= 84.5 -364 -91.50000008 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -364 151.375 + X1_Y128= -91.49999998 -364 151.375 + X128_Y1= -153.7500001 -364 -84.49999996 + X128_Y128= -91.50000013 -364 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ShieldClParis + X1_Y1= 151.375 -366.104536 -148.6692007 + X1_Y128= 151.375 -322.0871388 -192.6865979 + X128_Y1= -84.5 -366.104536 -148.6692007 + X128_Y128= -84.5 -322.0871388 -192.6865979 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -150.3485793 -364.4251574 + X1_Y128= 91.49999999 -150.3485793 -364.4251574 + X128_Y1= 153.75 -317.1373914 -197.6363454 + X128_Y128= 91.50000004 -317.1373914 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -148.6692008 -366.104536 + X1_Y128= -151.375 -192.6865979 -322.0871388 + X128_Y1= 84.49999997 -148.6692007 -366.104536 + X128_Y128= 84.5 -192.6865978 -322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -364.4251574 -150.3485793 + X1_Y128= -91.49999998 -364.4251574 -150.3485793 + X128_Y1= -153.7500001 -197.6363454 -317.1373913 + X128_Y128= -91.50000013 -197.6363453 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ShieldClParis + X1_Y1= 151.375 -153.75 -364 + X1_Y128= 151.375 -91.5 -364 + X128_Y1= -84.5 -153.75 -364 + X128_Y128= -84.5 -91.5 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 151.375 -364 + X1_Y128= 91.49999999 151.375 -364 + X128_Y1= 153.75 -84.49999999 -364 + X128_Y128= 91.50000004 -84.5 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 153.75 -364 + X1_Y128= -151.375 91.49999999 -364 + X128_Y1= 84.49999997 153.7500001 -364 + X128_Y128= 84.5 91.50000008 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -151.375 -364 + X1_Y128= -91.49999998 -151.375 -364 + X128_Y1= -153.7500001 84.49999996 -364 + X128_Y128= -91.50000013 84.5 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ShieldClParis + X1_Y1= 151.375 148.6692007 -366.104536 + X1_Y128= 151.375 192.6865979 -322.0871388 + X128_Y1= -84.5 148.6692007 -366.104536 + X128_Y128= -84.5 192.6865979 -322.0871388 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 364.4251574 -150.3485793 + X1_Y128= 91.49999999 364.4251574 -150.3485793 + X128_Y1= 153.75 197.6363454 -317.1373914 + X128_Y128= 91.50000004 197.6363453 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 366.104536 -148.6692008 + X1_Y128= -151.375 322.0871388 -192.6865979 + X128_Y1= 84.49999997 366.104536 -148.6692007 + X128_Y128= 84.5 322.0871389 -192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 150.3485793 -364.4251574 + X1_Y128= -91.49999998 150.3485793 -364.4251574 + X128_Y1= -153.7500001 317.1373913 -197.6363454 + X128_Y128= -91.50000013 317.1373914 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ShieldClParis + X1_Y1= 151.375 364 -153.75 + X1_Y128= 151.375 364 -91.5 + X128_Y1= -84.5 364 -153.75 + X128_Y128= -84.5 364 -91.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 364 151.375 + X1_Y128= 91.49999999 364 151.375 + X128_Y1= 153.75 364 -84.49999999 + X128_Y128= 91.50000004 364 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 364 153.75 + X1_Y128= -151.375 364 91.49999999 + X128_Y1= 84.49999997 364 153.7500001 + X128_Y128= 84.5 364 91.50000008 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 364 -151.375 + X1_Y128= -91.49999998 364 -151.375 + X128_Y1= -153.7500001 364 84.49999996 + X128_Y128= -91.50000013 364 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ShieldClParis + X1_Y1= 151.375 366.104536 148.6692007 + X1_Y128= 151.375 322.0871388 192.6865979 + X128_Y1= -84.5 366.104536 148.6692007 + X128_Y128= -84.5 322.0871388 192.6865979 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 150.3485793 364.4251574 + X1_Y128= 91.49999999 150.3485793 364.4251574 + X128_Y1= 153.75 317.1373914 197.6363454 + X128_Y128= 91.50000004 317.1373914 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 148.6692008 366.104536 + X1_Y128= -151.375 192.6865979 322.0871388 + X128_Y1= 84.49999997 148.6692007 366.104536 + X128_Y128= 84.5 192.6865978 322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 364.4251574 150.3485793 + X1_Y128= -91.49999998 364.4251574 150.3485793 + X128_Y1= -153.7500001 197.6363454 317.1373913 + X128_Y128= -91.50000013 197.6363453 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +ShieldClParis + X1_Y1= -150.3485793 153.75 364.4251574 + X1_Y128= -150.3485793 91.5 364.4251574 + X128_Y1= -317.1373914 153.75 197.6363453 + X128_Y128= -317.1373914 91.5 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -148.6692007 -151.375 366.104536 + X1_Y128= -192.6865979 -151.375 322.0871388 + X128_Y1= -148.6692007 84.49999999 366.104536 + X128_Y128= -192.6865978 84.5 322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364.4251574 -153.75 150.3485793 + X1_Y128= -364.4251574 -91.49999999 150.3485793 + X128_Y1= -197.6363454 -153.7500001 317.1373913 + X128_Y128= -197.6363453 -91.50000008 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -366.1045359 151.375 148.6692008 + X1_Y128= -322.0871388 151.375 192.6865979 + X128_Y1= -366.104536 -84.49999996 148.6692007 + X128_Y128= -322.0871389 -84.5 192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +ShieldClParis + X1_Y1= -364 153.75 151.375 + X1_Y128= -364 91.5 151.375 + X128_Y1= -364 153.75 -84.5 + X128_Y128= -364 91.5 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 -151.375 153.75 + X1_Y128= -364 -151.375 91.49999999 + X128_Y1= -364 84.49999999 153.75 + X128_Y128= -364 84.5 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 -153.75 -151.375 + X1_Y128= -364 -91.49999999 -151.375 + X128_Y1= -364 -153.7500001 84.49999997 + X128_Y128= -364 -91.50000008 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 151.375 -153.75 + X1_Y128= -364 151.375 -91.49999998 + X128_Y1= -364 -84.49999996 -153.7500001 + X128_Y128= -364 -84.5 -91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +ShieldClParis + X1_Y1= -364.4251574 153.75 -150.3485793 + X1_Y128= -364.4251574 91.5 -150.3485793 + X128_Y1= -197.6363453 153.75 -317.1373914 + X128_Y128= -197.6363453 91.5 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -366.104536 -151.375 -148.6692007 + X1_Y128= -322.0871388 -151.375 -192.6865979 + X128_Y1= -366.104536 84.49999999 -148.6692007 + X128_Y128= -322.0871389 84.5 -192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -150.3485793 -153.75 -364.4251574 + X1_Y128= -150.3485793 -91.49999999 -364.4251574 + X128_Y1= -317.1373913 -153.7500001 -197.6363454 + X128_Y128= -317.1373914 -91.50000008 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -148.6692008 151.375 -366.1045359 + X1_Y128= -192.6865979 151.375 -322.0871388 + X128_Y1= -148.6692007 -84.49999996 -366.104536 + X128_Y128= -192.6865978 -84.5 -322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +ShieldClParis + X1_Y1= 150.3485793 153.75 -364.4251574 + X1_Y128= 150.3485793 91.5 -364.4251574 + X128_Y1= 317.1373914 153.75 -197.6363453 + X128_Y128= 317.1373914 91.5 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 148.6692007 -151.375 -366.104536 + X1_Y128= 192.6865979 -151.375 -322.0871388 + X128_Y1= 148.6692007 84.49999999 -366.104536 + X128_Y128= 192.6865978 84.5 -322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364.4251574 -153.75 -150.3485793 + X1_Y128= 364.4251574 -91.49999999 -150.3485793 + X128_Y1= 197.6363454 -153.7500001 -317.1373913 + X128_Y128= 197.6363453 -91.50000008 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 366.1045359 151.375 -148.6692008 + X1_Y128= 322.0871388 151.375 -192.6865979 + X128_Y1= 366.104536 -84.49999996 -148.6692007 + X128_Y128= 322.0871389 -84.5 -192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +ShieldClParis + X1_Y1= 364 153.75 -151.375 + X1_Y128= 364 91.5 -151.375 + X128_Y1= 364 153.75 84.5 + X128_Y128= 364 91.5 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364 -151.375 -153.75 + X1_Y128= 364 -151.375 -91.49999999 + X128_Y1= 364 84.49999999 -153.75 + X128_Y128= 364 84.5 -91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364 -153.75 151.375 + X1_Y128= 364 -91.49999999 151.375 + X128_Y1= 364 -153.7500001 -84.49999997 + X128_Y128= 364 -91.50000008 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364 151.375 153.75 + X1_Y128= 364 151.375 91.49999998 + X128_Y1= 364 -84.49999996 153.7500001 + X128_Y128= 364 -84.5 91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +ShieldClParis + X1_Y1= 364.4251574 153.75 150.3485793 + X1_Y128= 364.4251574 91.5 150.3485793 + X128_Y1= 197.6363453 153.75 317.1373914 + X128_Y128= 197.6363453 91.5 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 366.104536 -151.375 148.6692007 + X1_Y128= 322.0871388 -151.375 192.6865979 + X128_Y1= 366.104536 84.49999999 148.6692007 + X128_Y128= 322.0871389 84.5 192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 150.3485793 -153.75 364.4251574 + X1_Y128= 150.3485793 -91.49999999 364.4251574 + X128_Y1= 317.1373913 -153.7500001 197.6363454 + X128_Y128= 317.1373914 -91.50000008 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 148.6692008 151.375 366.1045359 + X1_Y128= 192.6865979 151.375 322.0871388 + X128_Y1= 148.6692007 -84.49999996 366.104536 + X128_Y128= 192.6865978 -84.5 322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +ShieldClParis + X1_Y1= -366.104536 -148.6692007 151.375 + X1_Y128= -322.0871388 -192.6865979 151.375 + X128_Y1= -366.104536 -148.6692007 -84.5 + X128_Y128= -322.0871388 -192.6865979 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -150.3485793 -364.4251574 153.75 + X1_Y128= -150.3485793 -364.4251574 91.49999999 + X128_Y1= -317.1373914 -197.6363454 153.75 + X128_Y128= -317.1373914 -197.6363453 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -148.6692008 -366.104536 -151.375 + X1_Y128= -192.6865979 -322.0871388 -151.375 + X128_Y1= -148.6692007 -366.104536 84.49999997 + X128_Y128= -192.6865978 -322.0871389 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364.4251574 -150.3485793 -153.75 + X1_Y128= -364.4251574 -150.3485793 -91.49999998 + X128_Y1= -197.6363454 -317.1373913 -153.7500001 + X128_Y128= -197.6363453 -317.1373914 -91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +ShieldClParis + X1_Y1= 366.104536 -148.6692007 -151.375 + X1_Y128= 322.0871388 -192.6865979 -151.375 + X128_Y1= 366.104536 -148.6692007 84.5 + X128_Y128= 322.0871388 -192.6865979 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 150.3485793 -364.4251574 -153.75 + X1_Y128= 150.3485793 -364.4251574 -91.49999999 + X128_Y1= 317.1373914 -197.6363454 -153.75 + X128_Y128= 317.1373914 -197.6363453 -91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 148.6692008 -366.104536 151.375 + X1_Y128= 192.6865979 -322.0871388 151.375 + X128_Y1= 148.6692007 -366.104536 -84.49999997 + X128_Y128= 192.6865978 -322.0871389 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364.4251574 -150.3485793 153.75 + X1_Y128= 364.4251574 -150.3485793 91.49999998 + X128_Y1= 197.6363454 -317.1373913 153.7500001 + X128_Y128= 197.6363453 -317.1373914 91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +ShieldClParis + X1_Y1= -148.6692007 366.104536 151.375 + X1_Y128= -192.6865979 322.0871388 151.375 + X128_Y1= -148.6692007 366.104536 -84.5 + X128_Y128= -192.6865979 322.0871388 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364.4251574 150.3485793 153.75 + X1_Y128= -364.4251574 150.3485793 91.49999999 + X128_Y1= -197.6363454 317.1373914 153.75 + X128_Y128= -197.6363453 317.1373914 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -366.104536 148.6692008 -151.375 + X1_Y128= -322.0871388 192.6865979 -151.375 + X128_Y1= -366.104536 148.6692007 84.49999997 + X128_Y128= -322.0871389 192.6865978 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -150.3485793 364.4251574 -153.75 + X1_Y128= -150.3485793 364.4251574 -91.49999998 + X128_Y1= -317.1373913 197.6363454 -153.7500001 + X128_Y128= -317.1373914 197.6363453 -91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +ShieldClParis + X1_Y1= 148.6692007 366.104536 -151.375 + X1_Y128= 192.6865979 322.0871388 -151.375 + X128_Y1= 148.6692007 366.104536 84.5 + X128_Y128= 192.6865979 322.0871388 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364.4251574 150.3485793 -153.75 + X1_Y128= 364.4251574 150.3485793 -91.49999999 + X128_Y1= 197.6363454 317.1373914 -153.75 + X128_Y128= 197.6363453 317.1373914 -91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 366.104536 148.6692008 151.375 + X1_Y128= 322.0871388 192.6865979 151.375 + X128_Y1= 366.104536 148.6692007 -84.49999997 + X128_Y128= 322.0871389 192.6865978 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 150.3485793 364.4251574 153.75 + X1_Y128= 150.3485793 364.4251574 91.49999998 + X128_Y1= 317.1373913 197.6363454 153.7500001 + X128_Y128= 317.1373914 197.6363453 91.50000013 + VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ShieldPhParis + THETA= 54.73 + PHI= 45.02 + R= 248 + BETA= 0 0 -30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ShieldPhParis + THETA= 54.73 + PHI= 134.98 + R= 248 + BETA= 0 0 210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ShieldPhParis + THETA= 54.73 + PHI= 225 + R= 248 + BETA= 0 0 -30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ShieldPhParis + THETA= 54.73 + PHI= 315 + R= 248 + BETA= 0 0 210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ShieldPhParis + THETA= 125.26 + PHI= 45.02 + R= 248 + BETA= 0 0 30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ShieldPhParis + THETA= 125.26 + PHI= 134.98 + R= 248 + BETA= 0 0 -210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ShieldPhParis + THETA= 125.26 + PHI= 225 + R= 248 + BETA= 0 0 30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ShieldPhParis + THETA= 125.26 + PHI= 315 + R= 248 + BETA= 0 0 -210 + VIS= all diff --git a/Inputs/DetectorConfiguration/ParisAll_208pipe1.detector b/Inputs/DetectorConfiguration/ParisAll_208pipe1.detector new file mode 100644 index 000000000..9ffb23e04 --- /dev/null +++ b/Inputs/DetectorConfiguration/ParisAll_208pipe1.detector @@ -0,0 +1,792 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 + NBLAYERS= 50 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 -208 84.5 + X1_Y128= 84.5 -208 84.5 + X128_Y1= -84.5 -208 -84.5 + X128_Y128= 84.5 -208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -206.8287414 -87.3276796 84.5 + X1_Y128= -87.32769537 -206.8287256 84.5 + X128_Y1= -206.8287414 -87.3276796 -84.5 + X128_Y128= -87.32769537 -206.8287256 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -208 84.50001115 84.5 + X1_Y128= -208 -84.49998885 84.5 + X128_Y1= -208 84.50001115 -84.5 + X128_Y128= -208 -84.49998885 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.3276796 206.8287414 84.5 + X1_Y128= -206.8287256 87.32769537 84.5 + X128_Y1= -87.3276796 206.8287414 -84.5 + X128_Y128= -206.8287256 87.32769537 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 84.50000557 208 84.5 + X1_Y128= -84.49999443 208 84.5 + X128_Y1= 84.50000557 208 -84.5 + X128_Y128= -84.49999443 208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 87.32768749 84.5 + X1_Y128= 87.32768749 206.8287335 84.5 + X128_Y1= 206.8287335 87.32768749 -84.5 + X128_Y128= 87.32768749 206.8287335 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 208 -84.50002229 84.5 + X1_Y128= 208 84.49997771 84.5 + X128_Y1= 208 -84.50002229 -84.5 + X128_Y128= 208 84.49997771 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32767172 -206.8287493 84.5 + X1_Y128= 206.8287177 -87.32770325 84.5 + X128_Y1= 87.32767172 -206.8287493 -84.5 + X128_Y128= 206.8287177 -87.32770325 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisCluster +% X1_Y1= 84.5 84.5 -208 +% X1_Y128= -84.5 84.5 -208 +% X128_Y1= 84.5 -84.5 -208 +% X128_Y128= -84.5 -84.5 -208 +% VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 84.49998424 -87.32768749 + X1_Y128= 87.32768749 84.49998424 -206.8287335 + X128_Y1= 206.8287335 -84.50001576 -87.32768749 + X128_Y128= 87.32768749 -84.50001576 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32768749 84.49998424 206.8287335 + X1_Y128= 206.8287335 84.49998424 87.32768749 + X128_Y1= 87.32768749 -84.50001576 206.8287335 + X128_Y128= 206.8287335 -84.50001576 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisCluster +% X1_Y1= -84.5 84.5 208 +% X1_Y128= 84.5 84.5 208 +% X128_Y1= -84.5 -84.5 208 +% X128_Y128= 84.5 -84.5 208 +% VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -206.8287335 84.50000788 87.32768749 + X1_Y128= -87.32768749 84.50000788 206.8287335 + X128_Y1= -206.8287335 -84.49999212 87.32768749 + X128_Y128= -87.32768749 -84.49999212 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.32768749 84.50000788 -206.8287335 + X1_Y128= -206.8287335 84.50000788 -87.32768749 + X128_Y1= -87.32768749 -84.49999212 -206.8287335 + X128_Y128= -206.8287335 -84.49999212 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 87.32768749 -206.8287335 + X1_Y128= 84.50000394 87.32768749 -206.8287335 + X128_Y1= -84.49999606 206.8287335 -87.32768749 + X128_Y128= 84.50000394 206.8287335 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 206.8287335 87.32768749 + X1_Y128= 84.50000394 206.8287335 87.32768749 + X128_Y1= -84.49999606 87.32768749 206.8287335 + X128_Y128= 84.50000394 87.32768749 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -87.32768749 206.8287335 + X1_Y128= 84.49998818 -87.32768749 206.8287335 + X128_Y1= -84.50001182 -206.8287335 87.32768749 + X128_Y128= 84.49998818 -206.8287335 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -206.8287335 -87.32768749 + X1_Y128= 84.49998818 -206.8287335 -87.32768749 + X128_Y1= -84.50001182 -87.32768749 -206.8287335 + X128_Y128= 84.49998818 -87.32768749 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -128.6063166 143.3590149 -88.30123599 + X1_Y128= -151.8764696 96.81870993 -111.571389 + X128_Y1= -88.30122956 143.3590149 -128.606323 + X128_Y128= -111.5713826 96.81870993 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30122956 143.3590149 128.606323 + X1_Y128= -111.5713826 96.81870993 151.876476 + X128_Y1= -128.6063166 143.3590149 88.30123599 + X128_Y128= -151.8764696 96.81870993 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.606323 143.3590085 88.30123599 + X1_Y128= 151.876476 96.81870349 111.571389 + X128_Y1= 88.30123599 143.3590085 128.606323 + X128_Y128= 111.571389 96.81870349 151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 88.30123599 143.3590085 -128.606323 + X1_Y128= 111.571389 96.81870349 -151.876476 + X128_Y1= 128.606323 143.3590085 -88.30123599 + X128_Y128= 151.876476 96.81870349 -111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30124243 -143.3590021 -128.606323 + X1_Y128= -111.5713954 -96.81869706 -151.876476 + X128_Y1= -128.6063294 -143.3590021 -88.30123599 + X128_Y128= -151.8764824 -96.81869706 -111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.6063101 -143.3590214 -88.30123599 + X1_Y128= 151.8764631 -96.81871636 -111.571389 + X128_Y1= 88.30122312 -143.3590214 -128.606323 + X128_Y128= 111.5713761 -96.81871636 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 88.30122312 -143.3590214 128.606323 + X1_Y128= 111.5713761 -96.81871636 151.876476 + X128_Y1= 128.6063101 -143.3590214 88.30123599 + X128_Y128= 151.8764631 -96.81871636 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -128.6063294 -143.3590021 88.30123599 + X1_Y128= -151.8764824 -96.81869706 111.571389 + X128_Y1= -88.30124243 -143.3590021 128.606323 + X128_Y128= -111.5713954 -96.81869706 151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Shield +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ShieldClParis + X1_Y1= 151.375 153.75 364 + X1_Y128= 151.375 91.5 364 + X128_Y1= -84.5 153.75 364 + X128_Y128= -84.5 91.5 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -151.375 364 + X1_Y128= 91.49999999 -151.375 364 + X128_Y1= 153.75 84.49999999 364 + X128_Y128= 91.50000004 84.5 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -153.75 364 + X1_Y128= -151.375 -91.49999999 364 + X128_Y1= 84.49999997 -153.7500001 364 + X128_Y128= 84.5 -91.50000008 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 151.375 364 + X1_Y128= -91.49999998 151.375 364 + X128_Y1= -153.7500001 -84.49999996 364 + X128_Y128= -91.50000013 -84.5 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ShieldClParis + X1_Y1= 151.375 -148.6692007 366.104536 + X1_Y128= 151.375 -192.6865979 322.0871388 + X128_Y1= -84.5 -148.6692007 366.104536 + X128_Y128= -84.5 -192.6865979 322.0871388 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -364.4251574 150.3485793 + X1_Y128= 91.49999999 -364.4251574 150.3485793 + X128_Y1= 153.75 -197.6363454 317.1373914 + X128_Y128= 91.50000004 -197.6363453 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -366.104536 148.6692008 + X1_Y128= -151.375 -322.0871388 192.6865979 + X128_Y1= 84.49999997 -366.104536 148.6692007 + X128_Y128= 84.5 -322.0871389 192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -150.3485793 364.4251574 + X1_Y128= -91.49999998 -150.3485793 364.4251574 + X128_Y1= -153.7500001 -317.1373913 197.6363454 + X128_Y128= -91.50000013 -317.1373914 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ShieldClParis + X1_Y1= 151.375 -364 153.75 + X1_Y128= 151.375 -364 91.5 + X128_Y1= -84.5 -364 153.75 + X128_Y128= -84.5 -364 91.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -364 -151.375 + X1_Y128= 91.49999999 -364 -151.375 + X128_Y1= 153.75 -364 84.49999999 + X128_Y128= 91.50000004 -364 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -364 -153.75 + X1_Y128= -151.375 -364 -91.49999999 + X128_Y1= 84.49999997 -364 -153.7500001 + X128_Y128= 84.5 -364 -91.50000008 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -364 151.375 + X1_Y128= -91.49999998 -364 151.375 + X128_Y1= -153.7500001 -364 -84.49999996 + X128_Y128= -91.50000013 -364 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ShieldClParis + X1_Y1= 151.375 -366.104536 -148.6692007 + X1_Y128= 151.375 -322.0871388 -192.6865979 + X128_Y1= -84.5 -366.104536 -148.6692007 + X128_Y128= -84.5 -322.0871388 -192.6865979 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -150.3485793 -364.4251574 + X1_Y128= 91.49999999 -150.3485793 -364.4251574 + X128_Y1= 153.75 -317.1373914 -197.6363454 + X128_Y128= 91.50000004 -317.1373914 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -148.6692008 -366.104536 + X1_Y128= -151.375 -192.6865979 -322.0871388 + X128_Y1= 84.49999997 -148.6692007 -366.104536 + X128_Y128= 84.5 -192.6865978 -322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -364.4251574 -150.3485793 + X1_Y128= -91.49999998 -364.4251574 -150.3485793 + X128_Y1= -153.7500001 -197.6363454 -317.1373913 + X128_Y128= -91.50000013 -197.6363453 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ShieldClParis + X1_Y1= 151.375 -153.75 -364 + X1_Y128= 151.375 -91.5 -364 + X128_Y1= -84.5 -153.75 -364 + X128_Y128= -84.5 -91.5 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 151.375 -364 + X1_Y128= 91.49999999 151.375 -364 + X128_Y1= 153.75 -84.49999999 -364 + X128_Y128= 91.50000004 -84.5 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 153.75 -364 + X1_Y128= -151.375 91.49999999 -364 + X128_Y1= 84.49999997 153.7500001 -364 + X128_Y128= 84.5 91.50000008 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -151.375 -364 + X1_Y128= -91.49999998 -151.375 -364 + X128_Y1= -153.7500001 84.49999996 -364 + X128_Y128= -91.50000013 84.5 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ShieldClParis + X1_Y1= 151.375 148.6692007 -366.104536 + X1_Y128= 151.375 192.6865979 -322.0871388 + X128_Y1= -84.5 148.6692007 -366.104536 + X128_Y128= -84.5 192.6865979 -322.0871388 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 364.4251574 -150.3485793 + X1_Y128= 91.49999999 364.4251574 -150.3485793 + X128_Y1= 153.75 197.6363454 -317.1373914 + X128_Y128= 91.50000004 197.6363453 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 366.104536 -148.6692008 + X1_Y128= -151.375 322.0871388 -192.6865979 + X128_Y1= 84.49999997 366.104536 -148.6692007 + X128_Y128= 84.5 322.0871389 -192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 150.3485793 -364.4251574 + X1_Y128= -91.49999998 150.3485793 -364.4251574 + X128_Y1= -153.7500001 317.1373913 -197.6363454 + X128_Y128= -91.50000013 317.1373914 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ShieldClParis + X1_Y1= 151.375 364 -153.75 + X1_Y128= 151.375 364 -91.5 + X128_Y1= -84.5 364 -153.75 + X128_Y128= -84.5 364 -91.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 364 151.375 + X1_Y128= 91.49999999 364 151.375 + X128_Y1= 153.75 364 -84.49999999 + X128_Y128= 91.50000004 364 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 364 153.75 + X1_Y128= -151.375 364 91.49999999 + X128_Y1= 84.49999997 364 153.7500001 + X128_Y128= 84.5 364 91.50000008 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 364 -151.375 + X1_Y128= -91.49999998 364 -151.375 + X128_Y1= -153.7500001 364 84.49999996 + X128_Y128= -91.50000013 364 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ShieldClParis + X1_Y1= 151.375 366.104536 148.6692007 + X1_Y128= 151.375 322.0871388 192.6865979 + X128_Y1= -84.5 366.104536 148.6692007 + X128_Y128= -84.5 322.0871388 192.6865979 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 150.3485793 364.4251574 + X1_Y128= 91.49999999 150.3485793 364.4251574 + X128_Y1= 153.75 317.1373914 197.6363454 + X128_Y128= 91.50000004 317.1373914 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 148.6692008 366.104536 + X1_Y128= -151.375 192.6865979 322.0871388 + X128_Y1= 84.49999997 148.6692007 366.104536 + X128_Y128= 84.5 192.6865978 322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 364.4251574 150.3485793 + X1_Y128= -91.49999998 364.4251574 150.3485793 + X128_Y1= -153.7500001 197.6363454 317.1373913 + X128_Y128= -91.50000013 197.6363453 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +ShieldClParis + X1_Y1= -150.3485793 153.75 364.4251574 + X1_Y128= -150.3485793 91.5 364.4251574 + X128_Y1= -317.1373914 153.75 197.6363453 + X128_Y128= -317.1373914 91.5 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -148.6692007 -151.375 366.104536 + X1_Y128= -192.6865979 -151.375 322.0871388 + X128_Y1= -148.6692007 84.49999999 366.104536 + X128_Y128= -192.6865978 84.5 322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364.4251574 -153.75 150.3485793 + X1_Y128= -364.4251574 -91.49999999 150.3485793 + X128_Y1= -197.6363454 -153.7500001 317.1373913 + X128_Y128= -197.6363453 -91.50000008 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -366.1045359 151.375 148.6692008 + X1_Y128= -322.0871388 151.375 192.6865979 + X128_Y1= -366.104536 -84.49999996 148.6692007 + X128_Y128= -322.0871389 -84.5 192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +ShieldClParis + X1_Y1= -364 153.75 151.375 + X1_Y128= -364 91.5 151.375 + X128_Y1= -364 153.75 -84.5 + X128_Y128= -364 91.5 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 -151.375 153.75 + X1_Y128= -364 -151.375 91.49999999 + X128_Y1= -364 84.49999999 153.75 + X128_Y128= -364 84.5 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 -153.75 -151.375 + X1_Y128= -364 -91.49999999 -151.375 + X128_Y1= -364 -153.7500001 84.49999997 + X128_Y128= -364 -91.50000008 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 151.375 -153.75 + X1_Y128= -364 151.375 -91.49999998 + X128_Y1= -364 -84.49999996 -153.7500001 + X128_Y128= -364 -84.5 -91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +ShieldClParis + X1_Y1= -364.4251574 153.75 -150.3485793 + X1_Y128= -364.4251574 91.5 -150.3485793 + X128_Y1= -197.6363453 153.75 -317.1373914 + X128_Y128= -197.6363453 91.5 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -366.104536 -151.375 -148.6692007 + X1_Y128= -322.0871388 -151.375 -192.6865979 + X128_Y1= -366.104536 84.49999999 -148.6692007 + X128_Y128= -322.0871389 84.5 -192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -150.3485793 -153.75 -364.4251574 + X1_Y128= -150.3485793 -91.49999999 -364.4251574 + X128_Y1= -317.1373913 -153.7500001 -197.6363454 + X128_Y128= -317.1373914 -91.50000008 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -148.6692008 151.375 -366.1045359 + X1_Y128= -192.6865979 151.375 -322.0871388 + X128_Y1= -148.6692007 -84.49999996 -366.104536 + X128_Y128= -192.6865978 -84.5 -322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +ShieldClParis + X1_Y1= 150.3485793 153.75 -364.4251574 + X1_Y128= 150.3485793 91.5 -364.4251574 + X128_Y1= 317.1373914 153.75 -197.6363453 + X128_Y128= 317.1373914 91.5 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 148.6692007 -151.375 -366.104536 + X1_Y128= 192.6865979 -151.375 -322.0871388 + X128_Y1= 148.6692007 84.49999999 -366.104536 + X128_Y128= 192.6865978 84.5 -322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364.4251574 -153.75 -150.3485793 + X1_Y128= 364.4251574 -91.49999999 -150.3485793 + X128_Y1= 197.6363454 -153.7500001 -317.1373913 + X128_Y128= 197.6363453 -91.50000008 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 366.1045359 151.375 -148.6692008 + X1_Y128= 322.0871388 151.375 -192.6865979 + X128_Y1= 366.104536 -84.49999996 -148.6692007 + X128_Y128= 322.0871389 -84.5 -192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +ShieldClParis + X1_Y1= 364 153.75 -151.375 + X1_Y128= 364 91.5 -151.375 + X128_Y1= 364 153.75 84.5 + X128_Y128= 364 91.5 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364 -151.375 -153.75 + X1_Y128= 364 -151.375 -91.49999999 + X128_Y1= 364 84.49999999 -153.75 + X128_Y128= 364 84.5 -91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364 -153.75 151.375 + X1_Y128= 364 -91.49999999 151.375 + X128_Y1= 364 -153.7500001 -84.49999997 + X128_Y128= 364 -91.50000008 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364 151.375 153.75 + X1_Y128= 364 151.375 91.49999998 + X128_Y1= 364 -84.49999996 153.7500001 + X128_Y128= 364 -84.5 91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +ShieldClParis + X1_Y1= 364.4251574 153.75 150.3485793 + X1_Y128= 364.4251574 91.5 150.3485793 + X128_Y1= 197.6363453 153.75 317.1373914 + X128_Y128= 197.6363453 91.5 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 366.104536 -151.375 148.6692007 + X1_Y128= 322.0871388 -151.375 192.6865979 + X128_Y1= 366.104536 84.49999999 148.6692007 + X128_Y128= 322.0871389 84.5 192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 150.3485793 -153.75 364.4251574 + X1_Y128= 150.3485793 -91.49999999 364.4251574 + X128_Y1= 317.1373913 -153.7500001 197.6363454 + X128_Y128= 317.1373914 -91.50000008 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 148.6692008 151.375 366.1045359 + X1_Y128= 192.6865979 151.375 322.0871388 + X128_Y1= 148.6692007 -84.49999996 366.104536 + X128_Y128= 192.6865978 -84.5 322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +ShieldClParis + X1_Y1= -366.104536 -148.6692007 151.375 + X1_Y128= -322.0871388 -192.6865979 151.375 + X128_Y1= -366.104536 -148.6692007 -84.5 + X128_Y128= -322.0871388 -192.6865979 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -150.3485793 -364.4251574 153.75 + X1_Y128= -150.3485793 -364.4251574 91.49999999 + X128_Y1= -317.1373914 -197.6363454 153.75 + X128_Y128= -317.1373914 -197.6363453 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -148.6692008 -366.104536 -151.375 + X1_Y128= -192.6865979 -322.0871388 -151.375 + X128_Y1= -148.6692007 -366.104536 84.49999997 + X128_Y128= -192.6865978 -322.0871389 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364.4251574 -150.3485793 -153.75 + X1_Y128= -364.4251574 -150.3485793 -91.49999998 + X128_Y1= -197.6363454 -317.1373913 -153.7500001 + X128_Y128= -197.6363453 -317.1373914 -91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +ShieldClParis + X1_Y1= 366.104536 -148.6692007 -151.375 + X1_Y128= 322.0871388 -192.6865979 -151.375 + X128_Y1= 366.104536 -148.6692007 84.5 + X128_Y128= 322.0871388 -192.6865979 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 150.3485793 -364.4251574 -153.75 + X1_Y128= 150.3485793 -364.4251574 -91.49999999 + X128_Y1= 317.1373914 -197.6363454 -153.75 + X128_Y128= 317.1373914 -197.6363453 -91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 148.6692008 -366.104536 151.375 + X1_Y128= 192.6865979 -322.0871388 151.375 + X128_Y1= 148.6692007 -366.104536 -84.49999997 + X128_Y128= 192.6865978 -322.0871389 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364.4251574 -150.3485793 153.75 + X1_Y128= 364.4251574 -150.3485793 91.49999998 + X128_Y1= 197.6363454 -317.1373913 153.7500001 + X128_Y128= 197.6363453 -317.1373914 91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +ShieldClParis + X1_Y1= -148.6692007 366.104536 151.375 + X1_Y128= -192.6865979 322.0871388 151.375 + X128_Y1= -148.6692007 366.104536 -84.5 + X128_Y128= -192.6865979 322.0871388 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364.4251574 150.3485793 153.75 + X1_Y128= -364.4251574 150.3485793 91.49999999 + X128_Y1= -197.6363454 317.1373914 153.75 + X128_Y128= -197.6363453 317.1373914 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -366.104536 148.6692008 -151.375 + X1_Y128= -322.0871388 192.6865979 -151.375 + X128_Y1= -366.104536 148.6692007 84.49999997 + X128_Y128= -322.0871389 192.6865978 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -150.3485793 364.4251574 -153.75 + X1_Y128= -150.3485793 364.4251574 -91.49999998 + X128_Y1= -317.1373913 197.6363454 -153.7500001 + X128_Y128= -317.1373914 197.6363453 -91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +ShieldClParis + X1_Y1= 148.6692007 366.104536 -151.375 + X1_Y128= 192.6865979 322.0871388 -151.375 + X128_Y1= 148.6692007 366.104536 84.5 + X128_Y128= 192.6865979 322.0871388 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364.4251574 150.3485793 -153.75 + X1_Y128= 364.4251574 150.3485793 -91.49999999 + X128_Y1= 197.6363454 317.1373914 -153.75 + X128_Y128= 197.6363453 317.1373914 -91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 366.104536 148.6692008 151.375 + X1_Y128= 322.0871388 192.6865979 151.375 + X128_Y1= 366.104536 148.6692007 -84.49999997 + X128_Y128= 322.0871389 192.6865978 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 150.3485793 364.4251574 153.75 + X1_Y128= 150.3485793 364.4251574 91.49999998 + X128_Y1= 317.1373913 197.6363454 153.7500001 + X128_Y128= 317.1373914 197.6363453 91.50000013 + VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ShieldPhParis + THETA= 54.73 + PHI= 45.02 + R= 248 + BETA= 0 0 -30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ShieldPhParis + THETA= 54.73 + PHI= 134.98 + R= 248 + BETA= 0 0 210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ShieldPhParis + THETA= 54.73 + PHI= 225 + R= 248 + BETA= 0 0 -30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ShieldPhParis + THETA= 54.73 + PHI= 315 + R= 248 + BETA= 0 0 210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ShieldPhParis + THETA= 125.26 + PHI= 45.02 + R= 248 + BETA= 0 0 30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ShieldPhParis + THETA= 125.26 + PHI= 134.98 + R= 248 + BETA= 0 0 -210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ShieldPhParis + THETA= 125.26 + PHI= 225 + R= 248 + BETA= 0 0 30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ShieldPhParis + THETA= 125.26 + PHI= 315 + R= 248 + BETA= 0 0 -210 + VIS= all diff --git a/Inputs/DetectorConfiguration/ParisAll_208pipe1noshield.detector b/Inputs/DetectorConfiguration/ParisAll_208pipe1noshield.detector new file mode 100644 index 000000000..fbbf2f0a8 --- /dev/null +++ b/Inputs/DetectorConfiguration/ParisAll_208pipe1noshield.detector @@ -0,0 +1,212 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 + NBLAYERS= 50 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 -208 84.5 + X1_Y128= 84.5 -208 84.5 + X128_Y1= -84.5 -208 -84.5 + X128_Y128= 84.5 -208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -206.8287414 -87.3276796 84.5 + X1_Y128= -87.32769537 -206.8287256 84.5 + X128_Y1= -206.8287414 -87.3276796 -84.5 + X128_Y128= -87.32769537 -206.8287256 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -208 84.50001115 84.5 + X1_Y128= -208 -84.49998885 84.5 + X128_Y1= -208 84.50001115 -84.5 + X128_Y128= -208 -84.49998885 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.3276796 206.8287414 84.5 + X1_Y128= -206.8287256 87.32769537 84.5 + X128_Y1= -87.3276796 206.8287414 -84.5 + X128_Y128= -206.8287256 87.32769537 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 84.50000557 208 84.5 + X1_Y128= -84.49999443 208 84.5 + X128_Y1= 84.50000557 208 -84.5 + X128_Y128= -84.49999443 208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 87.32768749 84.5 + X1_Y128= 87.32768749 206.8287335 84.5 + X128_Y1= 206.8287335 87.32768749 -84.5 + X128_Y128= 87.32768749 206.8287335 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 208 -84.50002229 84.5 + X1_Y128= 208 84.49997771 84.5 + X128_Y1= 208 -84.50002229 -84.5 + X128_Y128= 208 84.49997771 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32767172 -206.8287493 84.5 + X1_Y128= 206.8287177 -87.32770325 84.5 + X128_Y1= 87.32767172 -206.8287493 -84.5 + X128_Y128= 206.8287177 -87.32770325 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisCluster +% X1_Y1= 84.5 84.5 -208 +% X1_Y128= -84.5 84.5 -208 +% X128_Y1= 84.5 -84.5 -208 +% X128_Y128= -84.5 -84.5 -208 +% VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 84.49998424 -87.32768749 + X1_Y128= 87.32768749 84.49998424 -206.8287335 + X128_Y1= 206.8287335 -84.50001576 -87.32768749 + X128_Y128= 87.32768749 -84.50001576 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32768749 84.49998424 206.8287335 + X1_Y128= 206.8287335 84.49998424 87.32768749 + X128_Y1= 87.32768749 -84.50001576 206.8287335 + X128_Y128= 206.8287335 -84.50001576 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisCluster +% X1_Y1= -84.5 84.5 208 +% X1_Y128= 84.5 84.5 208 +% X128_Y1= -84.5 -84.5 208 +% X128_Y128= 84.5 -84.5 208 +% VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -206.8287335 84.50000788 87.32768749 + X1_Y128= -87.32768749 84.50000788 206.8287335 + X128_Y1= -206.8287335 -84.49999212 87.32768749 + X128_Y128= -87.32768749 -84.49999212 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.32768749 84.50000788 -206.8287335 + X1_Y128= -206.8287335 84.50000788 -87.32768749 + X128_Y1= -87.32768749 -84.49999212 -206.8287335 + X128_Y128= -206.8287335 -84.49999212 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 87.32768749 -206.8287335 + X1_Y128= 84.50000394 87.32768749 -206.8287335 + X128_Y1= -84.49999606 206.8287335 -87.32768749 + X128_Y128= 84.50000394 206.8287335 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 206.8287335 87.32768749 + X1_Y128= 84.50000394 206.8287335 87.32768749 + X128_Y1= -84.49999606 87.32768749 206.8287335 + X128_Y128= 84.50000394 87.32768749 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -87.32768749 206.8287335 + X1_Y128= 84.49998818 -87.32768749 206.8287335 + X128_Y1= -84.50001182 -206.8287335 87.32768749 + X128_Y128= 84.49998818 -206.8287335 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -206.8287335 -87.32768749 + X1_Y128= 84.49998818 -206.8287335 -87.32768749 + X128_Y1= -84.50001182 -87.32768749 -206.8287335 + X128_Y128= 84.49998818 -87.32768749 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -128.6063166 143.3590149 -88.30123599 + X1_Y128= -151.8764696 96.81870993 -111.571389 + X128_Y1= -88.30122956 143.3590149 -128.606323 + X128_Y128= -111.5713826 96.81870993 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30122956 143.3590149 128.606323 + X1_Y128= -111.5713826 96.81870993 151.876476 + X128_Y1= -128.6063166 143.3590149 88.30123599 + X128_Y128= -151.8764696 96.81870993 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.606323 143.3590085 88.30123599 + X1_Y128= 151.876476 96.81870349 111.571389 + X128_Y1= 88.30123599 143.3590085 128.606323 + X128_Y128= 111.571389 96.81870349 151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 88.30123599 143.3590085 -128.606323 + X1_Y128= 111.571389 96.81870349 -151.876476 + X128_Y1= 128.606323 143.3590085 -88.30123599 + X128_Y128= 151.876476 96.81870349 -111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30124243 -143.3590021 -128.606323 + X1_Y128= -111.5713954 -96.81869706 -151.876476 + X128_Y1= -128.6063294 -143.3590021 -88.30123599 + X128_Y128= -151.8764824 -96.81869706 -111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.6063101 -143.3590214 -88.30123599 + X1_Y128= 151.8764631 -96.81871636 -111.571389 + X128_Y1= 88.30122312 -143.3590214 -128.606323 + X128_Y128= 111.5713761 -96.81871636 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 88.30122312 -143.3590214 128.606323 + X1_Y128= 111.5713761 -96.81871636 151.876476 + X128_Y1= 128.6063101 -143.3590214 88.30123599 + X128_Y128= 151.8764631 -96.81871636 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -128.6063294 -143.3590021 88.30123599 + X1_Y128= -151.8764824 -96.81869706 111.571389 + X128_Y1= -88.30124243 -143.3590021 128.606323 + X128_Y128= -111.5713954 -96.81869706 151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Inputs/DetectorConfiguration/ParisAll_208pipe2.detector b/Inputs/DetectorConfiguration/ParisAll_208pipe2.detector new file mode 100644 index 000000000..c7165ff81 --- /dev/null +++ b/Inputs/DetectorConfiguration/ParisAll_208pipe2.detector @@ -0,0 +1,792 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 + NBLAYERS= 50 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 -208 84.5 + X1_Y128= 84.5 -208 84.5 + X128_Y1= -84.5 -208 -84.5 + X128_Y128= 84.5 -208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -206.8287414 -87.3276796 84.5 + X1_Y128= -87.32769537 -206.8287256 84.5 + X128_Y1= -206.8287414 -87.3276796 -84.5 + X128_Y128= -87.32769537 -206.8287256 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -208 84.50001115 84.5 + X1_Y128= -208 -84.49998885 84.5 + X128_Y1= -208 84.50001115 -84.5 + X128_Y128= -208 -84.49998885 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.3276796 206.8287414 84.5 + X1_Y128= -206.8287256 87.32769537 84.5 + X128_Y1= -87.3276796 206.8287414 -84.5 + X128_Y128= -206.8287256 87.32769537 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 84.50000557 208 84.5 + X1_Y128= -84.49999443 208 84.5 + X128_Y1= 84.50000557 208 -84.5 + X128_Y128= -84.49999443 208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 87.32768749 84.5 + X1_Y128= 87.32768749 206.8287335 84.5 + X128_Y1= 206.8287335 87.32768749 -84.5 + X128_Y128= 87.32768749 206.8287335 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 208 -84.50002229 84.5 + X1_Y128= 208 84.49997771 84.5 + X128_Y1= 208 -84.50002229 -84.5 + X128_Y128= 208 84.49997771 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32767172 -206.8287493 84.5 + X1_Y128= 206.8287177 -87.32770325 84.5 + X128_Y1= 87.32767172 -206.8287493 -84.5 + X128_Y128= 206.8287177 -87.32770325 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 84.5 84.5 -208 + X1_Y128= -84.5 84.5 -208 + X128_Y1= 84.5 -84.5 -208 + X128_Y128= -84.5 -84.5 -208 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 84.49998424 -87.32768749 + X1_Y128= 87.32768749 84.49998424 -206.8287335 + X128_Y1= 206.8287335 -84.50001576 -87.32768749 + X128_Y128= 87.32768749 -84.50001576 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32768749 84.49998424 206.8287335 + X1_Y128= 206.8287335 84.49998424 87.32768749 + X128_Y1= 87.32768749 -84.50001576 206.8287335 + X128_Y128= 206.8287335 -84.50001576 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.5 84.5 208 + X1_Y128= 84.5 84.5 208 + X128_Y1= -84.5 -84.5 208 + X128_Y128= 84.5 -84.5 208 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -206.8287335 84.50000788 87.32768749 + X1_Y128= -87.32768749 84.50000788 206.8287335 + X128_Y1= -206.8287335 -84.49999212 87.32768749 + X128_Y128= -87.32768749 -84.49999212 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.32768749 84.50000788 -206.8287335 + X1_Y128= -206.8287335 84.50000788 -87.32768749 + X128_Y1= -87.32768749 -84.49999212 -206.8287335 + X128_Y128= -206.8287335 -84.49999212 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 87.32768749 -206.8287335 + X1_Y128= 84.50000394 87.32768749 -206.8287335 + X128_Y1= -84.49999606 206.8287335 -87.32768749 + X128_Y128= 84.50000394 206.8287335 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 206.8287335 87.32768749 + X1_Y128= 84.50000394 206.8287335 87.32768749 + X128_Y1= -84.49999606 87.32768749 206.8287335 + X128_Y128= 84.50000394 87.32768749 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -87.32768749 206.8287335 + X1_Y128= 84.49998818 -87.32768749 206.8287335 + X128_Y1= -84.50001182 -206.8287335 87.32768749 + X128_Y128= 84.49998818 -206.8287335 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -206.8287335 -87.32768749 + X1_Y128= 84.49998818 -206.8287335 -87.32768749 + X128_Y1= -84.50001182 -87.32768749 -206.8287335 + X128_Y128= 84.49998818 -87.32768749 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -128.6063166 143.3590149 -88.30123599 + X1_Y128= -151.8764696 96.81870993 -111.571389 + X128_Y1= -88.30122956 143.3590149 -128.606323 + X128_Y128= -111.5713826 96.81870993 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30122956 143.3590149 128.606323 + X1_Y128= -111.5713826 96.81870993 151.876476 + X128_Y1= -128.6063166 143.3590149 88.30123599 + X128_Y128= -151.8764696 96.81870993 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.606323 143.3590085 88.30123599 + X1_Y128= 151.876476 96.81870349 111.571389 + X128_Y1= 88.30123599 143.3590085 128.606323 + X128_Y128= 111.571389 96.81870349 151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= 88.30123599 143.3590085 -128.606323 +% X1_Y128= 111.571389 96.81870349 -151.876476 +% X128_Y1= 128.606323 143.3590085 -88.30123599 +% X128_Y128= 151.876476 96.81870349 -111.571389 +% VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30124243 -143.3590021 -128.606323 + X1_Y128= -111.5713954 -96.81869706 -151.876476 + X128_Y1= -128.6063294 -143.3590021 -88.30123599 + X128_Y128= -151.8764824 -96.81869706 -111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.6063101 -143.3590214 -88.30123599 + X1_Y128= 151.8764631 -96.81871636 -111.571389 + X128_Y1= 88.30122312 -143.3590214 -128.606323 + X128_Y128= 111.5713761 -96.81871636 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 88.30122312 -143.3590214 128.606323 + X1_Y128= 111.5713761 -96.81871636 151.876476 + X128_Y1= 128.6063101 -143.3590214 88.30123599 + X128_Y128= 151.8764631 -96.81871636 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= -128.6063294 -143.3590021 88.30123599 +% X1_Y128= -151.8764824 -96.81869706 111.571389 +% X128_Y1= -88.30124243 -143.3590021 128.606323 +% X128_Y128= -111.5713954 -96.81869706 151.876476 +% VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Shield +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ShieldClParis + X1_Y1= 151.375 153.75 364 + X1_Y128= 151.375 91.5 364 + X128_Y1= -84.5 153.75 364 + X128_Y128= -84.5 91.5 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -151.375 364 + X1_Y128= 91.49999999 -151.375 364 + X128_Y1= 153.75 84.49999999 364 + X128_Y128= 91.50000004 84.5 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -153.75 364 + X1_Y128= -151.375 -91.49999999 364 + X128_Y1= 84.49999997 -153.7500001 364 + X128_Y128= 84.5 -91.50000008 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 151.375 364 + X1_Y128= -91.49999998 151.375 364 + X128_Y1= -153.7500001 -84.49999996 364 + X128_Y128= -91.50000013 -84.5 364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ShieldClParis + X1_Y1= 151.375 -148.6692007 366.104536 + X1_Y128= 151.375 -192.6865979 322.0871388 + X128_Y1= -84.5 -148.6692007 366.104536 + X128_Y128= -84.5 -192.6865979 322.0871388 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -364.4251574 150.3485793 + X1_Y128= 91.49999999 -364.4251574 150.3485793 + X128_Y1= 153.75 -197.6363454 317.1373914 + X128_Y128= 91.50000004 -197.6363453 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -366.104536 148.6692008 + X1_Y128= -151.375 -322.0871388 192.6865979 + X128_Y1= 84.49999997 -366.104536 148.6692007 + X128_Y128= 84.5 -322.0871389 192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -150.3485793 364.4251574 + X1_Y128= -91.49999998 -150.3485793 364.4251574 + X128_Y1= -153.7500001 -317.1373913 197.6363454 + X128_Y128= -91.50000013 -317.1373914 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ShieldClParis + X1_Y1= 151.375 -364 153.75 + X1_Y128= 151.375 -364 91.5 + X128_Y1= -84.5 -364 153.75 + X128_Y128= -84.5 -364 91.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -364 -151.375 + X1_Y128= 91.49999999 -364 -151.375 + X128_Y1= 153.75 -364 84.49999999 + X128_Y128= 91.50000004 -364 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -364 -153.75 + X1_Y128= -151.375 -364 -91.49999999 + X128_Y1= 84.49999997 -364 -153.7500001 + X128_Y128= 84.5 -364 -91.50000008 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -364 151.375 + X1_Y128= -91.49999998 -364 151.375 + X128_Y1= -153.7500001 -364 -84.49999996 + X128_Y128= -91.50000013 -364 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ShieldClParis + X1_Y1= 151.375 -366.104536 -148.6692007 + X1_Y128= 151.375 -322.0871388 -192.6865979 + X128_Y1= -84.5 -366.104536 -148.6692007 + X128_Y128= -84.5 -322.0871388 -192.6865979 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 -150.3485793 -364.4251574 + X1_Y128= 91.49999999 -150.3485793 -364.4251574 + X128_Y1= 153.75 -317.1373914 -197.6363454 + X128_Y128= 91.50000004 -317.1373914 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 -148.6692008 -366.104536 + X1_Y128= -151.375 -192.6865979 -322.0871388 + X128_Y1= 84.49999997 -148.6692007 -366.104536 + X128_Y128= 84.5 -192.6865978 -322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -364.4251574 -150.3485793 + X1_Y128= -91.49999998 -364.4251574 -150.3485793 + X128_Y1= -153.7500001 -197.6363454 -317.1373913 + X128_Y128= -91.50000013 -197.6363453 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ShieldClParis + X1_Y1= 151.375 -153.75 -364 + X1_Y128= 151.375 -91.5 -364 + X128_Y1= -84.5 -153.75 -364 + X128_Y128= -84.5 -91.5 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 151.375 -364 + X1_Y128= 91.49999999 151.375 -364 + X128_Y1= 153.75 -84.49999999 -364 + X128_Y128= 91.50000004 -84.5 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 153.75 -364 + X1_Y128= -151.375 91.49999999 -364 + X128_Y1= 84.49999997 153.7500001 -364 + X128_Y128= 84.5 91.50000008 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 -151.375 -364 + X1_Y128= -91.49999998 -151.375 -364 + X128_Y1= -153.7500001 84.49999996 -364 + X128_Y128= -91.50000013 84.5 -364 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ShieldClParis + X1_Y1= 151.375 148.6692007 -366.104536 + X1_Y128= 151.375 192.6865979 -322.0871388 + X128_Y1= -84.5 148.6692007 -366.104536 + X128_Y128= -84.5 192.6865979 -322.0871388 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 364.4251574 -150.3485793 + X1_Y128= 91.49999999 364.4251574 -150.3485793 + X128_Y1= 153.75 197.6363454 -317.1373914 + X128_Y128= 91.50000004 197.6363453 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 366.104536 -148.6692008 + X1_Y128= -151.375 322.0871388 -192.6865979 + X128_Y1= 84.49999997 366.104536 -148.6692007 + X128_Y128= 84.5 322.0871389 -192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 150.3485793 -364.4251574 + X1_Y128= -91.49999998 150.3485793 -364.4251574 + X128_Y1= -153.7500001 317.1373913 -197.6363454 + X128_Y128= -91.50000013 317.1373914 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ShieldClParis + X1_Y1= 151.375 364 -153.75 + X1_Y128= 151.375 364 -91.5 + X128_Y1= -84.5 364 -153.75 + X128_Y128= -84.5 364 -91.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 364 151.375 + X1_Y128= 91.49999999 364 151.375 + X128_Y1= 153.75 364 -84.49999999 + X128_Y128= 91.50000004 364 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 364 153.75 + X1_Y128= -151.375 364 91.49999999 + X128_Y1= 84.49999997 364 153.7500001 + X128_Y128= 84.5 364 91.50000008 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 364 -151.375 + X1_Y128= -91.49999998 364 -151.375 + X128_Y1= -153.7500001 364 84.49999996 + X128_Y128= -91.50000013 364 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ShieldClParis + X1_Y1= 151.375 366.104536 148.6692007 + X1_Y128= 151.375 322.0871388 192.6865979 + X128_Y1= -84.5 366.104536 148.6692007 + X128_Y128= -84.5 322.0871388 192.6865979 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 153.75 150.3485793 364.4251574 + X1_Y128= 91.49999999 150.3485793 364.4251574 + X128_Y1= 153.75 317.1373914 197.6363454 + X128_Y128= 91.50000004 317.1373914 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -151.375 148.6692008 366.104536 + X1_Y128= -151.375 192.6865979 322.0871388 + X128_Y1= 84.49999997 148.6692007 366.104536 + X128_Y128= 84.5 192.6865978 322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -153.75 364.4251574 150.3485793 + X1_Y128= -91.49999998 364.4251574 150.3485793 + X128_Y1= -153.7500001 197.6363454 317.1373913 + X128_Y128= -91.50000013 197.6363453 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +ShieldClParis + X1_Y1= -150.3485793 153.75 364.4251574 + X1_Y128= -150.3485793 91.5 364.4251574 + X128_Y1= -317.1373914 153.75 197.6363453 + X128_Y128= -317.1373914 91.5 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -148.6692007 -151.375 366.104536 + X1_Y128= -192.6865979 -151.375 322.0871388 + X128_Y1= -148.6692007 84.49999999 366.104536 + X128_Y128= -192.6865978 84.5 322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364.4251574 -153.75 150.3485793 + X1_Y128= -364.4251574 -91.49999999 150.3485793 + X128_Y1= -197.6363454 -153.7500001 317.1373913 + X128_Y128= -197.6363453 -91.50000008 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -366.1045359 151.375 148.6692008 + X1_Y128= -322.0871388 151.375 192.6865979 + X128_Y1= -366.104536 -84.49999996 148.6692007 + X128_Y128= -322.0871389 -84.5 192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +ShieldClParis + X1_Y1= -364 153.75 151.375 + X1_Y128= -364 91.5 151.375 + X128_Y1= -364 153.75 -84.5 + X128_Y128= -364 91.5 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 -151.375 153.75 + X1_Y128= -364 -151.375 91.49999999 + X128_Y1= -364 84.49999999 153.75 + X128_Y128= -364 84.5 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 -153.75 -151.375 + X1_Y128= -364 -91.49999999 -151.375 + X128_Y1= -364 -153.7500001 84.49999997 + X128_Y128= -364 -91.50000008 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 151.375 -153.75 + X1_Y128= -364 151.375 -91.49999998 + X128_Y1= -364 -84.49999996 -153.7500001 + X128_Y128= -364 -84.5 -91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +ShieldClParis + X1_Y1= -364.4251574 153.75 -150.3485793 + X1_Y128= -364.4251574 91.5 -150.3485793 + X128_Y1= -197.6363453 153.75 -317.1373914 + X128_Y128= -197.6363453 91.5 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -366.104536 -151.375 -148.6692007 + X1_Y128= -322.0871388 -151.375 -192.6865979 + X128_Y1= -366.104536 84.49999999 -148.6692007 + X128_Y128= -322.0871389 84.5 -192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -150.3485793 -153.75 -364.4251574 + X1_Y128= -150.3485793 -91.49999999 -364.4251574 + X128_Y1= -317.1373913 -153.7500001 -197.6363454 + X128_Y128= -317.1373914 -91.50000008 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -148.6692008 151.375 -366.1045359 + X1_Y128= -192.6865979 151.375 -322.0871388 + X128_Y1= -148.6692007 -84.49999996 -366.104536 + X128_Y128= -192.6865978 -84.5 -322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +ShieldClParis + X1_Y1= 150.3485793 153.75 -364.4251574 + X1_Y128= 150.3485793 91.5 -364.4251574 + X128_Y1= 317.1373914 153.75 -197.6363453 + X128_Y128= 317.1373914 91.5 -197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 148.6692007 -151.375 -366.104536 + X1_Y128= 192.6865979 -151.375 -322.0871388 + X128_Y1= 148.6692007 84.49999999 -366.104536 + X128_Y128= 192.6865978 84.5 -322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364.4251574 -153.75 -150.3485793 + X1_Y128= 364.4251574 -91.49999999 -150.3485793 + X128_Y1= 197.6363454 -153.7500001 -317.1373913 + X128_Y128= 197.6363453 -91.50000008 -317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 366.1045359 151.375 -148.6692008 + X1_Y128= 322.0871388 151.375 -192.6865979 + X128_Y1= 366.104536 -84.49999996 -148.6692007 + X128_Y128= 322.0871389 -84.5 -192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +ShieldClParis + X1_Y1= 364 153.75 -151.375 + X1_Y128= 364 91.5 -151.375 + X128_Y1= 364 153.75 84.5 + X128_Y128= 364 91.5 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364 -151.375 -153.75 + X1_Y128= 364 -151.375 -91.49999999 + X128_Y1= 364 84.49999999 -153.75 + X128_Y128= 364 84.5 -91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364 -153.75 151.375 + X1_Y128= 364 -91.49999999 151.375 + X128_Y1= 364 -153.7500001 -84.49999997 + X128_Y128= 364 -91.50000008 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364 151.375 153.75 + X1_Y128= 364 151.375 91.49999998 + X128_Y1= 364 -84.49999996 153.7500001 + X128_Y128= 364 -84.5 91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +ShieldClParis + X1_Y1= 364.4251574 153.75 150.3485793 + X1_Y128= 364.4251574 91.5 150.3485793 + X128_Y1= 197.6363453 153.75 317.1373914 + X128_Y128= 197.6363453 91.5 317.1373914 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 366.104536 -151.375 148.6692007 + X1_Y128= 322.0871388 -151.375 192.6865979 + X128_Y1= 366.104536 84.49999999 148.6692007 + X128_Y128= 322.0871389 84.5 192.6865978 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 150.3485793 -153.75 364.4251574 + X1_Y128= 150.3485793 -91.49999999 364.4251574 + X128_Y1= 317.1373913 -153.7500001 197.6363454 + X128_Y128= 317.1373914 -91.50000008 197.6363453 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 148.6692008 151.375 366.1045359 + X1_Y128= 192.6865979 151.375 322.0871388 + X128_Y1= 148.6692007 -84.49999996 366.104536 + X128_Y128= 192.6865978 -84.5 322.0871389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +ShieldClParis + X1_Y1= -366.104536 -148.6692007 151.375 + X1_Y128= -322.0871388 -192.6865979 151.375 + X128_Y1= -366.104536 -148.6692007 -84.5 + X128_Y128= -322.0871388 -192.6865979 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -150.3485793 -364.4251574 153.75 + X1_Y128= -150.3485793 -364.4251574 91.49999999 + X128_Y1= -317.1373914 -197.6363454 153.75 + X128_Y128= -317.1373914 -197.6363453 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -148.6692008 -366.104536 -151.375 + X1_Y128= -192.6865979 -322.0871388 -151.375 + X128_Y1= -148.6692007 -366.104536 84.49999997 + X128_Y128= -192.6865978 -322.0871389 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364.4251574 -150.3485793 -153.75 + X1_Y128= -364.4251574 -150.3485793 -91.49999998 + X128_Y1= -197.6363454 -317.1373913 -153.7500001 + X128_Y128= -197.6363453 -317.1373914 -91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +ShieldClParis + X1_Y1= 366.104536 -148.6692007 -151.375 + X1_Y128= 322.0871388 -192.6865979 -151.375 + X128_Y1= 366.104536 -148.6692007 84.5 + X128_Y128= 322.0871388 -192.6865979 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 150.3485793 -364.4251574 -153.75 + X1_Y128= 150.3485793 -364.4251574 -91.49999999 + X128_Y1= 317.1373914 -197.6363454 -153.75 + X128_Y128= 317.1373914 -197.6363453 -91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 148.6692008 -366.104536 151.375 + X1_Y128= 192.6865979 -322.0871388 151.375 + X128_Y1= 148.6692007 -366.104536 -84.49999997 + X128_Y128= 192.6865978 -322.0871389 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364.4251574 -150.3485793 153.75 + X1_Y128= 364.4251574 -150.3485793 91.49999998 + X128_Y1= 197.6363454 -317.1373913 153.7500001 + X128_Y128= 197.6363453 -317.1373914 91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +ShieldClParis + X1_Y1= -148.6692007 366.104536 151.375 + X1_Y128= -192.6865979 322.0871388 151.375 + X128_Y1= -148.6692007 366.104536 -84.5 + X128_Y128= -192.6865979 322.0871388 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364.4251574 150.3485793 153.75 + X1_Y128= -364.4251574 150.3485793 91.49999999 + X128_Y1= -197.6363454 317.1373914 153.75 + X128_Y128= -197.6363453 317.1373914 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -366.104536 148.6692008 -151.375 + X1_Y128= -322.0871388 192.6865979 -151.375 + X128_Y1= -366.104536 148.6692007 84.49999997 + X128_Y128= -322.0871389 192.6865978 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -150.3485793 364.4251574 -153.75 + X1_Y128= -150.3485793 364.4251574 -91.49999998 + X128_Y1= -317.1373913 197.6363454 -153.7500001 + X128_Y128= -317.1373914 197.6363453 -91.50000013 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +ShieldClParis + X1_Y1= 148.6692007 366.104536 -151.375 + X1_Y128= 192.6865979 322.0871388 -151.375 + X128_Y1= 148.6692007 366.104536 84.5 + X128_Y128= 192.6865979 322.0871388 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 364.4251574 150.3485793 -153.75 + X1_Y128= 364.4251574 150.3485793 -91.49999999 + X128_Y1= 197.6363454 317.1373914 -153.75 + X128_Y128= 197.6363453 317.1373914 -91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 366.104536 148.6692008 151.375 + X1_Y128= 322.0871388 192.6865979 151.375 + X128_Y1= 366.104536 148.6692007 -84.49999997 + X128_Y128= 322.0871389 192.6865978 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= 150.3485793 364.4251574 153.75 + X1_Y128= 150.3485793 364.4251574 91.49999998 + X128_Y1= 317.1373913 197.6363454 153.7500001 + X128_Y128= 317.1373914 197.6363453 91.50000013 + VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ShieldPhParis + THETA= 54.73 + PHI= 45.02 + R= 248 + BETA= 0 0 -30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ShieldPhParis + THETA= 54.73 + PHI= 134.98 + R= 248 + BETA= 0 0 210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +%ShieldPhParis +% THETA= 54.73 +% PHI= 225 +% R= 248 +% BETA= 0 0 -30 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ShieldPhParis + THETA= 54.73 + PHI= 315 + R= 248 + BETA= 0 0 210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +%ShieldPhParis +% THETA= 125.26 +% PHI= 45.02 +% R= 248 +% BETA= 0 0 30 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ShieldPhParis + THETA= 125.26 + PHI= 134.98 + R= 248 + BETA= 0 0 -210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ShieldPhParis + THETA= 125.26 + PHI= 225 + R= 248 + BETA= 0 0 30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ShieldPhParis + THETA= 125.26 + PHI= 315 + R= 248 + BETA= 0 0 -210 + VIS= all diff --git a/Inputs/DetectorConfiguration/ParisAll_208pipe2noshield.detector b/Inputs/DetectorConfiguration/ParisAll_208pipe2noshield.detector new file mode 100644 index 000000000..ea1aeb30b --- /dev/null +++ b/Inputs/DetectorConfiguration/ParisAll_208pipe2noshield.detector @@ -0,0 +1,211 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 + NBLAYERS= 50 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 -208 84.5 + X1_Y128= 84.5 -208 84.5 + X128_Y1= -84.5 -208 -84.5 + X128_Y128= 84.5 -208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -206.8287414 -87.3276796 84.5 + X1_Y128= -87.32769537 -206.8287256 84.5 + X128_Y1= -206.8287414 -87.3276796 -84.5 + X128_Y128= -87.32769537 -206.8287256 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -208 84.50001115 84.5 + X1_Y128= -208 -84.49998885 84.5 + X128_Y1= -208 84.50001115 -84.5 + X128_Y128= -208 -84.49998885 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.3276796 206.8287414 84.5 + X1_Y128= -206.8287256 87.32769537 84.5 + X128_Y1= -87.3276796 206.8287414 -84.5 + X128_Y128= -206.8287256 87.32769537 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 84.50000557 208 84.5 + X1_Y128= -84.49999443 208 84.5 + X128_Y1= 84.50000557 208 -84.5 + X128_Y128= -84.49999443 208 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 87.32768749 84.5 + X1_Y128= 87.32768749 206.8287335 84.5 + X128_Y1= 206.8287335 87.32768749 -84.5 + X128_Y128= 87.32768749 206.8287335 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 208 -84.50002229 84.5 + X1_Y128= 208 84.49997771 84.5 + X128_Y1= 208 -84.50002229 -84.5 + X128_Y128= 208 84.49997771 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32767172 -206.8287493 84.5 + X1_Y128= 206.8287177 -87.32770325 84.5 + X128_Y1= 87.32767172 -206.8287493 -84.5 + X128_Y128= 206.8287177 -87.32770325 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 84.5 84.5 -208 + X1_Y128= -84.5 84.5 -208 + X128_Y1= 84.5 -84.5 -208 + X128_Y128= -84.5 -84.5 -208 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 206.8287335 84.49998424 -87.32768749 + X1_Y128= 87.32768749 84.49998424 -206.8287335 + X128_Y1= 206.8287335 -84.50001576 -87.32768749 + X128_Y128= 87.32768749 -84.50001576 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= 87.32768749 84.49998424 206.8287335 + X1_Y128= 206.8287335 84.49998424 87.32768749 + X128_Y1= 87.32768749 -84.50001576 206.8287335 + X128_Y128= 206.8287335 -84.50001576 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.5 84.5 208 + X1_Y128= 84.5 84.5 208 + X128_Y1= -84.5 -84.5 208 + X128_Y128= 84.5 -84.5 208 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -206.8287335 84.50000788 87.32768749 + X1_Y128= -87.32768749 84.50000788 206.8287335 + X128_Y1= -206.8287335 -84.49999212 87.32768749 + X128_Y128= -87.32768749 -84.49999212 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -87.32768749 84.50000788 -206.8287335 + X1_Y128= -206.8287335 84.50000788 -87.32768749 + X128_Y1= -87.32768749 -84.49999212 -206.8287335 + X128_Y128= -206.8287335 -84.49999212 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 87.32768749 -206.8287335 + X1_Y128= 84.50000394 87.32768749 -206.8287335 + X128_Y1= -84.49999606 206.8287335 -87.32768749 + X128_Y128= 84.50000394 206.8287335 -87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.49999606 206.8287335 87.32768749 + X1_Y128= 84.50000394 206.8287335 87.32768749 + X128_Y1= -84.49999606 87.32768749 206.8287335 + X128_Y128= 84.50000394 87.32768749 206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -87.32768749 206.8287335 + X1_Y128= 84.49998818 -87.32768749 206.8287335 + X128_Y1= -84.50001182 -206.8287335 87.32768749 + X128_Y128= 84.49998818 -206.8287335 87.32768749 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisCluster + X1_Y1= -84.50001182 -206.8287335 -87.32768749 + X1_Y128= 84.49998818 -206.8287335 -87.32768749 + X128_Y1= -84.50001182 -87.32768749 -206.8287335 + X128_Y128= 84.49998818 -87.32768749 -206.8287335 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -128.6063166 143.3590149 -88.30123599 + X1_Y128= -151.8764696 96.81870993 -111.571389 + X128_Y1= -88.30122956 143.3590149 -128.606323 + X128_Y128= -111.5713826 96.81870993 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30122956 143.3590149 128.606323 + X1_Y128= -111.5713826 96.81870993 151.876476 + X128_Y1= -128.6063166 143.3590149 88.30123599 + X128_Y128= -151.8764696 96.81870993 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.606323 143.3590085 88.30123599 + X1_Y128= 151.876476 96.81870349 111.571389 + X128_Y1= 88.30123599 143.3590085 128.606323 + X128_Y128= 111.571389 96.81870349 151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= 88.30123599 143.3590085 -128.606323 +% X1_Y128= 111.571389 96.81870349 -151.876476 +% X128_Y1= 128.606323 143.3590085 -88.30123599 +% X128_Y128= 151.876476 96.81870349 -111.571389 +% VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -88.30124243 -143.3590021 -128.606323 + X1_Y128= -111.5713954 -96.81869706 -151.876476 + X128_Y1= -128.6063294 -143.3590021 -88.30123599 + X128_Y128= -151.8764824 -96.81869706 -111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 128.6063101 -143.3590214 -88.30123599 + X1_Y128= 151.8764631 -96.81871636 -111.571389 + X128_Y1= 88.30122312 -143.3590214 -128.606323 + X128_Y128= 111.5713761 -96.81871636 -151.876476 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 88.30122312 -143.3590214 128.606323 + X1_Y128= 111.5713761 -96.81871636 151.876476 + X128_Y1= 128.6063101 -143.3590214 88.30123599 + X128_Y128= 151.8764631 -96.81871636 111.571389 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= -128.6063294 -143.3590021 88.30123599 +% X1_Y128= -151.8764824 -96.81869706 111.571389 +% X128_Y1= -88.30124243 -143.3590021 128.606323 +% X128_Y128= -111.5713954 -96.81869706 151.876476 +% VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Inputs/DetectorConfiguration/ParisAll_208tilt.detector b/Inputs/DetectorConfiguration/ParisAll_208tilt.detector new file mode 100644 index 000000000..6ba61696c --- /dev/null +++ b/Inputs/DetectorConfiguration/ParisAll_208tilt.detector @@ -0,0 +1,220 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2 + NBLAYERS= 50 + X= 0 + Y= 0 + Z= 0 + + +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -50.418664 -87.327687 -217.661051 + X1_Y128= -188.406586 -87.327687 -120.088856 + X128_Y1= 18.575297 -206.828733 -120.088856 + X128_Y128= -119.412625 -206.828733 -22.51666 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisClShield + X1_Y1= 151.375 153.75 364 + X1_Y128= 151.375 91.5 364 + X128_Y1= -84.5 153.75 364 + X128_Y128= -84.5 91.5 364 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -190.237216 -86.499477 -117.780059 + X1_Y128= -239.023313 -1.999477 20.207863 + X128_Y1= -121.243255 -206.000523 -20.207863 + X128_Y128= -170.029352 -121.500523 117.780059 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ParisCluster + X1_Y1= -238.82525 0 22.51666 + X1_Y128= -169.831289 119.501046 120.088856 + X128_Y1= -169.831289 -119.501046 120.088856 + X128_Y128= -100.837328 0 217.661051 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ParisCluster + X1_Y1= -167.720555 121.500523 121.045191 + X1_Y128= -21.362262 206.000523 121.045191 + X128_Y1= -98.726594 1.999477 218.617387 + X128_Y128= 47.631699 86.499477 218.617387 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ParisCluster + X1_Y1= -18.575297 206.828733 120.088856 + X1_Y128= 119.412625 206.828733 22.51666 + X128_Y1= 50.418664 87.327687 217.661051 + X128_Y128= 188.406586 87.327687 120.088856 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ParisCluster + X1_Y1= 121.243255 206.000523 20.207863 + X1_Y128= 170.029352 121.500523 -117.780059 + X128_Y1= 190.237216 86.499477 117.780059 + X128_Y128= 239.023313 1.999477 -20.207863 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ParisCluster + X1_Y1= 169.831289 119.501046 -120.088856 + X1_Y128= 100.837328 0 -217.661051 + X128_Y1= 238.82525 0 -22.51666 + X128_Y128= 169.831289 -119.501046 -120.088856 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ParisCluster + X1_Y1= 98.726594 -1.999477 -218.617387 + X1_Y128= -47.631699 -86.499477 -218.617387 + X128_Y1= 167.720555 -121.500523 -121.045191 + X128_Y128= 21.362262 -206.000523 -121.045191 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +ParisCluster + X1_Y1= 50.418664 -87.327687 217.661051 + X1_Y128= 188.406586 -87.327687 120.088856 + X128_Y1= -18.575297 -206.828733 120.088856 + X128_Y128= 119.412625 -206.828733 22.51666 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +ParisCluster + X1_Y1= 190.237216 -86.499477 117.780059 + X1_Y128= 239.023313 -1.999477 -20.207863 + X128_Y1= 121.243255 -206.000523 20.207863 + X128_Y128= 170.029352 -121.500523 -117.780059 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +ParisCluster + X1_Y1= 167.720555 121.500523 -121.045191 + X1_Y128= 21.362262 206.000523 -121.045191 + X128_Y1= 98.726594 1.999477 -218.617387 + X128_Y128= -47.631699 86.499477 -218.617387 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +ParisCluster + X1_Y1= 18.575297 206.828733 -120.088856 + X1_Y128= -119.412625 206.828733 -22.51666 + X128_Y1= -50.418664 87.327687 -217.661051 + X128_Y128= -188.406586 87.327687 -120.088856 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +ParisCluster + X1_Y1= -121.243255 206.000523 -20.207863 + X1_Y128= -170.029352 121.500523 117.780059 + X128_Y1= -190.237216 86.499477 -117.780059 + X128_Y128= -239.023313 1.999477 20.207863 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +ParisCluster + X1_Y1= -98.726594 -1.999477 218.617387 + X1_Y128= 47.631699 -86.499477 218.617387 + X128_Y1= -167.720555 -121.500523 121.045191 + X128_Y128= -21.362262 -206.000523 121.045191 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +ParisCluster + X1_Y1= 189.082817 -84.5 121.045191 + X1_Y128= 51.094895 -84.5 218.617387 + X128_Y1= 189.082817 84.5 121.045191 + X128_Y128= 51.094895 84.5 218.617387 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +ParisCluster + X1_Y1= 117.780059 208 20.207863 + X1_Y128= -20.207863 208 117.780059 + X128_Y1= 20.207863 208 -117.780059 + X128_Y128= -117.780059 208 -20.207863 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +ParisCluster + X1_Y1= -51.094895 84.5 -218.617387 + X1_Y128= -189.082817 84.5 -121.045191 + X128_Y1= -51.094895 -84.5 -218.617387 + X128_Y128= -189.082817 -84.5 -121.045191 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +ParisCluster + X1_Y1= 20.207863 -208 -117.780059 + X1_Y128= -117.780059 -208 -20.207863 + X128_Y1= 117.780059 -208 20.207863 + X128_Y128= -20.207863 -208 117.780059 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisPhoswich + X1_Y1= -130.029382 -147.354047 79.168457 + X1_Y128= -82.529382 -163.80853 106.038515 + X128_Y1= -113.574899 -175.854047 32.628152 + X128_Y128= -66.074899 -192.30853 59.49821 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisPhoswich + X1_Y1= 68.620416 -175.854047 -96.203391 + X1_Y128= 78.120416 -192.30853 -42.463276 + X128_Y1= 117.983864 -147.354047 -96.203391 + X128_Y128= 127.483864 -163.80853 -42.463276 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ParisPhoswich + X1_Y1= 209.081522 10.431724 32.628152 + X1_Y128= 199.581522 -38.931724 59.49821 + X128_Y1= 192.627039 38.931724 79.168457 + X128_Y128= 183.127039 -10.431724 106.038515 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +%ParisPhoswich +% X1_Y1= 10.431724 38.931724 208 +% X1_Y128= 38.931724 -10.431724 208 +% X128_Y1= -38.931724 10.431724 208 +% X128_Y128= -10.431724 -38.931724 208 +% VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +%ParisPhoswich +% X1_Y1= -38.931724 10.431724 -208.000012 +% X1_Y128= -10.431724 -38.931724 -208.000012 +% X128_Y1= 10.431724 38.931724 -208.000012 +% X128_Y128= 38.931724 -10.431724 -208.000012 +% VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ParisPhoswich + X1_Y1= 82.529387 163.80854 -106.038519 + X1_Y128= 130.029387 147.354057 -79.168461 + X128_Y1= 66.074904 192.30854 -59.498213 + X128_Y128= 113.574904 175.854057 -32.628156 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ParisPhoswich + X1_Y1= -78.120422 192.30854 42.46328 + X1_Y128= -68.620422 175.854057 96.203395 + X128_Y1= -127.48387 163.80854 42.46328 + X128_Y128= -117.98387 147.354057 96.203395 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ParisPhoswich + X1_Y1= -199.581533 38.931724 -59.498213 + X1_Y128= -209.081533 -10.431724 -32.628156 + X128_Y1= -183.12705 10.431724 -106.038519 + X128_Y128= -192.62705 -38.931724 -79.168461 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Inputs/DetectorConfiguration/ParisAll_235.detector b/Inputs/DetectorConfiguration/ParisAll_235.detector new file mode 100644 index 000000000..c4c2e3e5d --- /dev/null +++ b/Inputs/DetectorConfiguration/ParisAll_235.detector @@ -0,0 +1,340 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2 + NBLAYERS= 50 + X= 0 + Y= 0 + Z= 0 + + +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralChamber +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Chamber + Rmin= 200 + Rmax= 201 + PhiMin= 0. + PhiMax= 6.14318 + ThetaMin= 0. + ThetaMax= 3.14159 + MATERIAL= Cu + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 -235 84.5 + X1_Y128= 84.5 -235 84.5 + X128_Y1= -84.5 -235 -84.5 + X128_Y128= 84.5 -235 -84.5 + VIS= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -225.920617 -106.419571 84.5 + X1_Y128= -106.419571 -225.920617 84.5 + X128_Y1= -225.920617 -106.419571 -84.5 + X128_Y128= -106.419571 -225.920617 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ParisCluster + X1_Y1= -235 84.5 84.5 + X1_Y128= -235 -84.5 84.5 + X128_Y1= -235 84.5 -84.5 + X128_Y128= -235 -84.5 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ParisCluster + X1_Y1= -106.419571 225.920617 84.5 + X1_Y128= -225.920617 106.419571 84.5 + X128_Y1= -106.419571 225.920617 -84.5 + X128_Y128= -225.920617 106.419571 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ParisCluster + X1_Y1= 84.5 235 84.5 + X1_Y128= -84.5 235 84.5 + X128_Y1= 84.5 235 -84.5 + X128_Y128= -84.5 235 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ParisCluster + X1_Y1= 225.920617 106.419571 84.5 + X1_Y128= 106.419571 225.920617 84.5 + X128_Y1= 225.920617 106.419571 -84.5 + X128_Y128= 106.419571 225.920617 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ParisCluster + X1_Y1= 235 -84.5 84.5 + X1_Y128= 235 84.5 84.5 + X128_Y1= 235 -84.5 -84.5 + X128_Y128= 235 84.5 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ParisCluster + X1_Y1= 106.419571 -225.920617 84.5 + X1_Y128= 225.920617 -106.419571 84.5 + X128_Y1= 106.419571 -225.920617 -84.5 + X128_Y128= 225.920617 -106.419571 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +ParisCluster + X1_Y1= 84.5 84.5 -235 + X1_Y128= -84.5 84.5 -235 + X128_Y1= 84.5 -84.5 -235 + X128_Y128= -84.5 -84.5 -235 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +ParisCluster + X1_Y1= 225.920617 84.5 -106.419571 + X1_Y128= 106.419571 84.5 -225.920617 + X128_Y1= 225.920617 -84.5 -106.419571 + X128_Y128= 106.419571 -84.5 -225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +ParisCluster + X1_Y1= 106.419571 84.5 225.920617 + X1_Y128= 225.920617 84.5 106.419571 + X128_Y1= 106.419571 -84.5 225.920617 + X128_Y128= 225.920617 -84.5 106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +ParisCluster + X1_Y1= -84.5 84.5 235 + X1_Y128= 84.5 84.5 235 + X128_Y1= -84.5 -84.5 235 + X128_Y128= 84.5 -84.5 235 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +ParisCluster + X1_Y1= -225.920617 84.5 106.419571 + X1_Y128= -106.419571 84.5 225.920617 + X128_Y1= -225.920617 -84.5 106.419571 + X128_Y128= -106.419571 -84.5 225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +ParisCluster + X1_Y1= -106.419571 84.5 -225.920617 + X1_Y128= -225.920617 84.5 -106.419571 + X128_Y1= -106.419571 -84.5 -225.920617 + X128_Y128= -225.920617 -84.5 -106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +ParisCluster + X1_Y1= -84.5 106.419571 -225.920617 + X1_Y128= 84.5 106.419571 -225.920617 + X128_Y1= -84.5 225.920617 -106.419571 + X128_Y128= 84.5 225.920617 -106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +ParisCluster + X1_Y1= -84.5 225.920617 106.419571 + X1_Y128= 84.5 225.920617 106.419571 + X128_Y1= -84.5 106.419571 225.920617 + X128_Y128= 84.5 106.419571 225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +ParisCluster + X1_Y1= -84.5 -106.419571 225.920617 + X1_Y128= 84.5 -106.419571 225.920617 + X128_Y1= -84.5 -225.920617 106.419571 + X128_Y128= 84.5 -225.920617 106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +ParisCluster + X1_Y1= -84.5 -225.920617 -106.419571 + X1_Y128= 84.5 -225.920617 -106.419571 + X128_Y1= -84.5 -106.419571 -225.920617 + X128_Y128= 84.5 -106.419571 -225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisPhoswich + X1_Y1= -175.9824 135.677313 -95.372227 + X1_Y128= -199.252552 89.137008 -118.642379 + X128_Y1= -135.677313 135.677313 -135.677313 + X128_Y128= -158.947466 89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisPhoswich + X1_Y1= -135.677313 135.677313 -135.677313 + X1_Y128= -158.947466 89.137008 -158.947466 + X128_Y1= -95.372227 135.677313 -175.9824 + X128_Y128= -118.642379 89.137008 -199.252552 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ParisPhoswich + X1_Y1= -132.559704 182.217618 -92.254617 + X1_Y128= -155.829857 135.677313 -115.52477 + X128_Y1= -92.254617 182.217618 -132.559704 + X128_Y128= -115.52477 135.677313 -155.829857 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ParisPhoswich + X1_Y1= -95.372227 135.677313 175.9824 + X1_Y128= -118.642379 89.137008 199.252552 + X128_Y1= -135.677313 135.677313 135.677313 + X128_Y128= -158.947466 89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ParisPhoswich + X1_Y1= -135.677313 135.677313 135.677313 + X1_Y128= -158.947466 89.137008 158.947466 + X128_Y1= -175.9824 135.677313 95.372227 + X128_Y128= -199.252552 89.137008 118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ParisPhoswich + X1_Y1= -92.254617 182.217618 132.559704 + X1_Y128= -115.52477 135.677313 155.829857 + X128_Y1= -132.559704 182.217618 92.254617 + X128_Y128= -155.829857 135.677313 115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +%ParisPhoswich +% X1_Y1= 175.9824 135.677313 95.372227 +% X1_Y128= 199.252552 89.137008 118.642379 +% X128_Y1= 135.677313 135.677313 135.677313 +% X128_Y128= 158.947466 89.137008 158.947466 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +%ParisPhoswich +% X1_Y1= 135.677313 135.677313 135.677313 +% X1_Y128= 158.947466 89.137008 158.947466 +% X128_Y1= 95.372227 135.677313 175.9824 +% X128_Y128= 118.642379 89.137008 199.252552 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +%ParisPhoswich +% X1_Y1= 132.559704 182.217618 92.254617 +% X1_Y128= 155.829857 135.677313 115.52477 +% X128_Y1= 92.254617 182.217618 132.559704 +% X128_Y128= 115.52477 135.677313 155.829857 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +ParisPhoswich + X1_Y1= 95.372227 135.677313 -175.9824 + X1_Y128= 118.642379 89.137008 -199.252552 + X128_Y1= 135.677313 135.677313 -135.677313 + X128_Y128= 158.947466 89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +ParisPhoswich + X1_Y1= 135.677313 135.677313 -135.677313 + X1_Y128= 158.947466 89.137008 -158.947466 + X128_Y1= 175.9824 135.677313 -95.372227 + X128_Y128= 199.252552 89.137008 -118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +ParisPhoswich + X1_Y1= 92.254617 182.217618 -132.559704 + X1_Y128= 115.52477 135.677313 -155.829857 + X128_Y1= 132.559704 182.217618 -92.254617 + X128_Y128= 155.829857 135.677313 -115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +%ParisPhoswich +% X1_Y1= -95.372227 -135.677313 -175.9824 +% X1_Y128= -118.642379 -89.137008 -199.252552 +% X128_Y1= -135.677313 -135.677313 -135.677313 +% X128_Y128= -158.947466 -89.137008 -158.947466 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +%ParisPhoswich +% X1_Y1= -135.677313 -135.677313 -135.677313 +% X1_Y128= -158.947466 -89.137008 -158.947466 +% X128_Y1= -175.9824 -135.677313 -95.372227 +% X128_Y128= -199.252552 -89.137008 -118.642379 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +%ParisPhoswich +% X1_Y1= -92.254617 -182.217618 -132.559704 +% X1_Y128= -115.52477 -135.677313 -155.829857 +% X128_Y1= -132.559704 -182.217618 -92.254617 +% X128_Y128= -155.829857 -135.677313 -115.52477 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +ParisPhoswich + X1_Y1= 175.9824 -135.677313 -95.372227 + X1_Y128= 199.252552 -89.137008 -118.642379 + X128_Y1= 135.677313 -135.677313 -135.677313 + X128_Y128= 158.947466 -89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +ParisPhoswich + X1_Y1= 135.677313 -135.677313 -135.677313 + X1_Y128= 158.947466 -89.137008 -158.947466 + X128_Y1= 95.372227 -135.677313 -175.9824 + X128_Y128= 118.642379 -89.137008 -199.252552 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +ParisPhoswich + X1_Y1= 132.559704 -182.217618 -92.254617 + X1_Y128= 155.829857 -135.677313 -115.52477 + X128_Y1= 92.254617 -182.217618 -132.559704 + X128_Y128= 115.52477 -135.677313 -155.829857 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18 +ParisPhoswich + X1_Y1= 95.372227 -135.677313 175.9824 + X1_Y128= 118.642379 -89.137008 199.252552 + X128_Y1= 135.677313 -135.677313 135.677313 + X128_Y128= 158.947466 -89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19 +ParisPhoswich + X1_Y1= 135.677313 -135.677313 135.677313 + X1_Y128= 158.947466 -89.137008 158.947466 + X128_Y1= 175.9824 -135.677313 95.372227 + X128_Y128= 199.252552 -89.137008 118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20 +ParisPhoswich + X1_Y1= 92.254617 -182.217618 132.559704 + X1_Y128= 115.52477 -135.677313 155.829857 + X128_Y1= 132.559704 -182.217618 92.254617 + X128_Y128= 155.829857 -135.677313 115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21 +ParisPhoswich + X1_Y1= -175.9824 -135.677313 95.372227 + X1_Y128= -199.252552 -89.137008 118.642379 + X128_Y1= -135.677313 -135.677313 135.677313 + X128_Y128= -158.947466 -89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22 +ParisPhoswich + X1_Y1= -135.677313 -135.677313 135.677313 + X1_Y128= -158.947466 -89.137008 158.947466 + X128_Y1= -95.372227 -135.677313 175.9824 + X128_Y128= -118.642379 -89.137008 199.252552 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23 +ParisPhoswich + X1_Y1= -132.559704 -182.217618 92.254617 + X1_Y128= -155.829857 -135.677313 115.52477 + X128_Y1= -92.254617 -182.217618 132.559704 + X128_Y128= -115.52477 -135.677313 155.829857 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Inputs/DetectorConfiguration/ParisAll_278.detector b/Inputs/DetectorConfiguration/ParisAll_278.detector new file mode 100644 index 000000000..49a8d1f13 --- /dev/null +++ b/Inputs/DetectorConfiguration/ParisAll_278.detector @@ -0,0 +1,213 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2 + NBLAYERS= 50 + X= 0 + Y= 0 + Z= 0 + + +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -87.401156 -247.587661 -124.767336 + X1_Y128= -224.125028 -149.474941 -109.227808 + X128_Y1= -87.401156 -274.025085 42.151993 + X128_Y128= -224.125028 -175.912365 57.691522 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -225.918041 -147.037454 -108.841748 + X1_Y128= -278.141913 11.712262 -83.698263 + X128_Y1= -225.918041 -173.474878 58.077582 + X128_Y128= -278.141913 -14.725162 83.221067 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ParisCluster + X1_Y1= -278.141913 14.725162 -83.221067 + X1_Y128= -225.918041 173.474878 -58.077582 + X128_Y1= -278.141913 -11.712262 83.698263 + X128_Y128= -225.918041 147.037454 108.841748 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ParisCluster + X1_Y1= -224.125028 175.912365 -57.691522 + X1_Y128= -87.401156 274.025085 -42.151993 + X128_Y1= -224.125028 149.474941 109.227808 + X128_Y128= -87.401156 247.587661 124.767336 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ParisCluster + X1_Y1= 87.401156 274.025085 -42.151993 + X1_Y128= 224.125028 175.912365 -57.691522 + X128_Y1= 87.401156 247.587661 124.767336 + X128_Y128= 224.125028 149.474941 109.227808 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ParisCluster + X1_Y1= 225.918041 173.474878 -58.077582 + X1_Y128= 278.141913 14.725162 -83.221067 + X128_Y1= 225.918041 147.037454 108.841748 + X128_Y128= 278.141913 -11.712262 83.698263 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ParisCluster + X1_Y1= 278.141913 11.712262 -83.698263 + X1_Y128= 225.918041 -147.037454 -108.841748 + X128_Y1= 278.141913 -14.725162 83.221067 + X128_Y128= 225.918041 -173.474878 58.077582 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ParisCluster + X1_Y1= 224.125028 -149.474941 -109.227808 + X1_Y128= 87.401156 -247.587661 -124.767336 + X128_Y1= 224.125028 -175.912365 57.691522 + X128_Y128= 87.401156 -274.025085 42.151993 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8ok +ParisCluster + X1_Y1= 84.5 87.401156 264.057357 + X1_Y128= -84.5 87.401156 264.057357 + X128_Y1= 84.5 224.125028 164.72165 + X128_Y128= -84.5 224.125028 164.72165 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9ok +ParisCluster + X1_Y1= 84.5 225.918041 162.253779 + X1_Y128= -84.5 225.918041 162.253779 + X128_Y1= 84.5 278.141913 1.525228 + X128_Y128= -84.5 278.141913 1.525228 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10ok +ParisCluster + X1_Y1= 84.5 278.141913 -1.525228 + X1_Y128= -84.5 278.141913 -1.525228 + X128_Y1= 84.5 225.918041 -162.253779 + X128_Y128= -84.5 225.918041 -162.253779 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11ok +ParisCluster + X1_Y1= 84.5 224.125028 -164.72165 + X1_Y128= -84.5 224.125028 -164.72165 + X128_Y1= 84.5 87.401156 -264.057357 + X128_Y128= -84.5 87.401156 -264.057357 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12ok +ParisCluster + X1_Y1= 84.5 84.5 -265 + X1_Y128= -84.5 84.5 -265 + X128_Y1= 84.5 -84.5 -265 + X128_Y128= -84.5 -84.5 -265 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13ok +ParisCluster + X1_Y1= 84.5 -87.401156 -264.057357 + X1_Y128= -84.5 -87.401156 -264.057357 + X128_Y1= 84.5 -224.125028 -164.72165 + X128_Y128= -84.5 -224.125028 -164.72165 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14ok +ParisCluster + X1_Y1= 84.5 -225.918041 -162.253779 + X1_Y128= -84.5 -225.918041 -162.253779 + X128_Y1= 84.5 -278.141913 -1.525228 + X128_Y128= -84.5 -278.141913 -1.525228 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15ok +ParisCluster + X1_Y1= 84.5 -278.141913 1.525228 + X1_Y128= -84.5 -278.141913 1.525228 + X128_Y1= 84.5 -225.918041 162.253779 + X128_Y128= -84.5 -225.918041 162.253779 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16ok +ParisCluster + X1_Y1= 84.5 -224.125028 164.72165 + X1_Y128= -84.5 -224.125028 164.72165 + X128_Y1= 84.5 -87.401156 264.057357 + X128_Y128= -84.5 -87.401156 264.057357 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17OK +ParisCluster + X1_Y1= 84.5 -84.5 265 + X1_Y128= -84.5 -84.5 265 + X128_Y1= 84.5 84.5 265 + X128_Y128= -84.5 84.5 265 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18ok +ParisCluster + X1_Y1= -256.780109 22.871011 -134.651931 + X1_Y128= -137.279063 41.565093 -252.681721 + X128_Y1= -219.852255 175.843938 -73.035235 + X128_Y128= -100.351209 194.53802 -191.065025 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19ok +ParisCluster + X1_Y1= -99.997656 -125.919004 -242.178392 + X1_Y128= -136.92551 38.607501 -253.508118 + X128_Y1= -219.498702 -144.613086 -124.148602 + X128_Y128= -256.426556 19.913419 -135.478328 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20ok +ParisCluster + X1_Y1= -136.571956 -38.662809 253.857318 + X1_Y128= -256.073002 -19.968727 135.827528 + X128_Y1= -99.644102 125.863696 242.527592 + X128_Y128= -219.145148 144.557778 124.497802 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21ok +ParisCluster + X1_Y1= -219.498702 -175.899246 73.384435 + X1_Y128= -256.426556 -22.926319 135.001131 + X128_Y1= -99.997656 -194.593328 191.414225 + X128_Y128= -136.92551 -41.620401 253.030921 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22ok +ParisCluster + X1_Y1= 256.780109 -19.858111 135.129127 + X1_Y128= 137.279063 -38.552193 253.158917 + X128_Y1= 219.852255 144.668394 123.799401 + X128_Y128= 100.351209 125.974312 241.829191 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23ok +ParisCluster + X1_Y1= 99.997656 -194.593328 191.414225 + X1_Y128= 136.92551 -41.620401 253.030921 + X128_Y1= 219.498702 -175.899246 73.384435 + X128_Y128= 256.426556 -22.926319 135.001131 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24ok +ParisCluster + X1_Y1= 136.571956 41.675709 -253.380122 + X1_Y128= 256.073002 22.981627 -135.350332 + X128_Y1= 99.644102 194.648636 -191.763426 + X128_Y128= 219.145148 175.954554 -73.733636 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25ok +ParisCluster + X1_Y1= 219.498702 -144.613086 -124.148602 + X1_Y128= 256.426556 19.913419 -135.478328 + X128_Y1= 99.997656 -125.919004 -242.178392 + X128_Y128= 136.92551 38.607501 -253.508118 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Inputs/DetectorConfiguration/ParisPhShield.detector b/Inputs/DetectorConfiguration/ParisPhShield.detector new file mode 100644 index 000000000..71a04c201 --- /dev/null +++ b/Inputs/DetectorConfiguration/ParisPhShield.detector @@ -0,0 +1,112 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2l + NBLAYERS= 50 + X= 0 + Y= 0 + Z= 0 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Shield +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +ShieldClParis + X1_Y1= -364 153.75 151.375 + X1_Y128= -364 91.5 151.375 + X128_Y1= -364 153.75 -84.5 + X128_Y128= -364 91.5 -84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 -151.375 153.75 + X1_Y128= -364 -151.375 91.49999999 + X128_Y1= -364 84.49999999 153.75 + X128_Y128= -364 84.5 91.50000004 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 -153.75 -151.375 + X1_Y128= -364 -91.49999999 -151.375 + X128_Y1= -364 -153.7500001 84.49999997 + X128_Y128= -364 -91.50000008 84.5 + VIS=all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ShieldClParis + X1_Y1= -364 151.375 -153.75 + X1_Y128= -364 151.375 -91.49999998 + X128_Y1= -364 -84.49999996 -153.7500001 + X128_Y128= -364 -84.5 -91.50000013 + VIS=all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ShieldPhParis + THETA= 54.73 + PHI= 45.02 + R= 248 + BETA= 0 0 -30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ShieldPhParis + THETA= 54.73 + PHI= 134.98 + R= 248 + BETA= 0 0 210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ShieldPhParis + THETA= 54.73 + PHI= 225 + R= 248 + BETA= 0 0 -30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ShieldPhParis + THETA= 54.73 + PHI= 315 + R= 248 + BETA= 0 0 210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ShieldPhParis + THETA= 125.26 + PHI= 45.02 + R= 248 + BETA= 0 0 30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ShieldPhParis + THETA= 125.26 + PHI= 134.98 + R= 248 + BETA= 0 0 -210 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ShieldPhParis + THETA= 125.26 + PHI= 225 + R= 248 + BETA= 0 0 30 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ShieldPhParis + THETA= 125.26 + PHI= 315 + R= 248 + BETA= 0 0 -210 + VIS= all diff --git a/Inputs/DetectorConfiguration/gaspardParis.detector b/Inputs/DetectorConfiguration/gaspardParis.detector new file mode 100644 index 000000000..fe52e1f96 --- /dev/null +++ b/Inputs/DetectorConfiguration/gaspardParis.detector @@ -0,0 +1,557 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2l + NBLAYERS= 50 + X= 0 + Y= 0 + Z= 0 +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -63.142 -111.96 235.7938 + X1_Y128= 5.6268 -230.775 137.2298 + X128_Y1= -201.3545 -111.28 138.5418 + X128_Y128= -132.58 -230.095 39.9778 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ParisCluster + X1_Y1= -218.111 -103.574 117.561 + X1_Y128= -149.342 -222.389 18.997 + X128_Y1= -267.215 -18.112 -19.72 + X128_Y128= -198.446 -136.927 -118.284 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +ParisCluster + X1_Y1= -265.456 0.2844 -40.6687 + X1_Y128= -196.6865 -118.53 -139.233 + X128_Y1= -196.6865 120.4659 -137.5614 + X128_Y128= -127.9173 1.6512 -236.1254 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +ParisCluster + X1_Y1= -177.4417 138.7763 -146.2065 + X1_Y128= -108.6725 19.9616 -244.7704 + X128_Y1= -31.0838 233.2766 -145.9525 + X128_Y128= 37.6854 104.4618 -244.5164 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +ParisCluster + X1_Y1= -5.6268 230.7749 -137.2298 + X1_Y128= 63.1424 111.9602 -235.7938 + X128_Y1= 132.5853 230.0949 -39.9678 + X128_Y128= 201.3545 111.2801 -138.5418 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +ParisCluster + X1_Y1= 149.3422 222.3888 -18.9970 + X1_Y128= 218.1114 103.5741 -117.5610 + X128_Y1= 198.4457 136.9268 118.2839 + X128_Y128= 267.2149 18.1120 19.7200 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +ParisCluster + X1_Y1= 196.6865 118.5303 139.2326 + X1_Y128= 265.4567 -0.2839 40.6887 + X128_Y1= 127.9173 -1.6512 236.1254 + X128_Y128= 196.6865 -120.463 137.5614 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +ParisCluster + X1_Y1= 108.6725 -19.9616 244.7705 + X1_Y128= 177.4417 -138.776 146.2065 + X128_Y1= -37.6854 -104.462 244.6154 + X128_Y128= 31.0838 -223.277 145.9525 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +ParisCluster + X1_Y1= 63.1424 -108.652 -237.3365 + X1_Y128= -5.6268 -228.833 -140.4337 + X128_Y1= 201.3545 -109.332 -140.0845 + X128_Y128= 132.5853 -229.513 -43.1918 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +ParisCluster + X1_Y1= 218.1114 -101.92 -118.7980 + X1_Y128= 149.3422 -222.101 -22.10526 + X128_Y1= 267.2149 -18.386 19.4647 + X128_Y128= 198.4457 -138.568 116.3575 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +ParisCluster + X1_Y1= 177.4417 136.718 148.1329 + X1_Y128= 108.6725 16.5365 245.0257 + X128_Y1= 31.08380 221.2136 149.0607 + X128_Y128= -37.6854 101.0321 245.9534 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +ParisCluster + X1_Y1= 5.6268 228.8332 140.4337 + X1_Y128= -63.1424 108.6517 237.3365 + X128_Y1= -132.5853 229.5133 43.1918 + X128_Y128= -201.3545 109.3318 140.0845 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +ParisCluster + X1_Y1= -149.3422 222.1014 22.1053 + X1_Y128= -218.1114 101.9199 118.9980 + X128_Y1= -198.4457 138.5676 -116.3575 + X128_Y128= -267.21494 18.38604 -19.4647 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +ParisCluster + X1_Y1= -108.6725 -16.5365 -245.025 + X1_Y128= -177.44171 -136.718 -148.1329 + X128_Y1= 37.6854 -101.032 -245.9534 + X128_Y128= -31.0838 -221.214 -149.0607 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +ParisCluster + X1_Y1= 207.506468 -83.4626 -148.646587 + X1_Y128= 207.506468 85.53326 -147.464835 + X128_Y1= 69.2943359 -82.7826 -245.898545 + X128_Y128= 69.2943359 86.21332 -244.716793 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +ParisCluster + X1_Y1= 117.733235 240.6373 -18.7966735 + X1_Y128= 20.4788977 239.6709 119.4120787 + X128_Y1= -20.478898 241.3174 -116.048635 + X128_Y128= -117.73323 240.3509 22.16012052 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +ParisCluster + X1_Y1= -69.294336 82.78255 245.8985453 + X1_Y128= -69.294336 -86.2133 244.7167929 + X128_Y1= -207.50647 83.46261 148.6465871 + X128_Y128= -207.50647 -85.5333 147.4648347 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18 +ParisCluster + X1_Y1= 20.4788977 -241.317 116.0486339 + X1_Y128= 117.733235 -240.351 -22.1601217 + X128_Y1= -117.73323 -240.637 18.79667235 + X128_Y128= -20.478898 -239.671 -119.41208 + VIS= all + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GaspardTracker +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 Central Barrel +GPDDummyShape + THETA= 90 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDDummyShape + THETA= 90 + PHI= 120 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDDummyShape + THETA= 90 + PHI= 150 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +GPDDummyShape + THETA= 90 + PHI= 180 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +GPDDummyShape + THETA= 90 + PHI= 210 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +GPDDummyShape + THETA= 90 + PHI= 240 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +GPDDummyShape + THETA= 90 + PHI= 270 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +GPDDummyShape + THETA= 90 + PHI= 300 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +GPDDummyShape + THETA= 90 + PHI= 330 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +GPDDummyShape + THETA= 90 + PHI= 360 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +GPDDummyShape + THETA= 90 + PHI= 30 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +GPDDummyShape + THETA= 90 + PHI= 60 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 First Cone (forward) +GPDDummyShape + THETA= 60 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +GPDDummyShape + THETA= 60 + PHI= 130 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +GPDDummyShape + THETA= 60 + PHI= 170 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +GPDDummyShape + THETA= 60 + PHI= 210 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +GPDDummyShape + THETA= 60 + PHI= 250 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +GPDDummyShape + THETA= 60 + PHI= 290 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18 +GPDDummyShape + THETA= 60 + PHI= 330 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19 +GPDDummyShape + THETA= 60 + PHI= 10 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20 +GPDDummyShape + THETA= 60 + PHI= 50 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21 Second Cone (forward) +GPDDummyShape + THETA= 30 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22 +GPDDummyShape + THETA= 30 + PHI= 180 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23 +GPDDummyShape + THETA= 30 + PHI= 270 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24 +GPDDummyShape + THETA= 30 + PHI= 360 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25 First Cone (backward) +GPDDummyShape + THETA= 120 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26 +GPDDummyShape + THETA= 120 + PHI= 130 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27 +GPDDummyShape + THETA= 120 + PHI= 170 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28 +GPDDummyShape + THETA= 120 + PHI= 210 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29 +GPDDummyShape + THETA= 120 + PHI= 250 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30 +GPDDummyShape + THETA= 120 + PHI= 290 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31 +GPDDummyShape + THETA= 120 + PHI= 330 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32 +GPDDummyShape + THETA= 120 + PHI= 10 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33 +GPDDummyShape + THETA= 120 + PHI= 50 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34 Second Cone (backward) +GPDDummyShape + THETA= 150 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%35 +GPDDummyShape + THETA= 150 + PHI= 180 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36 +GPDDummyShape + THETA= 150 + PHI= 270 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%37 +GPDDummyShape + THETA= 150 + PHI= 360 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38 End Cap (forward) +GPDDummyShape + THETA= 0 + PHI= 0 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39 End Cap (backward) +GPDDummyShape + THETA= 180 + PHI= 0 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all diff --git a/Inputs/DetectorConfiguration/gaspardParisAll.detector b/Inputs/DetectorConfiguration/gaspardParisAll.detector new file mode 100644 index 000000000..36483d56f --- /dev/null +++ b/Inputs/DetectorConfiguration/gaspardParisAll.detector @@ -0,0 +1,741 @@ +%Fichier de configuration manip E225 +%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1 +%Thickness in micrometer +%Radius in mm +%Temperature in K, Pressure in bar +%Material name according to the target library + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 10.3 + ANGLE= 0 + RADIUS= 12 + MATERIAL= CD2l + NBLAYERS= 50 + X= 0 + Y= 0 + Z= 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GeneralChamber +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Chamber + Rmin= 200 + Rmax= 202 + PhiMin= 0. + PhiMax= 6.14318 + ThetaMin= 0. + ThetaMax= 3.14159 + MATERIAL= Alu + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and R given in mm +%%Angle given in degree +%%Option: 0,1 for Si SiLi and CsI +%%Option: all or sensible for VISualisation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Paris +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 +ParisCluster + X1_Y1= -84.5 -235 84.5 + X1_Y128= 84.5 -235 84.5 + X128_Y1= -84.5 -235 -84.5 + X128_Y128= 84.5 -235 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -225.920617 -106.419571 84.5 + X1_Y128= -106.419571 -225.920617 84.5 + X128_Y1= -225.920617 -106.419571 -84.5 + X128_Y128= -106.419571 -225.920617 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -235 84.5 84.5 + X1_Y128= -235 -84.5 84.5 + X128_Y1= -235 84.5 -84.5 + X128_Y128= -235 -84.5 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +ParisCluster + X1_Y1= -106.419571 225.920617 84.5 + X1_Y128= -225.920617 106.419571 84.5 + X128_Y1= -106.419571 225.920617 -84.5 + X128_Y128= -225.920617 106.419571 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 84.5 235 84.5 + X1_Y128= -84.5 235 84.5 + X128_Y1= 84.5 235 -84.5 + X128_Y128= -84.5 235 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 225.920617 106.419571 84.5 + X1_Y128= 106.419571 225.920617 84.5 + X128_Y1= 225.920617 106.419571 -84.5 + X128_Y128= 106.419571 225.920617 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 235 -84.5 84.5 + X1_Y128= 235 84.5 84.5 + X128_Y1= 235 -84.5 -84.5 + X128_Y128= 235 84.5 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 106.419571 -225.920617 84.5 + X1_Y128= 225.920617 -106.419571 84.5 + X128_Y1= 106.419571 -225.920617 -84.5 + X128_Y128= 225.920617 -106.419571 -84.5 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 84.5 84.5 -235 + X1_Y128= -84.5 84.5 -235 + X128_Y1= 84.5 -84.5 -235 + X128_Y128= -84.5 -84.5 -235 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 225.920617 84.5 -106.419571 + X1_Y128= 106.419571 84.5 -225.920617 + X128_Y1= 225.920617 -84.5 -106.419571 + X128_Y128= 106.419571 -84.5 -225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= 106.419571 84.5 225.920617 + X1_Y128= 225.920617 84.5 106.419571 + X128_Y1= 106.419571 -84.5 225.920617 + X128_Y128= 225.920617 -84.5 106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 84.5 235 + X1_Y128= 84.5 84.5 235 + X128_Y1= -84.5 -84.5 235 + X128_Y128= 84.5 -84.5 235 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -225.920617 84.5 106.419571 + X1_Y128= -106.419571 84.5 225.920617 + X128_Y1= -225.920617 -84.5 106.419571 + X128_Y128= -106.419571 -84.5 225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -106.419571 84.5 -225.920617 + X1_Y128= -225.920617 84.5 -106.419571 + X128_Y1= -106.419571 -84.5 -225.920617 + X128_Y128= -225.920617 -84.5 -106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 106.419571 -225.920617 + X1_Y128= 84.5 106.419571 -225.920617 + X128_Y1= -84.5 225.920617 -106.419571 + X128_Y128= 84.5 225.920617 -106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 225.920617 106.419571 + X1_Y128= 84.5 225.920617 106.419571 + X128_Y1= -84.5 106.419571 225.920617 + X128_Y128= 84.5 106.419571 225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 -106.419571 225.920617 + X1_Y128= 84.5 -106.419571 225.920617 + X128_Y1= -84.5 -225.920617 106.419571 + X128_Y128= 84.5 -225.920617 106.419571 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +ParisCluster + X1_Y1= -84.5 -225.920617 -106.419571 + X1_Y128= 84.5 -225.920617 -106.419571 + X128_Y1= -84.5 -106.419571 -225.920617 + X128_Y128= 84.5 -106.419571 -225.920617 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -175.9824 135.677313 -95.372227 + X1_Y128= -199.252552 89.137008 -118.642379 + X128_Y1= -135.677313 135.677313 -135.677313 + X128_Y128= -158.947466 89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -135.677313 135.677313 -135.677313 + X1_Y128= -158.947466 89.137008 -158.947466 + X128_Y1= -95.372227 135.677313 -175.9824 + X128_Y128= -118.642379 89.137008 -199.252552 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -132.559704 182.217618 -92.254617 + X1_Y128= -155.829857 135.677313 -115.52477 + X128_Y1= -92.254617 182.217618 -132.559704 + X128_Y128= -115.52477 135.677313 -155.829857 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -95.372227 135.677313 175.9824 + X1_Y128= -118.642379 89.137008 199.252552 + X128_Y1= -135.677313 135.677313 135.677313 + X128_Y128= -158.947466 89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -135.677313 135.677313 135.677313 + X1_Y128= -158.947466 89.137008 158.947466 + X128_Y1= -175.9824 135.677313 95.372227 + X128_Y128= -199.252552 89.137008 118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -92.254617 182.217618 132.559704 + X1_Y128= -115.52477 135.677313 155.829857 + X128_Y1= -132.559704 182.217618 92.254617 + X128_Y128= -155.829857 135.677313 115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 175.9824 135.677313 95.372227 + X1_Y128= 199.252552 89.137008 118.642379 + X128_Y1= 135.677313 135.677313 135.677313 + X128_Y128= 158.947466 89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 135.677313 135.677313 135.677313 + X1_Y128= 158.947466 89.137008 158.947466 + X128_Y1= 95.372227 135.677313 175.9824 + X128_Y128= 118.642379 89.137008 199.252552 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 132.559704 182.217618 92.254617 + X1_Y128= 155.829857 135.677313 115.52477 + X128_Y1= 92.254617 182.217618 132.559704 + X128_Y128= 115.52477 135.677313 155.829857 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 95.372227 135.677313 -175.9824 + X1_Y128= 118.642379 89.137008 -199.252552 + X128_Y1= 135.677313 135.677313 -135.677313 + X128_Y128= 158.947466 89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 135.677313 135.677313 -135.677313 + X1_Y128= 158.947466 89.137008 -158.947466 + X128_Y1= 175.9824 135.677313 -95.372227 + X128_Y128= 199.252552 89.137008 -118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 92.254617 182.217618 -132.559704 + X1_Y128= 115.52477 135.677313 -155.829857 + X128_Y1= 132.559704 182.217618 -92.254617 + X128_Y128= 155.829857 135.677313 -115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -95.372227 -135.677313 -175.9824 + X1_Y128= -118.642379 -89.137008 -199.252552 + X128_Y1= -135.677313 -135.677313 -135.677313 + X128_Y128= -158.947466 -89.137008 -158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -135.677313 -135.677313 -135.677313 + X1_Y128= -158.947466 -89.137008 -158.947466 + X128_Y1= -175.9824 -135.677313 -95.372227 + X128_Y128= -199.252552 -89.137008 -118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= -92.254617 -182.217618 -132.559704 + X1_Y128= -115.52477 -135.677313 -155.829857 + X128_Y1= -132.559704 -182.217618 -92.254617 + X128_Y128= -155.829857 -135.677313 -115.52477 + + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= 175.9824 -135.677313 -95.372227 +% X1_Y128= 199.252552 -89.137008 -118.642379 +% X128_Y1= 135.677313 -135.677313 -135.677313 +% X128_Y128= 158.947466 -89.137008 -158.947466 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= 135.677313 -135.677313 -135.677313 +% X1_Y128= 158.947466 -89.137008 -158.947466 +% X128_Y1= 95.372227 -135.677313 -175.9824 +% X128_Y128= 118.642379 -89.137008 -199.252552 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= 132.559704 -182.217618 -92.254617 +% X1_Y128= 155.829857 -135.677313 -115.52477 +% X128_Y1= 92.254617 -182.217618 -132.559704 +% X128_Y128= 115.52477 -135.677313 -155.829857 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 95.372227 -135.677313 175.9824 + X1_Y128= 118.642379 -89.137008 199.252552 + X128_Y1= 135.677313 -135.677313 135.677313 + X128_Y128= 158.947466 -89.137008 158.947466 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 135.677313 -135.677313 135.677313 + X1_Y128= 158.947466 -89.137008 158.947466 + X128_Y1= 175.9824 -135.677313 95.372227 + X128_Y128= 199.252552 -89.137008 118.642379 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ParisPhoswich + X1_Y1= 92.254617 -182.217618 132.559704 + X1_Y128= 115.52477 -135.677313 155.829857 + X128_Y1= 132.559704 -182.217618 92.254617 + X128_Y128= 155.829857 -135.677313 115.52477 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= -175.9824 -135.677313 95.372227 +% X1_Y128= -199.252552 -89.137008 118.642379 +% X128_Y1= -135.677313 -135.677313 135.677313 +% X128_Y128= -158.947466 -89.137008 158.947466 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= -135.677313 -135.677313 135.677313 +% X1_Y128= -158.947466 -89.137008 158.947466 +% X128_Y1= -95.372227 -135.677313 175.9824 +% X128_Y128= -118.642379 -89.137008 199.252552 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ParisPhoswich +% X1_Y1= -132.559704 -182.217618 92.254617 +% X1_Y128= -155.829857 -135.677313 115.52477 +% X128_Y1= -92.254617 -182.217618 132.559704 +% X128_Y128= -115.52477 -135.677313 155.829857 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GaspardTracker +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 Central Barrel +GPDDummyShape + THETA= 90 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDDummyShape + THETA= 90 + PHI= 120 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDDummyShape + THETA= 90 + PHI= 150 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +GPDDummyShape + THETA= 90 + PHI= 180 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +GPDDummyShape + THETA= 90 + PHI= 210 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +GPDDummyShape + THETA= 90 + PHI= 240 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +GPDDummyShape + THETA= 90 + PHI= 270 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +GPDDummyShape + THETA= 90 + PHI= 300 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +GPDDummyShape + THETA= 90 + PHI= 330 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +GPDDummyShape + THETA= 90 + PHI= 360 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +GPDDummyShape + THETA= 90 + PHI= 30 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +GPDDummyShape + THETA= 90 + PHI= 60 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 First Cone (forward) +GPDDummyShape + THETA= 60 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +GPDDummyShape + THETA= 60 + PHI= 130 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +GPDDummyShape + THETA= 60 + PHI= 170 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +GPDDummyShape + THETA= 60 + PHI= 210 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 +GPDDummyShape + THETA= 60 + PHI= 250 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 +GPDDummyShape + THETA= 60 + PHI= 290 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18 +GPDDummyShape + THETA= 60 + PHI= 330 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19 +GPDDummyShape + THETA= 60 + PHI= 10 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20 +GPDDummyShape + THETA= 60 + PHI= 50 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21 Second Cone (forward) +GPDDummyShape + THETA= 30 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22 +GPDDummyShape + THETA= 30 + PHI= 180 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23 +GPDDummyShape + THETA= 30 + PHI= 270 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24 +GPDDummyShape + THETA= 30 + PHI= 360 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25 First Cone (backward) +GPDDummyShape + THETA= 120 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26 +GPDDummyShape + THETA= 120 + PHI= 130 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27 +GPDDummyShape + THETA= 120 + PHI= 170 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28 +GPDDummyShape + THETA= 120 + PHI= 210 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29 +GPDDummyShape + THETA= 120 + PHI= 250 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30 +GPDDummyShape + THETA= 120 + PHI= 290 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31 +GPDDummyShape + THETA= 120 + PHI= 330 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32 +GPDDummyShape + THETA= 120 + PHI= 10 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33 +GPDDummyShape + THETA= 120 + PHI= 50 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34 Second Cone (backward) +GPDDummyShape + THETA= 150 + PHI= 90 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%35 +GPDDummyShape + THETA= 150 + PHI= 180 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36 +GPDDummyShape + THETA= 150 + PHI= 270 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%37 +GPDDummyShape + THETA= 150 + PHI= 360 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38 End Cap (forward) +GPDDummyShape + THETA= 0 + PHI= 0 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39 End Cap (backward) +GPDDummyShape + THETA= 180 + PHI= 0 + R= 100 + BETA= 0 0 0 + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 1 + VIS= all diff --git a/Inputs/DetectorConfiguration/gaspardV1_r150.detector b/Inputs/DetectorConfiguration/gaspardV1_r150.detector new file mode 100644 index 000000000..4af429957 --- /dev/null +++ b/Inputs/DetectorConfiguration/gaspardV1_r150.detector @@ -0,0 +1,672 @@ +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and distance given in mm +%%Angle given in degree +%% using the data from the experimental mesurement +%% special care is given for the X Y direction +%% NOTATTION USED IN THE FOLLOWING: +%% +%% X1_Y1 --> X:1 Y:1 +%% X128_Y1 --> X:128 Y:1 +%% X1_Y128 --> X:1 Y:128 +%% X128_Y128 --> X:128 Y:128 +%%Option: 0,1 for Si SiLi and CSI +%%Option: all or sensible for VISualisation +% 1.2 12.371134021 +% 2 20.618556701 +% 30 309.278350515 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +Target + THICKNESS= 0.001 + RADIUS= 7.5 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GaspardTracker +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 // central ring +GPDSquare + X1_Y1= 25 150 25 + X128_Y1= -25 150 25 + X1_Y128= 25 150 -25 + X128_Y128= -25 150 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -34.3055 148.149 25 + X128_Y1= -80.4995 129.0149 25 + X1_Y128= -34.3055 148.149 -25 + X128_Y128= -80.4995 129.0149 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -88.3883 123.7437 25 + X128_Y1= -123.744 88.388 25 + X1_Y128= -88.3883 123.7437 -25 + X128_Y128= -123.744 88.388 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +GPDSquare + X1_Y1= -129.015 80.49963 25 + X128_Y1= -148.149 34.30567 25 + X1_Y128= -129.015 80.49963 -25 + X128_Y128= -148.149 34.30567 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +GPDSquare + X1_Y1= -150. 25 25 + X128_Y1= -150. -25 25 + X1_Y128= -150. 25 -25 + X128_Y128= -150. -25 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +GPDSquare + X1_Y1= -148.1490726 -34.30528084 25 + X128_Y1= -129.0149776 -80.4992892 25 + X1_Y128= -148.1490726 -34.30528084 -25 + X128_Y128= -129.0149776 -80.4992892 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +GPDSquare + X1_Y1= -123.7438626 -88.38810137 25 + X128_Y1= -88.38859392 -123.7435108 25 + X1_Y128= -123.7438626 -88.38810137 -25 + X128_Y128= -88.38859392 -123.7435108 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +GPDSquare + X1_Y1= -80.49980273 -129.0146572 25 + X128_Y1= -34.30587053 -148.148936 25 + X1_Y128= -80.49980273 -129.0146572 -25 + X128_Y128= -34.30587053 -148.148936 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +GPDSquare + X1_Y1= -25.00039804 -149.9999337 25 + X128_Y1= 24.99960196 -150.0000663 25 + X1_Y128= -25.00039804 -149.9999337 -25 + X128_Y128= 24.99960196 -150.0000663 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +GPDSquare + X1_Y1= 34.30508427 -148.1491181 25 + X128_Y1= 80.49911802 -129.0150844 25 + X1_Y128= 34.30508427 -148.1491181 -25 + X128_Y128= 80.49911802 -129.0150844 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +GPDSquare + X1_Y1= 88.38793719 -123.7439799 25 + X128_Y1= 123.7433935 -88.3887581 25 + X1_Y128= 88.38793719 -123.7439799 -25 + X128_Y128= 123.7433935 -88.3887581 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +GPDSquare + X1_Y1= 129.0145503 -80.4999739 25 + X128_Y1= 148.1488905 -34.30606709 25 + X1_Y128= 129.0145503 -80.4999739 -25 + X128_Y128= 148.1488905 -34.30606709 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +GPDSquare + X1_Y1= 149.9999005 -25.00059706 25 + X128_Y1= 150.0000995 24.99940294 25 + X1_Y128= 149.9999005 -25.00059706 -25 + X128_Y128= 150.0000995 24.99940294 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +GPDSquare + X1_Y1= 148.1491636 34.30488771 25 + X128_Y1= 129.0151912 80.49894684 25 + X1_Y128= 148.1491636 34.30488771 -25 + X128_Y128= 129.0151912 80.49894684 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +GPDSquare + X1_Y1= 123.7440972 88.38777301 25 + X128_Y1= 88.38892229 123.7432763 25 + X1_Y128= 123.7440972 88.38777301 -25 + X128_Y128= 88.38892229 123.7432763 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +GPDSquare + X1_Y1= 80.50014508 129.0144435 25 + X128_Y1= 34.30626365 148.148845 25 + X1_Y128= 80.50014508 129.0144435 -25 + X128_Y128= 34.30626365 148.148845 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 // Forward 1 +GPDSquare + X1_Y1= 25 129.0149 80.49946 + X128_Y1= -25 129.0149 80.49946 + X1_Y128= 25 148.149 34.30548 + X128_Y128= -25 148.149 34.30548 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 // Forward 1 +GPDSquare + X1_Y1= -42.85674535 124.2301745 80.49946037 + X128_Y1= -86.15802659 99.23019366 80.49946037 + X1_Y128= -52.42381617 140.8008442 34.3054774 + X128_Y128= -95.72509741 115.8008633 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18 // Forward 1 +GPDSquare + X1_Y1= -99.23007934 86.15815825 80.49946037 + X128_Y1= -124.2301176 42.85691018 80.49946037 + X1_Y128= -115.8007363 95.72525106 34.3054774 + X128_Y128= -140.8007746 52.42400298 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19 // Forward 1 +GPDSquare + X1_Y1= -129.0148376 25.00017118 80.49946037 + X128_Y1= -129.0149039 -24.99982882 80.49946037 + X1_Y128= -148.1489939 25.00019656 34.3054774 + X128_Y128= -148.1490602 -24.99980344 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20 // Forward 1 +GPDSquare + X1_Y1= -124.2302314 -42.85658052 80.49946037 + X128_Y1= -99.23030797 -86.15789493 80.49946037 + X1_Y128= -140.8009137 -52.42362935 34.3054774 + X128_Y128= -115.8009903 -95.72494377 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21 // Forward 1 +GPDSquare + X1_Y1= -86.15828991 -99.22996503 80.49946037 + X128_Y1= -42.857075 -124.2300608 80.49946037 + X1_Y128= -95.7254047 -115.8006093 34.3054774 + X128_Y128= -52.42418979 -140.8007051 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22 // Forward 1 +GPDSquare + X1_Y1= -25.00034235 -129.0148044 80.49946037 + X128_Y1= 24.99965765 -129.0149371 80.49946037 + X1_Y128= -25.00039313 -148.1489607 34.3054774 + X128_Y128= 24.99960687 -148.1490934 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23 // Forward 1 +GPDSquare + X1_Y1= 42.85641569 -124.2302882 80.49946037 + X128_Y1= 86.15776328 -99.23042228 80.49946037 + X1_Y128= 52.42344254 -140.8009833 34.3054774 + X128_Y128= 95.72479012 -115.8011173 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24 // Forward 1 +GPDSquare + X1_Y1= 99.22985071 -86.15842157 80.49946037 + X128_Y1= 124.2300039 -42.85723983 80.49946037 + X1_Y128= 115.8004823 -95.72555834 34.3054774 + X128_Y128= 140.8006355 -52.42437661 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25 // Forward 1 +GPDSquare + X1_Y1= 129.0147713 -25.00051353 80.49946037 + X128_Y1= 129.0149703 24.99948647 80.49946037 + X1_Y128= 148.1489276 -25.00058969 34.3054774 + X128_Y128= 148.1491266 24.99941031 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26 // Forward 1 +GPDSquare + X1_Y1= 124.2303451 42.85625086 80.49946037 + X128_Y1= 99.2305366 86.15763162 80.49946037 + X1_Y128= 140.8010528 52.42325572 34.3054774 + X128_Y128= 115.8012443 95.72463648 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27 // Forward 1 +GPDSquare + X1_Y1= 86.15855322 99.2297364 80.49946037 + X128_Y1= 42.85740466 124.2299471 80.49946037 + X1_Y128= 95.72571199 115.8003553 34.3054774 + X128_Y128= 52.42456342 140.8005659 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28 // Forward 2 +GPDSquare + X1_Y1= 25 88.38843 123.7436 + X128_Y1= -25 88.38843 123.7436 + X1_Y128= 25 123.7436 88.38843 + X128_Y128= -25 123.7436 88.38843 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29 // Forward 2 +GPDSquare + X1_Y1= -44.82233533 80.17775731 123.7436281 + X128_Y1= -80.17769784 44.82244171 123.7436281 + X1_Y128= -69.82230216 105.1777573 88.38826556 + X128_Y128= -105.1776647 69.82244171 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30 // Forward 2 +GPDSquare + X1_Y1= -88.38839657 25.00011727 123.7436281 + X128_Y1= -88.38846291 -24.99988273 123.7436281 + X1_Y128= -123.7437122 25.00016418 88.38826556 + X128_Y128= -123.7437785 -24.99983582 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31 // Forward 2 +GPDSquare + + X1_Y1= -80.17781678 -44.82222895 123.7436281 + X128_Y1= -44.82254809 -80.17763837 123.7436281 + X1_Y128= -105.17785 -69.82216261 88.38826556 + X128_Y128= -69.82258126 -105.177572 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32 // Forward 2 +GPDSquare + X1_Y1= -25.00023455 -88.3883634 123.7436281 + X128_Y1= 24.99976545 -88.38849608 123.7436281 + X1_Y128= -25.00032837 -123.743679 88.38826556 + X128_Y128= 24.99967163 -123.7438117 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33 // Forward 2 +GPDSquare + X1_Y1= 44.82212257 -80.17787625 123.7436281 + X128_Y1= 80.1775789 -44.82265447 123.7436281 + X1_Y128= 69.82202306 -105.1779426 88.38826556 + X128_Y128= 105.1774794 -69.82272081 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34 // Forward 2 +GPDSquare + X1_Y1= 88.38833023 -25.00035182 123.7436281 + X128_Y1= 88.38852925 24.99964818 123.7436281 + X1_Y128= 123.7436458 -25.00049255 88.38826556 + X128_Y128= 123.7438449 24.99950745 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%35 // Forward 2 +GPDSquare + X1_Y1= 80.17793572 44.82201619 123.7436281 + X128_Y1= 44.82276085 80.17751943 123.7436281 + X1_Y128= 105.1780352 69.82188351 88.38826556 + X128_Y128= 69.82286035 105.1773868 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36 // Forward 3 +GPDSquare + X1_Y1= 25 34.30548 148.149 + X128_Y1= -25 34.30548 148.149 + X1_Y128= 25 80.49946 129.0149 + X128_Y128= -25 80.49946 129.0149 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%37 +GPDSquare + X1_Y1= -34.30548 25 148.149 + X128_Y1= -34.30548 -25 148.149 + X1_Y128= -80.49946 25 129.0149 + X128_Y128= -80.49946 -25 129.0149 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38 +GPDSquare + X1_Y1= -25 -34.30548 148.149 + X128_Y1= 25 -34.30548 148.149 + X1_Y128= -25 -80.49946 129.0149 + X128_Y128= 25 -80.49946 129.0149 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39 +GPDSquare + X1_Y1= 34.30548 -25 148.149 + X128_Y1= 34.30548 25 148.149 + X1_Y128= 80.49946 -25 129.0149 + X128_Y128= 80.49946 25 129.0149 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40 // Backward 1 +GPDSquare + X1_Y1= 25 148.1490271 -34.3054774 + X128_Y1= -25 148.1490271 -34.3054774 + X1_Y128= 25 129.0148708 -80.49946037 + X128_Y128= -25 129.0148708 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41 // Backward 1 +GPDSquare + X1_Y1= 95.72509741 115.8008633 -34.3054774 + X128_Y1= 52.42381617 140.8008442 -34.3054774 + X1_Y128= 86.15802659 99.23019366 -80.49946037 + X128_Y128= 42.85674535 124.2301745 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42 // Backward 1 +GPDSquare + X1_Y1= 140.8007746 52.42400298 -34.3054774 + X128_Y1= 115.8007363 95.72525106 -34.3054774 + X1_Y128= 124.2301176 42.85691018 -80.49946037 + X128_Y128= 99.23007934 86.15815825 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43 // Backward 1 +GPDSquare + X1_Y1= 148.1490602 -24.99980344 -34.3054774 + X128_Y1= 148.1489939 25.00019656 -34.3054774 + X1_Y128= 129.0149039 -24.99982882 -80.49946037 + X128_Y128= 129.0148376 25.00017118 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44 // Backward 1 +GPDSquare + X1_Y1= 115.8009903 -95.72494377 -34.3054774 + X128_Y1= 140.8009137 -52.42362935 -34.3054774 + X1_Y128= 99.23030797 -86.15789493 -80.49946037 + X128_Y128= 124.2302314 -42.85658052 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%45 // Backward 1 +GPDSquare + X1_Y1= 52.42418979 -140.8007051 -34.3054774 + X128_Y1= 95.7254047 -115.8006093 -34.3054774 + X1_Y128= 42.857075 -124.2300608 -80.49946037 + X128_Y128= 86.15828991 -99.22996503 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%46 // Backward 1 +GPDSquare + X1_Y1= -24.99960687 -148.1490934 -34.3054774 + X128_Y1= 25.00039313 -148.1489607 -34.3054774 + X1_Y128= -24.99965765 -129.0149371 -80.49946037 + X128_Y128= 25.00034235 -129.0148044 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%47 // Backward 1 +GPDSquare + X1_Y1= -95.72479012 -115.8011173 -34.3054774 + X128_Y1= -52.42344254 -140.8009833 -34.3054774 + X1_Y128= -86.15776328 -99.23042228 -80.49946037 + X128_Y128= -42.85641569 -124.2302882 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%48 // Backward 1 +GPDSquare + X1_Y1= -140.8006355 -52.42437661 -34.3054774 + X128_Y1= -115.8004823 -95.72555834 -34.3054774 + X1_Y128= -124.2300039 -42.85723983 -80.49946037 + X128_Y128= -99.22985071 -86.15842157 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%49 // Backward 1 +GPDSquare + X1_Y1= -148.1491266 24.99941031 -34.3054774 + X128_Y1= -148.1489276 -25.00058969 -34.3054774 + X1_Y128= -129.0149703 24.99948647 -80.49946037 + X128_Y128= -129.0147713 -25.00051353 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%50 // Backward 1 +GPDSquare + X1_Y1= -115.8012443 95.72463648 -34.3054774 + X128_Y1= -140.8010528 52.42325572 -34.3054774 + X1_Y128= -99.2305366 86.15763162 -80.49946037 + X128_Y128= -124.2303451 42.85625086 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51 // Backward 1 +GPDSquare + X1_Y1= -52.42456342 140.8005659 -34.3054774 + X128_Y1= -95.72571199 115.8003553 -34.3054774 + X1_Y128= -42.85740466 124.2299471 -80.49946037 + X128_Y128= -86.15855322 99.2297364 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%52 // Backward 2 +GPDSquare + X1_Y1= 25 123.7437453 -88.38826556 + X128_Y1= -25 123.7437453 -88.38826556 + X1_Y128= 25 88.38842974 -123.7436281 + X128_Y128= -25 88.38842974 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%53 // Backward 2 +GPDSquare + X1_Y1= 105.1776647 69.82244171 -88.38826556 + X128_Y1= 69.82230216 105.1777573 -88.38826556 + X1_Y128= 80.17769784 44.82244171 -123.7436281 + X128_Y128= 44.82233533 80.17775731 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%54 // Backward 2 +GPDSquare + X1_Y1= 123.7437785 -24.99983582 -88.38826556 + X128_Y1= 123.7437122 25.00016418 -88.38826556 + X1_Y128= 88.38846291 -24.99988273 -123.7436281 + X128_Y128= 88.38839657 25.00011727 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55 // Backward 2 +GPDSquare + X1_Y1= 69.82258126 -105.177572 -88.38826556 + X128_Y1= 105.17785 -69.82216261 -88.38826556 + X1_Y128= 44.82254809 -80.17763837 -123.7436281 + X128_Y128= 80.17781678 -44.82222895 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%56 // Backward 2 +GPDSquare + X1_Y1= -24.99967163 -123.7438117 -88.38826556 + X128_Y1= 25.00032837 -123.743679 -88.38826556 + X1_Y128= -24.99976545 -88.38849608 -123.7436281 + X128_Y128= 25.00023455 -88.3883634 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%57 // Backward 2 +GPDSquare + X1_Y1= -105.1774794 -69.82272081 -88.38826556 + X128_Y1= -69.82202306 -105.1779426 -88.38826556 + X1_Y128= -80.1775789 -44.82265447 -123.7436281 + X128_Y128= -44.82212257 -80.17787625 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%58 // Backward 2 +GPDSquare + X1_Y1= -123.7438449 24.99950745 -88.38826556 + X128_Y1= -123.7436458 -25.00049255 -88.38826556 + X1_Y128= -88.38852925 24.99964818 -123.7436281 + X128_Y128= -88.38833023 -25.00035182 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%59 // Backward 2 +GPDSquare + X1_Y1= -69.82286035 105.1773868 -88.38826556 + X128_Y1= -105.1780352 69.82188351 -88.38826556 + X1_Y128= -44.82276085 80.17751943 -123.7436281 + X128_Y128= -80.17793572 44.82201619 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%60 // Backward 3 +GPDSquare + X1_Y1= 25. 80.49963 -129.014764 + X128_Y1= -25. 80.49963 -129.014764 + X1_Y128= 25. 34.30567 -148.1489815 + X128_Y128= -25. 34.30567 -148.1489815 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%61 // Backward 3 +GPDSquare + X1_Y1= -80.49959838 25.00010681 -129.014764 + X128_Y1= -80.49966472 -24.99989319 -129.014764 + X1_Y128= -34.30564079 25.00004552 -148.1489815 + X128_Y128= -34.30570713 -24.99995448 -148.1489815 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%62 // Backward 3 +GPDSquare + X1_Y1= -25.00021361 -80.49956521 -129.014764 + X128_Y1= 24.99978639 -80.49969789 -129.014764 + X1_Y128= -25.00009103 -34.30560762 -148.1489815 + X128_Y128= 24.99990897 -34.3057403 -148.1489815 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%63 // Backward 3 +GPDSquare + X1_Y1= 80.49953204 -25.00032042 -129.014764 + X128_Y1= 80.49973106 24.99967958 -129.014764 + X1_Y128= 34.30557445 -25.00013655 -148.1489815 + X128_Y128= 34.30577347 24.99986345 -148.1489815 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all + + diff --git a/Inputs/DetectorConfiguration/gaspardV1_r150_69det.detector b/Inputs/DetectorConfiguration/gaspardV1_r150_69det.detector new file mode 100644 index 000000000..40cd678b7 --- /dev/null +++ b/Inputs/DetectorConfiguration/gaspardV1_r150_69det.detector @@ -0,0 +1,711 @@ +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and distance given in mm +%%Angle given in degree +%% using the data from the experimental mesurement +%% special care is given for the X Y direction +%% NOTATTION USED IN THE FOLLOWING: +%% +%% X1_Y1 --> X:1 Y:1 +%% X128_Y1 --> X:128 Y:1 +%% X1_Y128 --> X:1 Y:128 +%% X128_Y128 --> X:128 Y:128 +%%Option: 0,1 for Si SiLi and CSI +%%Option: all or sensible for VISualisation +% 1.2 12.371134021 +% 2 20.618556701 +% 30 309.278350515 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +Target + THICKNESS= 0.001 + RADIUS= 7.5 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GaspardTracker +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 // central ring +GPDSquare + X1_Y1= 25 150 25 + X128_Y1= -25 150 25 + X1_Y128= 25 150 -25 + X128_Y128= -25 150 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -34.3055 148.149 25 + X128_Y1= -80.4995 129.0149 25 + X1_Y128= -34.3055 148.148 -25 + X128_Y128= -80.4995 129.0149 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -88.3883 123.7437 25 + X128_Y1= -123.744 88.388 25 + X1_Y128= -88.3883 123.7437 -25 + X128_Y128= -123.744 88.388 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +GPDSquare + X1_Y1= -129.015 80.49963 25 + X128_Y1= -148.149 34.30567 25 + X1_Y128= -129.015 80.49963 -25 + X128_Y128= -148.149 34.30567 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +GPDSquare + X1_Y1= -150. 25 25 + X128_Y1= -150. -25 25 + X1_Y128= -150. 25 -25 + X128_Y128= -150. -25 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +GPDSquare + X1_Y1= -148.1490726 -34.30528084 25 + X128_Y1= -129.0149776 -80.4992892 25 + X1_Y128= -148.1490726 -34.30528084 -25 + X128_Y128= -129.0149776 -80.4992892 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +GPDSquare + X1_Y1= -123.7438626 -88.38810137 25 + X128_Y1= -88.38859392 -123.7435108 25 + X1_Y128= -123.7438626 -88.38810137 -25 + X128_Y128= -88.38859392 -123.7435108 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +GPDSquare + X1_Y1= -80.49980273 -129.0146572 25 + X128_Y1= -34.30587053 -148.148936 25 + X1_Y128= -80.49980273 -129.0146572 -25 + X128_Y128= -34.30587053 -148.148936 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +GPDSquare + X1_Y1= -25.00039804 -149.9999337 25 + X128_Y1= 24.99960196 -150.0000663 25 + X1_Y128= -25.00039804 -149.9999337 -25 + X128_Y128= 24.99960196 -150.0000663 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%9 +GPDSquare + X1_Y1= 34.30508427 -148.1491181 25 + X128_Y1= 80.49911802 -129.0150844 25 + X1_Y128= 34.30508427 -148.1491181 -25 + X128_Y128= 80.49911802 -129.0150844 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10 +GPDSquare + X1_Y1= 88.38793719 -123.7439799 25 + X128_Y1= 123.7433935 -88.3887581 25 + X1_Y128= 88.38793719 -123.7439799 -25 + X128_Y128= 123.7433935 -88.3887581 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11 +GPDSquare + X1_Y1= 129.0145503 -80.4999739 25 + X128_Y1= 148.1488905 -34.30606709 25 + X1_Y128= 129.0145503 -80.4999739 -25 + X128_Y128= 148.1488905 -34.30606709 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 +GPDSquare + X1_Y1= 149.9999005 -25.00059706 25 + X128_Y1= 150.0000995 24.99940294 25 + X1_Y128= 149.9999005 -25.00059706 -25 + X128_Y128= 150.0000995 24.99940294 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13 +GPDSquare + X1_Y1= 148.1491636 34.30488771 25 + X128_Y1= 129.0151912 80.49894684 25 + X1_Y128= 148.1491636 34.30488771 -25 + X128_Y128= 129.0151912 80.49894684 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 +GPDSquare + X1_Y1= 123.7440972 88.38777301 25 + X128_Y1= 88.38892229 123.7432763 25 + X1_Y128= 123.7440972 88.38777301 -25 + X128_Y128= 88.38892229 123.7432763 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15 +GPDSquare + X1_Y1= 80.50014508 129.0144435 25 + X128_Y1= 34.30626365 148.148845 25 + X1_Y128= 80.50014508 129.0144435 -25 + X128_Y128= 34.30626365 148.148845 -25 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16 // Forward 1 +GPDSquare + X1_Y1= 25 129.0149 80.49946 + X128_Y1= -25 129.0149 80.49946 + X1_Y128= 25 148.149 34.30548 + X128_Y128= -25 148.149 34.30548 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17 // Forward 1 +GPDSquare + X1_Y1= -37.81974796 125.8550895 80.49946037 + X128_Y1= -82.09255873 102.6189489 80.49946037 + X1_Y128= -46.71182686 142.7975471 34.3054774 + X128_Y128= -90.98463762 119.5614066 34.305477 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18 // Forward 1 +GPDSquare + X1_Y1= -91.9754618 93.86347163 80.49946037 + X128_Y1= -120.3787327 52.71430153 80.49946037 + X1_Y128= -107.7225548 104.7329241 34.3054774 + X128_Y128= -136.1258258 63.58375404 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19 // Forward 1 +GPDSquare + X1_Y1= -125.0607407 40.36889924 80.49946037 + X128_Y1= -131.0876355 -9.266537079 80.49946037 + X1_Y128= -144.0553846 42.67529019 34.3054774 + X128_Y128= -150.0822794 -6.960146136 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20 // Forward 1 +GPDSquare + X1_Y1= -129.4961584 -22.37368614 80.49946037 + X128_Y1= -111.7659904 -69.12452723 80.49946037 + X1_Y128= -147.3869164 -29.15872226 34.3054774 + X128_Y128= -129.6567484 -75.90956335 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21 // Forward 1 +GPDSquare + X1_Y1= -104.265616 -79.99073816 80.49946037 + X128_Y1= -66.84014631 -113.1469475 80.49946037 + X1_Y128= -116.9539379 -94.3128339 34.3054774 + X128_Y128= -79.52846813 -127.4690432 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22 // Forward 1 +GPDSquare + X1_Y1= -55.14911712 -119.2829064 80.49946037 + X128_Y1= -6.602055555 -131.2488085 80.49946037 + X1_Y128= -59.72826595 -137.8610477 34.3054774 + X128_Y128= -11.18120439 -149.8269498 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23 // Forward 1 +GPDSquare + X1_Y1= 6.601358994 -131.2488436 80.49946037 + X128_Y1= 55.14848406 -119.2831991 80.49946037 + X1_Y128= 11.18040923 -149.8270091 34.3054774 + X128_Y128= 59.72753429 -137.8613647 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24 // Forward 1 +GPDSquare + X1_Y1= 66.83954582 -113.1473022 80.49946037 + X128_Y1= 104.2651915 -79.99129151 80.49946037 + X1_Y128= 79.52779163 -127.4694653 34.3054774 + X128_Y128= 116.9534373 -94.3134546 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25 // Forward 1 +GPDSquare + X1_Y1= 111.7656236 -69.12512039 80.49946037 + X128_Y1= 129.4960397 -22.3743734 80.49946037 + X1_Y128= 129.6563456 -75.91025146 34.3054774 + X128_Y128= 147.3867617 -29.15950447 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26 // Forward 1 +GPDSquare + X1_Y1= 131.0875863 -9.267232784 80.49946037 + X128_Y1= 125.0609549 40.36823552 80.49946037 + X1_Y128= 150.0822424 -6.96094265 34.3054774 + X128_Y128= 144.0556111 42.67452566 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27 // Forward 1 +GPDSquare + X1_Y1= 120.3790125 52.71366266 80.49946037 + X128_Y1= 91.97595995 93.8629835 80.49946037 + X1_Y128= 136.1261632 63.58303159 34.3054774 + X128_Y128= 107.7231107 104.7323524 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28 // Forward 1 +GPDSquare + X1_Y1= 82.09310335 102.6185133 80.49946037 + X128_Y1= 37.8204159 125.8548887 80.49946037 + X1_Y128= 90.98527216 119.5609237 34.3054774 + X128_Y128= 46.71258471 142.7972992 34.3054774 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29 // Forward 2 +GPDSquare + X1_Y1= 25 88.38843 123.7436 + X128_Y1= -25 88.38843 123.7436 + X1_Y128= 25 123.7436 88.38843 + X128_Y128= -25 123.7436 88.38843 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30 +GPDSquare + X1_Y1= -37.66382699 83.77917789 123.7436281 + X128_Y1= -75.9660681 51.63981999 123.7436281 + X1_Y128= -60.38976983 110.8629343 88.38826556 + X128_Y128= -98.69201094 78.72357645 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31 +GPDSquare + X1_Y1= -82.7043593 39.96878112 123.7436281 + X128_Y1= -91.38682626 -9.271596295 123.7436281 + X1_Y128= -117.522541 46.1082083 88.38826556 + X128_Y128= -126.2050079 -3.132169106 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32 +GPDSquare + X1_Y1= -89.04666544 -22.54342225 123.7436281 + X128_Y1= -64.04674204 -65.84473666 123.7436281 + X1_Y128= -119.6652982 -40.22102588 88.38826556 + X128_Y128= -94.66537478 -83.5223403 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33 +GPDSquare + X1_Y1= -53.72311467 -74.50732489 123.7436281 + X128_Y1= -6.738523969 -91.60844288 123.7436281 + X1_Y128= -65.81542315 -107.7304255 88.38826556 + X128_Y128= -18.83083244 -124.8315435 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34 +GPDSquare + X1_Y1= 6.738037787 -91.60847864 123.7436281 + X128_Y1= 53.72271925 -74.50761 123.7436281 + X1_Y128= 18.83016994 -124.8316435 88.38826556 + X128_Y128= 65.8148514 -107.7307748 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%35 +GPDSquare + X1_Y1= 64.04639259 -65.84507657 123.7436281 + X128_Y1= 89.04654579 -22.54389483 123.7436281 + X1_Y128= 94.66493151 -83.5228427 88.38826556 + X128_Y128= 119.6650847 -40.22166097 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36 +GPDSquare + X1_Y1= 91.38677705 -9.272081301 123.7436281 + X128_Y1= 82.70457142 39.96834219 123.7436281 + X1_Y128= 126.2049913 -3.132838898 88.38826556 + X128_Y128= 117.5227857 46.10758459 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%37 +GPDSquare + X1_Y1= 75.96634216 51.63941683 123.7436281 + X128_Y1= 37.66427163 83.778978 123.7436281 + X1_Y128= 98.69242874 78.72305267 88.38826556 + X128_Y128= 60.3903582 110.8626138 88.38826556 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38 // Forward 3 +GPDSquare + X1_Y1= 25 34.30548 148.149 + X128_Y1= -25 34.30548 148.149 + X1_Y128= 25 80.49946 129.0149 + X128_Y128= -25 80.49946 129.0149 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39 +GPDSquare + X1_Y1= -34.30548 25 148.149 + X128_Y1= -34.30548 -25 148.149 + X1_Y128= -80.49946 25 129.0149 + X128_Y128= -80.49946 -25 129.0149 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40 +GPDSquare + X1_Y1= -25 -34.30548 148.149 + X128_Y1= 25 -34.30548 148.149 + X1_Y128= -25 -80.49946 129.0149 + X128_Y128= 25 -80.49946 129.0149 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41 +GPDSquare + X1_Y1= 34.30548 -25 148.149 + X128_Y1= 34.30548 25 148.149 + X1_Y128= 80.49946 -25 129.0149 + X128_Y128= 80.49946 25 129.0149 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42 // Backward 1 +GPDSquare + X1_Y1= 25 148.1490271 -34.3054774 + X128_Y1= -25 148.1490271 -34.3054774 + X1_Y128= 25 129.0148708 -80.49946037 + X128_Y128= -25 129.0148708 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43 // Backward 1 +GPDSquare + X1_Y1= 90.98463762 119.5614066 -34.3054774 + X128_Y1= 46.71182686 142.7975471 -34.3054774 + X1_Y128= 82.09255873 102.6189489 -80.49946037 + X128_Y128= 37.81974796 125.8550895 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44 // Backward 1 +GPDSquare + X1_Y1= 136.1258258 63.58375404 -34.3054774 + X128_Y1= 107.7225548 104.7329241 -34.3054774 + X1_Y128= 120.3787327 52.71430153 -80.49946037 + X128_Y128= 91.9754618 93.86347163 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%45 // Backward 1 +GPDSquare + X1_Y1= 150.0822794 -6.960146136 -34.3054774 + X128_Y1= 144.0553846 42.67529019 -34.3054774 + X1_Y128= 131.0876355 -9.266537079 -80.49946037 + X128_Y128= 125.0607407 40.36889924 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%46 // Backward 1 +GPDSquare + X1_Y1= 129.6567484 -75.90956335 -34.3054774 + X128_Y1= 147.3869164 -29.15872226 -34.3054774 + X1_Y128= 111.7659904 -69.12452723 -80.49946037 + X128_Y128= 129.4961584 -22.37368614 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%47 // Backward 1 +GPDSquare + X1_Y1= 79.52846813 -127.4690432 -34.3054774 + X128_Y1= 116.9539379 -94.3128339 -34.3054774 + X1_Y128= 66.84014631 -113.1469475 -80.49946037 + X128_Y128= 104.265616 -79.99073816 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%48 // Backward 1 +GPDSquare + X1_Y1= 11.18120439 -149.8269498 -34.3054774 + X128_Y1= 59.72826595 -137.8610477 -34.3054774 + X1_Y128= 6.602055555 -131.2488085 -80.49946037 + X128_Y128= 55.14911712 -119.2829064 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%49 // Backward 1 +GPDSquare + X1_Y1= -59.72753429 -137.8613647 -34.3054774 + X128_Y1= -11.18040923 -149.8270091 -34.3054774 + X1_Y128= -55.14848406 -119.2831991 -80.49946037 + X128_Y128= -6.601358994 -131.2488436 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%50 // Backward 1 +GPDSquare + X1_Y1= -116.9534373 -94.3134546 -34.3054774 + X128_Y1= -79.52779163 -127.4694653 -34.3054774 + X1_Y128= -104.2651915 -79.99129151 -80.49946037 + X128_Y128= -66.83954582 -113.1473022 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51 // Backward 1 +GPDSquare + X1_Y1= -147.3867617 -29.15950447 -34.3054774 + X128_Y1= -129.6563456 -75.91025146 -34.3054774 + X1_Y128= -129.4960397 -22.3743734 -80.49946037 + X128_Y128= -111.7656236 -69.12512039 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%52 // Backward 1 +GPDSquare + X1_Y1= -144.0556111 42.67452566 -34.3054774 + X128_Y1= -150.0822424 -6.96094265 -34.3054774 + X1_Y128= -125.0609549 40.36823552 -80.49946037 + X128_Y128= -131.0875863 -9.267232784 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%53 // Backward 1 +GPDSquare + X1_Y1= -107.7231107 104.7323524 -34.3054774 + X128_Y1= -136.1261632 63.58303159 -34.3054774 + X1_Y128= -91.97595995 93.8629835 -80.49946037 + X128_Y128= -120.3790125 52.71366266 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%54 // Backward 1 +GPDSquare + X1_Y1= -46.71258471 142.7972992 -34.3054774 + X128_Y1= -90.98527216 119.5609237 -34.3054774 + X1_Y128= -37.8204159 125.8548887 -80.49946037 + X128_Y128= -82.09310335 102.6185133 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55 // Backward 2 +GPDSquare + X1_Y1= 25 123.7437453 -88.38826556 + X128_Y1= -25 123.7437453 -88.38826556 + X1_Y128= 25 88.38842974 -123.7436281 + X128_Y128= -25 88.38842974 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%56 // Backward 2 +GPDSquare + X1_Y1= 98.69201094 78.72357645 -88.38826556 + X128_Y1= 60.38976983 110.8629343 -88.38826556 + X1_Y128= 75.9660681 51.63981999 -123.7436281 + X128_Y128= 37.66382699 83.77917789 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%57 // Backward 2 +GPDSquare + X1_Y1= 126.2050079 -3.132169106 -88.38826556 + X128_Y1= 117.522541 46.1082083 -88.38826556 + X1_Y128= 91.38682626 -9.271596295 -123.7436281 + X128_Y128= 82.7043593 39.96878112 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%58 // Backward 2 +GPDSquare + X1_Y1= 94.66537478 -83.5223403 -88.38826556 + X128_Y1= 119.6652982 -40.22102588 -88.38826556 + X1_Y128= 64.04674204 -65.84473666 -123.7436281 + X128_Y128= 89.04666544 -22.54342225 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%59 // Backward 2 +GPDSquare + X1_Y1= 18.83083244 -124.8315435 -88.38826556 + X128_Y1= 65.81542315 -107.7304255 -88.38826556 + X1_Y128= 6.738523969 -91.60844288 -123.7436281 + X128_Y128= 53.72311467 -74.50732489 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%60 // Backward 2 +GPDSquare + X1_Y1= -65.8148514 -107.7307748 -88.38826556 + X128_Y1= -18.83016994 -124.8316435 -88.38826556 + X1_Y128= -53.72271925 -74.50761 -123.7436281 + X128_Y128= -6.738037787 -91.60847864 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%61 // Backward 2 +GPDSquare + X1_Y1= -119.6650847 -40.22166097 -88.38826556 + X128_Y1= -94.66493151 -83.5228427 -88.38826556 + X1_Y128= -89.04654579 -22.54389483 -123.7436281 + X128_Y128= -64.04639259 -65.84507657 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%62 // Backward 2 +GPDSquare + X1_Y1= -117.5227857 46.10758459 -88.38826556 + X128_Y1= -126.2049913 -3.132838898 -88.38826556 + X1_Y128= -82.70457142 39.96834219 -123.7436281 + X128_Y128= -91.38677705 -9.272081301 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%63 // Backward 2 +GPDSquare + X1_Y1= -60.3903582 110.8626138 -88.38826556 + X128_Y1= -98.69242874 78.72305267 -88.38826556 + X1_Y128= -37.66427163 83.778978 -123.7436281 + X128_Y128= -75.96634216 51.63941683 -123.7436281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%64 // Backward 2 +GPDSquare + X1_Y1= 25 80.49963155 -129.014764 + X128_Y1= -25 80.49963155 -129.014764 + X1_Y128= 25 34.30567396 -148.1489815 + X128_Y128= -25 34.30567396 -148.1489815 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%65 // Backward 3 +GPDSquare + X1_Y1= -80.49959838 25.00010681 -129.014764 + X128_Y1= -80.49966472 -24.99989319 -129.014764 + X1_Y128= -34.30564079 25.00004552 -148.1489815 + X128_Y128= -34.30570713 -24.99995448 -148.1489815 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%66 // Backward 3 +GPDSquare + X1_Y1= -25.00021361 -80.49956521 -129.014764 + X128_Y1= 24.99978639 -80.49969789 -129.014764 + X1_Y128= -25.00009103 -34.30560762 -148.1489815 + X128_Y128= 24.99990897 -34.3057403 -148.1489815 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%67 // Backward 3 +GPDSquare + X1_Y1= 80.49953204 -25.00032042 -129.014764 + X128_Y1= 80.49973106 24.99967958 -129.014764 + X1_Y128= 34.30557445 -25.00013655 -148.1489815 + X128_Y128= 34.30577347 24.99986345 -148.1489815 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%68 // Backward 3 + diff --git a/Inputs/DetectorConfiguration/gaspardV1_r150asy.detector b/Inputs/DetectorConfiguration/gaspardV1_r150asy.detector new file mode 100644 index 000000000..053d0315a --- /dev/null +++ b/Inputs/DetectorConfiguration/gaspardV1_r150asy.detector @@ -0,0 +1,690 @@ +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and distance given in mm +%%Angle given in degree +%% using the data from the experimental mesurement +%% special care is given for the X Y direction +%% NOTATTION USED IN THE FOLLOWING: +%% +%% X1_Y1 --> X:1 Y:1 +%% X128_Y1 --> X:128 Y:1 +%% X1_Y128 --> X:1 Y:128 +%% X128_Y128 --> X:128 Y:128 +%%Option: 0,1 for Si SiLi and CSI +%%Option: all or sensible for VISualisation +% 1.2 12.371134021 +% 2 20.618556701 +% 30 309.278350515 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +Target + THICKNESS= 0.001 + RADIUS= 7.5 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GaspardTracker +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 // central ring +GPDSquare + X1_Y1= -88.38826556 100.2608923 76.71550028 + X128_Y1= -123.7436281 68.48373921 61.21676222 + X1_Y128= -88.38826556 122.1794324 31.77578957 + X128_Y128= -123.7436281 90.40227932 16.2770515 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -129.014764 61.39333304 57.75854342 + X128_Y1= -148.1489815 19.87447122 37.50846118 + X1_Y128= -129.014764 83.31187315 12.81883271 + X128_Y128= -148.1489815 41.79301133 -7.431249539 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -149.9999668 11.51076418 33.42921266 + X128_Y1= -150.0000332 -33.42894654 11.51067255 + X1_Y128= -149.9999668 33.42930429 -11.51049806 + X128_Y128= -150.0000332 -11.51040642 -33.42903817 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -148.1490726 -41.79265799 7.431421875 + X128_Y1= -129.0149776 -83.31156544 -12.81868263 + X1_Y128= -148.1490726 -19.87411788 -37.50828884 + X128_Y128= -129.0149776 -61.39302533 -57.75839335 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -123.7438626 -90.40198419 -16.27690755 + X128_Y1= -88.38859392 -122.1792216 -31.77568675 + X1_Y128= -123.7438626 -68.48344407 -61.21661827 + X128_Y128= -88.38859392 -100.2606815 -76.71539746 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -80.49980273 -126.9168975 -34.08640341 + X128_Y1= -34.30587053 -144.1146766 -42.47431259 + X1_Y128= -80.49980273 -104.9983574 -79.02611412 + X128_Y128= -34.30587053 -122.1961365 -87.4140233 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -25.00039804 -145.7783426 -43.2857359 + X128_Y1= 24.99960196 -145.7784618 -43.28579407 + X1_Y128= -25.00039804 -123.8598025 -88.22544662 + X128_Y128= 24.99960196 -123.8599217 -88.22550478 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 34.30508427 -144.1148403 -42.4743924 + X128_Y1= 80.49911802 -126.9172815 -34.08659069 + X1_Y128= 34.30508427 -122.1963001 -87.41410312 + X128_Y128= 80.49911802 -104.9987413 -79.02630141 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 88.38793719 -122.1796432 -31.77589238 + X128_Y1= 123.7433935 -90.40257445 -16.27719544 + X1_Y128= 88.38793719 -100.2611031 -76.7156031 + X128_Y128= 123.7433935 -68.48403434 -61.21690616 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 129.0145503 -83.31218085 -12.81898279 + X128_Y1= 148.1488905 -41.79336467 7.431077204 + X1_Y128= 129.0145503 -61.39364074 -57.7586935 + X128_Y128= 148.1488905 -19.87482456 -37.50863351 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 149.9999005 -33.42966205 11.51032357 + X128_Y1= 150.0000995 11.51004867 33.42886368 + X1_Y128= 149.9999005 -11.51112193 -33.42938715 + X128_Y128= 150.0000995 33.42858878 -11.51084703 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 148.1491636 19.87376454 37.50811651 + X128_Y1= 129.0151912 61.39271763 57.75824327 + X1_Y128= 148.1491636 41.79230465 -7.43159421 + X128_Y128= 129.0151912 83.31125774 12.81853255 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 123.7440972 68.48314894 61.21647432 + X128_Y1= 88.38892229 100.2604707 76.71529465 + X1_Y128= 123.7440972 90.40168905 16.27676361 + X128_Y128= 88.38892229 122.1790108 31.77558393 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 80.50014508 104.9981654 79.02602048 + X128_Y1= 34.30626365 122.1960547 87.4139834 + X1_Y128= 80.50014508 126.9167055 34.08630976 + X128_Y128= 34.30626365 144.1145948 42.47427268 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 25.00079608 123.8597428 88.22541754 + X128_Y1= -24.99920392 123.8599813 88.22553386 + X1_Y128= 25.00079608 145.778283 43.28570682 + X128_Y128= -24.99920392 145.7785215 43.28582315 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -34.30469115 122.196382 87.41414302 + X128_Y1= -80.49877567 104.9989333 79.02639505 + X1_Y128= -34.30469115 144.1149221 42.47443231 + X128_Y128= -80.49877567 126.9174735 34.08668433 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -73.54954822 62.59457836 120.0932251 + X128_Y1= -108.9049107 30.81742525 104.594487 + X1_Y128= -87.07943091 95.00526816 84.50545388 + X128_Y128= -122.4347934 63.22811504 69.00671581 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -118.1482559 16.42781008 97.57620961 + X128_Y1= -131.0892616 -26.98060427 76.40453192 + X1_Y128= -136.6304262 41.12900608 58.22827068 + X128_Y128= -149.5714318 -2.279408262 37.05659298 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -131.0892861 -43.59630914 68.30051905 + X128_Y1= -118.1484086 -87.00475435 47.1288263 + X1_Y128= -149.5714695 -27.79727431 24.61071023 + X128_Y128= -136.630592 -71.20571952 3.439017474 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -108.9051059 -101.3943916 40.11053812 + X128_Y1= -73.54983721 -133.171629 24.61175893 + X1_Y128= -122.4350245 -93.30486234 -7.339444172 + X128_Y128= -87.0797558 -125.0820998 -22.83822337 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -57.5399387 -141.4795132 20.55973698 + X128_Y1= -9.243678868 -153.1108719 14.88674986 + X1_Y128= -62.49226772 -137.8410817 -29.06118858 + X128_Y128= -14.19600789 -149.4724403 -34.7341757 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 9.242983154 -153.1109159 14.88672835 + X128_Y1= 57.53931167 -141.4797877 20.55960311 + X1_Y128= 14.19521408 -149.472508 -34.73420872 + X128_Y128= 62.4915426 -137.8413798 -29.06133396 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 73.54925923 -133.1719798 24.61158781 + X128_Y1= 108.9047156 -101.394911 40.11028475 + X1_Y128= 87.07910602 -125.0825151 -22.83842596 + X128_Y128= 122.4345624 -93.30544636 -7.339729018 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 118.1481032 -87.00531792 47.12855143 + X128_Y1= 131.089237 -43.59693444 68.30021407 + X1_Y128= 136.6302603 -71.20637125 3.438699602 + X128_Y128= 149.5713941 -27.79798777 24.61036225 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 131.0893106 -26.98122957 76.40422694 + X128_Y1= 118.1485613 16.4272465 97.57593474 + X1_Y128= 149.5715072 -2.280121727 37.056245 + X128_Y128= 136.6307578 41.12835435 58.22795281 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 108.9053011 30.81690576 104.5942337 + X128_Y1= 73.5501262 62.59422752 120.093054 + X1_Y128= 122.4352556 63.22753102 69.00643096 + X128_Y128= 87.08008069 95.00485278 84.50525128 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 57.54025222 70.90214996 124.1450946 + X128_Y1= 9.244026725 82.53362375 129.8181379 + X1_Y128= 62.49263028 107.7638933 90.7282451 + X128_Y128= 14.19640479 119.3953671 96.4012884 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -9.242635297 82.53371193 129.8181809 + X128_Y1= -57.53899815 70.90269889 124.1453623 + X1_Y128= -14.19481718 119.3955025 96.40135445 + X128_Y128= -62.49118004 107.7644895 90.72853587 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -44.82233533 17.81771087 146.3676448 + X128_Y1= -80.17769784 -13.95944224 130.8689067 + X1_Y128= -69.82230216 55.78632486 125.5497196 + X128_Y128= -105.1776647 24.00917175 110.0509815 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -88.38839657 -31.77563275 122.1793784 + X128_Y1= -88.38846291 -76.71534347 100.2608383 + X1_Y128= -123.7437122 -16.27683196 90.40220373 + X128_Y128= -123.7437785 -61.21654268 68.48366361 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -80.17781678 -94.53155357 91.57130051 + X128_Y1= -44.82254809 -126.308791 76.07252131 + X1_Y128= -105.17785 -101.5025907 48.83486426 + X128_Y128= -69.82258126 -133.2798281 33.33608506 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -25.00023455 -133.6885432 72.47317919 + X128_Y1= 24.99976545 -133.6886624 72.47312103 + X1_Y128= -25.00032837 -149.9669376 25.19724585 + X128_Y128= 24.99967163 -149.9670569 25.19718769 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 44.82212257 -126.3090048 76.07241703 + X128_Y1= 80.1775789 -94.53193602 91.57111397 + X1_Y128= 69.82202306 -133.2801612 33.33592262 + X128_Y128= 105.1774794 -101.5030924 48.83461956 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 88.38833023 -76.71576509 100.2606327 + X128_Y1= 88.38852925 -31.77605437 122.1791728 + X1_Y128= 123.7436458 -61.21713294 68.48337572 + X128_Y128= 123.7438449 -16.27742223 90.40191584 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 80.17793572 -13.95982469 130.8687202 + X128_Y1= 44.82276085 17.81749707 146.3675405 + X1_Y128= 105.1780352 24.00867005 110.0507368 + X128_Y128= 69.82286035 55.7859918 125.5495571 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 25.00046909 25.1972965 149.9669057 + X128_Y1= -24.99953091 25.197535 149.967022 + X1_Y128= 25.00065673 72.47320824 133.6884485 + X128_Y128= -24.99934327 72.47344674 133.6885648 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -6.580077344 -27.25284933 151.5387237 + X128_Y1= -41.93543986 -59.03000244 136.0399856 + X1_Y128= -39.24411633 10.49332119 148.6599796 + X128_Y128= -74.59947885 -21.28383192 133.1612416 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -41.93545732 -70.85827334 130.2709581 + X128_Y1= -6.580188623 -102.6355108 114.7721789 + X1_Y128= -74.59958298 -91.82860133 98.75429204 + X128_Y128= -39.24431429 -123.6058388 83.25551285 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 6.579966064 -102.6355422 114.7721636 + X128_Y1= 41.9354224 -70.85847337 130.2708605 + X1_Y128= 39.24391838 -123.606026 83.25542154 + X128_Y128= 74.59937471 -91.82895717 98.75411848 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= 41.93547478 -59.03020248 136.0398881 + X128_Y1= 6.580299903 -27.25288072 151.5387084 + X1_Y128= 74.59968712 -21.28418776 133.161068 + X128_Y128= 39.24451225 10.493134 148.6598883 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Forward 4 +GPDSquare + X1_Y1= 35.35533906 -65.75564142 134.8191219 + X128_Y1= -2.34546E-05 -97.53279453 119.3203838 + X1_Y128= 2.34546E-05 -33.97844615 150.3178805 + X128_Y128= -35.35533906 -65.75559926 134.8191424 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= -87.07943091 125.0823075 22.83832466 + X128_Y1= -122.4347934 93.30515435 7.339586595 + X1_Y128= -73.54954822 133.1718044 -24.61167337 + X128_Y128= -108.9049107 101.3946513 -40.11041144 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= -14.19561099 149.4724741 34.73419221 + X128_Y1= -62.49190516 137.8412307 29.06126127 + X1_Y128= -9.243331011 153.1108939 -14.8867391 + X128_Y128= -57.53962519 141.4796505 -20.55967004 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= 62.49190516 137.8412307 29.06126127 + X128_Y1= 14.19561099 149.4724741 34.73419221 + X1_Y128= 57.53962519 141.4796505 -20.55967004 + X128_Y128= 9.243331011 153.1108939 -14.8867391 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= 122.4347934 93.30515435 7.339586595 + X128_Y1= 87.07943091 125.0823075 22.83832466 + X1_Y128= 108.9049107 101.3946513 -40.11041144 + X128_Y128= 73.54954822 133.1718044 -24.61167337 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= 149.5714318 27.79763104 -24.61053624 + X128_Y1= 136.6304262 71.20604539 -3.438858538 + X1_Y128= 131.0892616 43.59662179 -68.30036656 + X128_Y128= 118.1482559 87.00503613 -47.12868887 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= 136.630592 -41.12868022 -58.22811174 + X128_Y1= 149.5714695 2.279764995 -37.05641899 + X1_Y128= 118.1484086 -16.42752829 -97.57607218 + X128_Y128= 131.0892861 26.98091692 -76.40437943 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= 87.0797558 -95.00506047 -84.50535258 + X128_Y1= 122.4350245 -63.22782303 -69.00657339 + X1_Y128= 73.54983721 -62.59440294 -120.0931396 + X128_Y128= 108.9051059 -30.81716551 -104.5943604 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= 14.19600789 -119.395401 -96.40130491 + X128_Y1= 62.49226772 -107.7640424 -90.72831779 + X1_Y128= 9.243678868 -82.5336458 -129.8181486 + X128_Y128= 57.5399387 -70.90228719 -124.1451615 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= -62.4915426 -107.7643404 -90.72846318 + X128_Y1= -14.19521408 -119.3954687 -96.40133794 + X1_Y128= -57.53931167 -70.90256166 -124.1452954 + X128_Y128= -9.242983154 -82.53368989 -129.8181701 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= -122.4345624 -63.22840705 -69.00685823 + X128_Y1= -87.07910602 -95.00547584 -84.50555517 + X1_Y128= -108.9047156 -30.81768499 -104.5946137 + X128_Y128= -73.54925923 -62.59475378 -120.0933107 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= -149.5713941 2.27905153 -37.05676697 + X128_Y1= -136.6302603 -41.12933195 -58.22842961 + X1_Y128= -131.089237 26.98029162 -76.40468441 + X128_Y128= -118.1481032 -16.42809187 -97.57634705 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 1 +GPDSquare + X1_Y1= -136.6307578 71.20539365 -3.43917641 + X128_Y1= -149.5715072 27.79691757 -24.61088422 + X1_Y128= -118.1485613 87.00447256 -47.12896374 + X128_Y128= -131.0893106 43.59599648 -68.30067154 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 2 +GPDSquare + X1_Y1= -69.82230216 133.2799946 -33.33600384 + X128_Y1= -105.1776647 101.5028415 -48.83474191 + X1_Y128= -44.82233533 126.3088979 -76.07246917 + X128_Y128= -80.17769784 94.53174479 -91.57120724 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 2 +GPDSquare + X1_Y1= 25 149.9669973 -25.19721677 + X128_Y1= -25 149.9669973 -25.19721677 + X1_Y128= 25 133.6886028 -72.47315011 + X128_Y128= -25 133.6886028 -72.47315011 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 2 +GPDSquare + X1_Y1= 105.1776647 101.5028415 -48.83474191 + X128_Y1= 69.82230216 133.2799946 -33.33600384 + X1_Y128= 80.17769784 94.53174479 -91.57120724 + X128_Y128= 44.82233533 126.3088979 -76.07246917 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 2 +GPDSquare + X1_Y1= 123.7437785 16.27712709 -90.40205978 + X128_Y1= 123.7437122 61.21683781 -68.48351967 + X1_Y128= 88.38846291 31.77584356 -122.1792756 + X128_Y128= 88.38839657 76.71555428 -100.2607355 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 2 +GPDSquare + X1_Y1= 69.82258126 -55.78615833 -125.5496383 + X128_Y1= 105.17785 -24.0089209 -110.0508591 + X1_Y128= 44.82254809 -17.81760397 -146.3675926 + X128_Y128= 80.17781678 13.95963346 -130.8688134 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 2 +GPDSquare + X1_Y1= -24.99967163 -72.47338711 -133.6885357 + X128_Y1= 25.00032837 -72.47326786 -133.6884775 + X1_Y128= -24.99976545 -25.19747537 -149.9669929 + X128_Y128= 25.00023455 -25.19735612 -149.9669347 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 2 +GPDSquare + X1_Y1= -105.1774794 -24.0094226 -110.0511038 + X128_Y1= -69.82202306 -55.78649139 -125.5498008 + X1_Y128= -80.1775789 13.95925101 -130.869 + X128_Y128= -44.82212257 -17.81781778 -146.3676969 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 2 +GPDSquare + X1_Y1= -123.7438449 61.21624754 -68.48380756 + X128_Y1= -123.7436458 16.27653683 -90.40234767 + X1_Y128= -88.38852925 76.71513266 -100.2609411 + X128_Y128= -88.38833023 31.77542194 -122.1794813 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 3 +GPDSquare + X1_Y1= -39.24411633 123.6059324 -83.25546719 + X128_Y1= -74.59947885 91.82877925 -98.75420526 + X1_Y128= -6.580077344 102.6355265 -114.7721712 + X128_Y128= -41.93543986 70.85837335 -130.2709093 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 3 +GPDSquare + X1_Y1= -74.59958298 21.28400984 -133.1611548 + X128_Y1= -39.24431429 -10.4932276 -148.659934 + X1_Y128= -41.93545732 59.03010246 -136.0399369 + X128_Y128= -6.580188623 27.25286503 -151.5387161 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 3 +GPDSquare + X1_Y1= 39.24391838 -10.49341479 -148.6600253 + X128_Y1= 74.59937471 21.283654 -133.1613283 + X1_Y128= 6.579966064 27.25283364 -151.5387314 + X128_Y128= 41.9354224 59.02990243 -136.0400344 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 // Backward 3 +GPDSquare + X1_Y1= 74.59968712 91.82842341 -98.75437882 + X128_Y1= 39.24451225 123.6057452 -83.2555585 + X1_Y128= 41.93547478 70.85817332 -130.2710069 + X128_Y128= 6.580299903 102.6354951 -114.7721865 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% / Backward 4 +GPDSquare + X1_Y1= 2.34546E-05 97.53279453 -119.3203838 + X128_Y1= -35.35533906 65.75564142 -134.8191219 + X1_Y128= 35.35533906 65.75559926 -134.8191424 + X128_Y128= -2.34546E-05 33.97844615 -150.3178805 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Inputs/DetectorConfiguration/gaspardV1_r150asy_1.detector b/Inputs/DetectorConfiguration/gaspardV1_r150asy_1.detector new file mode 100644 index 000000000..5e8f85de5 --- /dev/null +++ b/Inputs/DetectorConfiguration/gaspardV1_r150asy_1.detector @@ -0,0 +1,670 @@ +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%Position and distance given in mm +%%Angle given in degree +%% using the data from the experimental mesurement +%% special care is given for the X Y direction +%% NOTATTION USED IN THE FOLLOWING: +%% +%% X1_Y1 --> X:1 Y:1 +%% X128_Y1 --> X:128 Y:1 +%% X1_Y128 --> X:1 Y:128 +%% X128_Y128 --> X:128 Y:128 +%%Option: 0,1 for Si SiLi and CSI +%%Option: all or sensible for VISualisation +% 1.2 12.371134021 +% 2 20.618556701 +% 30 309.278350515 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GeneralTarget +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +Target + THICKNESS= 0.001 + RADIUS= 7.5 + MATERIAL= CD2 + X= 0 + Y= 0 + Z= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GaspardTracker +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 // central ring +GPDSquare + X1_Y1= -88.38826556 104.7572512 70.45163477 + X128_Y1= -123.7436281 72.09319422 56.92175207 + X1_Y128= -88.38826556 123.8914075 24.25765179 + X128_Y128= -123.7436281 91.22735051 10.7277691 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +GPDSquare + X1_Y1= -129.014764 64.80489403 53.90284212 + X128_Y1= -148.1489815 22.12723623 36.22519404 + X1_Y128= -129.014764 83.93905033 7.70885915 + X128_Y128= -148.1489815 41.26139253 -9.968788937 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -149.9999668 13.53009721 32.6641458 + X128_Y1= -150.0000332 -32.66388576 13.5299895 + X1_Y128= -149.9999668 32.6642535 -13.52983718 + X128_Y128= -150.0000332 -13.52972947 -32.66399347 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -148.1490726 -41.26102933 9.96893938 + X128_Y1= -129.0149776 -83.93873404 -7.708728138 + X1_Y128= -148.1490726 -22.12687303 -36.22504359 + X128_Y128= -129.0149776 -64.80457774 -53.90271111 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -123.7438626 -91.22704714 -10.72764344 + X128_Y1= -88.38859392 -123.8911908 -24.25756204 + X1_Y128= -123.7438626 -72.09289085 -56.92162641 + X128_Y128= -88.38859392 -104.7570345 -70.45154501 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -80.49980273 -128.7610957 -26.2747408 + X128_Y1= -34.30587053 -146.4388667 -33.59710646 + X1_Y128= -80.49980273 -109.6269394 -72.46872378 + X128_Y128= -34.30587053 -127.3047104 -79.79108943 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -25.00039804 -148.1489658 -34.30545201 + X128_Y1= 24.99960196 -148.1490884 -34.30550279 + X1_Y128= -25.00039804 -129.0148095 -80.49943499 + X128_Y128= 24.99960196 -129.0149321 -80.49948576 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 34.30508427 -146.4390349 -33.59717613 + X128_Y1= 80.49911802 -128.7614904 -26.2749043 + X1_Y128= 34.30508427 -127.3048786 -79.7911591 + X128_Y128= 80.49911802 -109.6273341 -72.46888727 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 88.38793719 -123.8916241 -24.25774155 + X128_Y1= 123.7433935 -91.22765388 -10.72789476 + X1_Y128= 88.38793719 -104.7574679 -70.45172452 + X128_Y128= 123.7433935 -72.09349759 -56.92187773 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 129.0145503 -83.93936662 -7.708990163 + X128_Y1= 148.1488905 -41.26175573 9.968638494 + X1_Y128= 129.0145503 -64.80521033 -53.90297313 + X128_Y128= 148.1488905 -22.12759943 -36.22534448 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 149.9999005 -32.66462124 13.52968485 + X128_Y1= 150.0000995 13.52936173 32.66384115 + X1_Y128= 149.9999005 -13.53046495 -32.66429812 + X128_Y128= 150.0000995 32.66351802 -13.53014182 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 148.1491636 22.12650983 36.22489315 + X128_Y1= 129.0151912 64.80426145 53.9025801 + X1_Y128= 148.1491636 41.26066612 -9.969089823 + X128_Y128= 129.0151912 83.93841774 7.708597125 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 123.7440972 72.09258748 56.92150075 + X128_Y1= 88.38892229 104.7568178 70.45145525 + X1_Y128= 123.7440972 91.22674377 10.72751778 + X128_Y128= 88.38892229 123.8909741 24.25747228 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 80.50014508 109.626742 72.46864203 + X128_Y1= 34.30626365 127.3046263 79.79105459 + X1_Y128= 80.50014508 128.7608983 26.27465906 + X128_Y128= 34.30626365 146.4387826 33.59707162 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 25.00079608 129.0147482 80.4994096 + X128_Y1= -24.99920392 129.0149933 80.49951115 + X1_Y128= 25.00079608 148.1489045 34.30542663 + X128_Y128= -24.99920392 148.1491496 34.30552817 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -34.30469115 127.3049627 79.79119394 + X128_Y1= -80.49877567 109.6275314 72.46896901 + X1_Y128= -34.30469115 146.439119 33.59721096 + X128_Y128= -80.49877567 128.7616877 26.27498604 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -73.54954822 69.80933687 116.047923 + X128_Y1= -108.9049107 37.14527993 102.5180404 + X1_Y128= -87.07943091 99.98699467 78.54790646 + X128_Y128= -122.4347934 67.32293773 65.01802377 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -118.1482559 22.35404902 96.39131766 + X128_Y1= -131.0892616 -22.26589893 77.9091474 + X1_Y128= -136.6304262 44.60704021 55.60879976 + X128_Y128= -149.5714318 -0.01290774 37.12662951 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -131.0892861 -39.34534995 70.83461379 + X128_Y1= -118.1484086 -83.96532963 52.35243039 + X1_Y128= -149.5714695 -26.24298023 26.26178794 + X128_Y128= -136.630592 -70.86295991 7.77960454 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -108.9051059 -98.75658319 46.22569831 + X128_Y1= -73.54983721 -131.4207268 32.69577971 + X1_Y128= -122.4350245 -93.57889222 -1.62963388 + X128_Y128= -87.0797558 -126.2430358 -15.15955248 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -57.5399387 -139.960485 29.15849936 + X128_Y1= -9.243678868 -151.9164761 24.20617034 + X1_Y128= -62.49226772 -139.3581223 -20.59199407 + X128_Y128= -14.19600789 -151.3141134 -25.54432309 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 9.242983154 -151.9165214 24.20615157 + X128_Y1= 57.53931167 -139.9607672 29.1583825 + X1_Y128= 14.19521408 -151.314183 -25.54435192 + X128_Y128= 62.4915426 -139.3584287 -20.59212099 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 73.54925923 -131.4210874 32.69563034 + X128_Y1= 108.9047156 -98.75711718 46.22547713 + X1_Y128= 87.07910602 -126.2434628 -15.15972933 + X128_Y128= 122.4345624 -93.57949254 -1.629882541 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 118.1481032 -83.96590893 52.35219044 + X128_Y1= 131.089237 -39.3459927 70.83434755 + X1_Y128= 136.6302603 -70.86362983 7.779327048 + X128_Y128= 149.5713941 -26.2437136 26.26148416 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 131.0893106 -22.26654169 77.90888116 + X128_Y1= 118.1485613 22.35346971 96.3910777 + X1_Y128= 149.5715072 -0.013641119 37.12632573 + X128_Y128= 136.6307578 44.60637029 55.60852227 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 108.9053011 37.14474594 102.5178192 + X128_Y1= 73.5501262 69.80897624 116.0477737 + X1_Y128= 122.4352556 67.3223374 65.01777511 + X128_Y128= 87.08008069 99.9865677 78.5477296 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 57.54025222 78.3487737 119.5850703 + X128_Y1= 9.244026725 90.3048832 124.5374483 + X1_Y128= 62.49263028 113.1017145 83.98019617 + X128_Y128= 14.19640479 125.057824 88.93257423 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -9.242635297 90.30497385 124.5374859 + X128_Y1= -57.53899815 78.34933796 119.585304 + X1_Y128= -14.19481718 125.0579632 88.93263189 + X128_Y128= -62.49118004 113.1023273 83.98045 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -44.82233533 26.72000072 145.0068958 + X128_Y1= -80.17769784 -5.944056222 131.4770131 + X1_Y128= -69.82230216 63.34689285 121.9098736 + X128_Y128= -105.1776647 30.68283591 108.3799909 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -88.38839657 -24.25749857 123.891344 + X128_Y1= -88.38846291 -70.45148154 104.7571877 + X1_Y128= -123.7437122 -10.72755459 91.22726166 + X128_Y128= -123.7437785 -56.92153756 72.09310536 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -80.17781678 -88.76494402 97.17151028 + X128_Y1= -44.82254809 -121.4290876 83.64159168 + X1_Y128= -105.17785 -98.33197357 54.94035724 + X128_Y128= -69.82258126 -130.9961172 41.41043864 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -25.00023455 -129.0148095 80.49948576 + X128_Y1= 24.99976545 -129.0149321 80.49943499 + X1_Y128= -25.00032837 -148.1489658 34.30550279 + X128_Y128= 24.99967163 -148.1490884 34.30545201 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 44.82212257 -121.4293074 83.64150065 + X128_Y1= 80.1775789 -88.76533715 97.17134744 + X1_Y128= 69.82202306 -130.9964595 41.41029683 + X128_Y128= 105.1774794 -98.33248928 54.94014362 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 88.38833023 -70.45191493 104.7570082 + X128_Y1= 88.38852925 -24.25793196 123.8911645 + X1_Y128= 123.7436458 -56.9221443 72.09285404 + X128_Y128= 123.7438449 -10.72816133 91.22701034 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 80.17793572 -5.94444935 131.4768502 + X128_Y1= 44.82276085 26.71978094 145.0068047 + X1_Y128= 105.1780352 30.6823202 108.3797773 + X128_Y128= 69.82286035 63.3465505 121.9097318 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 25.00046909 34.30555138 148.1489308 + X128_Y1= -24.99953091 34.30579654 148.1490323 + X1_Y128= 25.00065673 80.49950897 129.0147132 + X128_Y128= -24.99934327 80.49975413 129.0148147 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -6.580077344 -17.9508074 152.9198192 + X128_Y1= -41.93543986 -50.61486434 139.3899365 + X1_Y128= -39.24411633 19.54921605 147.7420979 + X128_Y128= -74.59947885 -13.11484089 134.2122152 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -41.93545732 -62.77326357 134.3537673 + X128_Y1= -6.580188623 -95.43740719 120.8238487 + X1_Y128= -74.59958298 -85.62852255 104.176093 + X128_Y128= -39.24431429 -118.2926662 90.64617436 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 6.579966064 -95.43743945 120.8238354 + X128_Y1= 41.9354224 -62.77346919 134.3536822 + X1_Y128= 39.24391838 -118.2928586 90.64609466 + X128_Y128= 74.59937471 -85.62888833 104.1759414 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 41.93547478 -50.61506996 139.3898513 + X128_Y1= 6.580299903 -17.95083966 152.9198058 + X1_Y128= 74.59968712 -13.11520666 134.2120637 + X128_Y128= 39.24451225 19.54902363 147.7420182 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -87.07943091 126.2432493 15.1596409 + X128_Y1= -122.4347934 93.57919238 1.629758211 + X1_Y128= -73.54954822 131.4209071 -32.69570502 + X128_Y128= -108.9049107 98.75685019 -46.22558772 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -14.19561099 151.3141482 25.5443375 + X128_Y1= -62.49190516 139.3582755 20.59205753 + X1_Y128= -9.243331011 151.9164988 -24.20616096 + X128_Y128= -57.53962519 139.9606261 -29.15844093 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 62.49190516 139.3582755 20.59205753 + X128_Y1= 14.19561099 151.3141482 25.5443375 + X1_Y128= 57.53962519 139.9606261 -29.15844093 + X128_Y128= 9.243331011 151.9164988 -24.20616096 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 122.4347934 93.57919238 1.629758211 + X128_Y1= 87.07943091 126.2432493 15.1596409 + X1_Y128= 108.9049107 98.75685019 -46.22558772 + X128_Y128= 73.54954822 131.4209071 -32.69570502 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 149.5714318 26.24334692 -26.26163605 + X128_Y1= 136.6304262 70.86329487 -7.779465794 + X1_Y128= 131.0892616 39.34567133 -70.83448067 + X128_Y128= 118.1482559 83.96561928 -52.35231042 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 136.630592 -44.60670525 -55.60866102 + X128_Y1= 149.5714695 0.01327443 -37.12647762 + X1_Y128= 118.1484086 -22.35375937 -96.39119768 + X128_Y128= 131.0892861 22.26622031 -77.90901428 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 87.0797558 -99.98678118 -78.54781803 + X128_Y1= 122.4350245 -67.32263757 -65.01789944 + X1_Y128= 73.54983721 -69.80915655 -116.0478484 + X128_Y128= 108.9051059 -37.14501293 -102.5179298 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 14.19600789 -125.0578588 -88.93258864 + X128_Y1= 62.49226772 -113.1018677 -83.98025963 + X1_Y128= 9.243678868 -90.30490586 -124.5374577 + X128_Y128= 57.5399387 -78.34891477 -119.5851287 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -62.4915426 -113.1021741 -83.98038655 + X128_Y1= -14.19521408 -125.0579284 -88.93261748 + X1_Y128= -57.53931167 -78.34919689 -119.5852456 + X128_Y128= -9.242983154 -90.30495119 -124.5374765 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -122.4345624 -67.32323789 -65.0181481 + X128_Y1= -87.07910602 -99.98720815 -78.54799489 + X1_Y128= -108.9047156 -37.14554692 -102.5181509 + X128_Y128= -73.54925923 -69.80951718 -116.0479977 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -149.5713941 0.012541052 -37.1267814 + X128_Y1= -136.6302603 -44.60737518 -55.60893851 + X1_Y128= -131.089237 22.26557756 -77.90928052 + X128_Y128= -118.1481032 -22.35433867 -96.39143763 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -136.6307578 70.86262494 -7.779743286 + X128_Y1= -149.5715072 26.24261354 -26.26193982 + X1_Y128= -118.1485613 83.96503997 -52.35255037 + X128_Y128= -131.0893106 39.34502857 -70.83474691 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -69.82230216 130.9962884 -41.41036774 + X128_Y1= -105.1776647 98.33223142 -54.94025043 + X1_Y128= -44.82233533 121.4291975 -83.64154616 + X128_Y128= -80.17769784 88.76514058 -97.17142886 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 25 148.1490271 -34.3054774 + X128_Y1= -25 148.1490271 -34.3054774 + X1_Y128= 25 129.0148708 -80.49946037 + X128_Y128= -25 129.0148708 -80.49946037 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 105.1776647 98.33223142 -54.94025043 + X128_Y1= 69.82230216 130.9962884 -41.41036774 + X1_Y128= 80.17769784 88.76514058 -97.17142886 + X128_Y128= 44.82233533 121.4291975 -83.64154616 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 123.7437785 10.72785796 -91.227136 + X128_Y1= 123.7437122 56.92184093 -72.0929797 + X1_Y128= 88.38846291 24.25771526 -123.8912542 + X128_Y128= 88.38839657 70.45169823 -104.7570979 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 69.82258126 -63.34672167 -121.9098027 + X128_Y1= 105.17785 -30.68257806 -108.3798841 + X1_Y128= 44.82254809 -26.71989083 -145.0068502 + X128_Y128= 80.17781678 5.944252786 -131.4769316 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -24.99967163 -80.49969284 -129.0147893 + X128_Y1= 25.00032837 -80.49957026 -129.0147386 + X1_Y128= -24.99976545 -34.30573525 -148.1490069 + X128_Y128= 25.00023455 -34.30561267 -148.1489562 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -105.1774794 -30.68309376 -108.3800977 + X128_Y1= -69.82202306 -63.34706402 -121.9099445 + X1_Y128= -80.1775789 5.943859659 -131.4770945 + X128_Y128= -44.82212257 -26.7201106 -145.0069413 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -123.7438449 56.92123419 -72.09323102 + X128_Y1= -123.7436458 10.72725122 -91.22738732 + X1_Y128= -88.38852925 70.45126485 -104.7572774 + X128_Y128= -88.38833023 24.25728188 -123.8914337 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -39.24411633 118.2927624 -90.64613451 + X128_Y1= -74.59947885 85.62870544 -104.1760172 + X1_Y128= -6.580077344 95.43742332 -120.8238421 + X128_Y128= -41.93543986 62.77336638 -134.3537248 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= -74.59958298 13.11502377 -134.2121394 + X128_Y1= -39.24431429 -19.54911984 -147.742058 + X1_Y128= -41.93545732 50.61496715 -139.3898939 + X128_Y128= -6.580188623 17.95082353 -152.9198125 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 39.24391838 -19.54931227 -147.7421377 + X128_Y1= 74.59937471 13.114658 -134.2122909 + X1_Y128= 6.579966064 17.95079127 -152.9198259 + X128_Y128= 41.9354224 50.61476153 -139.3899791 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GPDSquare + X1_Y1= 74.59968712 85.62833966 -104.1761687 + X128_Y1= 39.24451225 118.29257 -90.64621421 + X1_Y128= 41.93547478 62.77316076 -134.3538099 + X128_Y128= 6.580299903 95.43739106 -120.8238554 + FIRSTSTAGE= 1 + SECONDSTAGE= 0 + THIRDSTAGE= 1 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 diff --git a/Inputs/EventGenerator/Source.reaction b/Inputs/EventGenerator/Source.reaction new file mode 100644 index 000000000..d430437c7 --- /dev/null +++ b/Inputs/EventGenerator/Source.reaction @@ -0,0 +1,22 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%% File used for PARIS analysis when a gamma source %%%% +%%% The reaction is irrelevent and just kept for the format %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Beam energy given in MeV ; Excitation in MeV ; SigmaXY in mm +% SigmaThetaX/PhiY in deg +Transfert + Beam= 11Li + Target= 2H + Light= 1H + Heavy= 12Li + ExcitationEnergy= 1.0 + BeamEnergy= 550 + BeamEnergySpread= 0 + SigmaThetaX= 0.6921330164 + SigmaPhiY= 0.963142053 + SigmaX= 6.232 + SigmaY= 9.069 + CrossSectionPath= flat.txt + ShootLight= 1 + ShootHeavy= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Inputs/EventGenerator/gamma.source b/Inputs/EventGenerator/gamma.source new file mode 100644 index 000000000..7ec9ce537 --- /dev/null +++ b/Inputs/EventGenerator/gamma.source @@ -0,0 +1,16 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%% A "collimated" Source to be used as EventGenerator %%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Energy are given in MeV , Position in mm % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Isotropic + EnergyLow= .1 + EnergyHigh= .1 + HalfOpenAngleMin= 90 + HalfOpenAngleMax= 90 + x0= 0 + y0= 0 + z0= 0 + particle= gamma +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Supported particle type: proton, neutron, deuton, triton, He3 , alpha diff --git a/Inputs/EventGenerator/isotropic.source b/Inputs/EventGenerator/isotropic.source index 58a272bd6..95f408b63 100644 --- a/Inputs/EventGenerator/isotropic.source +++ b/Inputs/EventGenerator/isotropic.source @@ -4,10 +4,10 @@ % Energy are given in MeV , Position in mm % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Isotropic - EnergyLow= 1 - EnergyHigh= 1 + EnergyLow= 0.1 + EnergyHigh= 5. HalfOpenAngleMin= 0 - HalfOpenAngleMax= 1 + HalfOpenAngleMax= 180 x0= 0 y0= 0 z0= 0 diff --git a/Licence/Contributor b/Licence/Contributor index 54c4dd9a0..c645303a5 100644 --- a/Licence/Contributor +++ b/Licence/Contributor @@ -1,10 +1,11 @@ May 2009 -Main Contributor: +Main Contributors for NPTool structure: Adrien MATTA Nicolas de SEREVILLE -Side Contributor +Other contributors Sandra GIRON +Marc LABICHE Inspired by previous work by Alexis RAMUS and Marc LABICHE. diff --git a/NPAnalysis/Paris/Makefile b/NPAnalysis/Paris/Makefile new file mode 100644 index 000000000..215794b28 --- /dev/null +++ b/NPAnalysis/Paris/Makefile @@ -0,0 +1,10 @@ + +Analyse: + make -C ./src + +clean: + make clean -C ./src + +distclean: + make clean -C ./src + rm Analysis diff --git a/NPAnalysis/Paris/RunToTreat.txt b/NPAnalysis/Paris/RunToTreat.txt new file mode 100644 index 000000000..20a18102f --- /dev/null +++ b/NPAnalysis/Paris/RunToTreat.txt @@ -0,0 +1,5 @@ +TTreeName + SimulatedTree +RootFileName + ../../Outputs/Simulation/mySimul.root +% /mnt/hgfs/Echanges/ParisSimROOT/Raw/mySimul0-50pipe1noshield.root diff --git a/NPAnalysis/Paris/include/ObjectManager.hh b/NPAnalysis/Paris/include/ObjectManager.hh new file mode 100644 index 000000000..bb19ac44e --- /dev/null +++ b/NPAnalysis/Paris/include/ObjectManager.hh @@ -0,0 +1,130 @@ +// You can use this file to declare your spectra, file, energy loss , ... and whatever you want. +// This way you can remove all unnecessary declaration in the main programm. +// In order to help debugging and organizing we use Name Space. + +///////////////////////////////////////////////////////////////////////////////////////////////// +// -------------------------------------- VARIOUS INCLUDE --------------------------------------- + +// NPA +#include "DetectorManager.h" +#include "Paris.h" +#include "Shield.h" + +// STL C++ +#include <iostream> +#include <fstream> +#include <sstream> +#include <string> +#include <cmath> +#include <cstdlib> + +// ROOT +#include <TROOT.h> +#include <TChain.h> +#include <TFile.h> +#include <TLeaf.h> +#include <TVector3.h> +#include <TRandom.h> + +// NPL +//#include "TMust2Data.h" +//#include "TMust2Physics.h" +#include "TParisData.h" +#include "TShieldData.h" +#include "TInitialConditions.h" +#include "NPReaction.h" +#include "RootInput.h" +#include "RootOutput.h" +#include "TInteractionCoordinates.h" + +// Use CLHEP System of unit and Physical Constant +#include "CLHEP/Units/GlobalSystemOfUnits.h" +#include "CLHEP/Units/PhysicalConstants.h" + + +// ---------------------------------------------------------------------------------------------- +double ThetaCalculation (TVector3 A , TVector3 B) ; +///////////////////////////////////////////////////////////////////////////////////////////////// +// ----------------------------------- DOUBLE, INT, BOOL AND MORE ------------------------------- +namespace VARIABLE + { + // Declare your Variable here: + + double X1,Y1,Z1 ; + int N1,N2 = 0 ; + bool check= false ; + + // A Usefull Simple Random Generator + TRandom Rand; + } + +using namespace VARIABLE ; +// ---------------------------------------------------------------------------------------------- + + + +///////////////////////////////////////////////////////////////////////////////////////////////// +// -----------------------------------GRAPH------------------------------------------------------ +#include <TObject.h> +#include <TH1.h> +#include <TH1F.h> +#include <TH2.h> +#include <TH2F.h> +#include <TGraph2D.h> + +namespace GRAPH + { + // Declare your Spectra here: + + TH1F *myHist1D = new TH1F("Hist1D","Histogramm 1D ; x ; count", 1000 , -5 , 5 ) ; + + TH1F *Ein = new TH1F("Eincident","Incident energy", 1000 , 0 , 50 ) ; + TH1F *PhPeakEff = new TH1F("PhPeak","Full absorption efficiency", 1000 , 0 , 50 ) ; + TH1F *PhPeakEffNoAB = new TH1F("PhPeakNoAB","Full absorption efficiency - No addback PARIS & SHIELD", 1000 , 0 , 50 ) ; + + TH1F *PhPeakEffParis = new TH1F("PhPeakParis","Full absorption efficiency", 1000 , 0 , 50 ) ; + TH1F *PhPeakEffParisLaBr = new TH1F("PhPeakParisLaBr","Full absorption efficiency in Inner layer", 1000 , 0 , 50 ) ; + TH1F *PhPeakEffParisCsI = new TH1F("PhPeakParisCsI","Full absorption efficiency in Outer layer", 1000 , 0 , 50 ) ; + + TH1F *PhPeakEffShield = new TH1F("PhPeakShield","Full absorption efficiency", 1000 , 0 , 50 ) ; + + TH2F *myHist2D = new TH2F("Hist2D","Histogramm 2D ; x ; y ", 128 , 1 , 128 , 128 , 1 , 128 ) ; + + } + +using namespace GRAPH ; +// -------------------------------------------------------------------------------------------- + + + +/////////////////////////////////////////////////////////////////////////////////////////////// +// -----------------------------------CUT------------------------------------------------------ +#include <TCutG.h> +namespace CUT + { + // Declare your Cut here: + + } + +using namespace CUT ; +// -------------------------------------------------------------------------------------------- + + + +//////////////////////////////////////////////////////////////////////////////////////////////// +// -----------------------------------ENERGY LOSS---------------------------------------------- +#include "NPEnergyLoss.h" +using namespace NPL ; +namespace ENERGYLOSS +{ + // Declare your Energy loss here +// EnergyLoss LightTargetCD2 = EnergyLoss("proton_cd2.txt", 100, 1, 1); // LISE++ + EnergyLoss LightTarget = EnergyLoss("proton_CD2.G4table", "G4Table", 1000); // G4 + //EnergyLoss BeamTarget = EnergyLoss("Sn132[0.0]_CD2.G4table", "G4Table", 1000); // G4 +} + +using namespace ENERGYLOSS ; +// ---------------------------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////////////// + + diff --git a/NPAnalysis/Paris/src/Analysis.cc b/NPAnalysis/Paris/src/Analysis.cc new file mode 100644 index 000000000..a3347d282 --- /dev/null +++ b/NPAnalysis/Paris/src/Analysis.cc @@ -0,0 +1,199 @@ +#include "ObjectManager.hh" + + +using namespace std; + + +int main(int argc,char** argv) +{ + // test if number of arguments is correct + if (argc != 4) { + cout << + "you need to specify both a Reaction file and a Detector file such as : Analysis myReaction.reaction myDetector.detector runToRead.run" + << endl; + return 0; + } + + // get arguments + string reactionfileName = argv[1]; + string detectorfileName = argv[2]; + string runToReadfileName = argv[3]; + + // Instantiate RootInput and RootOutput singleton classes + RootInput:: getInstance(runToReadfileName); + RootOutput::getInstance("Analysis/Paris_AnalyzedData", "AnalyzedTree"); + + // Initialize the reaction + NPL::Reaction* myReaction = new Reaction(); + myReaction->ReadConfigurationFile(reactionfileName); + + // Initialize the detector + NPA::DetectorManager* myDetector = new DetectorManager; + myDetector->ReadConfigurationFile(detectorfileName); + + // nominal beam energy + Double_t BeamEnergyNominal = myReaction->GetBeamEnergy() * MeV; + cout << BeamEnergyNominal << endl; + // slow beam at target middle + //Double_t BeamEnergy = BeamEnergyNominal - BeamTarget.Slow(BeamEnergyNominal, myDetector->GetTargetThickness()/2 * micrometer, 0); + //cout << BeamEnergy << endl; + // set energy beam at target middle + //myReaction->SetBeamEnergy(BeamEnergy); + + // Attach more branch to the output + double Etot = 0 ; double ExNoStrips = 0 ; double EE = 0 ; double TT = 0 ; double X = 0 ; double Y = 0 ; int det ; + RootOutput::getInstance()->GetTree()->Branch("TotalE",&Etot,"Etot/D") ; + //RootOutput::getInstance()->GetTree()->Branch("ExcitationEnergyNoStrips",&ExNoStrips,"ExNoStrips/D") ; + //RootOutput::getInstance()->GetTree()->Branch("E",&EE,"EE/D") ; + //RootOutput::getInstance()->GetTree()->Branch("A",&TT,"TT/D") ; + //RootOutput::getInstance()->GetTree()->Branch("X",&X,"X/D") ; + //RootOutput::getInstance()->GetTree()->Branch("Y",&Y,"Y/D") ; + + // Get GaspardTracker pointer + //GaspardTracker* GPDTrack = (GaspardTracker*) myDetector->m_Detector["GASPARD"]; + // Get Paris pointer + Paris* ParisTrack = (Paris*) myDetector->m_Detector["PARIS"]; + // Get Shield pointer + Shield* ShieldTrack = (Shield*) myDetector->m_Detector["SHIELD"]; + + // Get the TChain and treat it + TChain* chain = RootInput:: getInstance() -> GetChain(); + + // Connect TInteractionCoordinates branch + TInteractionCoordinates *interCoord = 0; + chain->SetBranchAddress("InteractionCoordinates", &interCoord); + chain->SetBranchStatus("InteractionCoordinates", 0); + // Connect TInitialConditions branch + TInitialConditions *initCond = 0; + chain->SetBranchAddress("InitialConditions", &initCond); + chain->SetBranchStatus("InitialConditions", 0); + + + // Analysis is here! + int nentries = chain->GetEntries(); + cout << "Number of entries to be analysed: " << nentries << endl; + + for (int i = 0; i < nentries; i ++) { + if (i%10000 == 0 && i!=0) cout << "\r" << i << " analyzed events" << flush; + + chain -> GetEntry(i); + + // Treat event + myDetector->ClearEventPhysics(); + myDetector->BuildPhysicalEvent(); + + + + double Einit= initCond->GetICEmittedEnergy(0); + + Ein->Fill(Einit); + + // Get total energy + double E_Paris = ParisTrack->GetEnergyDeposit(); // Include LaBr & CsIback + double E_ParisLaBr = ParisTrack->GetEnergyInDeposit(); // Paris LaBr layer + double E_ParisCsI = ParisTrack->GetEnergyOutDeposit(); // Paris Csi layer + double E_Shield = ShieldTrack->GetEnergyDeposit(); + + + + if (E_ParisLaBr >-1000 && E_ParisCsI<0) { + + if(E_ParisLaBr>=(Einit-0.1) && E_ParisLaBr<=(Einit+0.1)) // +- 1% of initial energy + { + PhPeakEffParisLaBr->Fill(Einit); + } + } + + if (E_ParisCsI >-1000 && E_ParisLaBr<0) { + + if(E_ParisCsI>=(Einit-0.14) && E_ParisCsI<=(Einit+0.14)) + { + PhPeakEffParisCsI->Fill(Einit); + } + } + + + if (E_Paris > -1000 && E_Shield<0) { + Etot=E_Paris; + //cout << "Energy Paris=" << Etot << endl; + + // Fill output tree + RootOutput::getInstance()->GetTree()->Fill(); + + if(Etot>=(Einit-0.1) && Etot<=(Einit+0.1)) + { + PhPeakEff->Fill(Einit); + PhPeakEffNoAB->Fill(Einit); // = No addback between PARIS & Shield + PhPeakEffParis->Fill(Einit); + } + } + + + if (E_Shield > -1000 && E_Paris<0) { + Etot=E_Shield; + //cout << "Energy Shield =" << Etot << endl; + + // Fill output tree + RootOutput::getInstance()->GetTree()->Fill(); + + + if(Etot>=(Einit-0.14) && Etot<=(Einit+.14)) + { + PhPeakEff->Fill(Einit); + PhPeakEffNoAB->Fill(Einit); // = No addback between PARIS and Shield + PhPeakEffShield->Fill(Einit); + } + } + + if (E_Shield > -1000 && E_Paris>-1000) { + Etot=E_Shield+E_Paris; // addback + //cout << "Energy Shield+PARIS =" << Etot << endl; + + // Fill output tree + RootOutput::getInstance()->GetTree()->Fill(); + + if(Etot>(Einit-0.14) && Etot<(Einit+0.14))PhPeakEff->Fill(Einit); + //if(Etot>=(Einit*0.99) && Etot<=(Einit*1.01))PhPeakEff->Fill(Einit); + + } + + + + } + + + Ein->Write(); + + + PhPeakEff->Divide(PhPeakEff,Ein,1,0.01); + PhPeakEff->Write(); + + PhPeakEffNoAB->Divide(PhPeakEffNoAB,Ein,1,0.01); + PhPeakEffNoAB->Write(); + + PhPeakEffParis->Divide(PhPeakEffParis,Ein,1,0.01); + PhPeakEffParis->Write(); + PhPeakEffParisLaBr->Divide(PhPeakEffParisLaBr,Ein,1,0.01); + PhPeakEffParisLaBr->Write(); + PhPeakEffParisCsI->Divide(PhPeakEffParisCsI,Ein,1,0.01); + PhPeakEffParisCsI->Write(); + + PhPeakEffShield->Divide(PhPeakEffShield,Ein,1,0.01); + PhPeakEffShield->Write(); + + // delete singleton classes + RootOutput::getInstance()->Destroy(); + RootInput::getInstance()->Destroy(); + + + + return 0; +} + + +double ThetaCalculation (TVector3 A , TVector3 B) +{ + double Theta = acos( (A.Dot(B)) / (A.Mag()*B.Mag()) ); + return Theta ; +} + diff --git a/NPAnalysis/Paris/src/GNUmakefile b/NPAnalysis/Paris/src/GNUmakefile new file mode 100644 index 000000000..28c404622 --- /dev/null +++ b/NPAnalysis/Paris/src/GNUmakefile @@ -0,0 +1,42 @@ +###Make file made by Adrien MATTA/ Institut de Physique Nucleaire d'Orsay IPNO### +# Made to compile the ROOT Analyser for MUST2 experiment + +CPP=g++ +EXEC=Analysis + +# local includes +NPAINCLUDES = ../include + +# ROOT includes +CXXFLAGS += `root-config --cflags` + +# CLHEP includes +CXXFLAGS += -I$(CLHEP_INCLUDE_DIR) +CXXFLAGS += -I$(NPAINCLUDES) +CXXFLAGS += -I$(NPLIB)/include + +LDFLAGS = `root-config --libs` -lMathMore +LDFLAGS+= `$(NPLIB)/liblist` +LDFLAGS+= -L$(CLHEP_LIB_DIR) -l$(CLHEP_LIB) + +SRC= $(wildcard *.cc) +INC= $(wildcard $(NPAINCLUDES)/*.hh) +OBJ=$(SRC:.cc=.o) + +#all:$(EXEC) +# @$(CPP) -o $@ -c $< $(CXXFLAGS) + +Analysis:$(OBJ) $(INC) + @$(CPP) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) + mv Analysis ../Analysis + +%.o: %.cc + @$(CPP) $(CXXFLAGS) -o $@ -c $< + +.PHONY: clean mrproper + +clean: + rm -rf *.o + +mrproper: clean + rm -rf $(EXEC) diff --git a/NPEnvironment.tchrc b/NPEnvironment.tchrc index 61ebdb79c..8832102bf 100644 --- a/NPEnvironment.tchrc +++ b/NPEnvironment.tchrc @@ -2,12 +2,12 @@ # On linux system, include it in your bashrc or tcshrc file. # NPTool Needs -setenv NPTOOL /YourPathToNPTool/NPTool +setenv NPTOOL /home/local1/geant4/NPTool.Paris setenv NPLIB $NPTOOL/NPLib setenv NPSIM $NPTOOL/NPSimulation setenv NPANA $NPTOOL/NPAnalysis -setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:$NPLIB/lib -source $NPLIB/lib/liblist +setenv LD_LIBRARY_PATH $NPLIB/lib:$LD_LIBRARY_PATH +source $NPLIB/liblist # alias alias Simulation '$NPSIM/bin/$G4SYSTEM/Simulation' diff --git a/NPLib/Makefile b/NPLib/Makefile index 22e59ff06..7542417d5 100644 --- a/NPLib/Makefile +++ b/NPLib/Makefile @@ -270,7 +270,7 @@ INCLUDE = -I$(CLHEP_BASE_DIR)/include #------------------------------------------------------------------------------ SHARELIB = CalibManager Vdetec InputOutputRoot InitCond InterCoord \ Must2All GaspardData AnnularS1Data PlasticData DummyDetectorData SSSDData\ - Reaction EnergyLoss ParisData + Reaction EnergyLoss ParisData ShieldData all: $(SHARELIB) rm -f ./include/*Dict.h @@ -354,7 +354,19 @@ ParisData: cp ./Paris/*.so ./lib ; cp ./Paris/*.h ./include ifeq ($(ARCH),macosx) cd lib; ln -sf libParisData.so libParisData.dylib + cd lib; ln -sf libParisPhysics.so libParisPhysics.dylib endif + + +## Paris Shield Detector ## +ShieldData: + make -C ./Shield + cp ./Shield/*.so ./lib ; cp ./Shield/*.h ./include +ifeq ($(ARCH),macosx) + cd lib; ln -sf libShieldData.so libShieldData.dylib + cd lib; ln -sf libShieldPhysics.so libShieldPhysics.dylib +endif + ############# Simulation ############## ## InitialConditions ## @@ -417,6 +429,7 @@ clean: make clean -C ./DummyDetector make clean -C ./Plastic make clean -C ./Paris + make clean -C ./Shield distclean: rm -f ./lib/*.so @@ -437,6 +450,7 @@ endif make distclean -C ./DummyDetector make distclean -C ./Plastic make distclean -C ./Paris + make distclean -C ./Shield .SUFFIXES: .$(SrcSuf) ### diff --git a/NPLib/Paris/Makefile b/NPLib/Paris/Makefile index d79d24036..02e00de1e 100644 --- a/NPLib/Paris/Makefile +++ b/NPLib/Paris/Makefile @@ -265,11 +265,10 @@ LDFLAGS += $(ROOTLDFLAGS) LIBS = $(ROOTLIBS) $(SYSLIBS) GLIBS = $(ROOTGLIBS) $(SYSLIBS) -INCLUDE = -I$(CLHEP_BASE_DIR)/include +INCLUDE = -I$(CLHEP_BASE_DIR)/include -I$(NPLIB)/include #------------------------------------------------------------------------------ -SHARELIB = libParisData.so - +SHARELIB = libParisData.so libParisPhysics.so all: $(SHARELIB) #------------------------------------------------------------------------------ ############### Detector ############## @@ -281,8 +280,18 @@ libParisData.so: TParisData.o TParisDataDict.o TParisDataDict.cxx: TParisData.h rootcint -f $@ -c $^ +libParisPhysics.so: Paris.o TParisPhysics.o TParisPhysicsDict.o + $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +TParisPhysicsDict.cxx: TParisPhysics.h + rootcint -f $@ -c $^ + + # dependances +Paris.o: Paris.cxx Paris.h TParisData.o: TParisData.cxx TParisData.h +TParisPhysics.o: TParisPhysics.cxx TParisPhysics.h + ####################################### ############# Clean and More ########## diff --git a/NPLib/Paris/Paris.cxx b/NPLib/Paris/Paris.cxx new file mode 100644 index 000000000..8e0ab3914 --- /dev/null +++ b/NPLib/Paris/Paris.cxx @@ -0,0 +1,886 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 04/12/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class is mainly an interface to the * + * TParisPhysics class * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#include "Paris.h" + +// C++ headers +#include <iostream> +#include <fstream> +#include <string> +#include <cmath> +#include <stdlib.h> + +// NPL headers +#include "RootInput.h" +#include "RootOutput.h" + +// ROOT headers +#include "TChain.h" + +using namespace std ; + +// Default Constructor + +Paris::Paris() +{ + m_NumberOfModule = 0; + m_EventData = new TParisData(); + m_EventPhysics = new TParisPhysics(); +} + + + +Paris::~Paris() +{ + m_NumberOfModule = 0; + delete m_EventData; + delete m_EventPhysics; +} + + + +// Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token +void Paris::ReadConfiguration(string Path) +{ + ifstream ConfigFile ; + ConfigFile.open(Path.c_str()) ; + string LineBuffer ; + string DataBuffer ; + + // A:X1_Y1 --> X:1 Y:1 + // B:X128_Y1 --> X:128 Y:1 + // C:X1_Y128 --> X:1 Y:128 + // D:X128_Y128 --> X:128 Y:128 + + double Ax, Bx, Cx, Dx, Ay, By, Cy, Dy, Az, Bz, Cz, Dz; + TVector3 A, B, C, D; + double Theta = 0, Phi = 0, R = 0, beta_u = 0 , beta_v = 0 , beta_w = 0; + + bool check_A = false; + bool check_C = false; + bool check_B = false; + bool check_D = false; + + bool check_Theta = false; + bool check_Phi = false; + bool check_R = false; + bool check_beta = false; + + bool ReadingStatus = false; + + bool isCluster = false; + bool isPhoswich = false; + + while (!ConfigFile.eof()) { + getline(ConfigFile, LineBuffer); + + // If line is a Paris bloc, reading toggle to true + // and toggle to true flags indicating which shape is treated. + if (LineBuffer.compare(0, 12, "ParisCluster") == 0 || + LineBuffer.compare(0, 13, "ParisPhoswish") == 0 ) { + cout << "///////////////////////" << endl; + cout << "Module found:" << endl; + + if (LineBuffer.compare(0, 12, "ParisCluster") == 0) isCluster = true; + if (LineBuffer.compare(0, 13, "ParisPhoswich") == 0) isPhoswich = true; + ReadingStatus = true; + } + // Else don't toggle to Reading Block Status + else ReadingStatus = false; + + // Reading Block + while (ReadingStatus) { + if (isCluster) { // square shape + ConfigFile >> DataBuffer ; + // Comment Line + if (DataBuffer.compare(0, 1, "%") == 0) { + ConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n' ); + } + // Finding another telescope (safety), toggle out + else if (DataBuffer.compare(0, 12, "ParisCluster") == 0) { + cout << "WARNING: Another Module is find before standard sequence of Token, Error may occured in Telecope definition" << endl; + ReadingStatus = false; + } + + // Position method + else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { + check_A = true; + ConfigFile >> DataBuffer ; + Ax = atof(DataBuffer.c_str()) ; + Ax = Ax ; + ConfigFile >> DataBuffer ; + Ay = atof(DataBuffer.c_str()) ; + Ay = Ay ; + ConfigFile >> DataBuffer ; + Az = atof(DataBuffer.c_str()) ; + Az = Az ; + + A = TVector3(Ax, Ay, Az); + cout << "X1 Y1 corner position : (" << A.X() << ";" << A.Y() << ";" << A.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) { + check_B = true; + ConfigFile >> DataBuffer ; + Bx = atof(DataBuffer.c_str()) ; + Bx = Bx ; + ConfigFile >> DataBuffer ; + By = atof(DataBuffer.c_str()) ; + By = By ; + ConfigFile >> DataBuffer ; + Bz = atof(DataBuffer.c_str()) ; + Bz = Bz ; + + B = TVector3(Bx, By, Bz); + cout << "X128 Y1 corner position : (" << B.X() << ";" << B.Y() << ";" << B.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) { + check_C = true; + ConfigFile >> DataBuffer ; + Cx = atof(DataBuffer.c_str()) ; + Cx = Cx ; + ConfigFile >> DataBuffer ; + Cy = atof(DataBuffer.c_str()) ; + Cy = Cy ; + ConfigFile >> DataBuffer ; + Cz = atof(DataBuffer.c_str()) ; + Cz = Cz ; + + C = TVector3(Cx, Cy, Cz); + cout << "X1 Y128 corner position : (" << C.X() << ";" << C.Y() << ";" << C.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) { + check_D = true; + ConfigFile >> DataBuffer ; + Dx = atof(DataBuffer.c_str()) ; + Dx = Dx ; + ConfigFile >> DataBuffer ; + Dy = atof(DataBuffer.c_str()) ; + Dy = Dy ; + ConfigFile >> DataBuffer ; + Dz = atof(DataBuffer.c_str()) ; + Dz = Dz ; + + D = TVector3(Dx, Dy, Dz); + cout << "X128 Y128 corner position : (" << D.X() << ";" << D.Y() << ";" << D.Z() << ")" << endl; + } // End Position Method + + // Angle method + else if (DataBuffer.compare(0, 6, "THETA=") == 0) { + check_Theta = true; + ConfigFile >> DataBuffer ; + Theta = atof(DataBuffer.c_str()) ; + Theta = Theta ; + cout << "Theta: " << Theta << endl; + } + else if (DataBuffer.compare(0, 4, "PHI=") == 0) { + check_Phi = true; + ConfigFile >> DataBuffer ; + Phi = atof(DataBuffer.c_str()) ; + Phi = Phi ; + cout << "Phi: " << Phi << endl; + } + else if (DataBuffer.compare(0, 2, "R=") == 0) { + check_R = true; + ConfigFile >> DataBuffer ; + R = atof(DataBuffer.c_str()) ; + R = R ; + cout << "R: " << R << endl; + } + else if (DataBuffer.compare(0, 5, "BETA=") == 0) { + check_beta = true; + ConfigFile >> DataBuffer ; + beta_u = atof(DataBuffer.c_str()) ; + beta_u = beta_u ; + ConfigFile >> DataBuffer ; + beta_v = atof(DataBuffer.c_str()) ; + beta_v = beta_v ; + ConfigFile >> DataBuffer ; + beta_w = atof(DataBuffer.c_str()) ; + beta_w = beta_w ; + cout << "Beta: " << beta_u << " " << beta_v << " " << beta_w << endl ; + } + + ///////////////////////////////////////////////// + // If All necessary information there, toggle out + if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta) ) { + ReadingStatus = false; + + // Add The previously define telescope + // With position method + if ( check_A && check_B && check_C && check_D ) { + AddModuleSquare(A , + B , + C , + D ) ; + } + + // with angle method + else if ( check_Theta && check_Phi && check_R && check_beta ) { + AddModuleSquare(Theta , + Phi , + R , + beta_u , + beta_v , + beta_w ); + } + + // reset boolean flag for point positioning + check_A = false; + check_B = false; + check_C = false; + check_D = false; + + // reset boolean flag for angle positioning + check_Theta = false; + check_Phi = false; + check_R = false; + check_beta = false; + + // reset boolean flag for shape determination + isCluster = false; + isPhoswich = false; + } // end test for adding a module + } // end test for ParisCluster shape + + else if (isPhoswich) { // ParisPhoswich shape + ConfigFile >> DataBuffer ; + // Comment Line + if (DataBuffer.compare(0, 1, "%") == 0) { + ConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n' ); + } + // Finding another telescope (safety), toggle out + else if (DataBuffer.compare(0, 13, "ParisPhoswich") == 0) { + cout << "WARNING: Another Module is find before standard sequence of Token, Error may occured in Telecope definition" << endl; + ReadingStatus = false; + } + + // Position method + else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { + check_A = true; + ConfigFile >> DataBuffer ; + Ax = atof(DataBuffer.c_str()) ; + Ax = Ax ; + ConfigFile >> DataBuffer ; + Ay = atof(DataBuffer.c_str()) ; + Ay = Ay ; + ConfigFile >> DataBuffer ; + Az = atof(DataBuffer.c_str()) ; + Az = Az ; + + A = TVector3(Ax, Ay, Az); + cout << "X1 Y1 corner position : (" << A.X() << ";" << A.Y() << ";" << A.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) { + check_B = true; + ConfigFile >> DataBuffer ; + Bx = atof(DataBuffer.c_str()) ; + Bx = Bx ; + ConfigFile >> DataBuffer ; + By = atof(DataBuffer.c_str()) ; + By = By ; + ConfigFile >> DataBuffer ; + Bz = atof(DataBuffer.c_str()) ; + Bz = Bz ; + + B = TVector3(Bx, By, Bz); + cout << "X128 Y1 corner position : (" << B.X() << ";" << B.Y() << ";" << B.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) { + check_C = true; + ConfigFile >> DataBuffer ; + Cx = atof(DataBuffer.c_str()) ; + Cx = Cx ; + ConfigFile >> DataBuffer ; + Cy = atof(DataBuffer.c_str()) ; + Cy = Cy ; + ConfigFile >> DataBuffer ; + Cz = atof(DataBuffer.c_str()) ; + Cz = Cz ; + + C = TVector3(Cx, Cy, Cz); + cout << "X1 Y128 corner position : (" << C.X() << ";" << C.Y() << ";" << C.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) { + check_D = true; + ConfigFile >> DataBuffer ; + Dx = atof(DataBuffer.c_str()) ; + Dx = Dx ; + ConfigFile >> DataBuffer ; + Dy = atof(DataBuffer.c_str()) ; + Dy = Dy ; + ConfigFile >> DataBuffer ; + Dz = atof(DataBuffer.c_str()) ; + Dz = Dz ; + + D = TVector3(Dx, Dy, Dz); + cout << "X128 Y128 corner position : (" << D.X() << ";" << D.Y() << ";" << D.Z() << ")" << endl; + } // End Position Method + + // Angle method + else if (DataBuffer.compare(0, 6, "THETA=") == 0) { + check_Theta = true; + ConfigFile >> DataBuffer ; + Theta = atof(DataBuffer.c_str()) ; + Theta = Theta ; + cout << "Theta: " << Theta << endl; + } + else if (DataBuffer.compare(0, 4, "PHI=") == 0) { + check_Phi = true; + ConfigFile >> DataBuffer ; + Phi = atof(DataBuffer.c_str()) ; + Phi = Phi ; + cout << "Phi: " << Phi << endl; + } + else if (DataBuffer.compare(0, 2, "R=") == 0) { + check_R = true; + ConfigFile >> DataBuffer ; + R = atof(DataBuffer.c_str()) ; + R = R ; + cout << "R: " << R << endl; + } + else if (DataBuffer.compare(0, 5, "BETA=") == 0) { + check_beta = true; + ConfigFile >> DataBuffer ; + beta_u = atof(DataBuffer.c_str()) ; + beta_u = beta_u ; + ConfigFile >> DataBuffer ; + beta_v = atof(DataBuffer.c_str()) ; + beta_v = beta_v ; + ConfigFile >> DataBuffer ; + beta_w = atof(DataBuffer.c_str()) ; + beta_w = beta_w ; + cout << "Beta: " << beta_u << " " << beta_v << " " << beta_w << endl ; + } + + ///////////////////////////////////////////////// + // If All necessary information there, toggle out + if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta) ) { + ReadingStatus = false; + + // Add The previously define telescope + // With position method + if ( check_A && check_B && check_C && check_D ) { + AddModuleDummyShape(A , + B , + C , + D ) ; + } + + // with angle method + else if ( check_Theta && check_Phi && check_R && check_beta ) { + AddModuleDummyShape(Theta, + Phi, + R, + beta_u, + beta_v, + beta_w); + } + + // reset boolean flag for point positioning + check_A = false; + check_B = false; + check_C = false; + check_D = false; + + // reset boolean flag for angle positioning + check_Theta = false; + check_Phi = false; + check_R = false; + check_beta = false; + + // reset boolean flag for shape determination + isPhoswich = false; + isCluster = false; + } // end test for adding a module + } // end test for ParisPhoswich shape + + + } // end while for reading block + } // end while for reading file + + cout << endl << "/////////////////////////////" << endl<<endl; +} + + +// Read stream at Path and pick-up calibration parameter using Token +// If argument is "Simulation" no change calibration is loaded +void Paris::ReadCalibrationFile(string Path) +{ + // Order of Polynom function used for calibration + int Calibration_Si_E_Order; + int Calibration_Si_T_Order; + int Calibration_SiLi_E_Order; + int Calibration_CsI_E_Order; + + // Calibration_Si_X_E[DetectorNumber][StripNumber][Order of Coeff] + vector< vector< vector< double > > > Calibration_Si_X_E ; + vector< vector< vector< double > > > Calibration_Si_X_T ; + vector< vector< vector< double > > > Calibration_Si_Y_E ; + vector< vector< vector< double > > > Calibration_Si_Y_T ; + + // Calibration_SiLi_E[DetectorNumber][PadNumber][Order of Coeff] + vector< vector< vector< double > > > Calibration_SiLi_E ; + + // Calibration_SiLi_E[DetectorNumber][CrystalNumber][Order of Coeff] + vector< vector< vector< double > > > Calibration_CsI_E ; + + if (Path == "Simulation") { // Simulation case: data already calibrated + Calibration_Si_E_Order = 1; + Calibration_Si_T_Order = 1; + Calibration_SiLi_E_Order = 1; + Calibration_CsI_E_Order = 1; + + vector<double> Coef; + // Order 0 Order 1 + Coef.push_back(0) ; Coef.push_back(1) ; + + vector< vector<double> > StripLine ; + StripLine.resize( 128 , Coef) ; + + Calibration_Si_X_E.resize( m_NumberOfModule , StripLine) ; + Calibration_Si_X_T.resize( m_NumberOfModule , StripLine) ; + Calibration_Si_Y_E.resize( m_NumberOfModule , StripLine) ; + Calibration_Si_Y_T.resize( m_NumberOfModule , StripLine) ; + + Calibration_SiLi_E.resize( m_NumberOfModule , StripLine) ; + Calibration_CsI_E .resize( m_NumberOfModule , StripLine) ; + } + else { + } +} + + + +// Activated associated Branches and link it to the private member DetectorData address +// In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated +void Paris::InitializeRootInput() +{ + TChain* inputChain = RootInput::getInstance()->GetChain(); + inputChain->SetBranchStatus("PARIS", true); + inputChain->SetBranchStatus("fPARIS*", true); + inputChain->SetBranchAddress("PARIS", &m_EventData); +} + + + +// Create associated branches and associated private member DetectorPhysics address +void Paris::InitializeRootOutput() +{ + TTree* outputTree = RootOutput::getInstance()->GetTree(); + outputTree->Branch("PARIS", "TParisPhysics", &m_EventPhysics); +} + + + +// This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. +void Paris::BuildPhysicalEvent() +{ + m_EventPhysics -> BuildPhysicalEvent(m_EventData); +} + + + +// Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...). +// This method aimed to be used for analysis performed during experiment, when speed is requiered. +// NB: This method can eventually be the same as BuildPhysicalEvent. +void Paris::BuildSimplePhysicalEvent() +{ + m_EventPhysics -> BuildSimplePhysicalEvent(m_EventData); +} + + + +void Paris::AddModuleSquare(TVector3 C_X1_Y1, + TVector3 C_X128_Y1, + TVector3 C_X1_Y128, + TVector3 C_X128_Y128) +{ + m_NumberOfModule++; + + // remove warning using C_X128_Y128 + C_X128_Y128.Unit(); + + // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis) + TVector3 U = C_X128_Y1 - C_X1_Y1; + U = U.Unit(); + + // Vector V on Module Face (parallele to X Strip) + TVector3 V = C_X1_Y128 - C_X1_Y1; + V = V.Unit(); + + // Position Vector of Strip Center + TVector3 StripCenter = TVector3(0,0,0); + // Position Vector of X=1 Y=1 Strip + TVector3 Strip_1_1; + + // Geometry Parameter + double Face = 98; // mm + double NumberOfStrip = 128; + double StripPitch = Face/NumberOfStrip; // mm + + // Buffer object to fill Position Array + vector<double> lineX; + vector<double> lineY; + vector<double> lineZ; + + vector< vector< double > > OneModuleStripPositionX; + vector< vector< double > > OneModuleStripPositionY; + vector< vector< double > > OneModuleStripPositionZ; + + // Moving StripCenter to 1.1 corner: + Strip_1_1 = C_X1_Y1 + (U+V) * (StripPitch/2.); + + for (int i = 0; i < NumberOfStrip; i++) { + lineX.clear(); + lineY.clear(); + lineZ.clear(); + + for (int j = 0; j < NumberOfStrip; j++) { + StripCenter = Strip_1_1 + StripPitch*( i*U + j*V ); +// StripCenter += -TargetPosition; + + lineX.push_back( StripCenter.X() ); + lineY.push_back( StripCenter.Y() ); + lineZ.push_back( StripCenter.Z() ); + } + + OneModuleStripPositionX.push_back(lineX); + OneModuleStripPositionY.push_back(lineY); + OneModuleStripPositionZ.push_back(lineZ); + } + + m_StripPositionX.push_back( OneModuleStripPositionX ); + m_StripPositionY.push_back( OneModuleStripPositionY ); + m_StripPositionZ.push_back( OneModuleStripPositionZ ); +} + + + +void Paris::AddModuleSquare(double theta, + double phi, + double distance, + double beta_u, + double beta_v, + double beta_w) +{ + m_NumberOfModule++; + + // convert from degree to radian: + double Pi = 3.141592654; + theta = theta * Pi/180. ; + phi = phi * Pi/180. ; + + // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis) + TVector3 U ; + // Vector V on Module Face (parallele to X Strip) + TVector3 V ; + // Vector W normal to Module Face (pointing CsI) + TVector3 W ; + // Vector position of Module Face center + TVector3 C ; + + C = TVector3(distance * sin(theta) * cos(phi), + distance * sin(theta) * sin(phi), + distance * cos(theta)); + + TVector3 YperpC = TVector3( cos(theta) * cos(phi), + cos(theta) * sin(phi), + -sin(theta)); + + W = C.Unit(); + U = W.Cross(YperpC); + V = W.Cross(U); + + U = U.Unit(); + V = V.Unit(); + + U.Rotate( beta_u * Pi/180. , U ) ; + V.Rotate( beta_u * Pi/180. , U ) ; + + U.Rotate( beta_v * Pi/180. , V ) ; + V.Rotate( beta_v * Pi/180. , V ) ; + + U.Rotate( beta_w * Pi/180. , W ) ; + V.Rotate( beta_w * Pi/180. , W ) ; + + double Face = 98; // mm + double NumberOfStrip = 128; + double StripPitch = Face/NumberOfStrip; // mm + + vector<double> lineX; + vector<double> lineY; + vector<double> lineZ; + + vector< vector< double > > OneModuleStripPositionX; + vector< vector< double > > OneModuleStripPositionY; + vector< vector< double > > OneModuleStripPositionZ; + + double X, Y, Z; + + // Moving C to the 1.1 corner: + C.SetX( C.X() - ( Face/2 - StripPitch/2 ) * ( V.X() + U.X() ) ) ; + C.SetY( C.Y() - ( Face/2 - StripPitch/2 ) * ( V.Y() + U.Y() ) ) ; + C.SetZ( C.Z() - ( Face/2 - StripPitch/2 ) * ( V.Z() + U.Z() ) ) ; + + for (int i = 0; i < NumberOfStrip; i++) { + lineX.clear(); + lineY.clear(); + lineZ.clear(); + + for (int j = 0; j < NumberOfStrip; j++) { + X = C.X() + StripPitch * ( U.X()*i + V.X()*j ); + Y = C.Y() + StripPitch * ( U.Y()*i + V.Y()*j ); + Z = C.Z() + StripPitch * ( U.Z()*i + V.Z()*j ); + + lineX.push_back(X); + lineY.push_back(Y); + lineZ.push_back(Z); + } + + OneModuleStripPositionX.push_back(lineX); + OneModuleStripPositionY.push_back(lineY); + OneModuleStripPositionZ.push_back(lineZ); + } + + m_StripPositionX.push_back( OneModuleStripPositionX ); + m_StripPositionY.push_back( OneModuleStripPositionY ); + m_StripPositionZ.push_back( OneModuleStripPositionZ ); +} + + + +void Paris::AddModuleDummyShape(TVector3 C_X1_Y1, + TVector3 C_X128_Y1, + TVector3 C_X1_Y128, + TVector3 C_X128_Y128) +{ + m_NumberOfModule++; + + // remove warning using C_X128_Y128 + C_X128_Y128.Unit(); + + // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis) + TVector3 U = C_X128_Y1 - C_X1_Y1; + U = U.Unit(); + + // Vector V on Module Face (parallele to X Strip) + TVector3 V = C_X1_Y128 - C_X1_Y1; + V = V.Unit(); + + // Position Vector of Strip Center + TVector3 StripCenter = TVector3(0,0,0); + // Position Vector of X=1 Y=1 Strip + TVector3 Strip_1_1; + + // Geometry Parameter + double Face = 50; // mm + double NumberOfStrip = 128; + double StripPitch = Face/NumberOfStrip; // mm + + // Buffer object to fill Position Array + vector<double> lineX; + vector<double> lineY; + vector<double> lineZ; + + vector< vector< double > > OneModuleStripPositionX; + vector< vector< double > > OneModuleStripPositionY; + vector< vector< double > > OneModuleStripPositionZ; + + // Moving StripCenter to 1.1 corner: + Strip_1_1 = C_X1_Y1 + (U+V) * (StripPitch/2.); + + for (int i = 0; i < NumberOfStrip; i++) { + lineX.clear(); + lineY.clear(); + lineZ.clear(); + + for (int j = 0; j < NumberOfStrip; j++) { + StripCenter = Strip_1_1 + StripPitch*( i*U + j*V ); +// StripCenter += -TargetPosition; + + lineX.push_back( StripCenter.X() ); + lineY.push_back( StripCenter.Y() ); + lineZ.push_back( StripCenter.Z() ); + } + + OneModuleStripPositionX.push_back(lineX); + OneModuleStripPositionY.push_back(lineY); + OneModuleStripPositionZ.push_back(lineZ); + } + + m_StripPositionX.push_back( OneModuleStripPositionX ); + m_StripPositionY.push_back( OneModuleStripPositionY ); + m_StripPositionZ.push_back( OneModuleStripPositionZ ); +} + + + +void Paris::AddModuleDummyShape(double theta, + double phi, + double distance, + double beta_u, + double beta_v, + double beta_w) +{ + m_NumberOfModule++; + + // convert from degree to radian: + double Pi = 3.141592654; + theta = theta * Pi/180. ; + phi = phi * Pi/180. ; + + // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis) + TVector3 U ; + // Vector V on Module Face (parallele to X Strip) + TVector3 V ; + // Vector W normal to Module Face (pointing CsI) + TVector3 W ; + // Vector position of Module Face center + TVector3 C ; + + C = TVector3(distance * sin(theta) * cos(phi), + distance * sin(theta) * sin(phi), + distance * cos(theta)); + + TVector3 YperpW = TVector3( cos(theta) * cos(phi), + cos(theta) * sin(phi), + -sin(theta)); + + W = C.Unit(); + U = W.Cross(YperpW); + V = W.Cross(U); + + U = U.Unit(); + V = V.Unit(); + + U.Rotate( beta_u * Pi/180. , U ) ; + V.Rotate( beta_u * Pi/180. , U ) ; + + U.Rotate( beta_v * Pi/180. , V ) ; + V.Rotate( beta_v * Pi/180. , V ) ; + + U.Rotate( beta_w * Pi/180. , W ) ; + V.Rotate( beta_w * Pi/180. , W ) ; + + double Face = 50; // mm + double NumberOfStrip = 25; + double StripPitch = Face/NumberOfStrip; // mm + + vector<double> lineX; + vector<double> lineY; + vector<double> lineZ; + + vector< vector< double > > OneModuleStripPositionX; + vector< vector< double > > OneModuleStripPositionY; + vector< vector< double > > OneModuleStripPositionZ; + + double X, Y, Z; + + // Moving C to the 1.1 corner: + C.SetX( C.X() - ( Face/2 - StripPitch/2 ) * ( V.X() + U.X() ) ) ; + C.SetY( C.Y() - ( Face/2 - StripPitch/2 ) * ( V.Y() + U.Y() ) ) ; + C.SetZ( C.Z() - ( Face/2 - StripPitch/2 ) * ( V.Z() + U.Z() ) ) ; + + for (int i = 0; i < NumberOfStrip; i++) { + lineX.clear(); + lineY.clear(); + lineZ.clear(); + + for (int j = 0; j < NumberOfStrip; j++) { + X = C.X() + StripPitch * ( U.X()*i + V.X()*j ); + Y = C.Y() + StripPitch * ( U.Y()*i + V.Y()*j ); + Z = C.Z() + StripPitch * ( U.Z()*i + V.Z()*j ); + + lineX.push_back(X); + lineY.push_back(Y); + lineZ.push_back(Z); + } + + OneModuleStripPositionX.push_back(lineX); + OneModuleStripPositionY.push_back(lineY); + OneModuleStripPositionZ.push_back(lineZ); + } + + m_StripPositionX.push_back( OneModuleStripPositionX ); + m_StripPositionY.push_back( OneModuleStripPositionY ); + m_StripPositionZ.push_back( OneModuleStripPositionZ ); +} + + + +double Paris::GetEnergyDeposit() +{ + if (m_EventPhysics->ParisTotalEnergy.size() > 0) + return m_EventPhysics->ParisTotalEnergy[0]; + else + return -1000; +} + +double Paris::GetEnergyInDeposit() // inner Layer +{ + if (m_EventPhysics->ParisInTotalEnergy.size() > 0) + return m_EventPhysics->ParisInTotalEnergy[0]; + else + return -1000; +} + +double Paris::GetEnergyOutDeposit() // Outer Layer +{ + if (m_EventPhysics->ParisOutTotalEnergy.size() > 0) + return m_EventPhysics->ParisOutTotalEnergy[0]; + else + return -1000; +} + + +TVector3 Paris::GetPositionOfInteraction() +{ + TVector3 Position = TVector3(-1000,-1000,-1000); + + /* if (m_EventPhysics->ModuleNumber.size() == 1) { + Position = TVector3(GetStripPositionX(m_EventPhysics->ModuleNumber[0], m_EventPhysics->FirstStage_X[0], m_EventPhysics->FirstStage_Y[0]), + GetStripPositionY(m_EventPhysics->ModuleNumber[0], m_EventPhysics->FirstStage_X[0], m_EventPhysics->FirstStage_Y[0]), + GetStripPositionZ(m_EventPhysics->ModuleNumber[0], m_EventPhysics->FirstStage_X[0], m_EventPhysics->FirstStage_Y[0])); + }*/ + + return(Position); +} + + + +void Paris::Print() +{ + cout << "Number of Modules: " << m_NumberOfModule << endl; + + for (int f = 0; f < m_NumberOfModule; f++) { + cout << "Module " << f+1 << endl; + + for (int i = 0; i < 128; i++) { + for (int j = 0; j < 128; j++) { + cout << i+1 << " "<< j+1 << " " + << m_StripPositionX[f][i][j] << " " + << m_StripPositionY[f][i][j] << " " + << m_StripPositionZ[f][i][j] << " " + << endl ; + } + } + } +} diff --git a/NPLib/Paris/Paris.h b/NPLib/Paris/Paris.h new file mode 100644 index 000000000..cae59358b --- /dev/null +++ b/NPLib/Paris/Paris.h @@ -0,0 +1,139 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 04/12/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class is mainly an interface to the * + * TParisPhysics class * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef Paris_H + +// NPL +#include "../include/VDetector.h" +#include "TParisData.h" +#include "TParisPhysics.h" + +// Root +#include "TVector3.h" + +class Paris : public NPA::VDetector +{ +public: + Paris(); + virtual ~Paris(); + +public: + ///////////////////////////////////// + // Innherited from VDetector Class // + ///////////////////////////////////// + // Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token + void ReadConfiguration(string); + + // Read stream at CalibFile and pick-up calibration parameter using Token + // If argument is "Simulation" no change calibration is loaded + void ReadCalibrationFile(string); + + // Activated associated Branches and link it to the private member DetectorData address + // In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated + void InitializeRootInput(); + + // Create associated branches and associated private member DetectorPhysics address + void InitializeRootOutput(); + + // This method is called at each event read from the Input Tree. + // The aim is to build treat Raw dat in order to extract physical parameter. + void BuildPhysicalEvent(); + + // Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...). + // This method aimed to be used for analysis performed during experiment, when speed is requiered. + // NB: This method can eventually be the same as BuildPhysicalEvent. + void BuildSimplePhysicalEvent(); + + // Those two method all to clear the Event Physics or Data + void ClearEventPhysics() {m_EventPhysics->Clear();} + void ClearEventData() {m_EventData->Clear();} + + +public: + //////////////////////////////// + // Specific to Paris // + //////////////////////////////// + // Case of a Square module + // Add a Module using Corner Coordinate information + void AddModuleSquare(TVector3 C_X1_Y1, + TVector3 C_X128_Y1, + TVector3 C_X1_Y128, + TVector3 C_X128_Y128); + + // Add a Module using R Theta Phi of Si center information + void AddModuleSquare(double theta, + double phi, + double distance, + double beta_u, + double beta_v, + double beta_w); + + // Case of a DummyShape module + // Add a Module using Corner Coordinate information + void AddModuleDummyShape(TVector3 C_X1_Y1, + TVector3 C_X128_Y1, + TVector3 C_X1_Y128, + TVector3 C_X128_Y128); + + // Add a Module using R Theta Phi of Si center information + void AddModuleDummyShape(double theta, + double phi, + double distance, + double beta_u, + double beta_v, + double beta_w); + + // Getters to retrieve the (X,Y,Z) coordinates of a pixel defined by strips (X,Y) + double GetStripPositionX(int N ,int X ,int Y) { return m_StripPositionX[N-1][X-1][Y-1]; } + double GetStripPositionY(int N ,int X ,int Y) { return m_StripPositionY[N-1][X-1][Y-1]; } + double GetStripPositionZ(int N ,int X ,int Y) { return m_StripPositionZ[N-1][X-1][Y-1]; } + double GetNumberOfModule() { return m_NumberOfModule; } + + // Get Root input and output objects + TParisData* GetEventData() {return m_EventData;} + TParisPhysics* GetEventPhysics() {return m_EventPhysics;} + + // To be called after a build Physical Event + double GetEnergyDeposit(); + double GetEnergyInDeposit(); + double GetEnergyOutDeposit(); + TVector3 GetPositionOfInteraction(); + + void Print(); + + +private: + //////////////////////////////////////// + // Root Input and Output tree classes // + //////////////////////////////////////// + TParisData* m_EventData; + TParisPhysics* m_EventPhysics; + + +private: + // Spatial Position of Strip Calculated on basis of detector position + int m_NumberOfModule; + vector< vector < vector < double > > > m_StripPositionX; + vector< vector < vector < double > > > m_StripPositionY; + vector< vector < vector < double > > > m_StripPositionZ; +}; + +#endif diff --git a/NPLib/Paris/TParisData.cxx b/NPLib/Paris/TParisData.cxx index 62e4b2f3a..3e9bf9c03 100644 --- a/NPLib/Paris/TParisData.cxx +++ b/NPLib/Paris/TParisData.cxx @@ -8,7 +8,7 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * * * * Creation Date : 04/12/2009 * * Last update : * @@ -26,6 +26,8 @@ ClassImp(TParisData) TParisData::TParisData() { + // Default constructor + Clear(); } @@ -38,9 +40,36 @@ TParisData::~TParisData() void TParisData::Clear() { + + /* fParis_Energy.clear(); fParis_Number.clear(); fParis_Time.clear(); + */ + + + fPARIS_LaBr3Stage_E_DetectorNbr.clear(); + fPARIS_LaBr3Stage_E_CrystalNbr.clear(); + fPARIS_LaBr3Stage_E_Energy.clear(); + fPARIS_LaBr3Stage_Eff_phpeak.clear(); + // Time + fPARIS_LaBr3Stage_T_DetectorNbr.clear(); + fPARIS_LaBr3Stage_T_CrystalNbr.clear(); + fPARIS_LaBr3Stage_T_Time.clear(); + + + // Second Stage CsI + // CsI + // Energy + fPARIS_CsIStage_E_DetectorNbr.clear(); + fPARIS_CsIStage_E_CrystalNbr.clear(); + fPARIS_CsIStage_E_Energy.clear(); + fPARIS_CsIStage_Eff_phpeak.clear(); + // Time + fPARIS_CsIStage_T_DetectorNbr.clear(); + fPARIS_CsIStage_T_CrystalNbr.clear(); + fPARIS_CsIStage_T_Time.clear(); + } @@ -48,8 +77,29 @@ void TParisData::Clear() void TParisData::Dump() const { cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl; - + /* for (unsigned short i = 0; i<fParis_Energy.size(); i ++) { cout << "Paris Number " << fParis_Number[i] << " Energy: " << fParis_Energy[i] << " Time: "<< fParis_Time[i] << endl; } + */ + + for (UShort_t i = 0; i < fPARIS_LaBr3Stage_E_DetectorNbr.size(); i++) + cout << "DetNbr: " << fPARIS_LaBr3Stage_E_DetectorNbr[i] << " Crystal: " << fPARIS_LaBr3Stage_E_CrystalNbr[i] << " Energy: " << fPARIS_LaBr3Stage_E_Energy[i] << endl; + // (X,T) + cout << "PARIS_LaBr3Stage_T_Mult = " << fPARIS_LaBr3Stage_T_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fPARIS_LaBr3Stage_T_DetectorNbr.size(); i++) + cout << "DetNbr: " << fPARIS_LaBr3Stage_T_DetectorNbr[i] << " Crystal: " << fPARIS_LaBr3Stage_T_CrystalNbr[i] << " Time: " << fPARIS_LaBr3Stage_T_Time[i] << endl; + + // Second Stage + // Energy + cout << "PARIS_CsIStage_E_Mult = " << fPARIS_CsIStage_E_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fPARIS_CsIStage_E_DetectorNbr.size(); i++) + cout << "Det: " << fPARIS_CsIStage_E_DetectorNbr[i] << " Crystal: " << fPARIS_CsIStage_E_CrystalNbr[i] << " Energy: " << fPARIS_CsIStage_E_Energy[i] << endl; + // Time + cout << "PARIS_CsIStage_T_Mult = " << fPARIS_CsIStage_T_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fPARIS_CsIStage_T_DetectorNbr.size(); i++) + cout << "Det: " << fPARIS_CsIStage_T_DetectorNbr[i] << " Crystal: " << fPARIS_CsIStage_T_CrystalNbr[i] << " Time: " << fPARIS_CsIStage_T_Time[i] << endl; + + + } diff --git a/NPLib/Paris/TParisData.h b/NPLib/Paris/TParisData.h index 068eda2b9..4d43088ec 100644 --- a/NPLib/Paris/TParisData.h +++ b/NPLib/Paris/TParisData.h @@ -8,7 +8,7 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * * * * Creation Date : 04/12/2009 * * Last update : * @@ -28,11 +28,40 @@ using namespace std ; class TParisData : public TObject { + + protected: + // First Stage LaBr + // LaBr3 + // Energy + vector<UShort_t> fPARIS_LaBr3Stage_E_DetectorNbr; + vector<UShort_t> fPARIS_LaBr3Stage_E_CrystalNbr; + vector<Double_t> fPARIS_LaBr3Stage_E_Energy; + vector<Double_t> fPARIS_LaBr3Stage_Eff_phpeak; + // Time + vector<UShort_t> fPARIS_LaBr3Stage_T_DetectorNbr; + vector<UShort_t> fPARIS_LaBr3Stage_T_CrystalNbr; + vector<Double_t> fPARIS_LaBr3Stage_T_Time; + + + // Second Stage CsI + // CsI + // Energy + vector<UShort_t> fPARIS_CsIStage_E_DetectorNbr; + vector<UShort_t> fPARIS_CsIStage_E_CrystalNbr; + vector<Double_t> fPARIS_CsIStage_E_Energy; + vector<Double_t> fPARIS_CsIStage_Eff_phpeak; + // Time + vector<UShort_t> fPARIS_CsIStage_T_DetectorNbr; + vector<UShort_t> fPARIS_CsIStage_T_CrystalNbr; + vector<Double_t> fPARIS_CsIStage_T_Time; + + /* private: vector<double> fParis_Energy; vector<double> fParis_Time; vector<short> fParis_Number; - + */ + public: TParisData(); virtual ~TParisData(); @@ -42,27 +71,157 @@ class TParisData : public TObject { void Dump() const; ///////////////////// GETTERS //////////////////////// + + // + // First stage + // // (E) - double GetEnergy(int i) {return fParis_Energy[i];} - // (T) - double GetTime(int i) {return fParis_Time[i];} - // (N) - int GetParisNumber(int i) {return fParis_Number[i];} + UShort_t GetPARISLaBr3StageEMult() { + return fPARIS_LaBr3Stage_E_DetectorNbr.size(); // TODO: Maybe change to CrystalNbr for multiplicity + } + UShort_t GetPARISLaBr3StageEDetectorNbr(Int_t i) { + return fPARIS_LaBr3Stage_E_DetectorNbr.at(i); + } + UShort_t GetPARISLaBr3StageECrystalNbr(Int_t i) { + return fPARIS_LaBr3Stage_E_CrystalNbr.at(i); + } + Double_t GetPARISLaBr3StageEEnergy(Int_t i) { + return fPARIS_LaBr3Stage_E_Energy.at(i); + } + Double_t GetPARISLaBr3StageEffphpeak(Int_t i) { + return fPARIS_LaBr3Stage_Eff_phpeak.at(i); + } + + // (T) + UShort_t GetPARISLaBr3StageTMult() { + return fPARIS_LaBr3Stage_E_DetectorNbr.size(); + } + UShort_t GetPARISLaBr3StageTDetectorNbr(Int_t i) { + return fPARIS_LaBr3Stage_T_DetectorNbr.at(i); + } + UShort_t GetPARISLaBr3StageTCrystalNbr(Int_t i) { + return fPARIS_LaBr3Stage_T_CrystalNbr.at(i); + } + Double_t GetPARISLaBr3StageTTime(Int_t i) { + return fPARIS_LaBr3Stage_T_Time.at(i); + } + + // + // Second stage (CsI + // + // (E) + UShort_t GetPARISCsIStageEMult() { + return fPARIS_CsIStage_E_DetectorNbr.size(); + } + UShort_t GetPARISCsIStageEDetectorNbr(Int_t i) { + return fPARIS_CsIStage_E_DetectorNbr.at(i); + } + UShort_t GetPARISCsIStageECrystalNbr(Int_t i) { + return fPARIS_CsIStage_E_CrystalNbr.at(i); + } + Double_t GetPARISCsIStageEEnergy(Int_t i) { + return fPARIS_CsIStage_E_Energy.at(i); + } + Double_t GetPARISCsIStageEffphpeak(Int_t i) { + return fPARIS_CsIStage_Eff_phpeak.at(i); + } + // (T) + UShort_t GetPARISCsIStageTMult() { + return fPARIS_CsIStage_E_DetectorNbr.size(); + } + UShort_t GetPARISCsIStageTDetectorNbr(Int_t i) { + return fPARIS_CsIStage_T_DetectorNbr.at(i); + } + UShort_t GetPARISCsIStageTCrystalNbr(Int_t i) { + return fPARIS_CsIStage_T_CrystalNbr.at(i); + } + Double_t GetPARISCsIStageTTime(Int_t i) { + return fPARIS_CsIStage_T_Time.at(i); + } + + /* + // (E) + //double GetEnergy(int i) {return fParis_Energy[i];} + // (T) + //double GetTime(int i) {return fParis_Time[i];} + // (N) + int GetParisNumber(int i) {return fParis_Number[i];} double GetEnergySize() {return fParis_Energy.size();} // (T) double GetTimeSize() {return fParis_Time.size();} // (N) int GetParisNumberSize() {return fParis_Number.size();} - + */ ///////////////////// SETTERS //////////////////////// + + // + // First stage + // + // (E) + + void SetPARISLaBr3StageEDetectorNbr(UShort_t DetNbr) { + fPARIS_LaBr3Stage_E_DetectorNbr.push_back(DetNbr); + } + void SetPARISLaBr3StageECrystalNbr(UShort_t CrystalNbr) { + fPARIS_LaBr3Stage_E_CrystalNbr.push_back(CrystalNbr); + } + void SetPARISLaBr3StageEEnergy(Double_t Energy) { + fPARIS_LaBr3Stage_E_Energy.push_back(Energy); + } + void SetPARISLaBr3StageEffphpeak(Double_t Energy) { + fPARIS_LaBr3Stage_Eff_phpeak.push_back(Energy); + } + + + // (T) + void SetPARISLaBr3StageTDetectorNbr(UShort_t DetNbr) { + fPARIS_LaBr3Stage_T_DetectorNbr.push_back(DetNbr); + } + void SetPARISLaBr3StageTCrystalNbr(UShort_t CrystalNbr) { + fPARIS_LaBr3Stage_T_CrystalNbr.push_back(CrystalNbr); + } + void SetPARISLaBr3StageTTime(Double_t Time) { + fPARIS_LaBr3Stage_T_Time.push_back(Time); + } + + // + // Second stage (CsI + // + // (E) + void SetPARISCsIStageEDetectorNbr(UShort_t DetNbr) { + fPARIS_CsIStage_E_DetectorNbr.push_back(DetNbr); + } + void SetPARISCsIStageECrystalNbr(UShort_t CrystalNbr) { + fPARIS_CsIStage_E_CrystalNbr.push_back(CrystalNbr); + } + void SetPARISCsIStageEEnergy(Double_t Energy) { + fPARIS_CsIStage_E_Energy.push_back(Energy); + } + void SetPARISCsIStageEffphpeak(Double_t Energy) { + fPARIS_CsIStage_Eff_phpeak.push_back(Energy); + } + + // (T) + void SetPARISCsIStageTDetectorNbr(UShort_t DetNbr) { + fPARIS_CsIStage_T_DetectorNbr.push_back(DetNbr); + } + void SetPARISCsIStageTCrystalNbr(UShort_t CrystalNbr) { + fPARIS_CsIStage_T_CrystalNbr.push_back(CrystalNbr); + } + void SetPARISCsIStageTTime(Double_t Time) { + fPARIS_CsIStage_T_Time.push_back(Time); + } + + + /* // (E) void SetEnergy(double E) {fParis_Energy.push_back(E);} void SetTime(double T) {fParis_Time.push_back(T);} void SetParisNumber(int N) {fParis_Number.push_back(N);} - + */ ClassDef(TParisData,1) // ParisData structure }; diff --git a/NPLib/Paris/TParisPhysics.cxx b/NPLib/Paris/TParisPhysics.cxx new file mode 100644 index 000000000..6b744557c --- /dev/null +++ b/NPLib/Paris/TParisPhysics.cxx @@ -0,0 +1,146 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 04/12/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class stores the physical results after NPAnalysis is run* + * for the PARIS detector. * + * This class derives from TObject (ROOT) and its aim is to be * + * stored in the output TTree of NPAnalysis. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#include "TParisPhysics.h" +#include <vector> +#include <iostream> +#include <cstdlib> + + +ClassImp(TParisPhysics) + + +TParisPhysics::TParisPhysics() +{ + //EventMultiplicity = 0; +} + + + +TParisPhysics::~TParisPhysics() +{ + Clear(); +} + + + +void TParisPhysics::BuildSimplePhysicalEvent(TParisData* Data) +{ + BuildPhysicalEvent(Data); +} + + + +void TParisPhysics::BuildPhysicalEvent(TParisData* Data) +{ + + int multLaBrE = Data->GetPARISLaBr3StageEMult(); + int multCsIE = Data->GetPARISCsIStageEMult(); + + //cout << "multLaBr= " << multLaBrE << endl; + //cout << "multCsI= " << multCsIE << endl; + + ParisEventMult=multLaBrE+multCsIE; + // get energy from strips and store it + if(ParisEventMult>=1) + { + + double EnergyTot=0.; + + if(multLaBrE>=1){ + //cout << "cava1b" <<endl; + //cout << Data->GetPARISLaBr3StageEEnergy(0) <<endl; + //cout << "cava1b" <<endl; + + double EnergyStripFront; + double EnergyStrip; + + for(int j=0;j<multLaBrE;j++) + { + EnergyStripFront= Data->GetPARISLaBr3StageEEnergy(j); + + EnergyStrip = EnergyStripFront; + ParisLaBr_E.push_back(EnergyStrip); + + EnergyTot += EnergyStrip; + //cout << "Energytot LaBr=" << EnergyTot << endl; + } + + // Fill total energy in inner shell + ParisInTotalEnergy.push_back(EnergyTot); + } + + if(multCsIE>=1){ + double EnergySecond; + double EnergyTotSecond; + for(int j=0;j<multCsIE;j++) + { + EnergySecond = Data->GetPARISCsIStageEEnergy(j); + ParisCsI_E.push_back(EnergySecond); + EnergyTotSecond +=EnergySecond; + + EnergyTot += EnergySecond; + //cout << "Energy CsI=" << EnergySecond << endl; + //cout << "Energytot CsI=" << EnergyTot << endl; + } + + // Fill total energy in outter shell + ParisOutTotalEnergy.push_back(EnergyTotSecond); + + } + + // Fill total energy + ParisTotalEnergy.push_back(EnergyTot); + } +} + + + +void TParisPhysics::Clear() +{ + //EventMultiplicity= 0; + ParisEventMult= 0; + //ModuleNumber.clear(); + //EventType.clear(); + ParisInTotalEnergy.clear(); // inner shell + ParisOutTotalEnergy.clear(); // outter shell + ParisTotalEnergy.clear(); + + // LaBr + ParisLaBr_E.clear(); + //FirstStage_T.clear(); + //FirstStage_X.clear(); + //FirstStage_Y.clear(); + + // CsI + ParisCsI_E.clear(); + //SecondStage_T.clear(); + //SecondStage_N.clear(); + + /* + // CsI + ThirdStage_E.clear(); + ThirdStage_T.clear(); + ThirdStage_N.clear(); + */ +} diff --git a/NPLib/Paris/TParisPhysics.h b/NPLib/Paris/TParisPhysics.h new file mode 100644 index 000000000..9a7159949 --- /dev/null +++ b/NPLib/Paris/TParisPhysics.h @@ -0,0 +1,82 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 04/12/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class stores the physical results after NPAnalysis is run* + * for the PARIS detector. * + * This class derives from TObject (ROOT) and its aim is to be * + * stored in the output TTree of NPAnalysis. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef TPARISPHYSICS_H +#define TPARISPHYSICS_H + +#include <vector> +#include "TObject.h" +#include "TParisData.h" +#include <cstdlib> + +using namespace std ; + +class TParisPhysics : public TObject +{ +public: + TParisPhysics(); + ~TParisPhysics(); + +public: + void Clear(); + void Clear(const Option_t*) {}; + void BuildPhysicalEvent(TParisData* Data); + void BuildSimplePhysicalEvent(TParisData* Data); + +public: + // Provide Physical Multiplicity + Int_t ParisEventMult; + + // Provide a Classification of Event + //vector<int> EventType; + + // Telescope + //vector<int> ModuleNumber; + + // FirstStage + vector<double> ParisLaBr_E; + //vector<double> FirstStage_T; + //vector<int> FirstStage_X; + //vector<int> FirstStage_Y; + + // SecondStage + vector<double> ParisCsI_E; + //vector<double> SecondStage_T; + //vector<int> SecondStage_N; + + /* + // ThirdStage + vector<double> ThirdStage_E; + vector<double> ThirdStage_T; + vector<int> ThirdStage_N; + */ + + // Physical Value + vector<double> ParisTotalEnergy; + vector<double> ParisInTotalEnergy; + vector<double> ParisOutTotalEnergy; + + ClassDef(TParisPhysics,1) // GaspardTrackerPHysics structure +}; + +#endif diff --git a/NPLib/README b/NPLib/README index d4f5febb9..cca2d1981 100644 --- a/NPLib/README +++ b/NPLib/README @@ -9,14 +9,14 @@ * Original Author: N. de Sereville contact address: deserevi@ipno.in2p3.fr * * * * Creation Date : 01/09/09 * - * Last update : * + * Last update : 17/09/10 * *---------------------------------------------------------------------------* * Decription: * * This file describes the content of the NPLib directory * *---------------------------------------------------------------------------* * Comment: * - * * - * * + * 01/09/10: added Shield of PARIS * + * 04/12/09: added PARIS array * *****************************************************************************/ This directory contains a set of libraries which are used both in the @@ -33,6 +33,7 @@ NPLib / include / AnnularS1 / GASPARD / Paris + / Shield / VDetector A description of each directory follows. @@ -119,11 +120,27 @@ XI) GASPARD obtained from NPSimulation. This library is *only* used by NPAnalysis. XII) Paris - This directory includes one library: + This directory includes tow library: libParisData.so - This library stores the results of the G4 simulation for the Paris detector. + libParisPhysics.so + libParisData.so + This library stores the results of the G4 simulation for the Paris detector. + libParisPhysics.so + This library deals with the treatment applied to the ROOT output file + obtained from NPSimulation. This library is *only* used by NPAnalysis. + + +XIII) Shield + This directory includes two library: + libShieldData.so + libShieldPhysics.so + libShieldData.so + This library stores the results of the G4 simulation for the Shield of PARIS. + libShieldPhysics.so + This library deals with the treatment applied to the ROOT output file + obtained from NPSimulation. This library is *only* used by NPAnalysis. -XIII) VDetector +XIV) VDetector This directory includes two libraries: libVDetector.so libDetectorManager.so diff --git a/NPLib/Shield/Makefile b/NPLib/Shield/Makefile new file mode 100644 index 000000000..d89a5d789 --- /dev/null +++ b/NPLib/Shield/Makefile @@ -0,0 +1,313 @@ +# Makefile for the ROOT test programs. +# This Makefile shows nicely how to compile and link applications +# using the ROOT libraries on all supported platforms. +# +# Copyright (c) 2000 Rene Brun and Fons Rademakers +# +# Author: Fons Rademakers, 29/2/2000 + +ROOTCONFIG := root-config + +ARCH := $(shell $(ROOTCONFIG) --arch) +PLATFORM := $(shell $(ROOTCONFIG) --platform) +ALTCC := $(shell $(ROOTCONFIG) --cc) +ALTCXX := $(shell $(ROOTCONFIG) --cxx) +ALTF77 := $(shell $(ROOTCONFIG) --f77) +ALTLD := $(shell $(ROOTCONFIG) --ld) + +#CXX = +ObjSuf = o +SrcSuf = cxx +ExeSuf = +DllSuf = so +OutPutOpt = -o # keep whitespace after "-o" + +ifeq (debug,$(findstring debug,$(ROOTBUILD))) +OPT = -g +OPT2 = -g +else +ifneq ($(findstring debug, $(strip $(shell $(ROOTCONFIG) --config))),) +OPT = -g +OPT2 = -g +else +OPT = -O +OPT2 = -O2 +endif +endif + +ROOTCFLAGS := $(shell $(ROOTCONFIG) --cflags) +ROOTLDFLAGS := $(shell $(ROOTCONFIG) --ldflags) +ROOTLIBS := $(shell $(ROOTCONFIG) --libs) +ROOTGLIBS := $(shell $(ROOTCONFIG) --glibs) +HASTHREAD := $(shell $(ROOTCONFIG) --has-thread) +ROOTDICTTYPE := $(shell $(ROOTCONFIG) --dicttype) +NOSTUBS := $(shell $(ROOTCONFIG) --nostubs) +ROOTCINT := rootcint + +ifeq ($(ARCH),linux) +# Linux with egcs, gcc 2.9x, gcc 3.x +CXX = g++ +CXXFLAGS = $(OPT2) -Wall -fPIC +LD = g++ +LDFLAGS = $(OPT2) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxkcc) +# Linux with the KAI compiler +CXX = KCC --one_instantiation_per_object +CXXFLAGS = $(OPT) -fPIC +K0 +LD = KCC +LDFLAGS = $(OPT) $(shell $(ROOTCONFIG) --cflags) +SOFLAGS = +endif + +ifeq ($(ARCH),linuxicc) +# Linux with Intel icc compiler +ICC_MAJOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \ + cut -d'.' -f1) +ICC_MINOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \ + cut -d'.' -f2) +CXX = icc +CXXFLAGS = $(OPT) -fPIC -wd1476 +LD = icpc +LDFLAGS = $(OPT) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxppcgcc) +# PPC Linux with gcc and glibc +CXX = g++ +CXXFLAGS = $(OPT2) -Wall -fPIC +LD = g++ +LDFLAGS = $(OPT2) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxia64gcc) +# Itanium Linux with gcc 2.9x +CXX = g++ +CXXFLAGS = $(OPT2) -Wall -fPIC +LD = g++ +LDFLAGS = $(OPT2) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxia64sgi) +# Itanium Linux with sgiCC +CXX = sgiCC +CXXFLAGS = $(OPT) -Wall -fPIC +LD = gsgiCC +LDFLAGS = $(OPT) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxia64ecc) +# Itanium Linux with Intel icc (was ecc) +ICC_MAJOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \ + cut -d'.' -f1) +ICC_MINOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \ + cut -d'.' -f2) +CXX = icc +CXXFLAGS = $(OPT) -fPIC -wd1476 -ftz +LD = icpc +LDFLAGS = $(OPT) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxx8664gcc) +# AMD Opteron and Intel EM64T (64 bit mode) Linux with gcc 3.x +CXX = g++ +CXXFLAGS = $(OPT2) -Wall -fPIC +LD = g++ +LDFLAGS = $(OPT2) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxppc64gcc) +# PPC64 Linux with gcc 3.x +CXX = g++ +CXXFLAGS = $(OPT) -Wall -fPIC +LD = g++ +LDFLAGS = $(OPT) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxx8664icc) +# AMD Opteron and Intel EM64T (64 bit mode) Linux with Intel icc compiler +CXX = icc +CXXFLAGS = $(OPT) -fPIC -wd1476 -wd1572 +LD = icpc +LDFLAGS = $(OPT) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxalphagcc) +# Alpha Linux with gcc +CXX = g++ +CXXFLAGS = $(OPT2) -Wall -fPIC +LD = g++ +LDFLAGS = $(OPT2) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxmips) +# GNU/Linux on mips (BE/LE, O32/N32/N64) with gcc +CXX = g++ +CXXFLAGS = $(OPT2) -Wall -fPIC +LD = g++ +LDFLAGS = $(OPT2) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxhppa) +# GNU/Linux on hppa with gcc +CXX = g++ +CXXFLAGS = $(OPT2) -Wall -fPIC +LD = g++ +LDFLAGS = $(OPT2) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),linuxarm) +# ARM Linux with egcs +CXX = g++ +CXXFLAGS = $(OPT) -Wall -fPIC +LD = g++ +LDFLAGS = $(OPT) +SOFLAGS = -shared +endif + +ifeq ($(ARCH),macosx) +# MacOS X with cc (GNU cc 2.95.2 and gcc 3.3) +MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2) +MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR) +CXX = g++ +CXXFLAGS = $(OPT2) -pipe -Wall -W -Woverloaded-virtual +LD = $(MACOSXTARGET) g++ +LDFLAGS = $(OPT2) -bind_at_load +# The SOFLAGS will be used to create the .dylib, +# the .so will be created separately +ifeq ($(subst $(MACOSX_MINOR),,1234),1234) +DllSuf = so +else +DllSuf = dylib +endif +UNDEFOPT = dynamic_lookup +ifneq ($(subst $(MACOSX_MINOR),,12),12) +UNDEFOPT = suppress +LD = g++ +endif +SOFLAGS = -dynamiclib -single_module -undefined $(UNDEFOPT) +endif + +ifeq ($(ARCH),macosxicc) +# MacOS X with Intel icc compiler +MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2) +MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR) +ifeq ($(MACOSX_MINOR),5) +MACOSX_MINOR := 4 +endif +CXX = icc +CXXFLAGS = $(OPT) -fPIC -wd1476 +LD = $(MACOSXTARGET) icpc +LDFLAGS = $(OPT) +# The SOFLAGS will be used to create the .dylib, +# the .so will be created separately +ifeq ($(subst $(MACOSX_MINOR),,1234),1234) +DllSuf = so +else +DllSuf = dylib +endif +SOFLAGS = -dynamiclib -single_module -undefined dynamic_lookup +endif + +ifeq ($(ARCH),macosx64) +# MacOS X >= 10.4 with gcc 64 bit mode (GNU gcc 4.*) +# Only specific option (-m64) comes from root-config +MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2) +MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR) +CXX = g++ +CXXFLAGS = $(OPT2) -pipe -Wall -W -Woverloaded-virtual +LD = $(MACOSXTARGET) g++ -m64 +LDFLAGS = $(OPT2) -bind_at_load +# The SOFLAGS will be used to create the .dylib, +# the .so will be created separately +ifeq ($(subst $(MACOSX_MINOR),,1234),1234) +DllSuf = so +else +DllSuf = dylib +endif +SOFLAGS = -m64 -dynamiclib -single_module -undefined dynamic_lookup +endif + +ifeq ($(ARCH),macosxxlc) +# MacOS X with IBM xlC compiler +MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2) +MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR) +CXX = xlC +CXXFLAGS = $(OPT) +LD = $(MACOSXTARGET) xlC +LDFLAGS = $(OPT) -Wl,-bind_at_load +# The SOFLAGS will be used to create the .dylib, +# the .so will be created separately +DllSuf = dylib +UNDEFOPT = dynamic_lookup +ifneq ($(subst $(MACOSX_MINOR),,12),12) +UNDEFOPT = suppress +LD = xlC +endif +SOFLAGS = -qmkshrobj -single_module -undefined $(UNDEFOPT) +endif + +CXXFLAGS += $(ROOTCFLAGS) +LDFLAGS += $(ROOTLDFLAGS) +LIBS = $(ROOTLIBS) $(SYSLIBS) +GLIBS = $(ROOTGLIBS) $(SYSLIBS) + +INCLUDE = -I$(CLHEP_BASE_DIR)/include -I$(NPLIB)/include + +#------------------------------------------------------------------------------ +SHARELIB = libShieldData.so libShieldPhysics.so + +all: $(SHARELIB) +#------------------------------------------------------------------------------ +############### Detector ############## + +## Shield ## +libShieldData.so: TShieldData.o TShieldDataDict.o + $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +TShieldDataDict.cxx: TShieldData.h + rootcint -f $@ -c $^ + +libShieldPhysics.so: Shield.o TShieldPhysics.o TShieldPhysicsDict.o + $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ + +TShieldPhysicsDict.cxx: TShieldPhysics.h + rootcint -f $@ -c $^ + + + +# dependances +Shield.o: Shield.cxx Shield.h +TShieldData.o: TShieldData.cxx TShieldData.h +TShieldPhysics.o: TShieldPhysics.cxx TShieldPhysics.h + +####################################### + +############# Clean and More ########## +clean: + @rm -f core *~ *.o *Dict* + +distclean: + make clean; rm -f *.so + +.SUFFIXES: .$(SrcSuf) + +### + +.$(SrcSuf).$(ObjSuf): + $(CXX) $(CXXFLAGS) $(INCLUDE) -c $< + + diff --git a/NPLib/Shield/Shield.cxx b/NPLib/Shield/Shield.cxx new file mode 100644 index 000000000..56c9a8ef1 --- /dev/null +++ b/NPLib/Shield/Shield.cxx @@ -0,0 +1,871 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 01/09/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class is mainly an interface to the * + * TShieldPhysics class * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#include "Shield.h" + +// C++ headers +#include <iostream> +#include <fstream> +#include <string> +#include <cmath> +#include <stdlib.h> + +// NPL headers +#include "RootInput.h" +#include "RootOutput.h" + +// ROOT headers +#include "TChain.h" + +using namespace std ; + +// Default Constructor + +Shield::Shield() +{ + m_NumberOfModule = 0; + m_EventData = new TShieldData(); + m_EventPhysics = new TShieldPhysics(); +} + + + +Shield::~Shield() +{ + m_NumberOfModule = 0; + delete m_EventData; + delete m_EventPhysics; +} + + + +// Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token +void Shield::ReadConfiguration(string Path) +{ + ifstream ConfigFile ; + ConfigFile.open(Path.c_str()) ; + string LineBuffer ; + string DataBuffer ; + + // A:X1_Y1 --> X:1 Y:1 + // B:X128_Y1 --> X:128 Y:1 + // C:X1_Y128 --> X:1 Y:128 + // D:X128_Y128 --> X:128 Y:128 + + double Ax, Bx, Cx, Dx, Ay, By, Cy, Dy, Az, Bz, Cz, Dz; + TVector3 A, B, C, D; + double Theta = 0, Phi = 0, R = 0, beta_u = 0 , beta_v = 0 , beta_w = 0; + + bool check_A = false; + bool check_C = false; + bool check_B = false; + bool check_D = false; + + bool check_Theta = false; + bool check_Phi = false; + bool check_R = false; + bool check_beta = false; + + bool ReadingStatus = false; + + bool isCluster = false; + bool isPhoswich = false; + + while (!ConfigFile.eof()) { + getline(ConfigFile, LineBuffer); + + // If line is a Shield bloc, reading toggle to true + // and toggle to true flags indicating which shape is treated. + if (LineBuffer.compare(0, 13, "ShieldClParis") == 0 || + LineBuffer.compare(0, 13, "ShieldPhParis") == 0 ) { + cout << "///////////////////////" << endl; + cout << "Module found:" << endl; + + if (LineBuffer.compare(0, 13, "ShieldClParis") == 0) isCluster = true; + if (LineBuffer.compare(0, 13, "ShieldPhParis") == 0) isPhoswich = true; + ReadingStatus = true; + } + // Else don't toggle to Reading Block Status + else ReadingStatus = false; + + // Reading Block + while (ReadingStatus) { + if (isCluster) { // square shape + ConfigFile >> DataBuffer ; + // Comment Line + if (DataBuffer.compare(0, 1, "%") == 0) { + ConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n' ); + } + // Finding another telescope (safety), toggle out + else if (DataBuffer.compare(0, 13, "ShieldClParis") == 0) { + cout << "WARNING: Another Module is find before standard sequence of Token, Error may occured in Telecope definition" << endl; + ReadingStatus = false; + } + + // Position method + else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { + check_A = true; + ConfigFile >> DataBuffer ; + Ax = atof(DataBuffer.c_str()) ; + Ax = Ax ; + ConfigFile >> DataBuffer ; + Ay = atof(DataBuffer.c_str()) ; + Ay = Ay ; + ConfigFile >> DataBuffer ; + Az = atof(DataBuffer.c_str()) ; + Az = Az ; + + A = TVector3(Ax, Ay, Az); + cout << "X1 Y1 corner position : (" << A.X() << ";" << A.Y() << ";" << A.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) { + check_B = true; + ConfigFile >> DataBuffer ; + Bx = atof(DataBuffer.c_str()) ; + Bx = Bx ; + ConfigFile >> DataBuffer ; + By = atof(DataBuffer.c_str()) ; + By = By ; + ConfigFile >> DataBuffer ; + Bz = atof(DataBuffer.c_str()) ; + Bz = Bz ; + + B = TVector3(Bx, By, Bz); + cout << "X128 Y1 corner position : (" << B.X() << ";" << B.Y() << ";" << B.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) { + check_C = true; + ConfigFile >> DataBuffer ; + Cx = atof(DataBuffer.c_str()) ; + Cx = Cx ; + ConfigFile >> DataBuffer ; + Cy = atof(DataBuffer.c_str()) ; + Cy = Cy ; + ConfigFile >> DataBuffer ; + Cz = atof(DataBuffer.c_str()) ; + Cz = Cz ; + + C = TVector3(Cx, Cy, Cz); + cout << "X1 Y128 corner position : (" << C.X() << ";" << C.Y() << ";" << C.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) { + check_D = true; + ConfigFile >> DataBuffer ; + Dx = atof(DataBuffer.c_str()) ; + Dx = Dx ; + ConfigFile >> DataBuffer ; + Dy = atof(DataBuffer.c_str()) ; + Dy = Dy ; + ConfigFile >> DataBuffer ; + Dz = atof(DataBuffer.c_str()) ; + Dz = Dz ; + + D = TVector3(Dx, Dy, Dz); + cout << "X128 Y128 corner position : (" << D.X() << ";" << D.Y() << ";" << D.Z() << ")" << endl; + } // End Position Method + + // Angle method + else if (DataBuffer.compare(0, 6, "THETA=") == 0) { + check_Theta = true; + ConfigFile >> DataBuffer ; + Theta = atof(DataBuffer.c_str()) ; + Theta = Theta ; + cout << "Theta: " << Theta << endl; + } + else if (DataBuffer.compare(0, 4, "PHI=") == 0) { + check_Phi = true; + ConfigFile >> DataBuffer ; + Phi = atof(DataBuffer.c_str()) ; + Phi = Phi ; + cout << "Phi: " << Phi << endl; + } + else if (DataBuffer.compare(0, 2, "R=") == 0) { + check_R = true; + ConfigFile >> DataBuffer ; + R = atof(DataBuffer.c_str()) ; + R = R ; + cout << "R: " << R << endl; + } + else if (DataBuffer.compare(0, 5, "BETA=") == 0) { + check_beta = true; + ConfigFile >> DataBuffer ; + beta_u = atof(DataBuffer.c_str()) ; + beta_u = beta_u ; + ConfigFile >> DataBuffer ; + beta_v = atof(DataBuffer.c_str()) ; + beta_v = beta_v ; + ConfigFile >> DataBuffer ; + beta_w = atof(DataBuffer.c_str()) ; + beta_w = beta_w ; + cout << "Beta: " << beta_u << " " << beta_v << " " << beta_w << endl ; + } + + ///////////////////////////////////////////////// + // If All necessary information there, toggle out + if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta) ) { + ReadingStatus = false; + + // Add The previously define telescope + // With position method + if ( check_A && check_B && check_C && check_D ) { + AddModuleSquare(A , + B , + C , + D ) ; + } + + // with angle method + else if ( check_Theta && check_Phi && check_R && check_beta ) { + AddModuleSquare(Theta , + Phi , + R , + beta_u , + beta_v , + beta_w ); + } + + // reset boolean flag for point positioning + check_A = false; + check_B = false; + check_C = false; + check_D = false; + + // reset boolean flag for angle positioning + check_Theta = false; + check_Phi = false; + check_R = false; + check_beta = false; + + // reset boolean flag for shape determination + isCluster = false; + isPhoswich = false; + } // end test for adding a module + } // end test for ShieldCluster shape + + else if (isPhoswich) { // ShieldPhoswich shape + ConfigFile >> DataBuffer ; + // Comment Line + if (DataBuffer.compare(0, 1, "%") == 0) { + ConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n' ); + } + // Finding another telescope (safety), toggle out + else if (DataBuffer.compare(0, 13, "ShieldPhParis") == 0) { + cout << "WARNING: Another Module is find before standard sequence of Token, Error may occured in Telecope definition" << endl; + ReadingStatus = false; + } + + // Position method + else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { + check_A = true; + ConfigFile >> DataBuffer ; + Ax = atof(DataBuffer.c_str()) ; + Ax = Ax ; + ConfigFile >> DataBuffer ; + Ay = atof(DataBuffer.c_str()) ; + Ay = Ay ; + ConfigFile >> DataBuffer ; + Az = atof(DataBuffer.c_str()) ; + Az = Az ; + + A = TVector3(Ax, Ay, Az); + cout << "X1 Y1 corner position : (" << A.X() << ";" << A.Y() << ";" << A.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) { + check_B = true; + ConfigFile >> DataBuffer ; + Bx = atof(DataBuffer.c_str()) ; + Bx = Bx ; + ConfigFile >> DataBuffer ; + By = atof(DataBuffer.c_str()) ; + By = By ; + ConfigFile >> DataBuffer ; + Bz = atof(DataBuffer.c_str()) ; + Bz = Bz ; + + B = TVector3(Bx, By, Bz); + cout << "X128 Y1 corner position : (" << B.X() << ";" << B.Y() << ";" << B.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) { + check_C = true; + ConfigFile >> DataBuffer ; + Cx = atof(DataBuffer.c_str()) ; + Cx = Cx ; + ConfigFile >> DataBuffer ; + Cy = atof(DataBuffer.c_str()) ; + Cy = Cy ; + ConfigFile >> DataBuffer ; + Cz = atof(DataBuffer.c_str()) ; + Cz = Cz ; + + C = TVector3(Cx, Cy, Cz); + cout << "X1 Y128 corner position : (" << C.X() << ";" << C.Y() << ";" << C.Z() << ")" << endl; + } + else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) { + check_D = true; + ConfigFile >> DataBuffer ; + Dx = atof(DataBuffer.c_str()) ; + Dx = Dx ; + ConfigFile >> DataBuffer ; + Dy = atof(DataBuffer.c_str()) ; + Dy = Dy ; + ConfigFile >> DataBuffer ; + Dz = atof(DataBuffer.c_str()) ; + Dz = Dz ; + + D = TVector3(Dx, Dy, Dz); + cout << "X128 Y128 corner position : (" << D.X() << ";" << D.Y() << ";" << D.Z() << ")" << endl; + } // End Position Method + + // Angle method + else if (DataBuffer.compare(0, 6, "THETA=") == 0) { + check_Theta = true; + ConfigFile >> DataBuffer ; + Theta = atof(DataBuffer.c_str()) ; + Theta = Theta ; + cout << "Theta: " << Theta << endl; + } + else if (DataBuffer.compare(0, 4, "PHI=") == 0) { + check_Phi = true; + ConfigFile >> DataBuffer ; + Phi = atof(DataBuffer.c_str()) ; + Phi = Phi ; + cout << "Phi: " << Phi << endl; + } + else if (DataBuffer.compare(0, 2, "R=") == 0) { + check_R = true; + ConfigFile >> DataBuffer ; + R = atof(DataBuffer.c_str()) ; + R = R ; + cout << "R: " << R << endl; + } + else if (DataBuffer.compare(0, 5, "BETA=") == 0) { + check_beta = true; + ConfigFile >> DataBuffer ; + beta_u = atof(DataBuffer.c_str()) ; + beta_u = beta_u ; + ConfigFile >> DataBuffer ; + beta_v = atof(DataBuffer.c_str()) ; + beta_v = beta_v ; + ConfigFile >> DataBuffer ; + beta_w = atof(DataBuffer.c_str()) ; + beta_w = beta_w ; + cout << "Beta: " << beta_u << " " << beta_v << " " << beta_w << endl ; + } + + ///////////////////////////////////////////////// + // If All necessary information there, toggle out + if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta) ) { + ReadingStatus = false; + + // Add The previously define telescope + // With position method + if ( check_A && check_B && check_C && check_D ) { + AddModuleDummyShape(A , + B , + C , + D ) ; + } + + // with angle method + else if ( check_Theta && check_Phi && check_R && check_beta ) { + AddModuleDummyShape(Theta, + Phi, + R, + beta_u, + beta_v, + beta_w); + } + + // reset boolean flag for point positioning + check_A = false; + check_B = false; + check_C = false; + check_D = false; + + // reset boolean flag for angle positioning + check_Theta = false; + check_Phi = false; + check_R = false; + check_beta = false; + + // reset boolean flag for shape determination + isPhoswich = false; + isCluster = false; + } // end test for adding a module + } // end test for ShieldPhoswich shape + + + } // end while for reading block + } // end while for reading file + + cout << endl << "/////////////////////////////" << endl<<endl; +} + + +// Read stream at Path and pick-up calibration parameter using Token +// If argument is "Simulation" no change calibration is loaded +void Shield::ReadCalibrationFile(string Path) +{ + // Order of Polynom function used for calibration + int Calibration_Si_E_Order; + int Calibration_Si_T_Order; + int Calibration_SiLi_E_Order; + int Calibration_CsI_E_Order; + + // Calibration_Si_X_E[DetectorNumber][StripNumber][Order of Coeff] + vector< vector< vector< double > > > Calibration_Si_X_E ; + vector< vector< vector< double > > > Calibration_Si_X_T ; + vector< vector< vector< double > > > Calibration_Si_Y_E ; + vector< vector< vector< double > > > Calibration_Si_Y_T ; + + // Calibration_SiLi_E[DetectorNumber][PadNumber][Order of Coeff] + vector< vector< vector< double > > > Calibration_SiLi_E ; + + // Calibration_SiLi_E[DetectorNumber][CrystalNumber][Order of Coeff] + vector< vector< vector< double > > > Calibration_CsI_E ; + + if (Path == "Simulation") { // Simulation case: data already calibrated + Calibration_Si_E_Order = 1; + Calibration_Si_T_Order = 1; + Calibration_SiLi_E_Order = 1; + Calibration_CsI_E_Order = 1; + + vector<double> Coef; + // Order 0 Order 1 + Coef.push_back(0) ; Coef.push_back(1) ; + + vector< vector<double> > StripLine ; + StripLine.resize( 128 , Coef) ; + + Calibration_Si_X_E.resize( m_NumberOfModule , StripLine) ; + Calibration_Si_X_T.resize( m_NumberOfModule , StripLine) ; + Calibration_Si_Y_E.resize( m_NumberOfModule , StripLine) ; + Calibration_Si_Y_T.resize( m_NumberOfModule , StripLine) ; + + Calibration_SiLi_E.resize( m_NumberOfModule , StripLine) ; + Calibration_CsI_E .resize( m_NumberOfModule , StripLine) ; + } + else { + } +} + + + +// Activated associated Branches and link it to the private member DetectorData address +// In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated +void Shield::InitializeRootInput() +{ + TChain* inputChain = RootInput::getInstance()->GetChain(); + inputChain->SetBranchStatus("SHIELD", true); + //inputChain->SetBranchStatus("fSHIELD*", true); + inputChain->SetBranchAddress("SHIELD", &m_EventData); +} + + + +// Create associated branches and associated private member DetectorPhysics address +void Shield::InitializeRootOutput() +{ + TTree* outputTree = RootOutput::getInstance()->GetTree(); + outputTree->Branch("SHIELD", "TShieldPhysics", &m_EventPhysics); +} + + + +// This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. +void Shield::BuildPhysicalEvent() +{ + m_EventPhysics -> BuildPhysicalEvent(m_EventData); +} + + + +// Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...). +// This method aimed to be used for analysis performed during experiment, when speed is requiered. +// NB: This method can eventually be the same as BuildPhysicalEvent. +void Shield::BuildSimplePhysicalEvent() +{ + m_EventPhysics -> BuildSimplePhysicalEvent(m_EventData); +} + + + +void Shield::AddModuleSquare(TVector3 C_X1_Y1, + TVector3 C_X128_Y1, + TVector3 C_X1_Y128, + TVector3 C_X128_Y128) +{ + m_NumberOfModule++; + + // remove warning using C_X128_Y128 + C_X128_Y128.Unit(); + + // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis) + TVector3 U = C_X128_Y1 - C_X1_Y1; + U = U.Unit(); + + // Vector V on Module Face (parallele to X Strip) + TVector3 V = C_X1_Y128 - C_X1_Y1; + V = V.Unit(); + + // Position Vector of Strip Center + TVector3 StripCenter = TVector3(0,0,0); + // Position Vector of X=1 Y=1 Strip + TVector3 Strip_1_1; + + // Geometry Parameter + double Face = 98; // mm + double NumberOfStrip = 128; + double StripPitch = Face/NumberOfStrip; // mm + + // Buffer object to fill Position Array + vector<double> lineX; + vector<double> lineY; + vector<double> lineZ; + + vector< vector< double > > OneModuleStripPositionX; + vector< vector< double > > OneModuleStripPositionY; + vector< vector< double > > OneModuleStripPositionZ; + + // Moving StripCenter to 1.1 corner: + Strip_1_1 = C_X1_Y1 + (U+V) * (StripPitch/2.); + + for (int i = 0; i < NumberOfStrip; i++) { + lineX.clear(); + lineY.clear(); + lineZ.clear(); + + for (int j = 0; j < NumberOfStrip; j++) { + StripCenter = Strip_1_1 + StripPitch*( i*U + j*V ); +// StripCenter += -TargetPosition; + + lineX.push_back( StripCenter.X() ); + lineY.push_back( StripCenter.Y() ); + lineZ.push_back( StripCenter.Z() ); + } + + OneModuleStripPositionX.push_back(lineX); + OneModuleStripPositionY.push_back(lineY); + OneModuleStripPositionZ.push_back(lineZ); + } + + m_StripPositionX.push_back( OneModuleStripPositionX ); + m_StripPositionY.push_back( OneModuleStripPositionY ); + m_StripPositionZ.push_back( OneModuleStripPositionZ ); +} + + + +void Shield::AddModuleSquare(double theta, + double phi, + double distance, + double beta_u, + double beta_v, + double beta_w) +{ + m_NumberOfModule++; + + // convert from degree to radian: + double Pi = 3.141592654; + theta = theta * Pi/180. ; + phi = phi * Pi/180. ; + + // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis) + TVector3 U ; + // Vector V on Module Face (parallele to X Strip) + TVector3 V ; + // Vector W normal to Module Face (pointing CsI) + TVector3 W ; + // Vector position of Module Face center + TVector3 C ; + + C = TVector3(distance * sin(theta) * cos(phi), + distance * sin(theta) * sin(phi), + distance * cos(theta)); + + TVector3 YperpC = TVector3( cos(theta) * cos(phi), + cos(theta) * sin(phi), + -sin(theta)); + + W = C.Unit(); + U = W.Cross(YperpC); + V = W.Cross(U); + + U = U.Unit(); + V = V.Unit(); + + U.Rotate( beta_u * Pi/180. , U ) ; + V.Rotate( beta_u * Pi/180. , U ) ; + + U.Rotate( beta_v * Pi/180. , V ) ; + V.Rotate( beta_v * Pi/180. , V ) ; + + U.Rotate( beta_w * Pi/180. , W ) ; + V.Rotate( beta_w * Pi/180. , W ) ; + + double Face = 98; // mm + double NumberOfStrip = 128; + double StripPitch = Face/NumberOfStrip; // mm + + vector<double> lineX; + vector<double> lineY; + vector<double> lineZ; + + vector< vector< double > > OneModuleStripPositionX; + vector< vector< double > > OneModuleStripPositionY; + vector< vector< double > > OneModuleStripPositionZ; + + double X, Y, Z; + + // Moving C to the 1.1 corner: + C.SetX( C.X() - ( Face/2 - StripPitch/2 ) * ( V.X() + U.X() ) ) ; + C.SetY( C.Y() - ( Face/2 - StripPitch/2 ) * ( V.Y() + U.Y() ) ) ; + C.SetZ( C.Z() - ( Face/2 - StripPitch/2 ) * ( V.Z() + U.Z() ) ) ; + + for (int i = 0; i < NumberOfStrip; i++) { + lineX.clear(); + lineY.clear(); + lineZ.clear(); + + for (int j = 0; j < NumberOfStrip; j++) { + X = C.X() + StripPitch * ( U.X()*i + V.X()*j ); + Y = C.Y() + StripPitch * ( U.Y()*i + V.Y()*j ); + Z = C.Z() + StripPitch * ( U.Z()*i + V.Z()*j ); + + lineX.push_back(X); + lineY.push_back(Y); + lineZ.push_back(Z); + } + + OneModuleStripPositionX.push_back(lineX); + OneModuleStripPositionY.push_back(lineY); + OneModuleStripPositionZ.push_back(lineZ); + } + + m_StripPositionX.push_back( OneModuleStripPositionX ); + m_StripPositionY.push_back( OneModuleStripPositionY ); + m_StripPositionZ.push_back( OneModuleStripPositionZ ); +} + + + +void Shield::AddModuleDummyShape(TVector3 C_X1_Y1, + TVector3 C_X128_Y1, + TVector3 C_X1_Y128, + TVector3 C_X128_Y128) +{ + m_NumberOfModule++; + + // remove warning using C_X128_Y128 + C_X128_Y128.Unit(); + + // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis) + TVector3 U = C_X128_Y1 - C_X1_Y1; + U = U.Unit(); + + // Vector V on Module Face (parallele to X Strip) + TVector3 V = C_X1_Y128 - C_X1_Y1; + V = V.Unit(); + + // Position Vector of Strip Center + TVector3 StripCenter = TVector3(0,0,0); + // Position Vector of X=1 Y=1 Strip + TVector3 Strip_1_1; + + // Geometry Parameter + double Face = 50; // mm + double NumberOfStrip = 128; + double StripPitch = Face/NumberOfStrip; // mm + + // Buffer object to fill Position Array + vector<double> lineX; + vector<double> lineY; + vector<double> lineZ; + + vector< vector< double > > OneModuleStripPositionX; + vector< vector< double > > OneModuleStripPositionY; + vector< vector< double > > OneModuleStripPositionZ; + + // Moving StripCenter to 1.1 corner: + Strip_1_1 = C_X1_Y1 + (U+V) * (StripPitch/2.); + + for (int i = 0; i < NumberOfStrip; i++) { + lineX.clear(); + lineY.clear(); + lineZ.clear(); + + for (int j = 0; j < NumberOfStrip; j++) { + StripCenter = Strip_1_1 + StripPitch*( i*U + j*V ); +// StripCenter += -TargetPosition; + + lineX.push_back( StripCenter.X() ); + lineY.push_back( StripCenter.Y() ); + lineZ.push_back( StripCenter.Z() ); + } + + OneModuleStripPositionX.push_back(lineX); + OneModuleStripPositionY.push_back(lineY); + OneModuleStripPositionZ.push_back(lineZ); + } + + m_StripPositionX.push_back( OneModuleStripPositionX ); + m_StripPositionY.push_back( OneModuleStripPositionY ); + m_StripPositionZ.push_back( OneModuleStripPositionZ ); +} + + + +void Shield::AddModuleDummyShape(double theta, + double phi, + double distance, + double beta_u, + double beta_v, + double beta_w) +{ + m_NumberOfModule++; + + // convert from degree to radian: + double Pi = 3.141592654; + theta = theta * Pi/180. ; + phi = phi * Pi/180. ; + + // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis) + TVector3 U ; + // Vector V on Module Face (parallele to X Strip) + TVector3 V ; + // Vector W normal to Module Face (pointing CsI) + TVector3 W ; + // Vector position of Module Face center + TVector3 C ; + + C = TVector3(distance * sin(theta) * cos(phi), + distance * sin(theta) * sin(phi), + distance * cos(theta)); + + TVector3 YperpW = TVector3( cos(theta) * cos(phi), + cos(theta) * sin(phi), + -sin(theta)); + + W = C.Unit(); + U = W.Cross(YperpW); + V = W.Cross(U); + + U = U.Unit(); + V = V.Unit(); + + U.Rotate( beta_u * Pi/180. , U ) ; + V.Rotate( beta_u * Pi/180. , U ) ; + + U.Rotate( beta_v * Pi/180. , V ) ; + V.Rotate( beta_v * Pi/180. , V ) ; + + U.Rotate( beta_w * Pi/180. , W ) ; + V.Rotate( beta_w * Pi/180. , W ) ; + + double Face = 50; // mm + double NumberOfStrip = 25; + double StripPitch = Face/NumberOfStrip; // mm + + vector<double> lineX; + vector<double> lineY; + vector<double> lineZ; + + vector< vector< double > > OneModuleStripPositionX; + vector< vector< double > > OneModuleStripPositionY; + vector< vector< double > > OneModuleStripPositionZ; + + double X, Y, Z; + + // Moving C to the 1.1 corner: + C.SetX( C.X() - ( Face/2 - StripPitch/2 ) * ( V.X() + U.X() ) ) ; + C.SetY( C.Y() - ( Face/2 - StripPitch/2 ) * ( V.Y() + U.Y() ) ) ; + C.SetZ( C.Z() - ( Face/2 - StripPitch/2 ) * ( V.Z() + U.Z() ) ) ; + + for (int i = 0; i < NumberOfStrip; i++) { + lineX.clear(); + lineY.clear(); + lineZ.clear(); + + for (int j = 0; j < NumberOfStrip; j++) { + X = C.X() + StripPitch * ( U.X()*i + V.X()*j ); + Y = C.Y() + StripPitch * ( U.Y()*i + V.Y()*j ); + Z = C.Z() + StripPitch * ( U.Z()*i + V.Z()*j ); + + lineX.push_back(X); + lineY.push_back(Y); + lineZ.push_back(Z); + } + + OneModuleStripPositionX.push_back(lineX); + OneModuleStripPositionY.push_back(lineY); + OneModuleStripPositionZ.push_back(lineZ); + } + + m_StripPositionX.push_back( OneModuleStripPositionX ); + m_StripPositionY.push_back( OneModuleStripPositionY ); + m_StripPositionZ.push_back( OneModuleStripPositionZ ); +} + + + +double Shield::GetEnergyDeposit() +{ + if (m_EventPhysics->ShieldTotalEnergy.size() > 0) + return m_EventPhysics->ShieldTotalEnergy[0]; + else + return -1000; +} + + + +TVector3 Shield::GetPositionOfInteraction() +{ + TVector3 Position = TVector3(-1000,-1000,-1000); + + /* if (m_EventPhysics->ModuleNumber.size() == 1) { + Position = TVector3(GetStripPositionX(m_EventPhysics->ModuleNumber[0], m_EventPhysics->FirstStage_X[0], m_EventPhysics->FirstStage_Y[0]), + GetStripPositionY(m_EventPhysics->ModuleNumber[0], m_EventPhysics->FirstStage_X[0], m_EventPhysics->FirstStage_Y[0]), + GetStripPositionZ(m_EventPhysics->ModuleNumber[0], m_EventPhysics->FirstStage_X[0], m_EventPhysics->FirstStage_Y[0])); + }*/ + + return(Position); +} + + + +void Shield::Print() +{ + cout << "Number of Modules: " << m_NumberOfModule << endl; + + for (int f = 0; f < m_NumberOfModule; f++) { + cout << "Module " << f+1 << endl; + + for (int i = 0; i < 128; i++) { + for (int j = 0; j < 128; j++) { + cout << i+1 << " "<< j+1 << " " + << m_StripPositionX[f][i][j] << " " + << m_StripPositionY[f][i][j] << " " + << m_StripPositionZ[f][i][j] << " " + << endl ; + } + } + } +} diff --git a/NPLib/Shield/Shield.h b/NPLib/Shield/Shield.h new file mode 100644 index 000000000..cea85f802 --- /dev/null +++ b/NPLib/Shield/Shield.h @@ -0,0 +1,138 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 01/09/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class is mainly an interface to the * + * TShieldPhysics class * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + * * + *****************************************************************************/ + +#ifndef Shield_H + +// NPL +#include "../include/VDetector.h" +#include "TShieldData.h" +#include "TShieldPhysics.h" + +// Root +#include "TVector3.h" + +class Shield : public NPA::VDetector +{ +public: + Shield(); + virtual ~Shield(); + +public: + ///////////////////////////////////// + // Innherited from VDetector Class // + ///////////////////////////////////// + // Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token + void ReadConfiguration(string); + + // Read stream at CalibFile and pick-up calibration parameter using Token + // If argument is "Simulation" no change calibration is loaded + void ReadCalibrationFile(string); + + // Activated associated Branches and link it to the private member DetectorData address + // In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated + void InitializeRootInput(); + + // Create associated branches and associated private member DetectorPhysics address + void InitializeRootOutput(); + + // This method is called at each event read from the Input Tree. + // The aim is to build treat Raw dat in order to extract physical parameter. + void BuildPhysicalEvent(); + + // Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...). + // This method aimed to be used for analysis performed during experiment, when speed is requiered. + // NB: This method can eventually be the same as BuildPhysicalEvent. + void BuildSimplePhysicalEvent(); + + // Those two method all to clear the Event Physics or Data + void ClearEventPhysics() {m_EventPhysics->Clear();} + void ClearEventData() {m_EventData->Clear();} + + +public: + //////////////////////////////// + // Specific to Shield // + //////////////////////////////// + // Case of a Square module + // Add a Module using Corner Coordinate information + void AddModuleSquare(TVector3 C_X1_Y1, + TVector3 C_X128_Y1, + TVector3 C_X1_Y128, + TVector3 C_X128_Y128); + + // Add a Module using R Theta Phi of Si center information + void AddModuleSquare(double theta, + double phi, + double distance, + double beta_u, + double beta_v, + double beta_w); + + // Case of a DummyShape module + // Add a Module using Corner Coordinate information + void AddModuleDummyShape(TVector3 C_X1_Y1, + TVector3 C_X128_Y1, + TVector3 C_X1_Y128, + TVector3 C_X128_Y128); + + // Add a Module using R Theta Phi of Si center information + void AddModuleDummyShape(double theta, + double phi, + double distance, + double beta_u, + double beta_v, + double beta_w); + + // Getters to retrieve the (X,Y,Z) coordinates of a pixel defined by strips (X,Y) + double GetStripPositionX(int N ,int X ,int Y) { return m_StripPositionX[N-1][X-1][Y-1]; } + double GetStripPositionY(int N ,int X ,int Y) { return m_StripPositionY[N-1][X-1][Y-1]; } + double GetStripPositionZ(int N ,int X ,int Y) { return m_StripPositionZ[N-1][X-1][Y-1]; } + double GetNumberOfModule() { return m_NumberOfModule; } + + // Get Root input and output objects + TShieldData* GetEventData() {return m_EventData;} + TShieldPhysics* GetEventPhysics() {return m_EventPhysics;} + + // To be called after a build Physical Event + double GetEnergyDeposit(); + TVector3 GetPositionOfInteraction(); + + void Print(); + + +private: + //////////////////////////////////////// + // Root Input and Output tree classes // + //////////////////////////////////////// + TShieldData* m_EventData; + TShieldPhysics* m_EventPhysics; + + +private: + // Spatial Position of Strip Calculated on basis of detector position + int m_NumberOfModule; + vector< vector < vector < double > > > m_StripPositionX; + vector< vector < vector < double > > > m_StripPositionY; + vector< vector < vector < double > > > m_StripPositionZ; +}; + +#endif diff --git a/NPLib/Shield/TShieldData.cxx b/NPLib/Shield/TShieldData.cxx new file mode 100644 index 000000000..f3e95a6ef --- /dev/null +++ b/NPLib/Shield/TShieldData.cxx @@ -0,0 +1,84 @@ +#include <iostream> +#include "TShieldData.h" +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 04/12/2009 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class described the raw data of the Shield of PARIS detector * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +ClassImp(TShieldData) + +TShieldData::TShieldData() +{ + // Default constructor + Clear(); +} + + + +TShieldData::~TShieldData() +{ +} + + + +void TShieldData::Clear() +{ + + /* + fShield_Energy.clear(); + fShield_Number.clear(); + fShield_Time.clear(); + */ + + + fPARIS_CsIShield_E_DetectorNbr.clear(); + fPARIS_CsIShield_E_CrystalNbr.clear(); + fPARIS_CsIShield_E_Energy.clear(); + fPARIS_CsIShield_Eff_phpeak.clear(); + // Time + fPARIS_CsIShield_T_DetectorNbr.clear(); + fPARIS_CsIShield_T_CrystalNbr.clear(); + fPARIS_CsIShield_T_Time.clear(); + + +} + + + +void TShieldData::Dump() const +{ + cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl; + /* + for (unsigned short i = 0; i<fShield_Energy.size(); i ++) { + cout << "Shield Number " << fShield_Number[i] << " Energy: " << fShield_Energy[i] << " Time: "<< fShield Time[i] << endl; + } + */ + + for (UShort_t i = 0; i < fPARIS_CsIShield_E_DetectorNbr.size(); i++) + cout << "DetNbr: " << fPARIS_CsIShield_E_DetectorNbr[i] << " Crystal: " << fPARIS_CsIShield_E_CrystalNbr[i] << " Energy: " << fPARIS_CsIShield_E_Energy[i] << endl; + // (X,T) + cout << "PARIS_CsIShield_T_Mult = " << fPARIS_CsIShield_T_DetectorNbr.size() << endl; + for (UShort_t i = 0; i < fPARIS_CsIShield_T_DetectorNbr.size(); i++) + cout << "DetNbr: " << fPARIS_CsIShield_T_DetectorNbr[i] << " Crystal: " << fPARIS_CsIShield_T_CrystalNbr[i] << " Time: " << fPARIS_CsIShield_T_Time[i] << endl; + + + + +} diff --git a/NPLib/Shield/TShieldData.h b/NPLib/Shield/TShieldData.h new file mode 100644 index 000000000..7ad37cfb6 --- /dev/null +++ b/NPLib/Shield/TShieldData.h @@ -0,0 +1,155 @@ +#ifndef __ShieldDATA__ +#define __ShieldDATA__ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 04/12/2009 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class described the raw data of the shield of PARIS detector * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#include <vector> + +#include "TObject.h" +using namespace std ; + + +class TShieldData : public TObject { + + protected: + + // Energy + vector<UShort_t> fPARIS_CsIShield_E_DetectorNbr; + vector<UShort_t> fPARIS_CsIShield_E_CrystalNbr; + vector<Double_t> fPARIS_CsIShield_E_Energy; + vector<Double_t> fPARIS_CsIShield_Eff_phpeak; + // Time + vector<UShort_t> fPARIS_CsIShield_T_DetectorNbr; + vector<UShort_t> fPARIS_CsIShield_T_CrystalNbr; + vector<Double_t> fPARIS_CsIShield_T_Time; + + + /* + private: + vector<double> fParis_Energy; + vector<double> fParis_Time; + vector<short> fParis_Number; + */ + + public: + TShieldData(); + virtual ~TShieldData(); + + void Clear(); + void Clear(const Option_t*) {}; + void Dump() const; + + ///////////////////// GETTERS //////////////////////// + + // + // First stage + // + // (E) + UShort_t GetPARISCsIShieldEMult() { + return fPARIS_CsIShield_E_DetectorNbr.size(); // TODO: Maybe change to CrystalNbr for multiplicity + } + UShort_t GetPARISCsIShieldEDetectorNbr(Int_t i) { + return fPARIS_CsIShield_E_DetectorNbr.at(i); + } + UShort_t GetPARISCsIShieldECrystalNbr(Int_t i) { + return fPARIS_CsIShield_E_CrystalNbr.at(i); + } + Double_t GetPARISCsIShieldEEnergy(Int_t i) { + return fPARIS_CsIShield_E_Energy.at(i); + } + Double_t GetPARISCsIShieldEffphpeak(Int_t i) { + return fPARIS_CsIShield_Eff_phpeak.at(i); + } + + + // (T) + UShort_t GetPARISCsIShieldTMult() { + return fPARIS_CsIShield_E_DetectorNbr.size(); + } + UShort_t GetPARISCsIShieldTDetectorNbr(Int_t i) { + return fPARIS_CsIShield_T_DetectorNbr.at(i); + } + UShort_t GetPARISCsIShieldTCrystalNbr(Int_t i) { + return fPARIS_CsIShield_T_CrystalNbr.at(i); + } + Double_t GetPARISCsIShieldTTime(Int_t i) { + return fPARIS_CsIShield_T_Time.at(i); + } + + + /* + // (E) + //double GetEnergy(int i) {return fParis_Energy[i];} + // (T) + //double GetTime(int i) {return fParis_Time[i];} + // (N) + int GetParisNumber(int i) {return fParis_Number[i];} + double GetEnergySize() {return fParis_Energy.size();} + // (T) + double GetTimeSize() {return fParis_Time.size();} + // (N) + int GetParisNumberSize() {return fParis_Number.size();} + */ + + ///////////////////// SETTERS //////////////////////// + + // + // First stage + // + // (E) + + void SetPARISCsIShieldEDetectorNbr(UShort_t DetNbr) { + fPARIS_CsIShield_E_DetectorNbr.push_back(DetNbr); + } + void SetPARISCsIShieldECrystalNbr(UShort_t CrystalNbr) { + fPARIS_CsIShield_E_CrystalNbr.push_back(CrystalNbr); + } + void SetPARISCsIShieldEEnergy(Double_t Energy) { + fPARIS_CsIShield_E_Energy.push_back(Energy); + } + void SetPARISCsIShieldEffphpeak(Double_t Energy) { + fPARIS_CsIShield_Eff_phpeak.push_back(Energy); + } + + + // (T) + void SetPARISCsIShieldTDetectorNbr(UShort_t DetNbr) { + fPARIS_CsIShield_T_DetectorNbr.push_back(DetNbr); + } + void SetPARISCsIShieldTCrystalNbr(UShort_t CrystalNbr) { + fPARIS_CsIShield_T_CrystalNbr.push_back(CrystalNbr); + } + void SetPARISCsIShieldTTime(Double_t Time) { + fPARIS_CsIShield_T_Time.push_back(Time); + } + + + /* + // (E) + void SetEnergy(double E) {fParis_Energy.push_back(E);} + void SetTime(double T) {fParis_Time.push_back(T);} + void SetParisNumber(int N) {fParis_Number.push_back(N);} + */ + ClassDef(TShieldData,1) // ParisData structure +}; + +#endif diff --git a/NPLib/Shield/TShieldPhysics.cxx b/NPLib/Shield/TShieldPhysics.cxx new file mode 100644 index 000000000..dae505443 --- /dev/null +++ b/NPLib/Shield/TShieldPhysics.cxx @@ -0,0 +1,103 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 01/09/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class stores the physical results after NPAnalysis is run* + * for the Shield part of the Paris detector. * + * This class derives from TObject (ROOT) and its aim is to be * + * stored in the output TTree of NPAnalysis. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#include "TShieldPhysics.h" +#include <vector> +#include <iostream> +#include <cstdlib> + + +ClassImp(TShieldPhysics) + + +TShieldPhysics::TShieldPhysics() +{ + //EventMultiplicity = 0; +} + + + +TShieldPhysics::~TShieldPhysics() +{ + Clear(); +} + + + +void TShieldPhysics::BuildSimplePhysicalEvent(TShieldData* Data) +{ + BuildPhysicalEvent(Data); +} + + + +void TShieldPhysics::BuildPhysicalEvent(TShieldData* Data) +{ + + int multE = Data->GetPARISCsIShieldEMult(); + // cout << "multShield = " << multE << endl; + + ShieldEventMult=multE; + + + // get energy from strips and store it + if(multE>=1){ + //cout << "cava1b" <<endl; + //cout << Data->GetPARISCsIShieldEEnergy(0) <<endl; + //cout << "cava1b" <<endl; + + double EnergyTot=0.; + double EnergyStripFront; + double EnergyStrip; + + for(int j=0;j<multE;j++) + { + EnergyStripFront= Data->GetPARISCsIShieldEEnergy(j); + + EnergyStrip = EnergyStripFront; + ShieldCsI_E.push_back(EnergyStrip); + + EnergyTot += EnergyStrip; // addback between CsIShield + } + + // Fill total energy + ShieldTotalEnergy.push_back(EnergyTot); + } +} + + + +void TShieldPhysics::Clear() +{ + ShieldEventMult=0; + //ModuleNumber.clear(); + //EventType.clear(); + ShieldTotalEnergy.clear(); + + // CsI + ShieldCsI_E.clear(); + //FirstStage_T.clear(); + //FirstStage_X.clear(); + //FirstStage_Y.clear(); + +} diff --git a/NPLib/Shield/TShieldPhysics.h b/NPLib/Shield/TShieldPhysics.h new file mode 100644 index 000000000..d820214f3 --- /dev/null +++ b/NPLib/Shield/TShieldPhysics.h @@ -0,0 +1,81 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 01/09/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class stores the physical results after NPAnalysis is run* + * for the tracker part of the Gaspard detector. * + * This class derives from TObject (ROOT) and its aim is to be * + * stored in the output TTree of NPAnalysis. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef TSHIELDPHYSICS_H +#define TSHIELDPHYSICS_H + +#include <vector> +#include "TObject.h" +#include "TShieldData.h" +#include <cstdlib> + +using namespace std ; + +class TShieldPhysics : public TObject +{ +public: + TShieldPhysics(); + ~TShieldPhysics(); + +public: + void Clear(); + void Clear(const Option_t*) {}; + void BuildPhysicalEvent(TShieldData* Data); + void BuildSimplePhysicalEvent(TShieldData* Data); + +public: + // Provide Physical Multiplicity + Int_t ShieldEventMult; + + // Provide a Classification of Event + //vector<int> EventType; + + // Telescope + //vector<int> ModuleNumber; + + // FirstStage + vector<double> ShieldCsI_E; + //vector<double> FirstStage_T; + //vector<int> FirstStage_X; + //vector<int> FirstStage_Y; + + /* + // SecondStage + vector<double> SecondStage_E; + //vector<double> SecondStage_T; + //vector<int> SecondStage_N; + + + // ThirdStage + vector<double> ThirdStage_E; + vector<double> ThirdStage_T; + vector<int> ThirdStage_N; + */ + + // Physical Value + vector<double> ShieldTotalEnergy; + + ClassDef(TShieldPhysics,1) // ShieldPhysics structure +}; + +#endif diff --git a/NPLib/VDetector/DetectorManager.cxx b/NPLib/VDetector/DetectorManager.cxx index 398198c95..fab8655d8 100644 --- a/NPLib/VDetector/DetectorManager.cxx +++ b/NPLib/VDetector/DetectorManager.cxx @@ -10,6 +10,8 @@ #include "../SSSD/TSSSDPhysics.h" #include "../Plastic/TPlasticPhysics.h" #include "../GASPARD/GaspardTracker.h" +#include "../Paris/Paris.h" +#include "../Shield/Shield.h" ///////////////////////////////////////////////////////////////////////////////////////////////// @@ -42,6 +44,8 @@ void DetectorManager::ReadConfigurationFile(string Path) bool ScintillatorPlastic = false; bool GeneralTarget = false; bool GPDTracker = false; + bool ParisDet = false; + bool ShieldDet = false; ////////////////////////////////////////////////////////////////////////////////////////// string GlobalPath = getenv("NPTOOL"); @@ -83,6 +87,40 @@ void DetectorManager::ReadConfigurationFile(string Path) // Add array to the VDetector Vector AddDetector("GASPARD", myDetector); } + //////////////////////////////////////////// + ///////////// Search for Paris ///////////// + //////////////////////////////////////////// + else if (LineBuffer.compare(0, 5, "Paris") == 0 && ParisDet == false) { + ParisDet = true; + cout << "//////// Paris ////////" << endl << endl; + + // Instantiate the new array as a VDetector Object + VDetector* myDetector = new Paris(); + // Read Position of Telescope + ConfigFile.close(); + myDetector->ReadConfiguration(Path); + ConfigFile.open(Path.c_str()); + + // Add array to the VDetector Vector + AddDetector("PARIS", myDetector); + } + //////////////////////////////////////////// + ///////////// Search for Paris' Shield ///// + //////////////////////////////////////////// + else if (LineBuffer.compare(0, 6, "Shield") == 0 && ShieldDet == false) { + ShieldDet = true; + cout << "//////// Shield ////////" << endl << endl; + + // Instantiate the new array as a VDetector Object + VDetector* myDetector = new Shield(); + // Read Position of Telescope + ConfigFile.close(); + myDetector->ReadConfiguration(Path); + ConfigFile.open(Path.c_str()); + + // Add array to the VDetector Vector + AddDetector("SHIELD", myDetector); + } //////////////////////////////////////////// //////// Search for MUST2 Array //////// @@ -140,6 +178,7 @@ void DetectorManager::ReadConfigurationFile(string Path) AddDetector("Plastic", myDetector); } + //////////////////////////////////////////// //////////// Search for Target ///////////// //////////////////////////////////////////// diff --git a/NPLib/liblist b/NPLib/liblist index ef0756a63..a09875ac0 100755 --- a/NPLib/liblist +++ b/NPLib/liblist @@ -5,5 +5,6 @@ echo -L$NPLIB/lib -lVDetector -lDetectorManager -lCalibrationManager -lIORoot - -lAnnularS1Data \ -lGaspardData -lGaspardPhysics \ -lDUMMYDetectorData \ - -lParisData \ + -lParisData -lParisPhysics\ + -lShieldData -lShieldPhysics\ -lInitialConditions -lInteractionCoordinates diff --git a/NPSimulation/include/Chamber.hh b/NPSimulation/include/Chamber.hh new file mode 100644 index 000000000..1da4e750f --- /dev/null +++ b/NPSimulation/include/Chamber.hh @@ -0,0 +1,111 @@ +#ifndef Chamber2Array_h +#define Chamber2Array_h 1 +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@atfc.ac.uk * + * * + * Creation Date : January 2010 * + * Last update : 11/03/2010 * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe Cryogenic and standard Chamber. * + * Derived from VDetector * + *---------------------------------------------------------------------------* + * Comment: * + * + * * + *****************************************************************************/ +// C++ headers +#include <string> +#include <cmath> + +// G4 header defining G4 types +#include "globals.hh" + +// G4 headers +#include "G4Event.hh" +#include "G4Material.hh" +#include "G4LogicalVolume.hh" + +// NPTool headers +#include "VDetector.hh" + +using namespace std; + +class Chamber : public VDetector +{ + public: + Chamber(); + ~Chamber(){}; + + + public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(string Path); + + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world); + + // Add Detector branch to the EventTree. + // Called After DetecorConstruction::AddDetector Method + void InitializeRootOutput(); + + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event); + + + public: + // Return Material from the Chamber Material Library + G4Material* GetMaterialFromLibrary(G4String MaterialName, G4double Temperature = 0, G4double Pressure = 0); + + // Generate a DEDX file table using the material used in the target + void WriteDEDXTable(G4ParticleDefinition* Particle,G4double Emin,G4double Emax); + + public: + G4double GetChamberRmin() {return m_ChamberRmin;} + G4double GetChamberRmax() {return m_ChamberRmax;} + G4double GetChamberPhiMin() {return m_ChamberPhiMin;} + G4double GetChamberPhiMax() {return m_ChamberPhiMax;} + G4double GetChamberThetaMin() {return m_ChamberThetaMin;} + G4double GetChamberThetaMax() {return m_ChamberThetaMax;} + G4Material* GetChamberMaterial() {return m_ChamberMaterial;} + //G4int GetChamberNbLayers() {return m_ChamberNbLayers;} + + + private: + // Chamber type : true = normal ; false = cryo + bool m_ChamberType; + + // Standard parameter + G4double m_ChamberRmin; + G4double m_ChamberRmax; + G4double m_ChamberPhiMin; + G4double m_ChamberPhiMax; + G4double m_ChamberThetaMin; + G4double m_ChamberThetaMax; + G4Material* m_ChamberMaterial; + G4int m_ChamberNbLayers; + /* + // For Cryo Chamber + G4double m_ChamberTemperature; + G4double m_ChamberPressure; + G4double m_WindowsThickness; + G4Material* m_WindowsMaterial; + + // Positioning + G4double m_ChamberX; + G4double m_ChamberY; + G4double m_ChamberZ; + */ +}; + +#endif diff --git a/NPSimulation/include/DetectorConstruction.hh b/NPSimulation/include/DetectorConstruction.hh index 8a65ee3ab..1fa245f23 100644 --- a/NPSimulation/include/DetectorConstruction.hh +++ b/NPSimulation/include/DetectorConstruction.hh @@ -11,7 +11,7 @@ * Original Author: Adrien MATTA contact address: matta@ipno.in2p3.fr * * * * Creation Date : January 2009 * - * Last update : * + * Last update : January 2010 * *---------------------------------------------------------------------------* * Decription: * * This Class manage the virtual detector and call their method. * @@ -20,7 +20,7 @@ * token. * *---------------------------------------------------------------------------* * Comment: * - * * + * January 2010: added chamber (marc.labiche@stfc.ac.uk) * * * *****************************************************************************/ class G4LogicalVolume; @@ -37,6 +37,7 @@ class G4VPhysicalVolume; // NPTool headers #include "VDetector.hh" #include "Target.hh" +#include "Chamber.hh" // ROOT headers #include "TTree.h" @@ -60,9 +61,11 @@ public: private: // Logical volumes G4LogicalVolume* world_log; + //G4LogicalVolume* Chamber_log; // Physical volumes G4VPhysicalVolume* world_phys; + //G4VPhysicalVolume* Chamber_phys; // Virtual Detector Vector vector<VDetector*> m_Detectors; @@ -70,9 +73,11 @@ private: private: // Data about the target Target* m_Target; + Chamber* m_Chamber; public: // Getter and Setter Target* GetTarget() {return m_Target;} + Chamber* GetChamber() {return m_Chamber;} }; #endif diff --git a/NPSimulation/include/EventGeneratorIsotropic.hh b/NPSimulation/include/EventGeneratorIsotropic.hh index 03210f62d..79afda20a 100644 --- a/NPSimulation/include/EventGeneratorIsotropic.hh +++ b/NPSimulation/include/EventGeneratorIsotropic.hh @@ -56,7 +56,7 @@ private: // Source parameter from input file G4double m_z0 ; // Vertex Position Z G4ParticleDefinition* m_particle ; // Kind of particle to shoot isotropically -private: // Output ROOT class storing characteristics of source + private: // Output ROOT class storing characteristics of source TInitialConditions* m_InitConditions; }; #endif diff --git a/NPSimulation/include/GaspardTrackerSquare.hh b/NPSimulation/include/GaspardTrackerSquare.hh index 180b0d1b1..672ba89cf 100644 --- a/NPSimulation/include/GaspardTrackerSquare.hh +++ b/NPSimulation/include/GaspardTrackerSquare.hh @@ -155,8 +155,8 @@ namespace GPDSQUARE const G4double ResoTimePPAC = 0.106382979 ;// = 250ps // Unit is ns/2.35 // Geometry - const G4double FaceFront = 11.*cm ; - const G4double FaceBack = 16.5*cm ; + const G4double FaceFront = 5*cm; // = for 5x5cm det //11.*cm for 10x10 cm det. ; + const G4double FaceBack = 5*cm; //16.5*cm ; // const G4double Length = 7.2*cm ; const G4double Length = 2.0*cm ; @@ -164,7 +164,7 @@ namespace GPDSQUARE // const G4double AluStripThickness = 0.00000001*micrometer; const G4double AluStripThickness = 0.4*micrometer ; const G4double SiliconThickness = 300*micrometer ; - const G4double SiliconFace = 98*mm ; + const G4double SiliconFace = 48.25*mm; //98*mm ; // const G4double VacBoxThickness = 3*cm ; const G4double VacBoxThickness = 0.5*cm ; const G4int NumberOfStrips = 128; @@ -172,7 +172,7 @@ namespace GPDSQUARE // Second stage const G4double SiLiThickness = 5.1*mm ; // Must be checked const G4double SiLiFaceX = 48.25*mm ; - const G4double SiLiFaceY = 92*mm ; + const G4double SiLiFaceY = 48.25*mm ; // 92*mm ; // Third stage const G4double MylarCsIThickness = 3*micrometer; diff --git a/NPSimulation/include/Paris.hh b/NPSimulation/include/Paris.hh index 739fc6fa8..a4aa371ac 100644 --- a/NPSimulation/include/Paris.hh +++ b/NPSimulation/include/Paris.hh @@ -6,7 +6,7 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * * * * Creation Date : 04/12/09 * * Last update : * diff --git a/NPSimulation/include/ParisCluster.hh b/NPSimulation/include/ParisCluster.hh new file mode 100644 index 000000000..466506e67 --- /dev/null +++ b/NPSimulation/include/ParisCluster.hh @@ -0,0 +1,162 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 04/12/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: Define a cluster of 9 phoswich modules for the Paris detector * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef ParisCluster_h +#define ParisCluster_h 1 + +// C++ headers +#include <vector> + +// NPTool header +#include "ParisModule.hh" +#include "TInteractionCoordinates.h" + +using namespace std; + + + +class ParisCluster : public ParisModule +{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// +public: + ParisCluster(); + virtual ~ParisCluster(); + + //////////////////////////////////////////////////// + //////// Specific Function of this Class /////////// + //////////////////////////////////////////////////// +public: + // By Position Method + void AddModule(G4ThreeVector TL, + G4ThreeVector BL, + G4ThreeVector BR, + G4ThreeVector CT); + + // By Angle Method + void AddModule(G4double R, + G4double Theta, + G4double Phi, + G4double beta_u, + G4double beta_v, + G4double beta_w); + + // Effectively construct Volume + // Avoid to have two time same code for Angle and Point definition + void VolumeMaker(G4int DetecNumber, + G4ThreeVector MMpos, + G4RotationMatrix* MMrot, + G4LogicalVolume* world); + + + /////////////////////////////////////////// + //// Inherite from ParisModule class ///// + /////////////////////////////////////////// +public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(string Path); + + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world); + + // Add Detector branch to the EventTree. + // Called After DetecorConstruction::AddDetector Method + void InitializeRootOutput(); + + // Initialize all scorers necessary for the detector + void InitializeScorers(); + + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event); + + // Give the static TInteractionCoordinates from VDetector to the classes + // deriving from ParisModule + // This is mandatory since the Paris*** does not derive from VDetector + void SetInterCoordPointer(TInteractionCoordinates* interCoord); + TInteractionCoordinates* GetInterCoordPointer() {return ms_InterCoord;}; + + + //////////////////////////////////////////////////// + ///////////////Private intern Data////////////////// + //////////////////////////////////////////////////// +private: + // Interaction Coordinates coming from VDetector through the + // SetInteractionCoordinatesPointer method + TInteractionCoordinates* ms_InterCoord; + + // True if Define by Position, False is Define by angle + vector<bool> m_DefinitionType ; + + // Used for "By Point Definition" + vector<G4ThreeVector> m_X1_Y1 ; // Top Left Corner Position Vector + vector<G4ThreeVector> m_X1_Y128 ; // Bottom Left Corner Position Vector + vector<G4ThreeVector> m_X128_Y1 ; // Bottom Right Corner Position Vector + vector<G4ThreeVector> m_X128_Y128 ; // Center Corner Position Vector + + // Used for "By Angle Definition" + vector<G4double> m_R ; // | + vector<G4double> m_Theta ; // > Spherical coordinate of Strips Silicium Plate + vector<G4double> m_Phi ; // | + + vector<G4double> m_beta_u ; // | + vector<G4double> m_beta_v ; // > Tilt angle of the Telescope + vector<G4double> m_beta_w ; // | + + G4ThreeVector momentum; + +}; + + + +namespace PARISCLUSTER +{ + // Resolution +// const G4double ResoFirstStage = 0; // = 50 keV of Resolution // Unit is MeV/2.35 + const G4double ResoFirstStage = 0.0085; // = 3% at .662 MeV of Resolution // Unit is MeV/2.35 + const G4double ResoSecondStage = 0.0366; // = 13% at .662 MeV of resolution // Unit is MeV/2.35 + const G4double ResoThirdStage = 0.0; // = 50 keV of resolution // Unit is MeV/2.35 + const G4double ResoTimeGpd = 0.212765957;// = 500ps // Unit is ns/2.35 + + // Geometry for the mother volume containing the different layers of your dummy shape module + const G4double FaceFront = 16.9*cm; + const G4double FaceBack = 16.9*cm; + const G4double Length = 21*cm; + + // Geometry for the phoswitch + // LaBr3 + const G4double LaBr3Face = 5.08*cm; + const G4double LaBr3Thickness = 5.08*cm; + const G4double InterSpace = 0.3*cm; + + // CsI + const G4double CsIFace = LaBr3Face; + const G4double CsIThickness = 15.24*cm; + + // Starting form the LaBr3 and going to the CsI + const G4double LaBr3Stage_PosZ = Length* -0.5 + 0.5*LaBr3Thickness; + const G4double CsIStage_PosZ = Length* -0.5 + LaBr3Thickness + 0.5*CsIThickness; +} + +#endif diff --git a/NPSimulation/include/ParisModule.hh b/NPSimulation/include/ParisModule.hh index 736b988e0..d63fdc58a 100644 --- a/NPSimulation/include/ParisModule.hh +++ b/NPSimulation/include/ParisModule.hh @@ -6,7 +6,7 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * * * * Creation Date : 04/12/09 * * Last update : * diff --git a/NPSimulation/include/ParisPhoswitch.hh b/NPSimulation/include/ParisPhoswich.hh similarity index 89% rename from NPSimulation/include/ParisPhoswitch.hh rename to NPSimulation/include/ParisPhoswich.hh index c725043f4..a7f7669be 100644 --- a/NPSimulation/include/ParisPhoswitch.hh +++ b/NPSimulation/include/ParisPhoswich.hh @@ -6,12 +6,12 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * * * * Creation Date : 04/12/09 * * Last update : * *---------------------------------------------------------------------------* - * Decription: Define a phoswitch module for the Paris detector. * + * Decription: Define a phoswich module for the Paris detector. * * * *---------------------------------------------------------------------------* * Comment: * @@ -19,8 +19,8 @@ * * *****************************************************************************/ -#ifndef ParisPhoswitch_h -#define ParisPhoswitch_h 1 +#ifndef ParisPhoswich_h +#define ParisPhoswich_h 1 // C++ headers #include <vector> @@ -33,14 +33,14 @@ using namespace std; -class ParisPhoswitch : public ParisModule +class ParisPhoswich : public ParisModule { //////////////////////////////////////////////////// /////// Default Constructor and Destructor ///////// //////////////////////////////////////////////////// public: - ParisPhoswitch(); - virtual ~ParisPhoswitch(); + ParisPhoswich(); + virtual ~ParisPhoswich(); //////////////////////////////////////////////////// //////// Specific Function of this Class /////////// @@ -106,6 +106,8 @@ private: // SetInteractionCoordinatesPointer method TInteractionCoordinates* ms_InterCoord; + + // True if Define by Position, False is Define by angle vector<bool> m_DefinitionType ; @@ -123,22 +125,28 @@ private: vector<G4double> m_beta_u ; // | vector<G4double> m_beta_v ; // > Tilt angle of the Telescope vector<G4double> m_beta_w ; // | + + G4ThreeVector momentum; + }; -namespace PARISPHOSWITCH +namespace PARISPHOSWICH { + + + // Resolution // const G4double ResoFirstStage = 0; // = 50 keV of Resolution // Unit is MeV/2.35 - const G4double ResoFirstStage = 0.0213; // = 50 keV of Resolution // Unit is MeV/2.35 - const G4double ResoSecondStage = 0.0213; // = 50 keV of resolution // Unit is MeV/2.35 + const G4double ResoFirstStage = 0.0099; // = 3.5% at .662MeV of Resolution // Unit is MeV/2.35 + const G4double ResoSecondStage = 0.0366; // = 13% at .662 MeV of resolution // Unit is MeV/2.35 const G4double ResoThirdStage = 0.0213; // = 50 keV of resolution // Unit is MeV/2.35 const G4double ResoTimeGpd = 0.212765957;// = 500ps // Unit is ns/2.35 // Geometry for the mother volume containing the different layers of your dummy shape module - const G4double FaceFront = 6.3*cm; - const G4double FaceBack = 6.3*cm; + const G4double FaceFront = 5.7*cm; //6.3*cm; + const G4double FaceBack = 5.7*cm; //6.3*cm; const G4double Length = 21*cm; // Geometry for the phoswitch @@ -153,6 +161,7 @@ namespace PARISPHOSWITCH // Starting form the LaBr3 and going to the CsI const G4double LaBr3Stage_PosZ = Length* -0.5 + 0.5*LaBr3Thickness; const G4double CsIStage_PosZ = Length* -0.5 + LaBr3Thickness + 0.5*CsIThickness; + } #endif diff --git a/NPSimulation/include/ParisScorers.hh b/NPSimulation/include/ParisScorers.hh new file mode 100644 index 000000000..3fdd99c7e --- /dev/null +++ b/NPSimulation/include/ParisScorers.hh @@ -0,0 +1,175 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 30/02/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds all the scorers needed by the * + * GaspardTracker*** objects. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef PARISScorer_h +#define PARISScorer_h 1 + +#include "G4VPrimitiveScorer.hh" +#include "G4THitsMap.hh" + +namespace PARISSCORERS +{ + + +class PARISScorerLaBr3StageDetectorNumber : public G4VPrimitiveScorer +{ +public: // with description + PARISScorerLaBr3StageDetectorNumber(G4String name, G4String volumeName, G4int depth = 0); + virtual ~PARISScorerLaBr3StageDetectorNumber(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4int>* EvtMap; +}; + + + +class PARISScorerLaBr3StageEnergy : public G4VPrimitiveScorer +{ +public: // with description + PARISScorerLaBr3StageEnergy(G4String name, G4String volumeName, G4int depth = 0); + virtual ~PARISScorerLaBr3StageEnergy(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4double>* EvtMap; +}; + + + +class PARISScorerLaBr3StageCrystal : public G4VPrimitiveScorer +{ +public: // with description + PARISScorerLaBr3StageCrystal(G4String name, G4String volumeName, G4int depth = 0); + virtual ~PARISScorerLaBr3StageCrystal(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4int>* EvtMap; +}; + + +class PARISScorerLaBr3StageTOF : public G4VPrimitiveScorer +{ +public: // with description + PARISScorerLaBr3StageTOF(G4String name, G4String volumeName, G4int depth = 0); + virtual ~PARISScorerLaBr3StageTOF(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4double>* EvtMap; +}; + + + +class PARISScorerCsIStageDetectorNumber : public G4VPrimitiveScorer +{ +public: // with description + PARISScorerCsIStageDetectorNumber(G4String name, G4String volumeName, G4int depth = 0); + virtual ~PARISScorerCsIStageDetectorNumber(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4int>* EvtMap; +}; + + +class PARISScorerCsIStageEnergy : public G4VPrimitiveScorer +{ +public: // with description + PARISScorerCsIStageEnergy(G4String name, G4String volumeName, G4int depth = 0); + virtual ~PARISScorerCsIStageEnergy(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4double>* EvtMap; +}; + +} + +using namespace PARISSCORERS; +#endif diff --git a/NPSimulation/include/Shield.hh b/NPSimulation/include/Shield.hh new file mode 100644 index 000000000..fd6996676 --- /dev/null +++ b/NPSimulation/include/Shield.hh @@ -0,0 +1,73 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@atfc.ac.uk * + * * + * Creation Date : 25/08/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class manages different shapes of module for the Paris * + * Shield detector. It allows to have Paris geometries with an * + * heterogeneous set of modules * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef Shield_h +#define Shield_h 1 + +// C++ headers +#include <vector> + +// NPTool header +#include "VDetector.hh" +#include "ShieldModule.hh" + +using namespace std; + + + +class Shield : public VDetector +{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// +public: + Shield(); + virtual ~Shield(); + + //////////////////////////////////////////////////// + ///////// Inherite from VDetector class /////////// + //////////////////////////////////////////////////// +public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(string Path); + + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world); + + // Add Detector branch to the EventTree. + // Called After DetecorConstruction::AddDetector Method + void InitializeRootOutput(); + + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event); + +public: + // Initialize all scorers necessary for each detector + void InitializeScorers(); + +private: + vector<ShieldModule*> m_Modules; +}; +#endif diff --git a/NPSimulation/include/ShieldClParis.hh b/NPSimulation/include/ShieldClParis.hh new file mode 100644 index 000000000..cc106b521 --- /dev/null +++ b/NPSimulation/include/ShieldClParis.hh @@ -0,0 +1,148 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 25/08/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: Define the shiled around a cluster of 9 phoswich modules for * + * the Paris detector * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef ShieldClParis_h +#define ShieldClParis_h 1 + +// C++ headers +#include <vector> + +// NPTool header +//#include "ParisModule.hh" +#include "ShieldModule.hh" +#include "TInteractionCoordinates.h" + +using namespace std; + + + +class ShieldClParis : public ShieldModule +{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// +public: + ShieldClParis(); + virtual ~ShieldClParis(); + + //////////////////////////////////////////////////// + //////// Specific Function of this Class /////////// + //////////////////////////////////////////////////// +public: + // By Position Method + void AddModule(G4ThreeVector TL, + G4ThreeVector BL, + G4ThreeVector BR, + G4ThreeVector CT); + + // By Angle Method + void AddModule(G4double R, + G4double Theta, + G4double Phi, + G4double beta_u, + G4double beta_v, + G4double beta_w); + + // Effectively construct Volume + // Avoid to have two time same code for Angle and Point definition + void VolumeMaker(G4int DetecNumber, + G4ThreeVector MMpos, + G4RotationMatrix* MMrot, + G4LogicalVolume* world); + + + /////////////////////////////////////////// + //// Inherite from ParisModule class ///// + /////////////////////////////////////////// +public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(string Path); + + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world); + + // Add Detector branch to the EventTree. + // Called After DetecorConstruction::AddDetector Method + void InitializeRootOutput(); + + // Initialize all scorers necessary for the detector + void InitializeScorers(); + + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event); + + // Give the static TInteractionCoordinates from VDetector to the classes + // deriving from ParisModule + // This is mandatory since the Paris*** does not derive from VDetector + void SetInterCoordPointer(TInteractionCoordinates* interCoord); + TInteractionCoordinates* GetInterCoordPointer() {return ms_InterCoord;}; + + + //////////////////////////////////////////////////// + ///////////////Private intern Data////////////////// + //////////////////////////////////////////////////// +private: + // Interaction Coordinates coming from VDetector through the + // SetInteractionCoordinatesPointer method + TInteractionCoordinates* ms_InterCoord; + + // True if Define by Position, False is Define by angle + vector<bool> m_DefinitionType ; + + // Used for "By Point Definition" + vector<G4ThreeVector> m_X1_Y1 ; // Top Left Corner Position Vector + vector<G4ThreeVector> m_X1_Y128 ; // Bottom Left Corner Position Vector + vector<G4ThreeVector> m_X128_Y1 ; // Bottom Right Corner Position Vector + vector<G4ThreeVector> m_X128_Y128 ; // Center Corner Position Vector + + // Used for "By Angle Definition" + vector<G4double> m_R ; // | + vector<G4double> m_Theta ; // > Spherical coordinate of Strips Silicium Plate + vector<G4double> m_Phi ; // | + + vector<G4double> m_beta_u ; // | + vector<G4double> m_beta_v ; // > Tilt angle of the Telescope + vector<G4double> m_beta_w ; // | + + G4ThreeVector momentum; + +}; + + + +namespace PARISCLSHIELD +{ + // Resolution +// const G4double ResoFirstStage = 0; // = 50 keV of Resolution // Unit is MeV/2.35 + const G4double ResoFirstStage = 0.0366; // = 13% at .662 MeV of Resolution // Unit is MeV/2.35 + const G4double ResoTimeGpd = 0.212765957;// = 500ps // Unit is ns/2.35 + + // Geometry for the mother volume containing the different layers of your dummy shape module + const G4double Length = 15.*cm; + + +} + +#endif diff --git a/NPSimulation/include/ShieldModule.hh b/NPSimulation/include/ShieldModule.hh new file mode 100644 index 000000000..6027baca2 --- /dev/null +++ b/NPSimulation/include/ShieldModule.hh @@ -0,0 +1,92 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@atfc.ac.uk * + * * + * Creation Date : 25/08/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class is an Abstract Base Class (ABC) from which should * + * derive all different modules from the Paris detector. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef ShieldModule_h +#define ShieldModule_h 1 + +// C++ headers +#include <string> +#include <vector> + +// G4 headers +#include "G4LogicalVolume.hh" +#include "G4Event.hh" +#include "G4MultiFunctionalDetector.hh" + +// NPTool - ROOT headers +#include "TInteractionCoordinates.h" +#include "TShieldData.h" + +using namespace std; + + + +class ShieldModule +{ +public: + ShieldModule(); + virtual ~ShieldModule(); + +public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + virtual void ReadConfiguration(string Path) = 0; + + // Construct detector and inialise sensitive part. + virtual void ConstructDetector(G4LogicalVolume* world) = 0; + + // Read sensitive part of a the ParisModule detector and fill the Root tree. + virtual void ReadSensitive(const G4Event* event) = 0; + + // Add Detector branch to the ROOT output tree + virtual void InitializeRootOutput(); + + // Initialize all scorers necessary for each detector + virtual void InitializeScorers() = 0; + + // Give the static TInteractionCoordinates from VDetector to the classes + // deriving from ParisModule + // This is mandatory since the Paris*** does not derive from VDetector + virtual void SetInterCoordPointer(TInteractionCoordinates* interCoord) = 0; + virtual TInteractionCoordinates* GetInterCoordPointer() = 0; + + // Initialize the Index map for the different modules of Paris + void InitializeIndex(); + +public: + TShieldData* GetEventPointer() {return ms_Event;}; + +protected: + // Class to store the result of simulation + static TShieldData* ms_Event; + + // Set to true if you want to see Telescope Frame in your visualisation + bool m_non_sensitive_part_visiualisation; + +protected: + // First stage Associate Scorer + G4MultiFunctionalDetector* m_CsIShieldScorer; + + +protected: + map<string, int> m_index; +}; + +#endif diff --git a/NPSimulation/include/ShieldPhParis.hh b/NPSimulation/include/ShieldPhParis.hh new file mode 100644 index 000000000..36ba8e5a2 --- /dev/null +++ b/NPSimulation/include/ShieldPhParis.hh @@ -0,0 +1,158 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@atfc.ac.uk * + * * + * Creation Date : 15/08/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: Define the shield around a PARIS phoswich module * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef ShieldPhParis_h +#define ShieldPhParis_h 1 + +// C++ headers +#include <vector> + +// NPTool header +//#include "ParisModule.hh" +#include "ShieldModule.hh" +#include "TInteractionCoordinates.h" + +using namespace std; + + + +class ShieldPhParis : public ShieldModule +{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// +public: + ShieldPhParis(); + virtual ~ShieldPhParis(); + + //////////////////////////////////////////////////// + //////// Specific Function of this Class /////////// + //////////////////////////////////////////////////// +public: + // By Position Method + void AddModule(G4ThreeVector TL, + G4ThreeVector BL, + G4ThreeVector BR, + G4ThreeVector CT); + + // By Angle Method + void AddModule(G4double R, + G4double Theta, + G4double Phi, + G4double beta_u, + G4double beta_v, + G4double beta_w); + + // Effectively construct Volume + // Avoid to have two time same code for Angle and Point definition + void VolumeMaker(G4int DetecNumber, + G4ThreeVector MMpos, + G4RotationMatrix* MMrot, + G4LogicalVolume* world); + + + /////////////////////////////////////////// + //// Inherite from ParisModule class ///// + /////////////////////////////////////////// +public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(string Path); + + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world); + + // Add Detector branch to the EventTree. + // Called After DetecorConstruction::AddDetector Method + void InitializeRootOutput(); + + // Initialize all scorers necessary for the detector + void InitializeScorers(); + + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event); + + // Give the static TInteractionCoordinates from VDetector to the classes + // deriving from ParisModule + // This is mandatory since the Paris*** does not derive from VDetector + void SetInterCoordPointer(TInteractionCoordinates* interCoord); + TInteractionCoordinates* GetInterCoordPointer() {return ms_InterCoord;}; + + + //////////////////////////////////////////////////// + ///////////////Private intern Data////////////////// + //////////////////////////////////////////////////// +private: + // Interaction Coordinates coming from VDetector through the + // SetInteractionCoordinatesPointer method + TInteractionCoordinates* ms_InterCoord; + + // True if Define by Position, False is Define by angle + vector<bool> m_DefinitionType ; + + // Used for "By Point Definition" + vector<G4ThreeVector> m_X1_Y1 ; // Top Left Corner Position Vector + vector<G4ThreeVector> m_X1_Y128 ; // Bottom Left Corner Position Vector + vector<G4ThreeVector> m_X128_Y1 ; // Bottom Right Corner Position Vector + vector<G4ThreeVector> m_X128_Y128 ; // Center Corner Position Vector + + // Used for "By Angle Definition" + vector<G4double> m_R ; // | + vector<G4double> m_Theta ; // > Spherical coordinate of Strips Silicium Plate + vector<G4double> m_Phi ; // | + + vector<G4double> m_beta_u ; // | + vector<G4double> m_beta_v ; // > Tilt angle of the Telescope + vector<G4double> m_beta_w ; // | + + G4ThreeVector momentum; +}; + + + +namespace PARISPHSHIELD +{ + // Resolution +// const G4double ResoFirstStage = 0; // = 50 keV of Resolution // Unit is MeV/2.35 + const G4double ResoFirstStage = 0.0366; // = 3% at .662 MeV of Resolution // Unit is MeV/2.35 + const G4double ResoTimeGpd = 0.212765957;// = 500ps // Unit is ns/2.35 + + // Geometry for the mother volume containing the different layers of your dummy shape module + // const G4double FaceFront = 16.9*cm; + // const G4double FaceBack = 16.9*cm; + + const G4double Length = 15.*cm; + + // central hole for Phoswich + const G4double PhoswichFace = 5.8*cm; // 5.7+0.1 cm + + // CsI + // const G4double CsIFace = LaBr3Face; + // const G4double CsIThickness = 15.24*cm; + + // Starting form the LaBr3 and going to the CsI + // const G4double LaBr3Stage_PosZ = Length* -0.5 + 0.5*LaBr3Thickness; + // const G4double CsIStage_PosZ = Length* -0.5 + LaBr3Thickness + 0.5*CsIThickness; +} + +#endif diff --git a/NPSimulation/include/ShieldScorers.hh b/NPSimulation/include/ShieldScorers.hh new file mode 100644 index 000000000..b61153fa1 --- /dev/null +++ b/NPSimulation/include/ShieldScorers.hh @@ -0,0 +1,107 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 26/08/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds all the scorers needed by the * + * GaspardTracker*** objects. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#ifndef SHIELDScorer_h +#define SHIELDScorer_h 1 + +#include "G4VPrimitiveScorer.hh" +#include "G4THitsMap.hh" + +namespace SHIELDSCORERS +{ + + +class SHIELDScorerCsIDetectorNumber : public G4VPrimitiveScorer +{ +public: // with description + SHIELDScorerCsIDetectorNumber(G4String name, G4String volumeName, G4int depth = 0); + virtual ~SHIELDScorerCsIDetectorNumber(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4int>* EvtMap; +}; + + + +class SHIELDScorerCsIEnergy : public G4VPrimitiveScorer +{ +public: // with description + SHIELDScorerCsIEnergy(G4String name, G4String volumeName, G4int depth = 0); + virtual ~SHIELDScorerCsIEnergy(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4double>* EvtMap; +}; + + + +class SHIELDScorerCsITOF : public G4VPrimitiveScorer +{ +public: // with description + SHIELDScorerCsITOF(G4String name, G4String volumeName, G4int depth = 0); + virtual ~SHIELDScorerCsITOF(); + +protected: // with description + virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*); + +public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void Clear(); + virtual void DrawAll(); + virtual void PrintAll(); + +private: + G4String m_VolumeName; + G4int HCID; + G4THitsMap<G4double>* EvtMap; +}; + + + +} + +using namespace SHIELDSCORERS; +#endif diff --git a/NPSimulation/src/Chamber.cc b/NPSimulation/src/Chamber.cc new file mode 100644 index 000000000..da0328ec0 --- /dev/null +++ b/NPSimulation/src/Chamber.cc @@ -0,0 +1,255 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Marc Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : January 2010 * + * Last update : 11/03/2010 * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe standard Chamber. Derived from VDetector* + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +// C++ header +#include <fstream> +#include <limits> + +// G4 geometry header +#include "G4Tubs.hh" +#include "G4Sphere.hh" + +//G4 various headers +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "G4Element.hh" +#include "G4ElementTable.hh" +#include "G4RotationMatrix.hh" +#include "G4PVPlacement.hh" +#include "G4VPhysicalVolume.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4EmCalculator.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" +#include "Randomize.hh" +using namespace CLHEP ; +// NPTool header +#include"Chamber.hh" + +using namespace std; + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Specific Method of this class +Chamber::Chamber() +{ + m_ChamberType = true; + m_ChamberRmin = 0 ; + m_ChamberRmax = 0 ; + m_ChamberPhiMin = 0 ; + m_ChamberPhiMax = 0 ; + m_ChamberThetaMin = 0 ; + m_ChamberThetaMax = 0 ; +} + +G4Material* Chamber::GetMaterialFromLibrary(G4String MaterialName, G4double Temperature, G4double Pressure) +{ + + G4Material* myMaterial; + + + if (MaterialName == "Alu") { + + G4Material* myMaterial = new G4Material("Alu", 13, 26.98*g/mole, 2.7*g/cm3); + + return myMaterial; + } + if (MaterialName == "Cu") { + + G4Material* myMaterial = new G4Material("Cu", 29, 63.546*g/mole, 8.96*g/cm3); + + return myMaterial; + } + if (MaterialName == "12C") { + + G4Material* myMaterial = new G4Material("12C", 6, 12.011*g/mole, 2.62*g/cm3); + + return myMaterial; + } + + else { + G4cout << "No Matching Material in the Chamber Library Default is Vacuum" << G4endl; + G4Element* N = new G4Element("Nitrogen", "N", 7., 14.01*g / mole); + G4Element* O = new G4Element("Oxygen" , "O", 8., 16.00*g / mole); + myMaterial = new G4Material("Vacuum", 0.000000001*mg / cm3, 2); + myMaterial->AddElement(N, .7); + myMaterial->AddElement(O, .3); + return(myMaterial); + } +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Inherite Method of Vdetector Class + +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// Called in DetecorConstruction::ReadDetextorConfiguration Method +void Chamber::ReadConfiguration(string Path) +{ + ifstream ConfigFile; + ConfigFile.open(Path.c_str()); + string LineBuffer; + string DataBuffer; + + bool ReadingStatusChamber = false ; + // bool ReadingStatusCryoChamber = false ; + + bool check_Rmin = false ; + bool check_Rmax = false ; + bool check_PhiMin = false ; + bool check_PhiMax = false ; + bool check_ThetaMin = false ; + bool check_ThetaMax = false ; + bool check_Material = false ; + + + while (!ConfigFile.eof()) { + getline(ConfigFile, LineBuffer); + if (LineBuffer.compare(0, 8, "Chamber") == 0) { + cout << "Chamber Found" << endl; + m_ChamberType = true ; + ReadingStatusChamber = true ; + } + /* + else if (LineBuffer.compare(0, 10, "CryoChamber") == 0) { + cout << "Cryogenic Chamber Found" << endl; + m_ChamberType = false ; + ReadingStatusCryoChamber = true ; + } + */ + + while (ReadingStatusChamber) { + ConfigFile >> DataBuffer; + + //Search for comment Symbol % + if (DataBuffer.compare(0, 1, "%") == 0) { ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );} + + else if (DataBuffer.compare(0, 5, "Rmin=") == 0) { + check_Rmin = true ; + ConfigFile >> DataBuffer; + m_ChamberRmin = atof(DataBuffer.c_str()) * mm; + cout << "Chamber inner radius: " << m_ChamberRmin << endl ; + } + + else if (DataBuffer.compare(0, 5, "Rmax=") == 0) { + check_Rmax = true ; + ConfigFile >> DataBuffer; + m_ChamberRmax = atof(DataBuffer.c_str()) * mm; + cout << "Chamber outer radius: " << m_ChamberRmax << endl ; + } + + else if (DataBuffer.compare(0, 8, "PhiMin=") == 0) { + check_PhiMin = true ; + ConfigFile >> DataBuffer; + m_ChamberPhiMin = atof(DataBuffer.c_str()) * rad; + cout << "Chamber PhiMin: " << m_ChamberPhiMin << endl ; + } + else if (DataBuffer.compare(0, 8, "PhiMax=") == 0) { + check_PhiMax = true ; + ConfigFile >> DataBuffer; + m_ChamberPhiMax = atof(DataBuffer.c_str()) * rad; + cout << "Chamber PhiMax: " << m_ChamberPhiMax << endl ; + } + else if (DataBuffer.compare(0, 9, "ThetaMin=") == 0) { + check_ThetaMin = true ; + ConfigFile >> DataBuffer; + m_ChamberThetaMin = atof(DataBuffer.c_str()) * rad; + cout << "Chamber ThetaMin: " << m_ChamberThetaMin << endl ; + } + else if (DataBuffer.compare(0, 9, "ThetaMax=") == 0) { + check_ThetaMax = true ; + ConfigFile >> DataBuffer; + m_ChamberThetaMax = atof(DataBuffer.c_str()) * rad; + cout << "Chamber ThetaMax: " << m_ChamberThetaMax << endl ; + } + + else if (DataBuffer.compare(0, 9, "MATERIAL=") == 0) { + check_Material = true ; + ConfigFile >> DataBuffer; + m_ChamberMaterial = GetMaterialFromLibrary(DataBuffer); + cout << "Chamber Material: " << m_ChamberMaterial << endl ; + } + + /////////////////////////////////////////////////// + // If no Beam Token and no comment, toggle out + else + {ReadingStatusChamber = false; G4cout << "WARNING : Wrong Token Sequence: Getting out " << G4endl ;} + + /////////////////////////////////////////////////// + // If all Token found toggle out + if( check_Rmin && check_Rmax && check_Material && check_PhiMin && check_PhiMax && check_ThetaMin && check_ThetaMax ) + ReadingStatusChamber = false ; + + } + + + + } + + +} + +// Construct detector and inialise sensitive part. +// Called After DetecorConstruction::AddDetector Method +void Chamber::ConstructDetector(G4LogicalVolume* world) +{ + +// Little trick to avoid warning in compilation: Use a PVPlacement "buffer". +// If don't you will have a Warning unused variable 'myPVP' + G4VPhysicalVolume* PVPBuffer ; + + if (m_ChamberType) { // case of standard Chamber + + G4Sphere* solidChamber + = new G4Sphere("solidChamber", m_ChamberRmin, m_ChamberRmax, m_ChamberPhiMin, m_ChamberPhiMax, m_ChamberThetaMin, m_ChamberThetaMax ); + + G4LogicalVolume* logicChamber = new G4LogicalVolume(solidChamber, m_ChamberMaterial, "logicChamber"); + + // rotation of target + //G4RotationMatrix *rotation = new G4RotationMatrix(); + //rotation->rotateY(m_ChamberAngle); + + PVPBuffer = + new G4PVPlacement(0, G4ThreeVector(0., 0., 0.), logicChamber, "Chamber", world, false, 0); + + G4VisAttributes* ChamberVisAtt = new G4VisAttributes(G4Colour(0., 1., 1.)); + logicChamber->SetVisAttributes(ChamberVisAtt); + // } + } + + else { // case of cryogenic target + } + +} + +// Add Detector branch to the EventTree. +// Called After DetecorConstruction::AddDetector Method +void Chamber::InitializeRootOutput() +{} + +// Read sensitive part and fill the Root tree. +// Called at in the EventAction::EndOfEventAvtion +void Chamber::ReadSensitive(const G4Event*) +{} + diff --git a/NPSimulation/src/DetectorConstruction.cc b/NPSimulation/src/DetectorConstruction.cc index 8ecc581bb..07b02e0b8 100644 --- a/NPSimulation/src/DetectorConstruction.cc +++ b/NPSimulation/src/DetectorConstruction.cc @@ -9,7 +9,7 @@ * Original Author: Adrien MATTA contact address: matta@ipno.in2p3.fr * * * * Creation Date : January 2009 * - * Last update : * + * Last update : 26/08/2010 (M. Labiche) * *---------------------------------------------------------------------------* * Decription: * * This Class manage the virtual detector and call their method. * @@ -18,14 +18,17 @@ * token. * *---------------------------------------------------------------------------* * Comment: * - * * - * * + * 25/08/10: Added Shield around PARIS (marc.labiche@stfc.ac.uk) * + * 15/01/10: Added Chamber (marc.labiche@stfc.ac.uk) * + * 04/12/09: Added PARIS detector (marc.labiche@stfc.ac.uk) * *****************************************************************************/ + #include "DetectorConstruction.hh" #include "G4Material.hh" #include "G4Box.hh" #include "G4Tubs.hh" +#include "G4Sphere.hh" #include "G4LogicalVolume.hh" #include "G4ThreeVector.hh" #include "G4PVPlacement.hh" @@ -42,9 +45,11 @@ #include "GaspardTracker.hh" #include "AnnularS1.hh" #include "Target.hh" +#include "Chamber.hh" #include "ThinSi.hh" #include "Plastic.hh" #include "Paris.hh" +#include "Shield.hh" //Not G4 #include <cstdlib> @@ -55,12 +60,14 @@ DetectorConstruction::DetectorConstruction() : world_log(0), world_phys(0) { m_Target = 0; + m_Chamber = 0; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... DetectorConstruction::~DetectorConstruction() { delete m_Target; + delete m_Chamber; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -95,11 +102,36 @@ G4VPhysicalVolume* DetectorConstruction::Construct() world_phys = new G4PVPlacement(0, G4ThreeVector(), world_log, "world", 0, false, 0); - G4VisAttributes* VisAtt = new G4VisAttributes(G4Colour(0.2, 0.2, 0.2)); + // G4VisAttributes* VisAtt = new G4VisAttributes(G4Colour(0.2, 0.2, 0.2)); + G4VisAttributes* VisAtt = new G4VisAttributes(G4VisAttributes::Invisible); world_log->SetVisAttributes(VisAtt); //------------------------------------------------------------------ + //------------------------------Reaction Chamber volume + /* + G4double Chamber_Rmin = 20.0 * cm; + G4double Chamber_Rmax = 20.2 * cm; + G4double Chamber_ThetaMin = 0.0 * rad; + G4double Chamber_ThetaMax = 3.14 * rad; + G4double Chamber_PhiMin = 0.0 * rad; + G4double Chamber_PhiMax = 6.26 * rad; + + G4Sphere* Chamber_sphere + = new G4Sphere("Chamber_sphere", Chamber_Rmin, Chamber_Rmax, Chamber_PhiMin, Chamber_PhiMax, Chamber_ThetaMin, Chamber_ThetaMax ); + + Chamber_log = new G4LogicalVolume(Chamber_sphere, Vacuum, "Chamber_log", 0, 0, 0); + + Chamber_phys = new G4PVPlacement(0, G4ThreeVector(), Chamber_log, "Chamber", world_log, false, 0); + + G4VisAttributes* VisAttChamber = new G4VisAttributes(G4Colour(0.2, 0.2, 0.2)); + //G4VisAttributes* VisAtt = new G4VisAttributes(G4VisAttributes::Invisible); + Chamber_log->SetVisAttributes(VisAttChamber); + */ + //------------------------------------------------------------------ + + + return world_phys; } @@ -128,11 +160,13 @@ void DetectorConstruction::ReadConfigurationFile(string Path) bool cMUST2 = false; bool cAddThinSi = false; bool cGeneralTarget = false; + bool cGeneralChamber = false; bool cGPDTracker = false; // Gaspard Tracker bool cS1 = false; bool cPlastic = false; bool cDummy = false; bool cParis = false; // Paris Calorimeter + bool cShield = false; // Paris Shield CsI ////////////////////////////////////////////////////////////////////////////////////////// // added by Nicolas [07/05/09] string GlobalPath = getenv("NPTOOL"); @@ -193,6 +227,7 @@ void DetectorConstruction::ReadConfigurationFile(string Path) AddDetector(myDetector) ; } + //////////////////////////////////////////// //////////// Search for paris //////////// //////////////////////////////////////////// @@ -212,6 +247,25 @@ void DetectorConstruction::ReadConfigurationFile(string Path) AddDetector(myDetector) ; } + //////////////////////////////////////////// + //////////// Search for paris shield //////////// + //////////////////////////////////////////// + else if (LineBuffer.compare(0, 6, "Shield") == 0 && cShield == false) { + cShield = true ; + G4cout << "//////// Shield ////////" << G4endl ; + + // Instantiate the new array as a VDetector Object + VDetector* myDetector = new Shield() ; + + // Read Position of Telescope + ConfigFile.close() ; + myDetector->ReadConfiguration(Path) ; + ConfigFile.open(Path.c_str()) ; + + // Add array to the VDetector Vector + AddDetector(myDetector) ; + } + //////////////////////////////////////////// ///// Search for S1 Annular detector ////// //////////////////////////////////////////// @@ -310,6 +364,28 @@ void DetectorConstruction::ReadConfigurationFile(string Path) // Add target to the VDetector Vector AddDetector(myDetector); } + //////////////////////////////////////////// + //////////// Search for Chamber ///////////// + //////////////////////////////////////////// + + else if (LineBuffer.compare(0, 14, "GeneralChamber") == 0 && cGeneralChamber == false) { + cGeneralChamber = true ; + G4cout << "////////// Chamber ///////////" << G4endl << G4endl ; + + // Instantiate the new array as a VDetector Objects + VDetector* myDetector = new Chamber(); + + // Read Position and target specification + ConfigFile.close(); + myDetector->ReadConfiguration(Path); + ConfigFile.open(Path.c_str()); + + // Add Target to DetectorConstruction + m_Chamber = (Chamber*) myDetector; + + // Add target to the VDetector Vector + AddDetector(myDetector); + } //Nothing understandable //else ; diff --git a/NPSimulation/src/EventGeneratorIsotropic.cc b/NPSimulation/src/EventGeneratorIsotropic.cc index b2814747a..df410a427 100644 --- a/NPSimulation/src/EventGeneratorIsotropic.cc +++ b/NPSimulation/src/EventGeneratorIsotropic.cc @@ -195,6 +195,7 @@ void EventGeneratorIsotropic::GenerateEvent(G4Event* anEvent, G4ParticleGun* par G4double cos_theta_max = cos(m_HalfOpenAngleMax); G4double cos_theta = cos_theta_min + (cos_theta_max - cos_theta_min) * RandFlat::shoot(); G4double theta = acos(cos_theta) ; + // G4double phi = 3*pi/2; //RandFlat::shoot() * 2 * pi ; G4double phi = RandFlat::shoot() * 2 * pi ; G4double particle_energy = m_EnergyLow + RandFlat::shoot() * (m_EnergyHigh - m_EnergyLow) ; @@ -229,6 +230,7 @@ void EventGeneratorIsotropic::GenerateEvent(G4Event* anEvent, G4ParticleGun* par // Emitted particle energy m_InitConditions->SetICEmittedEnergy(particle_energy / MeV); + //Shoot particle particleGun->GeneratePrimaryVertex(anEvent) ; } diff --git a/NPSimulation/src/GaspardTrackerDummyShape.cc b/NPSimulation/src/GaspardTrackerDummyShape.cc index 20b87009b..c04602bd0 100644 --- a/NPSimulation/src/GaspardTrackerDummyShape.cc +++ b/NPSimulation/src/GaspardTrackerDummyShape.cc @@ -755,6 +755,10 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event) G4int sizeX = XHitMap->entries(); G4int sizeY = YHitMap->entries(); + + //G4cout << "sizeN:" << sizeN << G4endl; + + if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) { G4cout << "No match size Si Event Map: sE:" << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ; @@ -766,6 +770,11 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event) G4double N = *(DetectorNumber_itr->second); G4int NTrackID = DetectorNumber_itr->first - N; + G4cout <<"N:" <<N << G4endl; + G4cout <<"DetectorNumber_itr->first:" << DetectorNumber_itr->first << G4endl; + G4cout <<"NTrackID:" <<NTrackID << G4endl; + + if (N > 0) { // Fill detector number ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(m_index["DummyShape"] + N); diff --git a/NPSimulation/src/GeneralScorers.cc b/NPSimulation/src/GeneralScorers.cc index c22470385..9284d069e 100644 --- a/NPSimulation/src/GeneralScorers.cc +++ b/NPSimulation/src/GeneralScorers.cc @@ -54,7 +54,7 @@ int GENERALSCORERS::PickUpDetectorNumber(G4Step* aStep, std::string DetName) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - //Detector Number Scorer +// Detector Number Scorer PSDetectorNumber::PSDetectorNumber(G4String name, G4String VolumeName, G4int depth ) : G4VPrimitiveScorer(name, depth), HCID(-1) { @@ -119,6 +119,8 @@ void PSDetectorNumber::PrintAll() + + // Energy Scorer (deal with multiple particle hit) PSEnergy::PSEnergy(G4String name, G4String VolumeName, G4int depth) diff --git a/NPSimulation/src/Paris.cc b/NPSimulation/src/Paris.cc index 2145ae213..649b85395 100644 --- a/NPSimulation/src/Paris.cc +++ b/NPSimulation/src/Paris.cc @@ -6,7 +6,7 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * * * * Creation Date : 04/12/09 * * Last update : * @@ -28,7 +28,8 @@ // NPTool headers #include "Paris.hh" -#include "ParisPhoswitch.hh" +#include "ParisPhoswich.hh" +#include "ParisCluster.hh" using namespace std; @@ -53,16 +54,17 @@ void Paris::ReadConfiguration(string Path) ifstream ConfigFile; ConfigFile.open(Path.c_str()); - bool bParisPhoswitch = false; + bool bParisPhoswich = false; + bool bParisCluster = false; string LineBuffer; while (!ConfigFile.eof()) { getline(ConfigFile, LineBuffer); - if (LineBuffer.compare(0, 14, "ParisPhoswitch") == 0 && bParisPhoswitch == false) { - bParisPhoswitch = true; + if (LineBuffer.compare(0, 14, "ParisPhoswich") == 0 && bParisPhoswich == false) { + bParisPhoswich = true; // instantiate a new "detector" corresponding to the Square elements - ParisModule* myDetector = new ParisPhoswitch(); + ParisModule* myDetector = new ParisPhoswich(); // read part of the configuration file corresponding to square elements ConfigFile.close(); @@ -72,14 +74,14 @@ void Paris::ReadConfiguration(string Path) // ms_InterCoord comes from VDetector myDetector->SetInterCoordPointer(ms_InterCoord); - // store ParisSquare "detector" + // store ParisPhoswich "detector" m_Modules.push_back(myDetector); } -/* else if (LineBuffer.compare(0, 12, "GPDTrapezoid") == 0 && GPDTrkTrapezoid == false) { - GPDTrkTrapezoid = true; + else if (LineBuffer.compare(0, 12, "ParisCluster") == 0 && bParisCluster == false) { + bParisCluster = true; // instantiate a new "detector" corresponding to the Trapezoid elements - ParisModule* myDetector = new ParisTrapezoid(); + ParisModule* myDetector = new ParisCluster(); // read part of the configuration file corresponding to trapezoid elements ConfigFile.close(); @@ -89,16 +91,17 @@ void Paris::ReadConfiguration(string Path) // ms_InterCoord comes from VDetector myDetector->SetInterCoordPointer(ms_InterCoord); - // store ParisTrapezoid "detector" + // store ParisCluster "detector" m_Modules.push_back(myDetector); - }*/ + } + } } // Construct detector and initialize sensitive part. -// Called After DetecorConstruction::AddDetector Method +// Called After DetectorConstruction::AddDetector Method void Paris::ConstructDetector(G4LogicalVolume* world) { // loop on sub-detectors belonging to Paris diff --git a/NPSimulation/src/ParisCluster.cc b/NPSimulation/src/ParisCluster.cc new file mode 100644 index 000000000..464b611fe --- /dev/null +++ b/NPSimulation/src/ParisCluster.cc @@ -0,0 +1,1084 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 04/12/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: Define a cluster of 9 phoswitch modules for the Paris detector* + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + + +// C++ headers +#include <sstream> +#include <string> +#include <cmath> + +// G4 Geometry headers +#include "G4Trd.hh" +#include "G4Box.hh" +#include "G4Trap.hh" + +// G4 various headers +#include "G4MaterialTable.hh" +#include "G4Element.hh" +#include "G4ElementTable.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4RotationMatrix.hh" +#include "G4Transform3D.hh" +#include "G4PVPlacement.hh" +#include "G4PVDivision.hh" + +// G4 sensitive +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" + +// NPTool headers +#include "ParisCluster.hh" +#include "ParisScorers.hh" +#include "GeneralScorers.hh" +#include "RootOutput.h" + +// CLHEP +#include "CLHEP/Random/RandGauss.h" + +using namespace std; +using namespace CLHEP; +using namespace PARISCLUSTER; + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +ParisCluster::ParisCluster() +{ + ms_InterCoord = 0; +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +ParisCluster::~ParisCluster() +{ +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ParisCluster::AddModule(G4ThreeVector X1_Y1, + G4ThreeVector X128_Y1, + G4ThreeVector X1_Y128, + G4ThreeVector X128_Y128) +{ + m_DefinitionType.push_back(true); + + m_X1_Y1.push_back(X1_Y1); + m_X128_Y1.push_back(X128_Y1); + m_X1_Y128.push_back(X1_Y128); + m_X128_Y128.push_back(X128_Y128); + + m_R.push_back(0); + m_Theta.push_back(0); + m_Phi.push_back(0); + m_beta_u.push_back(0); + m_beta_v.push_back(0); + m_beta_w.push_back(0); +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ParisCluster::AddModule(G4double R, + G4double Theta, + G4double Phi, + G4double beta_u, + G4double beta_v, + G4double beta_w) +{ + G4ThreeVector empty = G4ThreeVector(0, 0, 0); + + m_DefinitionType.push_back(false); + + m_X1_Y1.push_back(empty); + m_X128_Y1.push_back(empty); + m_X1_Y128.push_back(empty); + m_X128_Y128.push_back(empty); + + m_R.push_back(R); + m_Theta.push_back(Theta); + m_Phi.push_back(Phi); + m_beta_u.push_back(beta_u); + m_beta_v.push_back(beta_v); + m_beta_w.push_back(beta_w); +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ParisCluster::VolumeMaker(G4int DetecNumber, + G4ThreeVector MMpos, + G4RotationMatrix* MMrot, + G4LogicalVolume* world) +{ + G4double NbrTelescopes = DetecNumber; + G4String DetectorNumber; + ostringstream Number; + Number << NbrTelescopes; + DetectorNumber = Number.str(); + + ///////////////////////////////////////////////////////////////// + /////////////////Element Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + G4String symbol, name; + G4double density = 0. , a = 0, z = 0; + G4int ncomponents = 0; + G4int nel = 0, natoms = 0; + + //////////////////////////////////////////////////////////////// + /////////////////Material Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + a=137.327*g/mole; + G4Element* Ba = new G4Element(name="Barium",symbol="Ba",z=56.,a); + a=18.9984032*g/mole; + G4Element* F = new G4Element(name="Fluorine",symbol="F",z=9.,a); + a=22.99*g/mole; + G4Element* Na = new G4Element(name="Sodium",symbol="Na",z=11.,a); + a=79.904*g/mole; + G4Element* Br = new G4Element(name="Bromine",symbol="Br",z=35.,a); + a=126.90477*g/mole; + G4Element* I = new G4Element(name="Iodine",symbol="I",z=53.,a); + a=132.90545*g/mole; + G4Element* Cs = new G4Element(name="Cesium",symbol="Cs",z=55.,a); + a=138.9055*g/mole; + G4Element* La = new G4Element(name="Lanthanum",symbol="La",z=57.,a); + + // Vacuum + G4Element* N = new G4Element("Nitrogen" , symbol = "N" , z = 7 , a = 14.01 * g / mole); + G4Element* O = new G4Element("Oxigen" , symbol = "O" , z = 8 , a = 16.00 * g / mole); + + density = 0.000000001 * mg / cm3; + G4Material* Vacuum = new G4Material("Vacuum", density, ncomponents = 2); + Vacuum->AddElement(N, .7); + Vacuum->AddElement(O, .3); + + // NaI + density = 3.67*g/cm3, nel = 2; + G4Material* NaI = new G4Material(name="NaI",density,nel); + NaI->AddElement(Na, natoms = 1); + NaI->AddElement(I, natoms = 1); + + // CsI + density = 4.51*g/cm3, nel = 2; + G4Material* CsI = new G4Material(name="CsI", density, nel); + CsI->AddElement(Cs, natoms = 1); + CsI->AddElement(I, natoms = 1); + + // LaBr3 + density = 5.29*g/cm3, nel = 2; + G4Material* LaBr3 = new G4Material(name="LaBr3",density,nel); + LaBr3->AddElement(La, natoms = 1); + LaBr3->AddElement(Br, natoms = 3); + + // BaF2 + density = 4.89*g/cm3, nel = 2; + G4Material* BaF2 = new G4Material(name="BaF2", density, nel); + BaF2->AddElement(Ba, natoms = 1); + BaF2->AddElement(F, natoms = 2); + + //////////////////////////////////////////////////////////////// + ////////////// Starting Volume Definition ////////////////////// + //////////////////////////////////////////////////////////////// + // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". + // If don't you will have a Warning unused variable 'myPVP' + G4PVPlacement* PVPBuffer; + G4String Name = "ParisCluster" + DetectorNumber ; + + // Mother Volume + G4Box* solidParisCluster = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length); + G4LogicalVolume* logicParisCluster = new G4LogicalVolume(solidParisCluster, Vacuum, Name, 0, 0, 0); + + PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , + logicParisCluster , + Name , + world , + false , + 0); + + logicParisCluster->SetVisAttributes(G4VisAttributes::Invisible); + if (m_non_sensitive_part_visiualisation) logicParisCluster->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); + + // Phoswich construction + + G4ThreeVector positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, LaBr3Face+InterSpace, 0.); + G4Box* solidPhoSwStage = new G4Box(Name+"_PhoSwStage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*(LaBr3Thickness+CsIThickness)); + G4LogicalVolume* logicPhoSwStage = new G4LogicalVolume(solidPhoSwStage, LaBr3, "logicPhoSwStage", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false, + 0); + + positionPhoSwStage = G4ThreeVector(0., LaBr3Face+InterSpace, 0.); + PVPBuffer = new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false, + 1); + + positionPhoSwStage = G4ThreeVector(-(LaBr3Face+InterSpace), LaBr3Face+InterSpace, 0.); + PVPBuffer = new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false, + 2); + + positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, 0., 0.); + PVPBuffer = new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false, + 3); + + positionPhoSwStage = G4ThreeVector(0., 0., 0.); + PVPBuffer = new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false, + 4); + + positionPhoSwStage = G4ThreeVector(-(LaBr3Face+InterSpace), 0., 0.); + PVPBuffer = new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false, + 5); + + positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, -(LaBr3Face+InterSpace), 0.); + PVPBuffer = new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false, + 6); + + positionPhoSwStage = G4ThreeVector(0.,-(LaBr3Face+InterSpace), 0.); + PVPBuffer = new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false, + 7); + + positionPhoSwStage = G4ThreeVector(-(LaBr3Face+InterSpace),-(LaBr3Face+InterSpace), 0.); + PVPBuffer = new G4PVPlacement(0, + positionPhoSwStage, + logicPhoSwStage, + Name+"_PhoSwStage", + logicParisCluster, + false, + 8); + + + // LaBr3 + G4ThreeVector positionLaBr3Stage = G4ThreeVector(0., 0., LaBr3Stage_PosZ); + + G4Box* solidLaBr3Stage = new G4Box(Name+"_LaBr3Stage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*LaBr3Thickness); + G4LogicalVolume* logicLaBr3Stage = new G4LogicalVolume(solidLaBr3Stage, LaBr3, "logicLaBr3Stage", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, + positionLaBr3Stage, + logicLaBr3Stage, + Name+"_LaBr3Stage", + logicPhoSwStage, + false, + 0); + + + + + // Set LaBr3 sensible + logicLaBr3Stage->SetSensitiveDetector(m_LaBr3StageScorer); + + // Visualisation of LaBr3Stage Strip + G4VisAttributes* LaBr3VisAtt = new G4VisAttributes(G4Colour(0., 0., 1.)); + logicLaBr3Stage->SetVisAttributes(LaBr3VisAtt); + + // CsI or NaI + G4ThreeVector positionCsIStage = G4ThreeVector(0.,0., CsIStage_PosZ); + + G4Box* solidCsIStage = new G4Box(Name+"_CsIStage", 0.5*CsIFace, 0.5*CsIFace, 0.5*CsIThickness); + //G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, CsI, "logicCsIStage", 0, 0, 0); + G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, NaI, "logicCsIStage", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, + positionCsIStage, + logicCsIStage, + Name + "_CsIStage", + logicPhoSwStage, + false, + 0); + + // Set CsI sensible + logicCsIStage->SetSensitiveDetector(m_CsIStageScorer); + + // Visualisation of CsIStage Strip + G4VisAttributes* CsIVisAtt = new G4VisAttributes(G4Colour(1., 0., 0.)); + logicCsIStage->SetVisAttributes(CsIVisAtt); +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Virtual Method of VDetector class + +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// Called in DetecorConstruction::ReadDetextorConfiguration Method +void ParisCluster::ReadConfiguration(string Path) +{ + ifstream ConfigFile; + ConfigFile.open(Path.c_str()); + string LineBuffer, DataBuffer; + + // A:X1_Y1 --> X:1 Y:1 + // B:X128_Y1 --> X:128 Y:1 + // C:X1_Y128 --> X:1 Y:128 + // D:X128_Y128 --> X:128 Y:128 + + G4double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz ; + G4ThreeVector A , B , C , D ; + G4double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0 ; + + bool ReadingStatus = false; + + bool check_A = false; + bool check_C = false; + bool check_B = false; + bool check_D = false; + + bool check_Theta = false; + bool check_Phi = false; + bool check_R = false; + bool check_beta = false; + + bool checkVis = false; + + while (!ConfigFile.eof()) { + getline(ConfigFile, LineBuffer); + if (LineBuffer.compare(0, 12, "ParisCluster") == 0) { + G4cout << "///" << G4endl ; + G4cout << "Cluster element found: " << G4endl ; + ReadingStatus = true ; + } + + while (ReadingStatus) { + ConfigFile >> DataBuffer; + // Comment Line + if (DataBuffer.compare(0, 1, "%") == 0) {/*do nothing */;} + + // Position method + else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { + check_A = true; + ConfigFile >> DataBuffer ; + Ax = atof(DataBuffer.c_str()) ; + Ax = Ax * mm ; + ConfigFile >> DataBuffer ; + Ay = atof(DataBuffer.c_str()) ; + Ay = Ay * mm ; + ConfigFile >> DataBuffer ; + Az = atof(DataBuffer.c_str()) ; + Az = Az * mm ; + + A = G4ThreeVector(Ax, Ay, Az); + cout << "X1 Y1 corner position : " << A << endl; + } + else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) { + check_B = true; + ConfigFile >> DataBuffer ; + Bx = atof(DataBuffer.c_str()) ; + Bx = Bx * mm ; + ConfigFile >> DataBuffer ; + By = atof(DataBuffer.c_str()) ; + By = By * mm ; + ConfigFile >> DataBuffer ; + Bz = atof(DataBuffer.c_str()) ; + Bz = Bz * mm ; + + B = G4ThreeVector(Bx, By, Bz); + cout << "X128 Y1 corner position : " << B << endl; + } + else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) { + check_C = true; + ConfigFile >> DataBuffer ; + Cx = atof(DataBuffer.c_str()) ; + Cx = Cx * mm ; + ConfigFile >> DataBuffer ; + Cy = atof(DataBuffer.c_str()) ; + Cy = Cy * mm ; + ConfigFile >> DataBuffer ; + Cz = atof(DataBuffer.c_str()) ; + Cz = Cz * mm ; + + C = G4ThreeVector(Cx, Cy, Cz); + cout << "X1 Y128 corner position : " << C << endl; + } + else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) { + check_D = true; + ConfigFile >> DataBuffer ; + Dx = atof(DataBuffer.c_str()) ; + Dx = Dx * mm ; + ConfigFile >> DataBuffer ; + Dy = atof(DataBuffer.c_str()) ; + Dy = Dy * mm ; + ConfigFile >> DataBuffer ; + Dz = atof(DataBuffer.c_str()) ; + Dz = Dz * mm ; + + D = G4ThreeVector(Dx, Dy, Dz); + cout << "X128 Y128 corner position : " << D << endl; + } + + // Angle method + else if (DataBuffer.compare(0, 6, "THETA=") == 0) { + check_Theta = true; + ConfigFile >> DataBuffer ; + Theta = atof(DataBuffer.c_str()) ; + Theta = Theta * deg; + cout << "Theta: " << Theta / deg << endl; + } + else if (DataBuffer.compare(0, 4, "PHI=") == 0) { + check_Phi = true; + ConfigFile >> DataBuffer ; + Phi = atof(DataBuffer.c_str()) ; + Phi = Phi * deg; + cout << "Phi: " << Phi / deg << endl; + } + else if (DataBuffer.compare(0, 2, "R=") == 0) { + check_R = true; + ConfigFile >> DataBuffer ; + R = atof(DataBuffer.c_str()) ; + R = R * mm; + cout << "R: " << R / mm << endl; + } + else if (DataBuffer.compare(0, 5, "BETA=") == 0) { + check_beta = true; + ConfigFile >> DataBuffer ; + beta_u = atof(DataBuffer.c_str()) ; + beta_u = beta_u * deg ; + ConfigFile >> DataBuffer ; + beta_v = atof(DataBuffer.c_str()) ; + beta_v = beta_v * deg ; + ConfigFile >> DataBuffer ; + beta_w = atof(DataBuffer.c_str()) ; + beta_w = beta_w * deg ; + G4cout << "Beta: " << beta_u / deg << " " << beta_v / deg << " " << beta_w / deg << G4endl ; + } + + else if (DataBuffer.compare(0, 4, "VIS=") == 0) { + checkVis = true ; + ConfigFile >> DataBuffer; + if (DataBuffer.compare(0, 3, "all") == 0) m_non_sensitive_part_visiualisation = true; + } + + else G4cout << "WARNING: Wrong Token, ParisCluster: Cluster Element not added" << G4endl; + + // Add The previously define telescope + // With position method + if ((check_A && check_B && check_C && check_D && checkVis) && + !(check_Theta && check_Phi && check_R)) { + ReadingStatus = false; + check_A = false; + check_C = false; + check_B = false; + check_D = false; + checkVis = false; + + AddModule(A, B, C, D); + } + + // With angle method + if ((check_Theta && check_Phi && check_R && checkVis) && + !(check_A && check_B && check_C && check_D)) { + ReadingStatus = false; + check_Theta = false; + check_Phi = false; + check_R = false; + check_beta = false; + checkVis = false; + + AddModule(R, Theta, Phi, beta_u, beta_v, beta_w); + } + } + } +} + + + +// Construct detector and inialise sensitive part. +// Called After DetecorConstruction::AddDetector Method +void ParisCluster::ConstructDetector(G4LogicalVolume* world) +{ + G4RotationMatrix* MMrot = NULL ; + G4ThreeVector MMpos = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMu = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMv = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMw = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMCenter = G4ThreeVector(0, 0, 0) ; + + G4int NumberOfTelescope = m_DefinitionType.size() ; + + for (G4int i = 0; i < NumberOfTelescope; i++) { + // By Point + if (m_DefinitionType[i]) { + // (u,v,w) unitary vector associated to telescope referencial + // (u,v) // to silicon plan + // w perpendicular to (u,v) plan and pointing ThirdStage + MMu = m_X128_Y1[i] - m_X1_Y1[i]; + MMu = MMu.unit(); + + MMv = m_X1_Y128[i] - m_X1_Y1[i]; + MMv = MMv.unit(); + + G4ThreeVector MMscal = MMu.dot(MMv); + + MMw = MMu.cross(MMv); +// if (MMw.z() > 0) MMw = MMv.cross(MMu) ; + MMw = MMw.unit(); + + MMCenter = (m_X1_Y1[i] + m_X1_Y128[i] + m_X128_Y1[i] + m_X128_Y128[i]) / 4; + + // Passage Matrix from Lab Referential to Telescope Referential + // MUST2 + MMrot = new G4RotationMatrix(MMu, MMv, MMw); + // translation to place Telescope + MMpos = MMw * Length * 0.5 + MMCenter; + } + + // By Angle + else { + G4double Theta = m_Theta[i] ; + G4double Phi = m_Phi[i] ; + + // (u,v,w) unitary vector associated to telescope referencial + // (u,v) // to silicon plan + // w perpendicular to (u,v) plan and pointing ThirdStage + // Phi is angle between X axis and projection in (X,Y) plan + // Theta is angle between position vector and z axis + G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad); + G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad); + G4double wZ = m_R[i] * cos(Theta / rad); + MMw = G4ThreeVector(wX, wY, wZ); + + // vector corresponding to the center of the module + G4ThreeVector CT = MMw; + + // vector parallel to one axis of silicon plane + G4double ii = cos(Theta / rad) * cos(Phi / rad); + G4double jj = cos(Theta / rad) * sin(Phi / rad); + G4double kk = -sin(Theta / rad); + G4ThreeVector Y = G4ThreeVector(ii, jj, kk); + + MMw = MMw.unit(); + MMu = MMw.cross(Y); + MMv = MMw.cross(MMu); + MMv = MMv.unit(); + MMu = MMu.unit(); + + // Passage Matrix from Lab Referential to Telescope Referential + // MUST2 + MMrot = new G4RotationMatrix(MMu, MMv, MMw); + // Telescope is rotate of Beta angle around MMv axis. + MMrot->rotate(m_beta_u[i], MMu); + MMrot->rotate(m_beta_v[i], MMv); + MMrot->rotate(m_beta_w[i], MMw); + // translation to place Telescope + MMpos = MMw * Length * 0.5 + CT ; + } + + VolumeMaker(i + 1, MMpos, MMrot, world); + } + + delete MMrot ; +} + + + +// Connect the ParisData class to the output TTree +// of the simulation +void ParisCluster::InitializeRootOutput() +{ +} + + + +// Set the TinteractionCoordinates object from VDetector to the present class +void ParisCluster::SetInterCoordPointer(TInteractionCoordinates* interCoord) +{ + ms_InterCoord = interCoord; +} + + + +// Read sensitive part and fill the Root tree. +// Called at in the EventAction::EndOfEventAvtion +void ParisCluster::ReadSensitive(const G4Event* event) +{ + ////////////////////////////////////////////////////////////////////////////////////// + //////////////////////// Used to Read Event Map of detector ////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + + momentum = event->GetPrimaryVertex()->GetPrimary()->GetMomentum(); + G4double EGamma = momentum.getR(); // for photon E=p + G4double EGammaMin = EGamma-4*ResoFirstStage; + G4double EGammaMax = EGamma+4*ResoFirstStage; + + // First Stage (LaBr3) + std::map<G4int, G4int*>::iterator DetectorNumber_itr; + std::map<G4int, G4int*>::iterator CrystalNumber_itr; + std::map<G4int, G4double*>::iterator Energy_itr; + std::map<G4int, G4double*>::iterator Time_itr; + //std::map<G4int, G4double*>::iterator X_itr; + //std::map<G4int, G4double*>::iterator Y_itr; + //std::map<G4int, G4double*>::iterator Pos_X_itr; + //std::map<G4int, G4double*>::iterator Pos_Y_itr; + //std::map<G4int, G4double*>::iterator Pos_Z_itr; + //std::map<G4int, G4double*>::iterator Ang_Theta_itr; + //std::map<G4int, G4double*>::iterator Ang_Phi_itr; + + G4THitsMap<G4int>* DetectorNumberHitMap; + G4THitsMap<G4int>* CrystalNumberHitMap; + G4THitsMap<G4double>* EnergyHitMap; + G4THitsMap<G4double>* TimeHitMap; + // G4THitsMap<G4double>* XHitMap; + // G4THitsMap<G4double>* YHitMap; + //G4THitsMap<G4double>* PosXHitMap; + //G4THitsMap<G4double>* PosYHitMap; + //G4THitsMap<G4double>* PosZHitMap; + //G4THitsMap<G4double>* AngThetaHitMap; + //G4THitsMap<G4double>* AngPhiHitMap; + + // NULL pointer are given to avoid warning at compilation + // Second Stage (CsI) + std::map<G4int, G4int*>::iterator CsIDetectorNumber_itr; + std::map<G4int, G4double*>::iterator CsIStageEnergy_itr ; + G4THitsMap<G4int>* CsIDetectorNumberHitMap = NULL ; + G4THitsMap<G4double>* CsIStageEnergyHitMap = NULL ; + + + // Read the Scorer associate to the LaBr + //Detector Number + G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/DetectorNumber") ; + DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID)) ; + DetectorNumber_itr = DetectorNumberHitMap->GetMap()->begin() ; + + //Crystal Number + G4int CrystDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/CrystalNumber") ; + CrystalNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CrystDetCollectionID)) ; + CrystalNumber_itr = CrystalNumberHitMap->GetMap()->begin() ; + + //Energy + G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/StripEnergy") ; + EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID)) ; + Energy_itr = EnergyHitMap->GetMap()->begin() ; + + //Time of Flight + G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/StripTime") ; + TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID)) ; + Time_itr = TimeHitMap->GetMap()->begin() ; + + /* + //Strip Number X + G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/StripIDFront") ; + XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID)) ; + X_itr = XHitMap->GetMap()->begin() ; + + //Strip Number Y + G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/StripIDBack"); + YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID)) ; + Y_itr = YHitMap->GetMap()->begin() ; + + + //Interaction Coordinate X + G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/InterCoordX") ; + PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID)) ; + Pos_X_itr = PosXHitMap->GetMap()->begin() ; + + //Interaction Coordinate Y + G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/InterCoordY") ; + PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID)) ; + Pos_Y_itr = PosYHitMap->GetMap()->begin() ; + + //Interaction Coordinate Z + G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/InterCoordZ") ; + PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID)) ; + Pos_Z_itr = PosXHitMap->GetMap()->begin() ; + + //Interaction Coordinate Angle Theta + G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/InterCoordAngTheta") ; + AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID)) ; + Ang_Theta_itr = AngThetaHitMap->GetMap()->begin() ; + + //Interaction Coordinate Angle Phi + G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisCluster/InterCoordAngPhi") ; + AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID)) ; + Ang_Phi_itr = AngPhiHitMap->GetMap()->begin() ; + */ + + + // Read the Scorer associate to the SecondStage + //CsI Detector Number + G4int CsIDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisCluster/CsIDetectorNumber") ; + CsIDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsIDetCollectionID)) ; + CsIDetectorNumber_itr = CsIDetectorNumberHitMap->GetMap()->begin() ; + //CsI Energy + G4int CsIStageEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisCluster/CsIStageEnergy") ; + CsIStageEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIStageEnergyCollectionID)) ; + CsIStageEnergy_itr = CsIStageEnergyHitMap->GetMap()->begin() ; + + + // Check the size of different map + G4int sizeN = DetectorNumberHitMap->entries(); // number of objects hit by trackID=1 (can be the same object hit several time) + G4int sizeC = CrystalNumberHitMap->entries(); + G4int sizeE = EnergyHitMap->entries(); // = number of steps with edep non null + G4int sizeT = TimeHitMap->entries(); + //G4int sizeX = PosXHitMap->entries(); + //G4int sizeY = PosYHitMap->entries(); + //G4int sizeX = XHitMap->entries(); + //G4int sizeY = YHitMap->entries(); + + G4int sizeNCsI= CsIDetectorNumberHitMap->entries(); + G4int sizeECsI= CsIStageEnergyHitMap->entries(); + + //G4cout <<"SizeN=" << sizeN << endl; + //G4cout <<"SizeC=" << sizeC << endl; + //G4cout <<"SizeN CsI =" << sizeNCsI << endl; + //G4cout <<"SizeE CsI =" << sizeECsI << endl; + + //DetectorNumberHitMap->PrintAllHits(); + + + if (sizeE != sizeT) { + G4cout << "No match size PARIS Event Map: sE:" + << sizeE << " sT:" << sizeT << endl ; + + // if (sizeE != sizeX) { + //G4cout << "No match size PARIS Event Map: sE:" + //<< sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ; + return; + } + + + //G4cout <<"SizeN=" << sizeN << G4endl; + + + if(sizeN>0) + { + + // Deal with trackID=1: + G4int N_first= *(DetectorNumber_itr->second); // ID of first det hit + G4int NTrackID = DetectorNumber_itr->first - N_first; // first trackID dealt with (not always =1) + G4double E = *(Energy_itr->second); + G4double T = *(Time_itr->second); + G4int NCryst= *(CrystalNumber_itr->second); + + + //G4cout <<"NTrackID=" << NTrackID << G4endl; + //G4cout <<"N_first=" << N_first << G4endl; + //G4cout <<"CrystalNumber_first=" << NCryst << G4endl; + //G4cout <<"Energy first=" << E << G4endl; + //G4cout <<"Time first =" << T << G4endl; + + + if(sizeN>1) + { + Energy_itr++; + Time_itr++; + CrystalNumber_itr++; + DetectorNumber_itr++; + + for (G4int l = 1; l < sizeN ; l++) { // loop on all the other tracks + + + G4int N= *(DetectorNumber_itr->second); // ID of det hit + NTrackID = DetectorNumber_itr->first - N; // ID of the track + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"N=" << N << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl; + //G4cout <<"NTrackID=" << NTrackID << G4endl; + + if(N==N_first) + { + E += *(Energy_itr->second); + + }else // we fill the tree for the first detector hit and move to the next detector hit + { + if(E!=0) + { + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first); + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + + } + + N_first=N; + E=*(Energy_itr->second); + + } + + + //G4cout <<"Energy=" << E << G4endl; + //G4cout <<"Time =" << T << G4endl; + + // Always fill the tree at the end of the loop: + if(l==(sizeN-1) && E!=0) + { + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first); + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + + Energy_itr++; + DetectorNumber_itr++; + } + }else + { + // Fill the tree if sizeN=1: + if(E!=0) + { + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first); + // Fill Energy + //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + } + + + } + + + ///////// For CsI stage: + EGammaMin = EGamma-4*ResoSecondStage; + EGammaMax = EGamma+4*ResoSecondStage; + if(sizeNCsI>0) + { + // Deal with trackID=1: + G4int NCsI_first= *(CsIDetectorNumber_itr->second); // ID of first det hit + G4int NCsITrackID = CsIDetectorNumber_itr->first - NCsI_first; // first trackID dealt with (not always =1) + G4double E_CsI=*(CsIStageEnergy_itr->second); // Energy second stage + + + //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; + //G4cout <<"NCsI_first=" << NCsI_first << G4endl; + //G4cout <<"CsI Energy first=" << E_CsI << G4endl; + + if(sizeNCsI>1) + { + CsIDetectorNumber_itr++; + CsIStageEnergy_itr++; + + for (G4int l = 1; l < sizeNCsI ; l++) { // loop on all the other tracks + + + G4int NCsI= *(CsIDetectorNumber_itr->second); // ID of det hit + NCsITrackID = CsIDetectorNumber_itr->first - NCsI; // ID of the track + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"NCsI=" << NCsI << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl; + //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; + + if(NCsI==NCsI_first) + { + + E_CsI += *(CsIStageEnergy_itr->second); + + }else // we fill the tree for the first detector hit and move to the next detector hit + { + if(E_CsI!=0) + { + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first); + // Fill Energy + // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + } + + NCsI_first=NCsI; + E_CsI=*(CsIStageEnergy_itr->second); + } + + //G4cout <<"Energy_CsI=" << E_CsI << G4endl; + + // Always fill the tree at the end of the loop: + + if(l==(sizeNCsI-1) && E_CsI!=0) + { + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first); + // Fill Energy + // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + + } + + CsIStageEnergy_itr++; + CsIDetectorNumber_itr++; + } + + }else + { + // Fill the tree if sizeN=1: + if(E_CsI!=0) + { + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first); + // Fill Energy + // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + } + } + + } + + + + + // clear map for next event + DetectorNumberHitMap -> clear(); + EnergyHitMap -> clear(); + TimeHitMap -> clear(); + //XHitMap -> clear(); + //YHitMap -> clear(); + //PosXHitMap -> clear(); + //PosYHitMap -> clear(); + //PosZHitMap -> clear(); + //AngThetaHitMap -> clear(); + //AngPhiHitMap -> clear(); + + CsIDetectorNumberHitMap -> clear(); + CsIStageEnergyHitMap -> clear(); + // SecondStageEnergyHitMap -> clear(); + // ThirdStageEnergyHitMap -> clear(); + + +} + + + +void ParisCluster::InitializeScorers() +{ + // LaBr3 Associate Scorer + m_LaBr3StageScorer = new G4MultiFunctionalDetector("LaBr3StageScorerParisCluster"); + /**/ + // G4VPrimitiveScorer* DetNbr = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "ParisCluster", 0); + G4VPrimitiveScorer* DetNbr = new PARISScorerLaBr3StageDetectorNumber("DetectorNumber", "ParisCluster", 0); + // G4VPrimitiveScorer* TOF = new GENERALSCORERS::PSTOF("StripTime","ParisCluster", 0); + G4VPrimitiveScorer* TOF = new PARISScorerLaBr3StageTOF("StripTime","ParisCluster", 0); + //G4VPrimitiveScorer* InteractionCoordinatesX = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","ParisCluster", 0); + //G4VPrimitiveScorer* InteractionCoordinatesY = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","ParisCluster", 0); + //G4VPrimitiveScorer* InteractionCoordinatesZ = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","ParisCluster", 0); + //G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","ParisCluster", 0); + //G4VPrimitiveScorer* InteractionCoordinatesAnglePhi = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","ParisCluster", 0); + + G4VPrimitiveScorer* Energy = new PARISScorerLaBr3StageEnergy("StripEnergy", "ParisCluster", 0); + G4VPrimitiveScorer* CrystNbr = new PARISScorerLaBr3StageCrystal("CrystalNumber", "ParisCluster", 0); + + // G4VPrimitiveScorer* StripPositionX = new PARIScorerLaBr3StageFrontStripDummyShape("StripIDFront", 0, NumberOfStrips); + // G4VPrimitiveScorer* StripPositionY = new PARISScorerLaBr3StageBackStripDummyShape("StripIDBack", 0, NumberOfStrips); + + //and register it to the multifunctionnal detector + m_LaBr3StageScorer->RegisterPrimitive(DetNbr); + m_LaBr3StageScorer->RegisterPrimitive(CrystNbr); + m_LaBr3StageScorer->RegisterPrimitive(Energy); + m_LaBr3StageScorer->RegisterPrimitive(TOF); + //m_LaBr3StageScorer->RegisterPrimitive(StripPositionX); + //m_LaBr3StageScorer->RegisterPrimitive(StripPositionY); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesX); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesY); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesZ); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi); + + + + /**/ + + // Second stage Associate Scorer + m_CsIStageScorer = new G4MultiFunctionalDetector("CsIStageScorerParisCluster"); + /**/ + G4VPrimitiveScorer* CsIDetNbr = new PARISScorerCsIStageDetectorNumber("CsIDetectorNumber", "ParisCluster", 0); + G4VPrimitiveScorer* CsIStageEnergy = new PARISScorerCsIStageEnergy("CsIStageEnergy", "ParisCluster", 0); + + m_CsIStageScorer->RegisterPrimitive(CsIDetNbr); + m_CsIStageScorer->RegisterPrimitive(CsIStageEnergy); + /**/ + + // Add All Scorer to the Global Scorer Manager + G4SDManager::GetSDMpointer()->AddNewDetector(m_LaBr3StageScorer); + G4SDManager::GetSDMpointer()->AddNewDetector(m_CsIStageScorer); +} diff --git a/NPSimulation/src/ParisModule.cc b/NPSimulation/src/ParisModule.cc index f2f92bb4f..a42856357 100644 --- a/NPSimulation/src/ParisModule.cc +++ b/NPSimulation/src/ParisModule.cc @@ -6,7 +6,7 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * * * * Creation Date : 04/12/09 * * Last update : * @@ -56,5 +56,6 @@ void ParisModule::InitializeRootOutput() void ParisModule::InitializeIndex() { - m_index["Phoswitch"] = 0; + m_index["Phoswich"] = 0; // 24 phoswish max + m_index["Cluster"] = 100; // 18 cluster max } diff --git a/NPSimulation/src/ParisPhoswich.cc b/NPSimulation/src/ParisPhoswich.cc new file mode 100644 index 000000000..cd7a6a4f4 --- /dev/null +++ b/NPSimulation/src/ParisPhoswich.cc @@ -0,0 +1,996 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 04/12/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: Define a phoswitch module for the Paris detector. * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + + +// C++ headers +#include <sstream> +#include <string> +#include <cmath> + +// G4 Geometry headers +#include "G4Trd.hh" +#include "G4Box.hh" +#include "G4Trap.hh" + +// G4 various headers +#include "G4MaterialTable.hh" +#include "G4Element.hh" +#include "G4ElementTable.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4RotationMatrix.hh" +#include "G4Transform3D.hh" +#include "G4PVPlacement.hh" +#include "G4PVDivision.hh" + +// G4 sensitive +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" + +// NPTool headers +#include "ParisPhoswich.hh" +#include "GeneralScorers.hh" +#include "ParisScorers.hh" +#include "RootOutput.h" + +// CLHEP +#include "CLHEP/Random/RandGauss.h" + +using namespace std; +using namespace CLHEP; +using namespace PARISPHOSWICH; + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +ParisPhoswich::ParisPhoswich() +{ + ms_InterCoord = 0; +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +ParisPhoswich::~ParisPhoswich() +{ +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ParisPhoswich::AddModule(G4ThreeVector X1_Y1, + G4ThreeVector X128_Y1, + G4ThreeVector X1_Y128, + G4ThreeVector X128_Y128) +{ + m_DefinitionType.push_back(true); + + m_X1_Y1.push_back(X1_Y1); + m_X128_Y1.push_back(X128_Y1); + m_X1_Y128.push_back(X1_Y128); + m_X128_Y128.push_back(X128_Y128); + + m_R.push_back(0); + m_Theta.push_back(0); + m_Phi.push_back(0); + m_beta_u.push_back(0); + m_beta_v.push_back(0); + m_beta_w.push_back(0); +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ParisPhoswich::AddModule(G4double R, + G4double Theta, + G4double Phi, + G4double beta_u, + G4double beta_v, + G4double beta_w) +{ + G4ThreeVector empty = G4ThreeVector(0, 0, 0); + + m_DefinitionType.push_back(false); + + m_X1_Y1.push_back(empty); + m_X128_Y1.push_back(empty); + m_X1_Y128.push_back(empty); + m_X128_Y128.push_back(empty); + + m_R.push_back(R); + m_Theta.push_back(Theta); + m_Phi.push_back(Phi); + m_beta_u.push_back(beta_u); + m_beta_v.push_back(beta_v); + m_beta_w.push_back(beta_w); +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ParisPhoswich::VolumeMaker(G4int DetecNumber, + G4ThreeVector MMpos, + G4RotationMatrix* MMrot, + G4LogicalVolume* world) +{ + G4double NbrTelescopes = DetecNumber; + G4String DetectorNumber; + ostringstream Number; + Number << NbrTelescopes; + DetectorNumber = Number.str(); + + ///////////////////////////////////////////////////////////////// + /////////////////Element Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + G4String symbol, name; + G4double density = 0. , a = 0, z = 0; + G4int ncomponents = 0; + G4int nel = 0, natoms = 0; + + //////////////////////////////////////////////////////////////// + /////////////////Material Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + a=137.327*g/mole; + G4Element* Ba = new G4Element(name="Barium",symbol="Ba",z=56.,a); + a=18.9984032*g/mole; + G4Element* F = new G4Element(name="Fluorine",symbol="F",z=9.,a); + a=22.99*g/mole; + G4Element* Na = new G4Element(name="Sodium",symbol="Na",z=11.,a); + a=79.904*g/mole; + G4Element* Br = new G4Element(name="Bromine",symbol="Br",z=35.,a); + a=126.90477*g/mole; + G4Element* I = new G4Element(name="Iodine",symbol="I",z=53.,a); + a=132.90545*g/mole; + G4Element* Cs = new G4Element(name="Cesium",symbol="Cs",z=55.,a); + a=138.9055*g/mole; + G4Element* La = new G4Element(name="Lanthanum",symbol="La",z=57.,a); + + // Vacuum + G4Element* N = new G4Element("Nitrogen" , symbol = "N" , z = 7 , a = 14.01 * g / mole); + G4Element* O = new G4Element("Oxigen" , symbol = "O" , z = 8 , a = 16.00 * g / mole); + + density = 0.000000001 * mg / cm3; + G4Material* Vacuum = new G4Material("Vacuum", density, ncomponents = 2); + Vacuum->AddElement(N, .7); + Vacuum->AddElement(O, .3); + + // NaI + density = 3.67*g/cm3, nel = 2; + G4Material* NaI = new G4Material(name="NaI",density,nel); + NaI->AddElement(Na, natoms = 1); + NaI->AddElement(I, natoms = 1); + + // CsI + density = 4.51*g/cm3, nel = 2; + G4Material* CsI = new G4Material(name="CsI", density, nel); + CsI->AddElement(Cs, natoms = 1); + CsI->AddElement(I, natoms = 1); + + // LaBr3 + density = 5.29*g/cm3, nel = 2; + G4Material* LaBr3 = new G4Material(name="LaBr3",density,nel); + LaBr3->AddElement(La, natoms = 1); + LaBr3->AddElement(Br, natoms = 3); + + // BaF2 + density = 4.89*g/cm3, nel = 2; + G4Material* BaF2 = new G4Material(name="BaF2", density, nel); + BaF2->AddElement(Ba, natoms = 1); + BaF2->AddElement(F, natoms = 2); + + //////////////////////////////////////////////////////////////// + ////////////// Starting Volume Definition ////////////////////// + //////////////////////////////////////////////////////////////// + // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". + // If don't you will have a Warning unused variable 'myPVP' + G4PVPlacement* PVPBuffer; + G4String Name = "ParisPhoswich" + DetectorNumber ; + + // Mother Volume + G4Box* solidParisPhoswich = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length); + G4LogicalVolume* logicParisPhoswich = new G4LogicalVolume(solidParisPhoswich, Vacuum, Name, 0, 0, 0); + + PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , + logicParisPhoswich , + Name , + world , + false , + 0); + + logicParisPhoswich->SetVisAttributes(G4VisAttributes::Invisible); + if (m_non_sensitive_part_visiualisation) logicParisPhoswich->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); + + // Phoswich construction + // LaBr3 + G4ThreeVector positionLaBr3Stage = G4ThreeVector(0, 0, LaBr3Stage_PosZ); + + G4Box* solidLaBr3Stage = new G4Box("solidLaBr3Stage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*LaBr3Thickness); + G4LogicalVolume* logicLaBr3Stage = new G4LogicalVolume(solidLaBr3Stage, LaBr3, "logicLaBr3Stage", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, + positionLaBr3Stage, + logicLaBr3Stage, + Name + "_LaBr3Stage", + logicParisPhoswich, + false, + 0); + + // Set LaBr3 sensible + logicLaBr3Stage->SetSensitiveDetector(m_LaBr3StageScorer); + + // Visualisation of LaBr3Stage Strip + G4VisAttributes* LaBr3VisAtt = new G4VisAttributes(G4Colour(0., 0., 1.)); + logicLaBr3Stage->SetVisAttributes(LaBr3VisAtt); + + // CsI or NaI + G4ThreeVector positionCsIStage = G4ThreeVector(0, 0, CsIStage_PosZ); + + G4Box* solidCsIStage = new G4Box("solidCsIStage", 0.5*CsIFace, 0.5*CsIFace, 0.5*CsIThickness); + //G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, CsI, "logicCsIStage", 0, 0, 0); + G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, NaI, "logicCsIStage", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, + positionCsIStage, + logicCsIStage, + Name + "_CsIStage", + logicParisPhoswich, + false, + 0); + + // Set CsI sensible + logicCsIStage->SetSensitiveDetector(m_CsIStageScorer); + + // Visualisation of CsIStage Strip + G4VisAttributes* CsIVisAtt = new G4VisAttributes(G4Colour(1., 0., 0.)); + logicCsIStage->SetVisAttributes(CsIVisAtt); +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Virtual Method of VDetector class + +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// Called in DetecorConstruction::ReadDetextorConfiguration Method +void ParisPhoswich::ReadConfiguration(string Path) +{ + ifstream ConfigFile; + ConfigFile.open(Path.c_str()); + string LineBuffer, DataBuffer; + + // A:X1_Y1 --> X:1 Y:1 + // B:X128_Y1 --> X:128 Y:1 + // C:X1_Y128 --> X:1 Y:128 + // D:X128_Y128 --> X:128 Y:128 + + G4double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz ; + G4ThreeVector A , B , C , D ; + G4double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0 ; + + bool ReadingStatus = false; + + bool check_A = false; + bool check_C = false; + bool check_B = false; + bool check_D = false; + + bool check_Theta = false; + bool check_Phi = false; + bool check_R = false; + bool check_beta = false; + + bool checkVis = false; + + while (!ConfigFile.eof()) { + getline(ConfigFile, LineBuffer); + if (LineBuffer.compare(0, 14, "ParisPhoswich") == 0) { + G4cout << "///" << G4endl ; + G4cout << "Phoswich element found: " << G4endl ; + ReadingStatus = true ; + } + + while (ReadingStatus) { + ConfigFile >> DataBuffer; + // Comment Line + if (DataBuffer.compare(0, 1, "%") == 0) {/*do nothing */;} + + // Position method + else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { + check_A = true; + ConfigFile >> DataBuffer ; + Ax = atof(DataBuffer.c_str()) ; + Ax = Ax * mm ; + ConfigFile >> DataBuffer ; + Ay = atof(DataBuffer.c_str()) ; + Ay = Ay * mm ; + ConfigFile >> DataBuffer ; + Az = atof(DataBuffer.c_str()) ; + Az = Az * mm ; + + A = G4ThreeVector(Ax, Ay, Az); + cout << "X1 Y1 corner position : " << A << endl; + } + else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) { + check_B = true; + ConfigFile >> DataBuffer ; + Bx = atof(DataBuffer.c_str()) ; + Bx = Bx * mm ; + ConfigFile >> DataBuffer ; + By = atof(DataBuffer.c_str()) ; + By = By * mm ; + ConfigFile >> DataBuffer ; + Bz = atof(DataBuffer.c_str()) ; + Bz = Bz * mm ; + + B = G4ThreeVector(Bx, By, Bz); + cout << "X128 Y1 corner position : " << B << endl; + } + else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) { + check_C = true; + ConfigFile >> DataBuffer ; + Cx = atof(DataBuffer.c_str()) ; + Cx = Cx * mm ; + ConfigFile >> DataBuffer ; + Cy = atof(DataBuffer.c_str()) ; + Cy = Cy * mm ; + ConfigFile >> DataBuffer ; + Cz = atof(DataBuffer.c_str()) ; + Cz = Cz * mm ; + + C = G4ThreeVector(Cx, Cy, Cz); + cout << "X1 Y128 corner position : " << C << endl; + } + else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) { + check_D = true; + ConfigFile >> DataBuffer ; + Dx = atof(DataBuffer.c_str()) ; + Dx = Dx * mm ; + ConfigFile >> DataBuffer ; + Dy = atof(DataBuffer.c_str()) ; + Dy = Dy * mm ; + ConfigFile >> DataBuffer ; + Dz = atof(DataBuffer.c_str()) ; + Dz = Dz * mm ; + + D = G4ThreeVector(Dx, Dy, Dz); + cout << "X128 Y128 corner position : " << D << endl; + } + + // Angle method + else if (DataBuffer.compare(0, 6, "THETA=") == 0) { + check_Theta = true; + ConfigFile >> DataBuffer ; + Theta = atof(DataBuffer.c_str()) ; + Theta = Theta * deg; + cout << "Theta: " << Theta / deg << endl; + } + else if (DataBuffer.compare(0, 4, "PHI=") == 0) { + check_Phi = true; + ConfigFile >> DataBuffer ; + Phi = atof(DataBuffer.c_str()) ; + Phi = Phi * deg; + cout << "Phi: " << Phi / deg << endl; + } + else if (DataBuffer.compare(0, 2, "R=") == 0) { + check_R = true; + ConfigFile >> DataBuffer ; + R = atof(DataBuffer.c_str()) ; + R = R * mm; + cout << "R: " << R / mm << endl; + } + else if (DataBuffer.compare(0, 5, "BETA=") == 0) { + check_beta = true; + ConfigFile >> DataBuffer ; + beta_u = atof(DataBuffer.c_str()) ; + beta_u = beta_u * deg ; + ConfigFile >> DataBuffer ; + beta_v = atof(DataBuffer.c_str()) ; + beta_v = beta_v * deg ; + ConfigFile >> DataBuffer ; + beta_w = atof(DataBuffer.c_str()) ; + beta_w = beta_w * deg ; + G4cout << "Beta: " << beta_u / deg << " " << beta_v / deg << " " << beta_w / deg << G4endl ; + } + + else if (DataBuffer.compare(0, 4, "VIS=") == 0) { + checkVis = true ; + ConfigFile >> DataBuffer; + if (DataBuffer.compare(0, 3, "all") == 0) m_non_sensitive_part_visiualisation = true; + } + + else G4cout << "WARNING: Wrong Token, ParisPhoswich: Phoswich Element not added" << G4endl; + + // Add The previously define telescope + // With position method + if ((check_A && check_B && check_C && check_D && checkVis) && + !(check_Theta && check_Phi && check_R)) { + ReadingStatus = false; + check_A = false; + check_C = false; + check_B = false; + check_D = false; + checkVis = false; + + AddModule(A, B, C, D); + } + + // With angle method + if ((check_Theta && check_Phi && check_R && checkVis) && + !(check_A && check_B && check_C && check_D)) { + ReadingStatus = false; + check_Theta = false; + check_Phi = false; + check_R = false; + check_beta = false; + checkVis = false; + + AddModule(R, Theta, Phi, beta_u, beta_v, beta_w); + } + } + } +} + + + +// Construct detector and inialise sensitive part. +// Called After DetecorConstruction::AddDetector Method +void ParisPhoswich::ConstructDetector(G4LogicalVolume* world) +{ + G4RotationMatrix* MMrot = NULL ; + G4ThreeVector MMpos = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMu = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMv = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMw = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMCenter = G4ThreeVector(0, 0, 0) ; + + G4int NumberOfTelescope = m_DefinitionType.size() ; + + for (G4int i = 0; i < NumberOfTelescope; i++) { + // By Point + if (m_DefinitionType[i]) { + // (u,v,w) unitary vector associated to telescope referencial + // (u,v) // to silicon plan + // w perpendicular to (u,v) plan and pointing ThirdStage + MMu = m_X128_Y1[i] - m_X1_Y1[i]; + MMu = MMu.unit(); + + MMv = m_X1_Y128[i] - m_X1_Y1[i]; + MMv = MMv.unit(); + + G4ThreeVector MMscal = MMu.dot(MMv); + + MMw = MMu.cross(MMv); +// if (MMw.z() > 0) MMw = MMv.cross(MMu) ; + MMw = MMw.unit(); + + MMCenter = (m_X1_Y1[i] + m_X1_Y128[i] + m_X128_Y1[i] + m_X128_Y128[i]) / 4; + + // Passage Matrix from Lab Referential to Telescope Referential + // MUST2 + MMrot = new G4RotationMatrix(MMu, MMv, MMw); + // translation to place Telescope + MMpos = MMw * Length * 0.5 + MMCenter; + } + + // By Angle + else { + G4double Theta = m_Theta[i] ; + G4double Phi = m_Phi[i] ; + + // (u,v,w) unitary vector associated to telescope referencial + // (u,v) // to silicon plan + // w perpendicular to (u,v) plan and pointing ThirdStage + // Phi is angle between X axis and projection in (X,Y) plan + // Theta is angle between position vector and z axis + G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad); + G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad); + G4double wZ = m_R[i] * cos(Theta / rad); + MMw = G4ThreeVector(wX, wY, wZ); + + // vector corresponding to the center of the module + G4ThreeVector CT = MMw; + + // vector parallel to one axis of silicon plane + G4double ii = cos(Theta / rad) * cos(Phi / rad); + G4double jj = cos(Theta / rad) * sin(Phi / rad); + G4double kk = -sin(Theta / rad); + G4ThreeVector Y = G4ThreeVector(ii, jj, kk); + + MMw = MMw.unit(); + MMu = MMw.cross(Y); + MMv = MMw.cross(MMu); + MMv = MMv.unit(); + MMu = MMu.unit(); + + // Passage Matrix from Lab Referential to Telescope Referential + // MUST2 + MMrot = new G4RotationMatrix(MMu, MMv, MMw); + // Telescope is rotate of Beta angle around MMv axis. + MMrot->rotate(m_beta_u[i], MMu); + MMrot->rotate(m_beta_v[i], MMv); + MMrot->rotate(m_beta_w[i], MMw); + // translation to place Telescope + MMpos = MMw * Length * 0.5 + CT ; + } + + VolumeMaker(i + 1, MMpos, MMrot, world); + } + + delete MMrot ; +} + + + +// Connect the ParisData class to the output TTree +// of the simulation +void ParisPhoswich::InitializeRootOutput() +{ +} + + + +// Set the TinteractionCoordinates object from VDetector to the present class +void ParisPhoswich::SetInterCoordPointer(TInteractionCoordinates* interCoord) +{ + ms_InterCoord = interCoord; +} + + + +// Read sensitive part and fill the Root tree. +// Called at in the EventAction::EndOfEventAvtion +void ParisPhoswich::ReadSensitive(const G4Event* event) +{ + ////////////////////////////////////////////////////////////////////////////////////// + //////////////////////// Used to Read Event Map of detector ////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + + momentum = event->GetPrimaryVertex()->GetPrimary()->GetMomentum(); + G4double EGamma = momentum.getR(); // for photon E=p + G4double EGammaMin = EGamma-4*ResoFirstStage; + G4double EGammaMax = EGamma+4*ResoFirstStage; + + + // First Stage (LaBr3) + std::map<G4int, G4int*>::iterator DetectorNumber_itr; + std::map<G4int, G4int*>::iterator CrystalNumber_itr; + std::map<G4int, G4double*>::iterator Energy_itr; + std::map<G4int, G4double*>::iterator Time_itr; + //std::map<G4int, G4double*>::iterator X_itr; + //std::map<G4int, G4double*>::iterator Y_itr; + //std::map<G4int, G4double*>::iterator Pos_X_itr; + //std::map<G4int, G4double*>::iterator Pos_Y_itr; + //std::map<G4int, G4double*>::iterator Pos_Z_itr; + //std::map<G4int, G4double*>::iterator Ang_Theta_itr; + //std::map<G4int, G4double*>::iterator Ang_Phi_itr; + + G4THitsMap<G4int>* DetectorNumberHitMap; + G4THitsMap<G4int>* CrystalNumberHitMap; + G4THitsMap<G4double>* EnergyHitMap; + G4THitsMap<G4double>* TimeHitMap; + // G4THitsMap<G4double>* XHitMap; + // G4THitsMap<G4double>* YHitMap; + //G4THitsMap<G4double>* PosXHitMap; + //G4THitsMap<G4double>* PosYHitMap; + //G4THitsMap<G4double>* PosZHitMap; + //G4THitsMap<G4double>* AngThetaHitMap; + //G4THitsMap<G4double>* AngPhiHitMap; + + // NULL pointer are given to avoid warning at compilation + // Second Stage (CsI) + std::map<G4int, G4int*>::iterator CsIDetectorNumber_itr; + std::map<G4int, G4double*>::iterator CsIStageEnergy_itr ; + G4THitsMap<G4int>* CsIDetectorNumberHitMap = NULL ; + G4THitsMap<G4double>* CsIStageEnergyHitMap = NULL ; + + + // Read the Scorer associate to the LaBr + //Detector Number + G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/DetectorNumber") ; + DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID)) ; + DetectorNumber_itr = DetectorNumberHitMap->GetMap()->begin() ; + + //Crystal Number + G4int CrystDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/CrystalNumber") ; + CrystalNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CrystDetCollectionID)) ; + CrystalNumber_itr = CrystalNumberHitMap->GetMap()->begin() ; + + //Energy + G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/StripEnergy") ; + EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID)) ; + Energy_itr = EnergyHitMap->GetMap()->begin() ; + + //Time of Flight + G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/StripTime") ; + TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID)) ; + Time_itr = TimeHitMap->GetMap()->begin() ; + + /* + //Strip Number X + G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/StripIDFront") ; + XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID)) ; + X_itr = XHitMap->GetMap()->begin() ; + + //Strip Number Y + G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/StripIDBack"); + YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID)) ; + Y_itr = YHitMap->GetMap()->begin() ; + + + //Interaction Coordinate X + G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/InterCoordX") ; + PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID)) ; + Pos_X_itr = PosXHitMap->GetMap()->begin() ; + + //Interaction Coordinate Y + G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/InterCoordY") ; + PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID)) ; + Pos_Y_itr = PosYHitMap->GetMap()->begin() ; + + //Interaction Coordinate Z + G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/InterCoordZ") ; + PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID)) ; + Pos_Z_itr = PosXHitMap->GetMap()->begin() ; + + //Interaction Coordinate Angle Theta + G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/InterCoordAngTheta") ; + AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID)) ; + Ang_Theta_itr = AngThetaHitMap->GetMap()->begin() ; + + //Interaction Coordinate Angle Phi + G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LaBr3StageScorerParisPhoswich/InterCoordAngPhi") ; + AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID)) ; + Ang_Phi_itr = AngPhiHitMap->GetMap()->begin() ; + */ + + + // Read the Scorer associate to the SecondStage + //CsI Detector Number + G4int CsIDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisPhoswich/CsIDetectorNumber") ; + CsIDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsIDetCollectionID)) ; + CsIDetectorNumber_itr = CsIDetectorNumberHitMap->GetMap()->begin() ; + //CsI Energy + G4int CsIStageEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisPhoswich/CsIStageEnergy") ; + CsIStageEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIStageEnergyCollectionID)) ; + CsIStageEnergy_itr = CsIStageEnergyHitMap->GetMap()->begin() ; + + + // Check the size of different map + G4int sizeN = DetectorNumberHitMap->entries(); // number of objects hit by trackID=1 (can be the same object hit several time) + G4int sizeC = CrystalNumberHitMap->entries(); + G4int sizeE = EnergyHitMap->entries(); // = number of steps with edep non null + G4int sizeT = TimeHitMap->entries(); + //G4int sizeX = PosXHitMap->entries(); + //G4int sizeY = PosYHitMap->entries(); + //G4int sizeX = XHitMap->entries(); + //G4int sizeY = YHitMap->entries(); + + G4int sizeNCsI= CsIDetectorNumberHitMap->entries(); + G4int sizeECsI= CsIStageEnergyHitMap->entries(); + + //G4cout <<"SizeN=" << sizeN << endl; + //G4cout <<"SizeC=" << sizeC << endl; + //G4cout <<"SizeN CsI =" << sizeNCsI << endl; + //G4cout <<"SizeE CsI =" << sizeECsI << endl; + + //DetectorNumberHitMap->PrintAllHits(); + + + if (sizeE != sizeT) { + G4cout << "No match size PARIS Event Map: sE:" + << sizeE << " sT:" << sizeT << endl ; + + // if (sizeE != sizeX) { + //G4cout << "No match size PARIS Event Map: sE:" + //<< sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ; + return; + } + + + //G4cout <<"SizeN=" << sizeN << G4endl; + + + if(sizeN>0) + { + + // Deal with trackID=1: + G4int N_first= *(DetectorNumber_itr->second); // ID of first det hit + G4int NTrackID = DetectorNumber_itr->first - N_first; // first trackID dealt with (not always =1) + G4double E = *(Energy_itr->second); + G4double T = *(Time_itr->second); + G4int NCryst= *(CrystalNumber_itr->second); + + + //G4cout <<"NTrackID=" << NTrackID << G4endl; + //G4cout <<"N_first=" << N_first << G4endl; + //G4cout <<"CrystalNumber_first=" << NCryst << G4endl; + //G4cout <<"Energy first=" << E << G4endl; + //G4cout <<"Time first =" << T << G4endl; + + + if(sizeN>1) + { + Energy_itr++; + Time_itr++; + CrystalNumber_itr++; + DetectorNumber_itr++; + + for (G4int l = 1; l < sizeN ; l++) { // loop on all the other tracks + + + G4int N= *(DetectorNumber_itr->second); // ID of det hit + NTrackID = DetectorNumber_itr->first - N; // ID of the track + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"N=" << N << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl; + //G4cout <<"NTrackID=" << NTrackID << G4endl; + + if(N==N_first) + { + E += *(Energy_itr->second); + + }else // we fill the tree for the first detector hit and move to the next detector hit + { + if(E!=0) + { + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first); + // Fill Energy + // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + + } + + N_first=N; + E=*(Energy_itr->second); + + } + + + //G4cout <<"Energy=" << E << G4endl; + //G4cout <<"Time =" << T << G4endl; + + // Always fill the tree at the end of the loop: + if(l==(sizeN-1) && E!=0) + { + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first); + // Fill Energy + // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + + Energy_itr++; + DetectorNumber_itr++; + } + }else + { + // Fill the tree if sizeN=1: + if(E!=0) + { + // Fill detector number + ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first); + ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first); + // Fill Energy + // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + } + + + + } + + + ///////// For CsI stage: + EGammaMin = EGamma-4*ResoSecondStage; + EGammaMax = EGamma+4*ResoSecondStage; + if(sizeNCsI>0) + { + // Deal with trackID=1: + G4int NCsI_first= *(CsIDetectorNumber_itr->second); // ID of first det hit + G4int NCsITrackID = CsIDetectorNumber_itr->first - NCsI_first; // first trackID dealt with (not always =1) + G4double E_CsI=*(CsIStageEnergy_itr->second); // Energy second stage + + + //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; + //G4cout <<"NCsI_first=" << NCsI_first << G4endl; + //G4cout <<"CsI Energy first=" << E_CsI << G4endl; + + if(sizeNCsI>1) + { + CsIDetectorNumber_itr++; + CsIStageEnergy_itr++; + + for (G4int l = 1; l < sizeNCsI ; l++) { // loop on all the other tracks + + + G4int NCsI= *(CsIDetectorNumber_itr->second); // ID of det hit + NCsITrackID = CsIDetectorNumber_itr->first - NCsI; // ID of the track + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"NCsI=" << NCsI << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl; + //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl; + + if(NCsI==NCsI_first) + { + + E_CsI += *(CsIStageEnergy_itr->second); + + }else // we fill the tree for the first detector hit and move to the next detector hit + { + if(E_CsI!=0) + { + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first); + // Fill Energy + //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + } + + NCsI_first=NCsI; + E_CsI=*(CsIStageEnergy_itr->second); + } + + //G4cout <<"Energy_CsI=" << E_CsI << G4endl; + + // Always fill the tree at the end of the loop: + + if(l==(sizeNCsI-1) && E_CsI!=0) + { + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first); + // Fill Energy + // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + + } + + CsIStageEnergy_itr++; + CsIDetectorNumber_itr++; + } + + }else + { + // Fill the tree if sizeN=1: + if(E_CsI!=0) + { + // Fill detector number + ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first); + ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first); + // Fill Energy + //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage)); + E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage); + ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree + if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma); + // Fill Time + //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd)); + } + } + + } + + + + + // clear map for next event + DetectorNumberHitMap -> clear(); + EnergyHitMap -> clear(); + TimeHitMap -> clear(); + //XHitMap -> clear(); + //YHitMap -> clear(); + //PosXHitMap -> clear(); + //PosYHitMap -> clear(); + //PosZHitMap -> clear(); + //AngThetaHitMap -> clear(); + //AngPhiHitMap -> clear(); + + CsIDetectorNumberHitMap -> clear(); + CsIStageEnergyHitMap -> clear(); + + + +} + + + +void ParisPhoswich::InitializeScorers() +{ + // LaBr3 Associate Scorer + m_LaBr3StageScorer = new G4MultiFunctionalDetector("LaBr3StageScorerParisPhoswich"); + + // G4VPrimitiveScorer* DetNbr = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "ParisPhoswich", 0); + G4VPrimitiveScorer* DetNbr = new PARISScorerLaBr3StageDetectorNumber("DetectorNumber", "ParisPhoswich", 0); + // G4VPrimitiveScorer* TOF = new GENERALSCORERS::PSTOF("StripTime","ParisPhoswich", 0); + G4VPrimitiveScorer* TOF = new PARISScorerLaBr3StageTOF("StripTime","ParisPhoswich", 0); + //G4VPrimitiveScorer* InteractionCoordinatesX = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","ParisPhoswich", 0); + //G4VPrimitiveScorer* InteractionCoordinatesY = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","ParisPhoswich", 0); + //G4VPrimitiveScorer* InteractionCoordinatesZ = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","ParisPhoswich", 0); + //G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","ParisPhoswich", 0); + //G4VPrimitiveScorer* InteractionCoordinatesAnglePhi = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","ParisPhoswich", 0); + + G4VPrimitiveScorer* Energy = new PARISScorerLaBr3StageEnergy("StripEnergy", "ParisPhoswich", 0); + G4VPrimitiveScorer* CrystNbr = new PARISScorerLaBr3StageCrystal("CrystalNumber", "ParisPhoswich", 0); + + // G4VPrimitiveScorer* StripPositionX = new PARIScorerLaBr3StageFrontStripDummyShape("StripIDFront", 0, NumberOfStrips); + // G4VPrimitiveScorer* StripPositionY = new PARISScorerLaBr3StageBackStripDummyShape("StripIDBack", 0, NumberOfStrips); + + //and register it to the multifunctionnal detector + m_LaBr3StageScorer->RegisterPrimitive(DetNbr); + m_LaBr3StageScorer->RegisterPrimitive(CrystNbr); + m_LaBr3StageScorer->RegisterPrimitive(Energy); + m_LaBr3StageScorer->RegisterPrimitive(TOF); + //m_LaBr3StageScorer->RegisterPrimitive(StripPositionX); + //m_LaBr3StageScorer->RegisterPrimitive(StripPositionY); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesX); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesY); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesZ); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi); + + + + /**/ + + // Second stage Associate Scorer + m_CsIStageScorer = new G4MultiFunctionalDetector("CsIStageScorerParisPhoswich"); + /**/ + G4VPrimitiveScorer* CsIDetNbr = new PARISScorerCsIStageDetectorNumber("CsIDetectorNumber", "ParisPhoswich", 0); + G4VPrimitiveScorer* CsIStageEnergy = new PARISScorerCsIStageEnergy("CsIStageEnergy", "ParisPhoswich", 0); + + m_CsIStageScorer->RegisterPrimitive(CsIDetNbr); + m_CsIStageScorer->RegisterPrimitive(CsIStageEnergy); + /**/ + + // Add All Scorer to the Global Scorer Manager + G4SDManager::GetSDMpointer()->AddNewDetector(m_LaBr3StageScorer); + G4SDManager::GetSDMpointer()->AddNewDetector(m_CsIStageScorer); + +} diff --git a/NPSimulation/src/ParisScorers.cc b/NPSimulation/src/ParisScorers.cc new file mode 100644 index 000000000..ce481189c --- /dev/null +++ b/NPSimulation/src/ParisScorers.cc @@ -0,0 +1,423 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 30/02/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds all the scorers needed by the * + * Paris*** objects. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +// G4 headers +#include "G4UnitsTable.hh" + +// NPTool headers +#include "GeneralScorers.hh" +#include "ParisScorers.hh" + +#include "ParisCluster.hh" +#include "ParisPhoswich.hh" + +using namespace PARISCLUSTER; +using namespace PARISPHOSWICH; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Added by Adrien MATTA: +// Those Scorer use TrackID as map index. This way ones can rebuild energy deposit, +// time of flight or position,... particle by particle for each event. Because standard +// scorer provide by G4 don't work this way but using a global ID for each event you should +// not use those scorer with some G4 provided ones or being very carefull doing so. + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage Detector Number Scorer (deal with multiple particle hit) +PARISScorerLaBr3StageDetectorNumber::PARISScorerLaBr3StageDetectorNumber(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +PARISScorerLaBr3StageDetectorNumber::~PARISScorerLaBr3StageDetectorNumber() +{ +} + +G4bool PARISScorerLaBr3StageDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get energy + G4double edep = aStep->GetTotalEnergyDeposit(); + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->set(DetNbr + index, DetNbr); + return TRUE; +} +void PARISScorerLaBr3StageDetectorNumber::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void PARISScorerLaBr3StageDetectorNumber::EndOfEvent(G4HCofThisEvent*) +{ +} + +void PARISScorerLaBr3StageDetectorNumber::Clear() +{ + EvtMap->clear(); +} + +void PARISScorerLaBr3StageDetectorNumber::DrawAll() +{ +} + +void PARISScorerLaBr3StageDetectorNumber::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " Detector Number : " << G4BestUnit(*(itr->second), "DetectorNumber") + << G4endl; + } +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage Energy Scorer (deal with multiple particle hit) +PARISScorerLaBr3StageEnergy::PARISScorerLaBr3StageEnergy(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +PARISScorerLaBr3StageEnergy::~PARISScorerLaBr3StageEnergy() +{ +} + +G4bool PARISScorerLaBr3StageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get energy + G4ThreeVector POS = aStep->GetPreStepPoint()->GetPosition(); + POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS); + + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->add(DetNbr + index, edep); + return TRUE; +} + +void PARISScorerLaBr3StageEnergy::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void PARISScorerLaBr3StageEnergy::EndOfEvent(G4HCofThisEvent*) +{ +} + +void PARISScorerLaBr3StageEnergy::Clear() +{ + EvtMap->clear(); +} + +void PARISScorerLaBr3StageEnergy::DrawAll() +{ +} + +void PARISScorerLaBr3StageEnergy::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " energy deposit: " << G4BestUnit(*(itr->second), "Energy") + << G4endl; + } +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage CrystalNbr Scorer (deal with multiple particle hit) +PARISScorerLaBr3StageCrystal::PARISScorerLaBr3StageCrystal(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +PARISScorerLaBr3StageCrystal::~PARISScorerLaBr3StageCrystal() +{ +} + +G4bool PARISScorerLaBr3StageCrystal::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get energy + G4int CrystalNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1); + + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->add(DetNbr + index, CrystalNbr); + return TRUE; + +} + +void PARISScorerLaBr3StageCrystal::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void PARISScorerLaBr3StageCrystal::EndOfEvent(G4HCofThisEvent*) +{ +} + +void PARISScorerLaBr3StageCrystal::Clear() +{ + EvtMap->clear(); +} + +void PARISScorerLaBr3StageCrystal::DrawAll() +{ +} + +void PARISScorerLaBr3StageCrystal::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " crystal nbr: " << G4BestUnit(*(itr->second), "Crystal") + << G4endl; + } +} + + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage ToF Scorer (deal with multiple particle hit) +PARISScorerLaBr3StageTOF::PARISScorerLaBr3StageTOF(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +PARISScorerLaBr3StageTOF::~PARISScorerLaBr3StageTOF() +{ +} + +G4bool PARISScorerLaBr3StageTOF::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get TOF + G4double TOF = aStep->GetPreStepPoint()->GetGlobalTime(); + + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->add(DetNbr + index, TOF); + return TRUE; +} + +void PARISScorerLaBr3StageTOF::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void PARISScorerLaBr3StageTOF::EndOfEvent(G4HCofThisEvent*) +{ +} + +void PARISScorerLaBr3StageTOF::Clear() +{ + EvtMap->clear(); +} + +void PARISScorerLaBr3StageTOF::DrawAll() +{ +} + +void PARISScorerLaBr3StageTOF::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; +} + + + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// SecondStage (CsI) Detector Number Scorer (deal with multiple particle hit) +PARISScorerCsIStageDetectorNumber::PARISScorerCsIStageDetectorNumber(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +PARISScorerCsIStageDetectorNumber::~PARISScorerCsIStageDetectorNumber() +{ +} + +G4bool PARISScorerCsIStageDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get energy + G4double edep = aStep->GetTotalEnergyDeposit(); + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->set(DetNbr + index, DetNbr); + return TRUE; +} +void PARISScorerCsIStageDetectorNumber::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void PARISScorerCsIStageDetectorNumber::EndOfEvent(G4HCofThisEvent*) +{ +} + +void PARISScorerCsIStageDetectorNumber::Clear() +{ + EvtMap->clear(); +} + +void PARISScorerCsIStageDetectorNumber::DrawAll() +{ +} + +void PARISScorerCsIStageDetectorNumber::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " Detector Number : " << G4BestUnit(*(itr->second), "DetectorNumber") + << G4endl; + } +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// CsIStage Energy Scorer (deal with multiple particle hit) +PARISScorerCsIStageEnergy::PARISScorerCsIStageEnergy(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +PARISScorerCsIStageEnergy::~PARISScorerCsIStageEnergy() +{ +} + +G4bool PARISScorerCsIStageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get energy + G4ThreeVector POS = aStep->GetPreStepPoint()->GetPosition(); + POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS); + + G4double edep = aStep->GetTotalEnergyDeposit(); + //if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->add(DetNbr + index, edep); + return TRUE; +} + +void PARISScorerCsIStageEnergy::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void PARISScorerCsIStageEnergy::EndOfEvent(G4HCofThisEvent*) +{ +} + +void PARISScorerCsIStageEnergy::Clear() +{ + EvtMap->clear(); +} + +void PARISScorerCsIStageEnergy::DrawAll() +{ +} + +void PARISScorerCsIStageEnergy::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " energy deposit: " << G4BestUnit(*(itr->second), "Energy") + << G4endl; + } +} + + diff --git a/NPSimulation/src/PhysicsList.cc b/NPSimulation/src/PhysicsList.cc index ff560e1bf..e55adb66b 100644 --- a/NPSimulation/src/PhysicsList.cc +++ b/NPSimulation/src/PhysicsList.cc @@ -32,9 +32,11 @@ #include "G4ParticleDefinition.hh" #include "G4ParticleTable.hh" + //Process #include "G4Transportation.hh" +// Standard Geant4 #include "G4ComptonScattering.hh" #include "G4GammaConversion.hh" #include "G4PhotoElectricEffect.hh" @@ -43,6 +45,26 @@ #include "G4eBremsstrahlung.hh" #include "G4eplusAnnihilation.hh" +// Penelope +#include "G4PenelopeIonisation.hh" +#include "G4PenelopeBremsstrahlung.hh" +#include "G4PenelopeAnnihilation.hh" + +#include "G4PenelopeCompton.hh" +#include "G4PenelopeGammaConversion.hh" +#include "G4PenelopePhotoElectric.hh" +#include "G4PenelopeRayleigh.hh" + +// Low energy ~ Penelope +#include "G4LowEnergyIonisation.hh" +#include "G4LowEnergyBremsstrahlung.hh" + +#include "G4LowEnergyCompton.hh" +#include "G4LowEnergyGammaConversion.hh" +#include "G4LowEnergyPhotoElectric.hh" +#include "G4LowEnergyRayleigh.hh" + + #include "G4MuIonisation.hh" #include "G4MuBremsstrahlung.hh" #include "G4MuPairProduction.hh" @@ -68,6 +90,12 @@ #include "G4BetaMinusDecayChannel.hh" +//#include "G4Gamma.hh" +//#include "G4Electron.hh" +//#include "G4Positron.hh" + + + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... PhysicsList::PhysicsList() { @@ -169,6 +197,7 @@ void PhysicsList::ConstructProcess() { AddTransportation() ; ConstructEM() ; + SetCuts() ; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -176,6 +205,7 @@ void PhysicsList::ConstructEM() { theParticleIterator->reset(); + while ((*theParticleIterator)()) { G4ParticleDefinition* particle = theParticleIterator->value() ; G4ProcessManager* pmanager = particle->GetProcessManager() ; @@ -183,31 +213,58 @@ void PhysicsList::ConstructEM() if (particleName == "gamma") { // gamma - pmanager->AddDiscreteProcess(new G4PhotoElectricEffect) ; - pmanager->AddDiscreteProcess(new G4ComptonScattering) ; - pmanager->AddDiscreteProcess(new G4GammaConversion) ; + //standard Geant4 + pmanager->AddDiscreteProcess(new G4PhotoElectricEffect) ; + pmanager->AddDiscreteProcess(new G4ComptonScattering) ; + pmanager->AddDiscreteProcess(new G4GammaConversion) ; + //Low energy + //pmanager->AddDiscreteProcess(new G4LowEnergyPhotoElectric) ; + //pmanager->AddDiscreteProcess(new G4LowEnergyCompton) ; + //pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion) ; + //pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh) ; + // Penelope + //pmanager->AddDiscreteProcess(new G4PenelopePhotoElectric) ; + //pmanager->AddDiscreteProcess(new G4PenelopeCompton) ; + //pmanager->AddDiscreteProcess(new G4PenelopeGammaConversion) ; + //pmanager->AddDiscreteProcess(new G4PenelopeRayleigh) ; } else if (particleName == "e-") { //electron pmanager->AddProcess(new G4MultipleScattering , -1, 1, 1) ; - pmanager->AddProcess(new G4eIonisation , -1, 2, 2) ; - pmanager->AddProcess(new G4eBremsstrahlung , -1, -1, 3) ; + //standard geant4: + pmanager->AddProcess(new G4eIonisation , -1, 2, 2) ; + pmanager->AddProcess(new G4eBremsstrahlung , -1, -1, 3) ; + // Low energy: + //pmanager->AddProcess(new G4LowEnergyIonisation , -1, 2, 2) ; + //pmanager->AddProcess(new G4LowEnergyBremsstrahlung , -1, -1, 3) ; + // Penelope: + // pmanager->AddProcess(new G4PenelopeIonisation , -1, 2, 2) ; + // pmanager->AddProcess(new G4PenelopeBremsstrahlung , -1, -1, 3) ; + } else if (particleName == "e+") { //positron - pmanager->AddProcess(new G4MultipleScattering , -1, 1, 1 ); - pmanager->AddProcess(new G4eIonisation , -1, 2, 2 ); - pmanager->AddProcess(new G4eBremsstrahlung , -1, -1, 3 ); - pmanager->AddProcess(new G4eplusAnnihilation , 0, -1, 4 ); + pmanager->AddProcess(new G4MultipleScattering , -1, 1, 1 ); + // standard Geant4 and Low energy + pmanager->AddProcess(new G4eIonisation , -1, 2, 2 ); + pmanager->AddProcess(new G4eBremsstrahlung , -1, -1, 3 ); + pmanager->AddProcess(new G4eplusAnnihilation , 0, -1, 4 ); + //Penelope: + //pmanager->AddProcess(new G4PenelopeIonisation , -1, 2, 2 ); + //pmanager->AddProcess(new G4PenelopeBremsstrahlung , -1, -1, 3 ); + //pmanager->AddProcess(new G4PenelopeAnnihilation , 0, -1, 4 ); + + } else if (particleName == "mu+" || particleName == "mu-") { - //muon + + //muon /* pmanager->AddProcess(new G4MultipleScattering , -1, 1, 1 ) ; pmanager->AddProcess(new G4MuIonisation , -1, 2, 2 ) ; pmanager->AddProcess(new G4MuBremsstrahlung , -1, -1, 3 ) ; pmanager->AddProcess(new G4MuPairProduction , -1, -1, 4 ) ;*/ - + } else if (particleName == "GenericIon") { pmanager->AddProcess(new G4MultipleScattering(), -1, 1, 1) ; G4ionIonisation* iI = new G4ionIonisation ; @@ -230,6 +287,7 @@ void PhysicsList::ConstructEM() }//end else if }//end while particle + G4EmProcessOptions opt ; opt.SetSubCutoff(true) ; opt.SetMinEnergy(0.001*eV) ; @@ -252,9 +310,9 @@ void PhysicsList::SetCuts() SetCutsWithDefault(); // for gamma-rays - SetCutValue(0.1*mm, "gamma"); - SetCutValue(0.1*mm, "e-"); - SetCutValue(0.1*mm, "e+"); + SetCutValue(0.01*mm, "gamma"); + SetCutValue(0.01*mm, "e-"); + SetCutValue(0.01*mm, "e+"); // Retrieve verbose level SetVerboseLevel(temp); diff --git a/NPSimulation/src/Shield.cc b/NPSimulation/src/Shield.cc new file mode 100644 index 000000000..e309d4c42 --- /dev/null +++ b/NPSimulation/src/Shield.cc @@ -0,0 +1,150 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@atfc.ac.uk * + * * + * Creation Date : 25/08/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class manages different shapes of module for the Paris * + * Shield detector. It allows to have Shiled geometries with an * + * heterogeneous set of modules * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +// C++ headers +#include <fstream> +#include <sstream> +#include <string> +#include <cmath> + +// NPTool headers +#include "Shield.hh" +#include "ShieldClParis.hh" +#include "ShieldPhParis.hh" + +using namespace std; + + +Shield::Shield() +{ +} + +Shield::~Shield() +{ +} + + + +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// Called in DetecorConstruction::ReadDetextorConfiguration Method +void Shield::ReadConfiguration(string Path) +{ + // open configuration file + ifstream ConfigFile; + ConfigFile.open(Path.c_str()); + + bool bShieldClParis = false; + bool bShieldPhParis = false; + + string LineBuffer; + while (!ConfigFile.eof()) { + getline(ConfigFile, LineBuffer); + if (LineBuffer.compare(0, 13, "ShieldClParis") == 0 && bShieldClParis == false) { + bShieldClParis = true; + + // instantiate a new "detector" corresponding to the Trapezoid elements + ShieldModule* myDetector = new ShieldClParis(); + + // read part of the configuration file corresponding to trapezoid elements + ConfigFile.close(); + myDetector->ReadConfiguration(Path); + ConfigFile.open(Path.c_str()); + + // ms_InterCoord comes from VDetector + myDetector->SetInterCoordPointer(ms_InterCoord); + + // store ShieldClParis "detector" + m_Modules.push_back(myDetector); + } + else if (LineBuffer.compare(0, 13, "ShieldPhParis") == 0 && bShieldPhParis == false) { + bShieldPhParis = true; + + // instantiate a new "detector" corresponding to the Trapezoid elements + ShieldModule* myDetector = new ShieldPhParis(); + + // read part of the configuration file corresponding to trapezoid elements + ConfigFile.close(); + myDetector->ReadConfiguration(Path); + ConfigFile.open(Path.c_str()); + + // ms_InterCoord comes from VDetector + myDetector->SetInterCoordPointer(ms_InterCoord); + + // store ShieldPhParis "detector" + m_Modules.push_back(myDetector); + } + + } +} + + + +// Construct detector and initialize sensitive part. +// Called After DetectorConstruction::AddDetector Method +void Shield::ConstructDetector(G4LogicalVolume* world) +{ + // loop on sub-detectors belonging to Paris + int nbDetectors = m_Modules.size(); + for (int i = 0; i < nbDetectors; i++) m_Modules[i]->ConstructDetector(world); +} + + + +// Connect the ShieldData class to the output TTree +// of the simulation +void Shield::InitializeRootOutput() +{ + // loop on sub-detectors belonging to Paris + int nbDetectors = m_Modules.size(); + for (int i = 0; i < nbDetectors; i++) m_Modules[i]->InitializeRootOutput(); +} + + + +// Initialize all scorers necessary for each detector +void Shield::InitializeScorers() +{ + // loop on sub-detectors belonging to Paris + int nbDetectors = m_Modules.size(); + for (int i = 0; i < nbDetectors; i++) m_Modules[i]->InitializeScorers(); +} + + + +// Read sensitive part and fill the Root tree. +// Called at in the EventAction::EndOfEventAction +void Shield::ReadSensitive(const G4Event* event) +{ + // Before looping on each sub-detector, clear the static variable + // ms_InterCoord + // This is done on the first element of the m_Modules vector. + // This should be done here since this variable (of type TIneractionCoordinates) + // deals with multiplicity of events > 1. + m_Modules[0]->GetInterCoordPointer()->Clear(); + + // We do the same for the static variable ms_Event + m_Modules[0]->GetEventPointer()->Clear(); + + // loop on sub-detectors belonging to Paris + int nbDetectors = m_Modules.size(); + for (int i = 0; i < nbDetectors; i++) m_Modules[i]->ReadSensitive(event); +} diff --git a/NPSimulation/src/ParisPhoswitch.cc b/NPSimulation/src/ShieldClParis.cc similarity index 54% rename from NPSimulation/src/ParisPhoswitch.cc rename to NPSimulation/src/ShieldClParis.cc index 0e12ce4ba..2b77daa18 100644 --- a/NPSimulation/src/ParisPhoswitch.cc +++ b/NPSimulation/src/ShieldClParis.cc @@ -6,12 +6,13 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: N. de Sereville contact address: deserevi@ipno.in2p3.fr * + * Original Author: M. Labiche contact address: marc.labiche@atfc.ac.uk * * * - * Creation Date : 04/12/09 * + * Creation Date : 26/08/10 * * Last update : * *---------------------------------------------------------------------------* - * Decription: Define a phoswitch module for the Paris detector. * + * Decription: Define the shiled around a cluster of 9 phoswich modules for * + * the Paris detector * * * *---------------------------------------------------------------------------* * Comment: * @@ -46,7 +47,9 @@ #include "G4MultiFunctionalDetector.hh" // NPTool headers -#include "ParisPhoswitch.hh" +#include "ShieldClParis.hh" +//#include "ParisScorers.hh" +#include "ShieldScorers.hh" #include "GeneralScorers.hh" #include "RootOutput.h" @@ -55,12 +58,12 @@ using namespace std; using namespace CLHEP; -using namespace PARISPHOSWITCH; +using namespace PARISCLSHIELD; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -ParisPhoswitch::ParisPhoswitch() +ShieldClParis::ShieldClParis() { ms_InterCoord = 0; } @@ -68,14 +71,14 @@ ParisPhoswitch::ParisPhoswitch() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -ParisPhoswitch::~ParisPhoswitch() +ShieldClParis::~ShieldClParis() { } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void ParisPhoswitch::AddModule(G4ThreeVector X1_Y1, +void ShieldClParis::AddModule(G4ThreeVector X1_Y1, G4ThreeVector X128_Y1, G4ThreeVector X1_Y128, G4ThreeVector X128_Y128) @@ -98,7 +101,7 @@ void ParisPhoswitch::AddModule(G4ThreeVector X1_Y1, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void ParisPhoswitch::AddModule(G4double R, +void ShieldClParis::AddModule(G4double R, G4double Theta, G4double Phi, G4double beta_u, @@ -125,7 +128,7 @@ void ParisPhoswitch::AddModule(G4double R, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void ParisPhoswitch::VolumeMaker(G4int DetecNumber, +void ShieldClParis::VolumeMaker(G4int DetecNumber, G4ThreeVector MMpos, G4RotationMatrix* MMrot, G4LogicalVolume* world) @@ -201,64 +204,50 @@ void ParisPhoswitch::VolumeMaker(G4int DetecNumber, // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". // If don't you will have a Warning unused variable 'myPVP' G4PVPlacement* PVPBuffer; - G4String Name = "ParisPhoswitch" + DetectorNumber ; + G4String Name = "ShieldClParis" + DetectorNumber ; // Mother Volume - G4Box* solidParisPhoswitch = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length); - G4LogicalVolume* logicParisPhoswitch = new G4LogicalVolume(solidParisPhoswitch, Vacuum, Name, 0, 0, 0); + G4Trap* solidShieldClParis = new G4Trap(Name, Length/2, 16.3543*deg, 225.*deg, + 12.*mm,102.375*mm, 102.375*mm, 0.*deg, + 43.125*mm, 133.5*mm, 133.5*mm,0.*deg); + G4LogicalVolume* logicShieldClParis = new G4LogicalVolume(solidShieldClParis, Vacuum, Name, 0, 0, 0); PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , - logicParisPhoswitch , + logicShieldClParis , Name , world , false , 0); - logicParisPhoswitch->SetVisAttributes(G4VisAttributes::Invisible); - if (m_non_sensitive_part_visiualisation) logicParisPhoswitch->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); - - // Phoswitch construction - // LaBr3 - G4ThreeVector positionLaBr3Stage = G4ThreeVector(0, 0, LaBr3Stage_PosZ); - - G4Box* solidLaBr3Stage = new G4Box("solidLaBr3Stage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*LaBr3Thickness); - G4LogicalVolume* logicLaBr3Stage = new G4LogicalVolume(solidLaBr3Stage, LaBr3, "logicLaBr3Stage", 0, 0, 0); - - PVPBuffer = new G4PVPlacement(0, - positionLaBr3Stage, - logicLaBr3Stage, - Name + "_LaBr3Stage", - logicParisPhoswitch, - false, - 0); - - // Set LaBr3 sensible - logicLaBr3Stage->SetSensitiveDetector(m_LaBr3StageScorer); - - // Visualisation of LaBr3Stage Strip - G4VisAttributes* LaBr3VisAtt = new G4VisAttributes(G4Colour(0., 0., 1.)); - logicLaBr3Stage->SetVisAttributes(LaBr3VisAtt); - - // CsI - G4ThreeVector positionCsIStage = G4ThreeVector(0, 0, CsIStage_PosZ); - - G4Box* solidCsIStage = new G4Box("solidCsIStage", 0.5*CsIFace, 0.5*CsIFace, 0.5*CsIThickness); - G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, CsI, "logicCsIStage", 0, 0, 0); + logicShieldClParis->SetVisAttributes(G4VisAttributes::Invisible); + if (m_non_sensitive_part_visiualisation) logicShieldClParis->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); + + // Daughter Volume + // CsI or NaI + G4ThreeVector positionCsI = G4ThreeVector(0, 0, 0); + + G4Trap* solidShieldCsI = new G4Trap("solidShieldCsI", Length/2, 16.3543*deg, 225.*deg, + 12.*mm,102.375*mm, 102.375*mm, 0.*deg, + 43.125*mm, 133.5*mm, 133.5*mm,0.*deg); + //G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, CsI, "logicShieldCsI", 0, 0, 0); + G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, NaI, "logicShieldCsI", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, + positionCsI , + logicShieldCsI , + Name + "_ShieldCsI" , + logicShieldClParis , + false , + 0); + + // Set CsI sensible + logicShieldCsI->SetSensitiveDetector(m_CsIShieldScorer); - PVPBuffer = new G4PVPlacement(0, - positionCsIStage, - logicCsIStage, - Name + "_CsIStage", - logicParisPhoswitch, - false, - 0); + // Visualisation of CsIStage + G4VisAttributes* CsIShieldVisAtt = new G4VisAttributes(G4Colour(1., 0., 0.)); + logicShieldCsI->SetVisAttributes(CsIShieldVisAtt); - // Set CsI sensible - logicCsIStage->SetSensitiveDetector(m_CsIStageScorer); - // Visualisation of CsIStage Strip - G4VisAttributes* CsIVisAtt = new G4VisAttributes(G4Colour(1., 0., 0.)); - logicCsIStage->SetVisAttributes(CsIVisAtt); } @@ -268,7 +257,7 @@ void ParisPhoswitch::VolumeMaker(G4int DetecNumber, // Read stream at Configfile to pick-up parameters of detector (Position,...) // Called in DetecorConstruction::ReadDetextorConfiguration Method -void ParisPhoswitch::ReadConfiguration(string Path) +void ShieldClParis::ReadConfiguration(string Path) { ifstream ConfigFile; ConfigFile.open(Path.c_str()); @@ -299,9 +288,9 @@ void ParisPhoswitch::ReadConfiguration(string Path) while (!ConfigFile.eof()) { getline(ConfigFile, LineBuffer); - if (LineBuffer.compare(0, 14, "ParisPhoswitch") == 0) { + if (LineBuffer.compare(0, 13, "ShieldClParis") == 0) { G4cout << "///" << G4endl ; - G4cout << "Phoswitch element found: " << G4endl ; + G4cout << "Cluster Shield element found: " << G4endl ; ReadingStatus = true ; } @@ -414,7 +403,7 @@ void ParisPhoswitch::ReadConfiguration(string Path) if (DataBuffer.compare(0, 3, "all") == 0) m_non_sensitive_part_visiualisation = true; } - else G4cout << "WARNING: Wrong Token, ParisPhoswitch: Phoswitch Element not added" << G4endl; + else G4cout << "WARNING: Wrong Token, ShieldClParis: Cluster Element not added" << G4endl; // Add The previously define telescope // With position method @@ -450,7 +439,7 @@ void ParisPhoswitch::ReadConfiguration(string Path) // Construct detector and inialise sensitive part. // Called After DetecorConstruction::AddDetector Method -void ParisPhoswitch::ConstructDetector(G4LogicalVolume* world) +void ShieldClParis::ConstructDetector(G4LogicalVolume* world) { G4RotationMatrix* MMrot = NULL ; G4ThreeVector MMpos = G4ThreeVector(0, 0, 0) ; @@ -471,6 +460,7 @@ void ParisPhoswitch::ConstructDetector(G4LogicalVolume* world) MMu = MMu.unit(); MMv = m_X1_Y128[i] - m_X1_Y1[i]; + //MMv = -0.5 * (m_X1_Y1[i] + m_X128_Y128[i] - m_X1_Y128[i] - m_X128_Y1[i]); MMv = MMv.unit(); G4ThreeVector MMscal = MMu.dot(MMv); @@ -485,7 +475,8 @@ void ParisPhoswitch::ConstructDetector(G4LogicalVolume* world) // MUST2 MMrot = new G4RotationMatrix(MMu, MMv, MMw); // translation to place Telescope - MMpos = MMw * Length * 0.5 + MMCenter; + //MMpos = MMw * Length * 0.5 + MMCenter; + MMpos = MMCenter; } // By Angle @@ -539,14 +530,14 @@ void ParisPhoswitch::ConstructDetector(G4LogicalVolume* world) // Connect the ParisData class to the output TTree // of the simulation -void ParisPhoswitch::InitializeRootOutput() +void ShieldClParis::InitializeRootOutput() { } // Set the TinteractionCoordinates object from VDetector to the present class -void ParisPhoswitch::SetInterCoordPointer(TInteractionCoordinates* interCoord) +void ShieldClParis::SetInterCoordPointer(TInteractionCoordinates* interCoord) { ms_InterCoord = interCoord; } @@ -555,21 +546,251 @@ void ParisPhoswitch::SetInterCoordPointer(TInteractionCoordinates* interCoord) // Read sensitive part and fill the Root tree. // Called at in the EventAction::EndOfEventAvtion -void ParisPhoswitch::ReadSensitive(const G4Event* event) +void ShieldClParis::ReadSensitive(const G4Event* event) { + ////////////////////////////////////////////////////////////////////////////////////// + //////////////////////// Used to Read Event Map of detector ////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + + momentum = event->GetPrimaryVertex()->GetPrimary()->GetMomentum(); + G4double EGamma = momentum.getR(); // for photon E=p + G4double EGammaMin = EGamma-4*ResoFirstStage; + G4double EGammaMax = EGamma+4*ResoFirstStage; + + // CsI Shield + std::map<G4int, G4int*>::iterator CsIShieldDetectorNumber_itr; + std::map<G4int, G4double*>::iterator CsIShieldEnergy_itr; + std::map<G4int, G4double*>::iterator CsIShieldTime_itr; + //std::map<G4int, G4double*>::iterator X_itr; + //std::map<G4int, G4double*>::iterator Y_itr; + //std::map<G4int, G4double*>::iterator Pos_X_itr; + //std::map<G4int, G4double*>::iterator Pos_Y_itr; + //std::map<G4int, G4double*>::iterator Pos_Z_itr; + //std::map<G4int, G4double*>::iterator Ang_Theta_itr; + //std::map<G4int, G4double*>::iterator Ang_Phi_itr; + + G4THitsMap<G4int>* CsIShieldDetectorNumberHitMap; + G4THitsMap<G4double>* CsIShieldEnergyHitMap; + G4THitsMap<G4double>* CsIShieldTimeHitMap; + // G4THitsMap<G4double>* XHitMap; + // G4THitsMap<G4double>* YHitMap; + //G4THitsMap<G4double>* PosXHitMap; + //G4THitsMap<G4double>* PosYHitMap; + //G4THitsMap<G4double>* PosZHitMap; + //G4THitsMap<G4double>* AngThetaHitMap; + //G4THitsMap<G4double>* AngPhiHitMap; + + // NULL pointer are given to avoid warning at compilation + + // Read the Scorer associate to the LaBr + + //Detector Number + G4int CsIShieldDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIScorerShieldClParis/CsIShieldDetectorNumber") ; + CsIShieldDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsIShieldDetCollectionID)) ; + CsIShieldDetectorNumber_itr = CsIShieldDetectorNumberHitMap->GetMap()->begin() ; + + //Energy + G4int CsIShieldEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIScorerShieldClParis/CsIShieldEnergy") ; + CsIShieldEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIShieldEnergyCollectionID)) ; + CsIShieldEnergy_itr = CsIShieldEnergyHitMap->GetMap()->begin() ; + + //Time of Flight + G4int CsIShieldTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIScorerShieldClParis/CsIShieldTime") ; + CsIShieldTimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIShieldTimeCollectionID)) ; + CsIShieldTime_itr = CsIShieldTimeHitMap->GetMap()->begin() ; + + + // Check the size of different map + G4int sizeN = CsIShieldDetectorNumberHitMap->entries(); // number of objects hit by trackID=1 (can be the same object hit several time) + G4int sizeE = CsIShieldEnergyHitMap->entries(); // = number of steps with edep non null + G4int sizeT = CsIShieldTimeHitMap->entries(); + //G4int sizeX = PosXHitMap->entries(); + //G4int sizeY = PosYHitMap->entries(); + //G4int sizeX = XHitMap->entries(); + //G4int sizeY = YHitMap->entries(); + + //G4cout <<"SizeN=" << sizeN << endl; + //G4cout <<"SizeC=" << sizeC << endl; + //G4cout <<"SizeN CsI =" << sizeNCsI << endl; + //G4cout <<"SizeE CsI =" << sizeECsI << endl; + + //DetectorNumberHitMap->PrintAllHits(); + + + if (sizeE != sizeT) { + G4cout << "No match size PARIS Event Map: sE:" + << sizeE << " sT:" << sizeT << endl ; + + // if (sizeE != sizeX) { + //G4cout << "No match size PARIS Event Map: sE:" + //<< sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ; + return; + } + + + //G4cout <<"SizeN=" << sizeN << G4endl; + + + if(sizeN>0) + { + + // Deal with trackID=1: + G4int N_first= *(CsIShieldDetectorNumber_itr->second); // ID of first det hit + G4int NTrackID = CsIShieldDetectorNumber_itr->first - N_first; // first trackID dealt with (not always =1) + G4double E = *(CsIShieldEnergy_itr->second); + G4double T = *(CsIShieldTime_itr->second); + + + //G4cout <<"NTrackID=" << NTrackID << G4endl; + //G4cout <<"N_first=" << N_first << G4endl; + //G4cout <<"CrystalNumber_first=" << NCryst << G4endl; + //G4cout <<"Energy first=" << E << G4endl; + //G4cout <<"Time first =" << T << G4endl; + + + if(sizeN>1) + { + CsIShieldEnergy_itr++; + CsIShieldTime_itr++; + CsIShieldDetectorNumber_itr++; + + for (G4int l = 1; l < sizeN ; l++) { // loop on all the other tracks + + + G4int N= *(CsIShieldDetectorNumber_itr->second); // ID of det hit + NTrackID = CsIShieldDetectorNumber_itr->first - N; // ID of the track + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"N=" << N << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl; + //G4cout <<"NTrackID=" << NTrackID << G4endl; + + if(N==N_first) + { + E += *(CsIShieldEnergy_itr->second); + + }else // we fill the tree for the first detector hit and move to the next detector hit + { + if(E!=0) + { + // Fill detector number + ms_Event->SetPARISCsIShieldEDetectorNbr(m_index["ShieldCl"] + N_first); + ms_Event->SetPARISCsIShieldTDetectorNbr(m_index["ShieldCl"] + N_first); + // Fill Energy + // ms_Event->SetPARISCsIShieldEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISCsIShieldEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax) ms_Event->SetPARISCsIShieldEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISCsIShieldTTime(RandGauss::shoot(T, ResoTimeGpd)); + + } + + N_first=N; + E=*(CsIShieldEnergy_itr->second); + + } + + + //G4cout <<"Energy=" << E << G4endl; + //G4cout <<"Time =" << T << G4endl; + + // Always fill the tree at the end of the loop: + if(l==(sizeN-1) && E!=0) + { + // Fill detector number + ms_Event->SetPARISCsIShieldEDetectorNbr(m_index["ShieldCl"] + N_first); + ms_Event->SetPARISCsIShieldTDetectorNbr(m_index["ShieldCl"] + N_first); + // Fill Energy + // ms_Event->SetPARISCsIShieldEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISCsIShieldEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax) ms_Event->SetPARISCsIShieldEffphpeak(EGamma); + // Fill Time + ms_Event->SetPARISCsIShieldTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + + CsIShieldEnergy_itr++; + CsIShieldDetectorNumber_itr++; + } + }else + { + // Fill the tree if sizeN=1: + if(E!=0) + { + // Fill detector number + ms_Event->SetPARISCsIShieldEDetectorNbr(m_index["ShieldCl"] + N_first); + ms_Event->SetPARISCsIShieldTDetectorNbr(m_index["ShieldCl"] + N_first); + // Fill Energy + // ms_Event->SetPARISCsIShieldEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISCsIShieldEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax) ms_Event->SetPARISCsIShieldEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISCsIShieldTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + } + + + } + + + + // clear map for next event + CsIShieldDetectorNumberHitMap -> clear(); + CsIShieldEnergyHitMap -> clear(); + CsIShieldTimeHitMap -> clear(); + //XHitMap -> clear(); + //YHitMap -> clear(); + //PosXHitMap -> clear(); + //PosYHitMap -> clear(); + //PosZHitMap -> clear(); + //AngThetaHitMap -> clear(); + //AngPhiHitMap -> clear(); + } -void ParisPhoswitch::InitializeScorers() +void ShieldClParis::InitializeScorers() { - // LaBr3 Associate Scorer - m_LaBr3StageScorer = new G4MultiFunctionalDetector("LaBr3StageScorerParisPhoswitch"); + + // CsIShield Associate Scorer + m_CsIShieldScorer = new G4MultiFunctionalDetector("CsIScorerShieldClParis"); + + // G4VPrimitiveScorer* DetNbr = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "ShieldClParis", 0); + G4VPrimitiveScorer* DetNbr = new SHIELDScorerCsIDetectorNumber("CsIShieldDetectorNumber", "ShieldClParis", 0); + // G4VPrimitiveScorer* TOF = new GENERALSCORERS::PSTOF("StripTime","ShieldClParis", 0); + G4VPrimitiveScorer* TOF = new SHIELDScorerCsITOF("CsIShieldTime","ShieldClParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesX = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","ShieldClParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesY = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","ShieldClParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesZ = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","ShieldClParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","ShieldClParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesAnglePhi = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","ShieldClParis", 0); + + G4VPrimitiveScorer* Energy = new SHIELDScorerCsIEnergy("CsIShieldEnergy", "ShieldClParis", 0); + + // G4VPrimitiveScorer* StripPositionX = new PARIScorerLaBr3StageFrontStripDummyShape("StripIDFront", 0, NumberOfStrips); + // G4VPrimitiveScorer* StripPositionY = new PARISScorerLaBr3StageBackStripDummyShape("StripIDBack", 0, NumberOfStrips); + + //and register it to the multifunctionnal detector + m_CsIShieldScorer->RegisterPrimitive(DetNbr); + m_CsIShieldScorer->RegisterPrimitive(Energy); + m_CsIShieldScorer->RegisterPrimitive(TOF); + //m_LaBr3StageScorer->RegisterPrimitive(StripPositionX); + //m_LaBr3StageScorer->RegisterPrimitive(StripPositionY); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesX); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesY); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesZ); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi); + - // Second stage Associate Scorer - m_CsIStageScorer = new G4MultiFunctionalDetector("CsIStageScorerParisPhoswitch"); // Add All Scorer to the Global Scorer Manager - G4SDManager::GetSDMpointer()->AddNewDetector(m_LaBr3StageScorer); - G4SDManager::GetSDMpointer()->AddNewDetector(m_CsIStageScorer); + G4SDManager::GetSDMpointer()->AddNewDetector(m_CsIShieldScorer); + + } diff --git a/NPSimulation/src/ShieldModule.cc b/NPSimulation/src/ShieldModule.cc new file mode 100644 index 000000000..546486ce6 --- /dev/null +++ b/NPSimulation/src/ShieldModule.cc @@ -0,0 +1,61 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@atfc.ac.uk * + * * + * Creation Date : 25/08/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class is an Abstract Base Class (ABC) from which should * + * derive all different modules from the Shield detector. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#include "ShieldModule.hh" +#include "RootOutput.h" + + +TShieldData *ShieldModule::ms_Event = 0; + + + +ShieldModule::ShieldModule() +{ + if (ms_Event == 0) ms_Event = new TShieldData(); + + InitializeRootOutput(); + InitializeIndex(); +} + + + +ShieldModule::~ShieldModule() +{ +} + + + +void ShieldModule::InitializeRootOutput() +{ + RootOutput *pAnalysis = RootOutput::getInstance(); + TTree *pTree = pAnalysis->GetTree(); + // if the branch does not exist yet, create it + if (!pTree->GetBranch("SHIELD")) + pTree->Branch("SHIELD", "TShieldData", &ms_Event); +} + + + +void ShieldModule::InitializeIndex() +{ + m_index["ShieldCl"]=200; // CsI shield + m_index["ShieldPh"]=300; // CsI shield +} diff --git a/NPSimulation/src/ShieldPhParis.cc b/NPSimulation/src/ShieldPhParis.cc new file mode 100644 index 000000000..0f6b140dc --- /dev/null +++ b/NPSimulation/src/ShieldPhParis.cc @@ -0,0 +1,805 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@atfc.ac.uk * + * * + * Creation Date : 25/08/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: Define the shield around a PARIS phoswich module * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + + +// C++ headers +#include <sstream> +#include <string> +#include <cmath> + +// G4 Geometry headers +#include "G4Trd.hh" +#include "G4Box.hh" +#include "G4Trap.hh" +#include "G4Polyhedra.hh" + +#include "G4SubtractionSolid.hh" + +// G4 various headers +#include "G4MaterialTable.hh" +#include "G4Element.hh" +#include "G4ElementTable.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4RotationMatrix.hh" +#include "G4Transform3D.hh" +#include "G4PVPlacement.hh" +#include "G4PVDivision.hh" + +// G4 sensitive +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" + +// NPTool headers +#include "ShieldPhParis.hh" +//#include "ParisScorers.hh" +#include "ShieldScorers.hh" +#include "GeneralScorers.hh" +#include "RootOutput.h" + +// CLHEP +#include "CLHEP/Random/RandGauss.h" + +using namespace std; +using namespace CLHEP; +using namespace PARISPHSHIELD; + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +ShieldPhParis::ShieldPhParis() +{ + ms_InterCoord = 0; +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +ShieldPhParis::~ShieldPhParis() +{ +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ShieldPhParis::AddModule(G4ThreeVector X1_Y1, + G4ThreeVector X128_Y1, + G4ThreeVector X1_Y128, + G4ThreeVector X128_Y128) +{ + m_DefinitionType.push_back(true); + + m_X1_Y1.push_back(X1_Y1); + m_X128_Y1.push_back(X128_Y1); + m_X1_Y128.push_back(X1_Y128); + m_X128_Y128.push_back(X128_Y128); + + m_R.push_back(0); + m_Theta.push_back(0); + m_Phi.push_back(0); + m_beta_u.push_back(0); + m_beta_v.push_back(0); + m_beta_w.push_back(0); +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ShieldPhParis::AddModule(G4double R, + G4double Theta, + G4double Phi, + G4double beta_u, + G4double beta_v, + G4double beta_w) +{ + G4ThreeVector empty = G4ThreeVector(0, 0, 0); + + m_DefinitionType.push_back(false); + + m_X1_Y1.push_back(empty); + m_X128_Y1.push_back(empty); + m_X1_Y128.push_back(empty); + m_X128_Y128.push_back(empty); + + m_R.push_back(R); + m_Theta.push_back(Theta); + m_Phi.push_back(Phi); + m_beta_u.push_back(beta_u); + m_beta_v.push_back(beta_v); + m_beta_w.push_back(beta_w); +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void ShieldPhParis::VolumeMaker(G4int DetecNumber, + G4ThreeVector MMpos, + G4RotationMatrix* MMrot, + G4LogicalVolume* world) +{ + G4double NbrTelescopes = DetecNumber; + G4String DetectorNumber; + ostringstream Number; + Number << NbrTelescopes; + DetectorNumber = Number.str(); + + ///////////////////////////////////////////////////////////////// + /////////////////Element Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + G4String symbol, name; + G4double density = 0. , a = 0, z = 0; + G4int ncomponents = 0; + G4int nel = 0, natoms = 0; + + //////////////////////////////////////////////////////////////// + /////////////////Material Definition /////////////////////////// + //////////////////////////////////////////////////////////////// + a=137.327*g/mole; + G4Element* Ba = new G4Element(name="Barium",symbol="Ba",z=56.,a); + a=18.9984032*g/mole; + G4Element* F = new G4Element(name="Fluorine",symbol="F",z=9.,a); + a=22.99*g/mole; + G4Element* Na = new G4Element(name="Sodium",symbol="Na",z=11.,a); + a=79.904*g/mole; + G4Element* Br = new G4Element(name="Bromine",symbol="Br",z=35.,a); + a=126.90477*g/mole; + G4Element* I = new G4Element(name="Iodine",symbol="I",z=53.,a); + a=132.90545*g/mole; + G4Element* Cs = new G4Element(name="Cesium",symbol="Cs",z=55.,a); + a=138.9055*g/mole; + G4Element* La = new G4Element(name="Lanthanum",symbol="La",z=57.,a); + // Vacuum + G4Element* N = new G4Element("Nitrogen" , symbol = "N" , z = 7 , a = 14.01 * g / mole); + G4Element* O = new G4Element("Oxigen" , symbol = "O" , z = 8 , a = 16.00 * g / mole); + + density = 0.000000001 * mg / cm3; + G4Material* Vacuum = new G4Material("Vacuum", density, ncomponents = 2); + Vacuum->AddElement(N, .7); + Vacuum->AddElement(O, .3); + + // NaI + density = 3.67*g/cm3, nel = 2; + G4Material* NaI = new G4Material(name="NaI",density,nel); + NaI->AddElement(Na, natoms = 1); + NaI->AddElement(I, natoms = 1); + + // CsI + density = 4.51*g/cm3, nel = 2; + G4Material* CsI = new G4Material(name="CsI", density, nel); + CsI->AddElement(Cs, natoms = 1); + CsI->AddElement(I, natoms = 1); + + // LaBr3 + density = 5.29*g/cm3, nel = 2; + G4Material* LaBr3 = new G4Material(name="LaBr3",density,nel); + LaBr3->AddElement(La, natoms = 1); + LaBr3->AddElement(Br, natoms = 3); + + // BaF2 + density = 4.89*g/cm3, nel = 2; + G4Material* BaF2 = new G4Material(name="BaF2", density, nel); + BaF2->AddElement(Ba, natoms = 1); + BaF2->AddElement(F, natoms = 2); + + //////////////////////////////////////////////////////////////// + ////////////// Starting Volume Definition ////////////////////// + //////////////////////////////////////////////////////////////// + // Little trick to avoid warning in compilation: Use a PVPlacement "buffer". + // If don't you will have a Warning unused variable 'myPVP' + G4PVPlacement* PVPBuffer; + G4String Name = "ShieldPhParis" + DetectorNumber ; + + // Mother VolumeShieldPhParis.cc + G4double z_values[2]={0 , Length}; + G4double Rmin_values[2]={0., 0.}; + G4double Rmax_values[2]={134.375/2, 196.625/2}; + + G4Box* solidSubtractBox = new G4Box("Box", (PhoswichFace/2.), (PhoswichFace/2.), (Length+0.5)/2); + + G4Polyhedra* solidPolyhedra = new G4Polyhedra(Name, 0.*deg, 360.*deg, 3, 2, z_values, Rmin_values, Rmax_values); + + G4SubtractionSolid* solidShieldPhParis = new G4SubtractionSolid(Name,solidPolyhedra, solidSubtractBox, 0, G4ThreeVector(0.,0.,Length/2)); + + + G4LogicalVolume* logicShieldPhParis = new G4LogicalVolume(solidShieldPhParis, Vacuum, Name, 0, 0, 0); + + PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) , + logicShieldPhParis , + Name , + world , + false , + 0); + + logicShieldPhParis->SetVisAttributes(G4VisAttributes::Invisible); + //if (m_non_sensitive_part_visiualisation) logicShieldPhParis->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90))); + + // Daughter Volume + // CsI + G4ThreeVector positionCsI = G4ThreeVector(0, 0, 0); + + G4Polyhedra* solidShield = new G4Polyhedra("solidShield",0.*deg, 360.*deg, 3, 2, z_values, Rmin_values, Rmax_values); + + G4SubtractionSolid* solidShieldCsI = new G4SubtractionSolid("solidShieldCsI",solidShield, solidSubtractBox, 0, G4ThreeVector(0.,0.,Length/2)); + + //G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, CsI, "logicShieldCsI", 0, 0, 0); + G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, NaI, "logicShieldCsI", 0, 0, 0); + + PVPBuffer = new G4PVPlacement(0, + positionCsI , + logicShieldCsI , + Name + "_ShieldCsI" , + logicShieldPhParis , + false , + 0); + + // Set CsI sensible + logicShieldCsI->SetSensitiveDetector(m_CsIShieldScorer); + + // Visualisation of CsIStage + G4VisAttributes* CsIShieldVisAtt = new G4VisAttributes(G4Colour(1., 0., 0.)); + logicShieldCsI->SetVisAttributes(CsIShieldVisAtt); + + +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Virtual Method of VDetector class + +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// Called in DetecorConstruction::ReadDetextorConfiguration Method +void ShieldPhParis::ReadConfiguration(string Path) +{ + ifstream ConfigFile; + ConfigFile.open(Path.c_str()); + string LineBuffer, DataBuffer; + + // A:X1_Y1 --> X:1 Y:1 + // B:X128_Y1 --> X:128 Y:1 + // C:X1_Y128 --> X:1 Y:128 + // D:X128_Y128 --> X:128 Y:128 + + G4double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz ; + G4ThreeVector A , B , C , D ; + G4double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0 ; + + bool ReadingStatus = false; + + bool check_A = false; + bool check_C = false; + bool check_B = false; + bool check_D = false; + + bool check_Theta = false; + bool check_Phi = false; + bool check_R = false; + bool check_beta = false; + + bool checkVis = false; + + while (!ConfigFile.eof()) { + getline(ConfigFile, LineBuffer); + if (LineBuffer.compare(0, 13, "ShieldPhParis") == 0) { + G4cout << "///" << G4endl ; + G4cout << "Cluster Shield element found: " << G4endl ; + ReadingStatus = true ; + } + + while (ReadingStatus) { + ConfigFile >> DataBuffer; + // Comment Line + if (DataBuffer.compare(0, 1, "%") == 0) {/*do nothing */;} + + // Position method + else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) { + check_A = true; + ConfigFile >> DataBuffer ; + Ax = atof(DataBuffer.c_str()) ; + Ax = Ax * mm ; + ConfigFile >> DataBuffer ; + Ay = atof(DataBuffer.c_str()) ; + Ay = Ay * mm ; + ConfigFile >> DataBuffer ; + Az = atof(DataBuffer.c_str()) ; + Az = Az * mm ; + + A = G4ThreeVector(Ax, Ay, Az); + cout << "X1 Y1 corner position : " << A << endl; + } + else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) { + check_B = true; + ConfigFile >> DataBuffer ; + Bx = atof(DataBuffer.c_str()) ; + Bx = Bx * mm ; + ConfigFile >> DataBuffer ; + By = atof(DataBuffer.c_str()) ; + By = By * mm ; + ConfigFile >> DataBuffer ; + Bz = atof(DataBuffer.c_str()) ; + Bz = Bz * mm ; + + B = G4ThreeVector(Bx, By, Bz); + cout << "X128 Y1 corner position : " << B << endl; + } + else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) { + check_C = true; + ConfigFile >> DataBuffer ; + Cx = atof(DataBuffer.c_str()) ; + Cx = Cx * mm ; + ConfigFile >> DataBuffer ; + Cy = atof(DataBuffer.c_str()) ; + Cy = Cy * mm ; + ConfigFile >> DataBuffer ; + Cz = atof(DataBuffer.c_str()) ; + Cz = Cz * mm ; + + C = G4ThreeVector(Cx, Cy, Cz); + cout << "X1 Y128 corner position : " << C << endl; + } + else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) { + check_D = true; + ConfigFile >> DataBuffer ; + Dx = atof(DataBuffer.c_str()) ; + Dx = Dx * mm ; + ConfigFile >> DataBuffer ; + Dy = atof(DataBuffer.c_str()) ; + Dy = Dy * mm ; + ConfigFile >> DataBuffer ; + Dz = atof(DataBuffer.c_str()) ; + Dz = Dz * mm ; + + D = G4ThreeVector(Dx, Dy, Dz); + cout << "X128 Y128 corner position : " << D << endl; + } + + // Angle method + else if (DataBuffer.compare(0, 6, "THETA=") == 0) { + check_Theta = true; + ConfigFile >> DataBuffer ; + Theta = atof(DataBuffer.c_str()) ; + Theta = Theta * deg; + cout << "Theta: " << Theta / deg << endl; + } + else if (DataBuffer.compare(0, 4, "PHI=") == 0) { + check_Phi = true; + ConfigFile >> DataBuffer ; + Phi = atof(DataBuffer.c_str()) ; + Phi = Phi * deg; + cout << "Phi: " << Phi / deg << endl; + } + else if (DataBuffer.compare(0, 2, "R=") == 0) { + check_R = true; + ConfigFile >> DataBuffer ; + R = atof(DataBuffer.c_str()) ; + R = R * mm; + cout << "R: " << R / mm << endl; + } + else if (DataBuffer.compare(0, 5, "BETA=") == 0) { + check_beta = true; + ConfigFile >> DataBuffer ; + beta_u = atof(DataBuffer.c_str()) ; + beta_u = beta_u * deg ; + ConfigFile >> DataBuffer ; + beta_v = atof(DataBuffer.c_str()) ; + beta_v = beta_v * deg ; + ConfigFile >> DataBuffer ; + beta_w = atof(DataBuffer.c_str()) ; + beta_w = beta_w * deg ; + G4cout << "Beta: " << beta_u / deg << " " << beta_v / deg << " " << beta_w / deg << G4endl ; + } + + else if (DataBuffer.compare(0, 4, "VIS=") == 0) { + checkVis = true ; + ConfigFile >> DataBuffer; + if (DataBuffer.compare(0, 3, "all") == 0) m_non_sensitive_part_visiualisation = true; + } + + else G4cout << "WARNING: Wrong Token, ShieldPhParis: Cluster Element not added" << G4endl; + + // Add The previously define telescope + // With position method + if ((check_A && check_B && check_C && check_D && checkVis) && + !(check_Theta && check_Phi && check_R)) { + ReadingStatus = false; + check_A = false; + check_C = false; + check_B = false; + check_D = false; + checkVis = false; + + AddModule(A, B, C, D); + } + + // With angle method + if ((check_Theta && check_Phi && check_R && checkVis) && + !(check_A && check_B && check_C && check_D)) { + ReadingStatus = false; + check_Theta = false; + check_Phi = false; + check_R = false; + check_beta = false; + checkVis = false; + + AddModule(R, Theta, Phi, beta_u, beta_v, beta_w); + } + } + } +} + + + +// Construct detector and inialise sensitive part. +// Called After DetecorConstruction::AddDetector Method +void ShieldPhParis::ConstructDetector(G4LogicalVolume* world) +{ + G4RotationMatrix* MMrot = NULL ; + G4ThreeVector MMpos = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMu = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMv = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMw = G4ThreeVector(0, 0, 0) ; + G4ThreeVector MMCenter = G4ThreeVector(0, 0, 0) ; + + G4int NumberOfTelescope = m_DefinitionType.size() ; + + for (G4int i = 0; i < NumberOfTelescope; i++) { + // By Point + if (m_DefinitionType[i]) { + // (u,v,w) unitary vector associated to telescope referencial + // (u,v) // to silicon plan + // w perpendicular to (u,v) plan and pointing ThirdStage + MMu = m_X128_Y1[i] - m_X1_Y1[i]; + MMu = MMu.unit(); + + MMv = m_X1_Y128[i] - m_X1_Y1[i]; + //MMv = -0.5 * (m_X1_Y1[i] + m_X128_Y128[i] - m_X1_Y128[i] - m_X128_Y1[i]); + MMv = MMv.unit(); + + G4ThreeVector MMscal = MMu.dot(MMv); + + MMw = MMu.cross(MMv); +// if (MMw.z() > 0) MMw = MMv.cross(MMu) ; + MMw = MMw.unit(); + + MMCenter = (m_X1_Y1[i] + m_X1_Y128[i] + m_X128_Y1[i] + m_X128_Y128[i]) / 4; + + // Passage Matrix from Lab Referential to Telescope Referential + // MUST2 + MMrot = new G4RotationMatrix(MMu, MMv, MMw); + // translation to place Telescope + //MMpos = MMw * Length * 0.5 + MMCenter; + MMpos = MMCenter; + } + + // By Angle + else { + G4double Theta = m_Theta[i] ; + G4double Phi = m_Phi[i] ; + + // (u,v,w) unitary vector associated to telescope referencial + // (u,v) // to silicon plan + // w perpendicular to (u,v) plan and pointing ThirdStage + // Phi is angle between X axis and projection in (X,Y) plan + // Theta is angle between position vector and z axis + G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad); + G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad); + G4double wZ = m_R[i] * cos(Theta / rad); + MMw = G4ThreeVector(wX, wY, wZ); + + // vector corresponding to the center of the module + G4ThreeVector CT = MMw; + + // vector parallel to one axis of silicon plane + G4double ii = cos(Theta / rad) * cos(Phi / rad); + G4double jj = cos(Theta / rad) * sin(Phi / rad); + G4double kk = -sin(Theta / rad); + G4ThreeVector Y = G4ThreeVector(ii, jj, kk); + + MMw = MMw.unit(); + MMu = MMw.cross(Y); + MMv = MMw.cross(MMu); + MMv = MMv.unit(); + MMu = MMu.unit(); + + // Passage Matrix from Lab Referential to Telescope Referential + // MUST2 + MMrot = new G4RotationMatrix(MMu, MMv, MMw); + // Telescope is rotate of Beta angle around MMv axis. + MMrot->rotate(m_beta_u[i], MMu); + MMrot->rotate(m_beta_v[i], MMv); + MMrot->rotate(m_beta_w[i], MMw); + // translation to place Telescope + MMpos = MMw * Length * 0.5 + CT ; + } + + VolumeMaker(i + 1, MMpos, MMrot, world); + } + + delete MMrot ; +} + + + +// Connect the ParisData class to the output TTree +// of the simulation +void ShieldPhParis::InitializeRootOutput() +{ +} + + + +// Set the TinteractionCoordinates object from VDetector to the present class +void ShieldPhParis::SetInterCoordPointer(TInteractionCoordinates* interCoord) +{ + ms_InterCoord = interCoord; +} + + + +// Read sensitive part and fill the Root tree. +// Called at in the EventAction::EndOfEventAvtion +void ShieldPhParis::ReadSensitive(const G4Event* event) +{ + ////////////////////////////////////////////////////////////////////////////////////// + //////////////////////// Used to Read Event Map of detector ////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + + momentum = event->GetPrimaryVertex()->GetPrimary()->GetMomentum(); + G4double EGamma = momentum.getR(); // for photon E=p + G4double EGammaMin = EGamma-4*ResoFirstStage; + G4double EGammaMax = EGamma+4*ResoFirstStage; + + // CsI Shield + std::map<G4int, G4int*>::iterator CsIShieldDetectorNumber_itr; + std::map<G4int, G4double*>::iterator CsIShieldEnergy_itr; + std::map<G4int, G4double*>::iterator CsIShieldTime_itr; + //std::map<G4int, G4double*>::iterator X_itr; + //std::map<G4int, G4double*>::iterator Y_itr; + //std::map<G4int, G4double*>::iterator Pos_X_itr; + //std::map<G4int, G4double*>::iterator Pos_Y_itr; + //std::map<G4int, G4double*>::iterator Pos_Z_itr; + //std::map<G4int, G4double*>::iterator Ang_Theta_itr; + //std::map<G4int, G4double*>::iterator Ang_Phi_itr; + + G4THitsMap<G4int>* CsIShieldDetectorNumberHitMap; + G4THitsMap<G4double>* CsIShieldEnergyHitMap; + G4THitsMap<G4double>* CsIShieldTimeHitMap; + // G4THitsMap<G4double>* XHitMap; + // G4THitsMap<G4double>* YHitMap; + //G4THitsMap<G4double>* PosXHitMap; + //G4THitsMap<G4double>* PosYHitMap; + //G4THitsMap<G4double>* PosZHitMap; + //G4THitsMap<G4double>* AngThetaHitMap; + //G4THitsMap<G4double>* AngPhiHitMap; + + // NULL pointer are given to avoid warning at compilation + + // Read the Scorer associate to the LaBr + + //Detector Number + G4int CsIShieldDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIScorerShieldPhParis/CsIShieldDetectorNumber") ; + CsIShieldDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsIShieldDetCollectionID)) ; + CsIShieldDetectorNumber_itr = CsIShieldDetectorNumberHitMap->GetMap()->begin() ; + + //Energy + G4int CsIShieldEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIScorerShieldPhParis/CsIShieldEnergy") ; + CsIShieldEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIShieldEnergyCollectionID)) ; + CsIShieldEnergy_itr = CsIShieldEnergyHitMap->GetMap()->begin() ; + + //Time of Flight + G4int CsIShieldTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIScorerShieldPhParis/CsIShieldTime") ; + CsIShieldTimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIShieldTimeCollectionID)) ; + CsIShieldTime_itr = CsIShieldTimeHitMap->GetMap()->begin() ; + + + // Check the size of different map + G4int sizeN = CsIShieldDetectorNumberHitMap->entries(); // number of objects hit by trackID=1 (can be the same object hit several time) + G4int sizeE = CsIShieldEnergyHitMap->entries(); // = number of steps with edep non null + G4int sizeT = CsIShieldTimeHitMap->entries(); + //G4int sizeX = PosXHitMap->entries(); + //G4int sizeY = PosYHitMap->entries(); + //G4int sizeX = XHitMap->entries(); + //G4int sizeY = YHitMap->entries(); + + //G4cout <<"SizeN=" << sizeN << endl; + //G4cout <<"SizeC=" << sizeC << endl; + //G4cout <<"SizeN CsI =" << sizeNCsI << endl; + //G4cout <<"SizeE CsI =" << sizeECsI << endl; + + //DetectorNumberHitMap->PrintAllHits(); + + + if (sizeE != sizeT) { + G4cout << "No match size PARIS Event Map: sE:" + << sizeE << " sT:" << sizeT << endl ; + + // if (sizeE != sizeX) { + //G4cout << "No match size PARIS Event Map: sE:" + //<< sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ; + return; + } + + + //G4cout <<"SizeN=" << sizeN << G4endl; + + + if(sizeN>0) + { + + // Deal with trackID=1: + G4int N_first= *(CsIShieldDetectorNumber_itr->second); // ID of first det hit + G4int NTrackID = CsIShieldDetectorNumber_itr->first - N_first; // first trackID dealt with (not always =1) + G4double E = *(CsIShieldEnergy_itr->second); + G4double T = *(CsIShieldTime_itr->second); + + + //G4cout <<"NTrackID=" << NTrackID << G4endl; + //G4cout <<"N_first=" << N_first << G4endl; + //G4cout <<"CrystalNumber_first=" << NCryst << G4endl; + //G4cout <<"Energy first=" << E << G4endl; + //G4cout <<"Time first =" << T << G4endl; + + + if(sizeN>1) + { + CsIShieldEnergy_itr++; + CsIShieldTime_itr++; + CsIShieldDetectorNumber_itr++; + + for (G4int l = 1; l < sizeN ; l++) { // loop on all the other tracks + + + G4int N= *(CsIShieldDetectorNumber_itr->second); // ID of det hit + NTrackID = CsIShieldDetectorNumber_itr->first - N; // ID of the track + + //G4cout <<"l=" << l << G4endl; + //G4cout <<"N=" << N << G4endl; + //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl; + //G4cout <<"NTrackID=" << NTrackID << G4endl; + + if(N==N_first) + { + E += *(CsIShieldEnergy_itr->second); + + }else // we fill the tree for the first detector hit and move to the next detector hit + { + if(E!=0) + { + // Fill detector number + ms_Event->SetPARISCsIShieldEDetectorNbr(m_index["ShieldPh"] + N_first); + ms_Event->SetPARISCsIShieldTDetectorNbr(m_index["ShieldPh"] + N_first); + // Fill Energy + // ms_Event->SetPARISCsIShieldEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISCsIShieldEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax) ms_Event->SetPARISCsIShieldEffphpeak(EGamma); + // Fill Time + ms_Event->SetPARISCsIShieldTTime(RandGauss::shoot(T, ResoTimeGpd)); + + } + + N_first=N; + E=*(CsIShieldEnergy_itr->second); + + } + + + //G4cout <<"Energy=" << E << G4endl; + //G4cout <<"Time =" << T << G4endl; + + // Always fill the tree at the end of the loop: + if(l==(sizeN-1) && E!=0) + { + // Fill detector number + ms_Event->SetPARISCsIShieldEDetectorNbr(m_index["ShieldPh"] + N_first); + ms_Event->SetPARISCsIShieldTDetectorNbr(m_index["ShieldPh"] + N_first); + // Fill Energy + // ms_Event->SetPARISCsIShieldEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISCsIShieldEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax) ms_Event->SetPARISCsIShieldEffphpeak(EGamma); + // Fill Time + ms_Event->SetPARISCsIShieldTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + + CsIShieldEnergy_itr++; + CsIShieldDetectorNumber_itr++; + } + }else + { + // Fill the tree if sizeN=1: + if(E!=0) + { + // Fill detector number + ms_Event->SetPARISCsIShieldEDetectorNbr(m_index["ShieldPh"] + N_first); + ms_Event->SetPARISCsIShieldTDetectorNbr(m_index["ShieldPh"] + N_first); + // Fill Energy + // ms_Event->SetPARISCsIShieldEEnergy(RandGauss::shoot(E, ResoFirstStage)); + E=RandGauss::shoot(E, ResoFirstStage); + ms_Event->SetPARISCsIShieldEEnergy(E); // Fill the tree + if(E>EGammaMin && E<EGammaMax) ms_Event->SetPARISCsIShieldEffphpeak(EGamma); + + // Fill Time + ms_Event->SetPARISCsIShieldTTime(RandGauss::shoot(T, ResoTimeGpd)); + } + } + + + } + + + + // clear map for next event + CsIShieldDetectorNumberHitMap -> clear(); + CsIShieldEnergyHitMap -> clear(); + CsIShieldTimeHitMap -> clear(); + //XHitMap -> clear(); + //YHitMap -> clear(); + //PosXHitMap -> clear(); + //PosYHitMap -> clear(); + //PosZHitMap -> clear(); + //AngThetaHitMap -> clear(); + //AngPhiHitMap -> clear(); + +} + + + +void ShieldPhParis::InitializeScorers() +{ + + // CsIShield Associate Scorer + m_CsIShieldScorer = new G4MultiFunctionalDetector("CsIScorerShieldPhParis"); + + // G4VPrimitiveScorer* DetNbr = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "ShieldPhParis", 0); + G4VPrimitiveScorer* DetNbr = new SHIELDScorerCsIDetectorNumber("CsIShieldDetectorNumber", "ShieldPhParis", 0); + // G4VPrimitiveScorer* TOF = new GENERALSCORERS::PSTOF("StripTime","ShieldPhParis", 0); + G4VPrimitiveScorer* TOF = new SHIELDScorerCsITOF("CsIShieldTime","ShieldPhParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesX = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","ShieldPhParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesY = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","ShieldPhParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesZ = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","ShieldPhParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","ShieldPhParis", 0); + //G4VPrimitiveScorer* InteractionCoordinatesAnglePhi = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","ShieldPhParis", 0); + + G4VPrimitiveScorer* Energy = new SHIELDScorerCsIEnergy("CsIShieldEnergy", "ShieldPhParis", 0); + + // G4VPrimitiveScorer* StripPositionX = new PARIScorerLaBr3StageFrontStripDummyShape("StripIDFront", 0, NumberOfStrips); + // G4VPrimitiveScorer* StripPositionY = new PARISScorerLaBr3StageBackStripDummyShape("StripIDBack", 0, NumberOfStrips); + + //and register it to the multifunctionnal detector + m_CsIShieldScorer->RegisterPrimitive(DetNbr); + m_CsIShieldScorer->RegisterPrimitive(Energy); + m_CsIShieldScorer->RegisterPrimitive(TOF); + //m_LaBr3StageScorer->RegisterPrimitive(StripPositionX); + //m_LaBr3StageScorer->RegisterPrimitive(StripPositionY); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesX); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesY); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesZ); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta); + //m_LaBr3StageScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi); + + + + // Add All Scorer to the Global Scorer Manager + G4SDManager::GetSDMpointer()->AddNewDetector(m_CsIShieldScorer); + + +} diff --git a/NPSimulation/src/ShieldScorers.cc b/NPSimulation/src/ShieldScorers.cc new file mode 100644 index 000000000..6748c306d --- /dev/null +++ b/NPSimulation/src/ShieldScorers.cc @@ -0,0 +1,231 @@ +/***************************************************************************** + * Copyright (C) 2009 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: M. Labiche contact address: marc.labiche@stfc.ac.uk * + * * + * Creation Date : 26/08/10 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: This class holds all the scorers needed by the * + * Shield*** objects. * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +// G4 headers +#include "G4UnitsTable.hh" + +// NPTool headers +#include "GeneralScorers.hh" +#include "ShieldScorers.hh" + +#include "ShieldClParis.hh" +#include "ShieldPhParis.hh" + +using namespace PARISCLSHIELD; +using namespace PARISPHSHIELD; + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Added by Adrien MATTA: +// Those Scorer use TrackID as map index. This way ones can rebuild energy deposit, +// time of flight or position,... particle by particle for each event. Because standard +// scorer provide by G4 don't work this way but using a global ID for each event you should +// not use those scorer with some G4 provided ones or being very carefull doing so. + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Detector Number Scorer (deal with multiple particle hit) +SHIELDScorerCsIDetectorNumber::SHIELDScorerCsIDetectorNumber(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +SHIELDScorerCsIDetectorNumber::~SHIELDScorerCsIDetectorNumber() +{ +} + +G4bool SHIELDScorerCsIDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get energy + G4double edep = aStep->GetTotalEnergyDeposit(); + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->set(DetNbr + index, DetNbr); + return TRUE; +} +void SHIELDScorerCsIDetectorNumber::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void SHIELDScorerCsIDetectorNumber::EndOfEvent(G4HCofThisEvent*) +{ +} + +void SHIELDScorerCsIDetectorNumber::Clear() +{ + EvtMap->clear(); +} + +void SHIELDScorerCsIDetectorNumber::DrawAll() +{ +} + +void SHIELDScorerCsIDetectorNumber::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " Detector Number : " << G4BestUnit(*(itr->second), "DetectorNumber") + << G4endl; + } +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage Energy Scorer (deal with multiple particle hit) +SHIELDScorerCsIEnergy::SHIELDScorerCsIEnergy(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +SHIELDScorerCsIEnergy::~SHIELDScorerCsIEnergy() +{ +} + +G4bool SHIELDScorerCsIEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get energy + G4ThreeVector POS = aStep->GetPreStepPoint()->GetPosition(); + POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS); + + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->add(DetNbr + index, edep); + return TRUE; +} + +void SHIELDScorerCsIEnergy::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void SHIELDScorerCsIEnergy::EndOfEvent(G4HCofThisEvent*) +{ +} + +void SHIELDScorerCsIEnergy::Clear() +{ + EvtMap->clear(); +} + +void SHIELDScorerCsIEnergy::DrawAll() +{ +} + +void SHIELDScorerCsIEnergy::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin(); + for (; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " energy deposit: " << G4BestUnit(*(itr->second), "Energy") + << G4endl; + } +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// FirstStage ToF Scorer (deal with multiple particle hit) +SHIELDScorerCsITOF::SHIELDScorerCsITOF(G4String name, G4String volumeName, G4int depth) + : G4VPrimitiveScorer(name, depth), HCID(-1) +{ + m_VolumeName = volumeName; +} + +SHIELDScorerCsITOF::~SHIELDScorerCsITOF() +{ +} + +G4bool SHIELDScorerCsITOF::ProcessHits(G4Step* aStep, G4TouchableHistory*) +{ + // get detector number + int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName); + + // get TOF + G4double TOF = aStep->GetPreStepPoint()->GetGlobalTime(); + + G4double edep = aStep->GetTotalEnergyDeposit(); + // if (edep < 100*keV) return FALSE; + if (edep < 0*keV) return FALSE; // = HERE IS THE DIFFERENCE WITH GENERALSCORER + G4int index = aStep->GetTrack()->GetTrackID(); + EvtMap->add(DetNbr + index, TOF); + return TRUE; +} + +void SHIELDScorerCsITOF::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName()); + if (HCID < 0) { + HCID = GetCollectionID(0); + } + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void SHIELDScorerCsITOF::EndOfEvent(G4HCofThisEvent*) +{ +} + +void SHIELDScorerCsITOF::Clear() +{ + EvtMap->clear(); +} + +void SHIELDScorerCsITOF::DrawAll() +{ +} + +void SHIELDScorerCsITOF::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; +} + + + + diff --git a/NPSimulation/vasigamma.mac b/NPSimulation/vasigamma.mac new file mode 100644 index 000000000..de894f95f --- /dev/null +++ b/NPSimulation/vasigamma.mac @@ -0,0 +1,27 @@ +#verbose level +/control/verbose 0 +/material/verbose 0 +/tracking/verbose 0 +/process/verbose 0 +/event/verbose 0 +/run/verbose 0 + +# choose a graphic system +#/vis/open OGLIX +#/vis/open OGLSX +#/vis/open VRML2FILE +#/vis/scene/create +#/vis/drawVolume +#/vis/viewer/set/viewpointThetaPhi 0 0 deg +#/vis/viewer/zoom 7 + +# options to draw trajectories +#/vis/scene/endOfEventAction accumulate +#/vis/scene/add/trajectories 1 +#/tracking/storeTrajectory 1 +#/vis/scene/add/axes 0 0 0 20 cm +#/vis/viewer/refresh + +# run event +/run/beamOn 100000 + diff --git a/NPSimulation/vis.mac b/NPSimulation/vis.mac index 6082ac113..de2be93c3 100644 --- a/NPSimulation/vis.mac +++ b/NPSimulation/vis.mac @@ -1,26 +1,28 @@ #verbose level /control/verbose 1 /material/verbose 1 -/tracking/verbose 1 -/process/verbose 1 +/tracking/verbose 0 +/process/verbose 0 /event/verbose 0 /run/verbose 1 # choose a graphic system -#/vis/open OGLIX -#/vis/open OGLSX -/vis/open VRML2FILE -/vis/scene/create -/vis/drawVolume -/vis/viewer/set/viewpointThetaPhi 0 0 deg -/vis/viewer/zoom 7 +##/vis/open OGLIX +##/vis/open OGLSX +#/vis/open VRML2FILE +#/vis/scene/create +#/vis/drawVolume +#/vis/viewer/set/viewpointThetaPhi 0 0 deg +#/vis/viewer/zoom 7 -# options to draw trajectories -/vis/scene/endOfEventAction accumulate -/vis/scene/add/trajectories 1 -/tracking/storeTrajectory 1 -/vis/scene/add/axes 0 0 0 20 cm -/vis/viewer/refresh +## options to draw trajectories +#/vis/scene/endOfEventAction accumulate +#/vis/scene/add/trajectories 1 +#/tracking/storeTrajectory 1 +#/vis/scene/add/axes 0 0 0 20 cm +#/vis/viewer/refresh # run event -#/run/beamOn 100000 +#/run/beamOn 0 +#/run/beamOn 10000 +/run/beamOn 5000 -- GitLab