diff --git a/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql b/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql index edd02d7b67c730dfc55387e0123d9b53d858fa96..f3b35ef0ca4872ff1a12dab3ceb0a548e80af9d2 100644 --- a/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql +++ b/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql @@ -235,6 +235,21 @@ CREATE TABLE IF NOT EXISTS "VETOPLATEGENERAL_DATA2TAG" ( "VETOPLATEGENERAL_DATA_ID" SLONGLONG ); -- +DROP TABLE IF EXISTS "VETORADIATORGENERAL_DATA"; +CREATE TABLE IF NOT EXISTS "VETORADIATORGENERAL_DATA" ( + "VETORADIATORGENERAL_DATA_ID" SLONGLONG UNIQUE, + "WIDTH" DOUBLE, + "LENGTH" DOUBLE, + "THICKNESS" DOUBLE, + "MATERIAL" TEXT +); +-- +DROP TABLE IF EXISTS "VETORADIATORGENERAL_DATA2TAG"; +CREATE TABLE IF NOT EXISTS "VETORADIATORGENERAL_DATA2TAG" ( + "VETORADIATORGENERAL_TAG_ID" SLONGLONG, + "VETORADIATORGENERAL_DATA_ID" SLONGLONG +); +-- -- Tables for describing Trigger scintillator plates (and passive radiators) -- DROP TABLE IF EXISTS "TRIGGERTOPLEVEL_DATA"; @@ -326,6 +341,7 @@ CREATE TABLE IF NOT EXISTS "PRESHOWERSTATIONGENERAL_DATA2TAG" ( "PRESHOWERSTATIONGENERAL_TAG_ID" SLONGLONG, "PRESHOWERSTATIONGENERAL_DATA_ID" SLONGLONG ); +-- DROP TABLE IF EXISTS "PRESHOWERPLATEGENERAL_DATA"; CREATE TABLE IF NOT EXISTS "PRESHOWERPLATEGENERAL_DATA" ( "PRESHOWERPLATEGENERAL_DATA_ID" SLONGLONG UNIQUE, @@ -342,6 +358,40 @@ CREATE TABLE IF NOT EXISTS "PRESHOWERPLATEGENERAL_DATA2TAG" ( "PRESHOWERPLATEGENERAL_DATA_ID" SLONGLONG ); -- +-- The Preshower radiators +-- +DROP TABLE IF EXISTS "PRESHOWERRADIATORGENERAL_DATA"; +CREATE TABLE IF NOT EXISTS "PRESHOWERRADIATORGENERAL_DATA" ( + "PRESHOWERRADIATORGENERAL_DATA_ID" SLONGLONG UNIQUE, + "WIDTH" DOUBLE, + "LENGTH" DOUBLE, + "THICKNESS" DOUBLE, + "MATERIAL" TEXT +); +-- +DROP TABLE IF EXISTS "PRESHOWERRADIATORGENERAL_DATA2TAG"; +CREATE TABLE IF NOT EXISTS "PRESHOWERRADIATORGENERAL_DATA2TAG" ( + "PRESHOWERRADIATORGENERAL_TAG_ID" SLONGLONG, + "PRESHOWERRADIATORGENERAL_DATA_ID" SLONGLONG +); +-- +-- The Preshower absorbers +-- +DROP TABLE IF EXISTS "PRESHOWERABSORBERGENERAL_DATA"; +CREATE TABLE IF NOT EXISTS "PRESHOWERABSORBERGENERAL_DATA" ( + "PRESHOWERABSORBERGENERAL_DATA_ID" SLONGLONG UNIQUE, + "WIDTH" DOUBLE, + "LENGTH" DOUBLE, + "THICKNESS" DOUBLE, + "MATERIAL" TEXT +); +-- +DROP TABLE IF EXISTS "PRESHOWERABSORBERGENERAL_DATA2TAG"; +CREATE TABLE IF NOT EXISTS "PRESHOWERABSORBERGENERAL_DATA2TAG" ( + "PRESHOWERABSORBERGENERAL_TAG_ID" SLONGLONG, + "PRESHOWERABSORBERGENERAL_DATA_ID" SLONGLONG +); +-- -- Ecal top level tables -- DROP TABLE IF EXISTS "ECALTOPLEVEL_DATA"; @@ -662,6 +712,7 @@ INSERT INTO "HVS_NODE" VALUES (210, "VetoTopLevel", 21, 0, NULL); INSERT INTO "HVS_NODE" VALUES (211, "VetoStationGeneral", 21, 0, NULL); INSERT INTO "HVS_NODE" VALUES (212, "VetoPlateGeneral", 21, 0, NULL); INSERT INTO "HVS_NODE" VALUES (214, "VetoSwitches", 21, 0, NULL ); +INSERT INTO "HVS_NODE" VALUES (215, "VetoRadiatorGeneral", 21, 0, NULL); INSERT INTO "HVS_NODE" VALUES (22, "Trigger", 2, 1, NULL); INSERT INTO "HVS_NODE" VALUES (220, "TriggerTopLevel", 22, 0, NULL); INSERT INTO "HVS_NODE" VALUES (221, "TriggerStationGeneral", 22, 0, NULL); @@ -672,6 +723,8 @@ INSERT INTO "HVS_NODE" VALUES (230, "PreshowerTopLevel", 23, 0, NULL); INSERT INTO "HVS_NODE" VALUES (231, "PreshowerStationGeneral", 23, 0, NULL); INSERT INTO "HVS_NODE" VALUES (232, "PreshowerPlateGeneral", 23, 0, NULL); INSERT INTO "HVS_NODE" VALUES (234, "PreshowerSwitches", 23, 0, NULL ); +INSERT INTO "HVS_NODE" VALUES (235, "PreshowerRadiatorGeneral", 23, 0, NULL); +INSERT INTO "HVS_NODE" VALUES (236, "PreshowerAbsorberGeneral", 23, 0, NULL); INSERT INTO "HVS_NODE" VALUES (3, "Tracker", 0, 1, NULL); INSERT INTO "HVS_NODE" VALUES (3003, "TrackerMaterials", 3, 0, NULL); INSERT INTO "HVS_NODE" VALUES (3004, "TrackerMatComponents", 3, 0, NULL); @@ -770,6 +823,7 @@ INSERT INTO "HVS_TAG2NODE" VALUES (211, "VetoStationGeneral-00", 100010, NULL, INSERT INTO "HVS_TAG2NODE" VALUES (212, "VetoPlateGeneral-00", 100025, NULL, 0, 0, 1567209600000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (211, "VetoStationGeneral-01", 100049, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (212, "VetoPlateGeneral-01", 100050, NULL, 0, 0, 1590796800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (215, "VetoRadiatorGeneral-00", 107810, NULL, 0, 0, 1627776000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (220, "TriggerTopLevel-00", 110009, NULL, 0, 0, 1581292800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (220, "TriggerTopLevel-01", 100047, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (220, "TriggerTopLevel-02", 107799, NULL, 0, 0, 1619222400000000000, NULL, 22); @@ -782,6 +836,8 @@ INSERT INTO "HVS_TAG2NODE" VALUES (230, "PreshowerTopLevel-02", 107800, NULL, 0 INSERT INTO "HVS_TAG2NODE" VALUES (231, "PreshowerStationGeneral-00", 120010, NULL, 0, 0, 1581292800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (231, "PreshowerStationGeneral-01", 100052, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (232, "PreshowerPlateGeneral-00", 120025, NULL, 0, 0, 1581292800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (235, "PreshowerRadatorGeneral-00", 107808, NULL, 0, 0, 1627776000000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (236, "PreshowerAbsorberGeneral-00", 107809, NULL, 0, 0, 1627776000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (1003, "NeutrinoMaterials-00", 100032, NULL, 0, 0, 1582416000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (1004, "NeutrinoMatComponents-00", 100033, NULL, 0, 0, 1582416000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2003, "ScintMaterials-00", 100011, NULL, 0, 0, 1549238400000000000, NULL, 22); @@ -1003,12 +1059,15 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "EcalSwitches", "EcalSwitch INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "VetoTopLevel", "VetoTopLevel-00", 100009); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "VetoStationGeneral", "VetoStationGeneral-00", 100010); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "VetoPlateGeneral", "VetoPlateGeneral-00", 100025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "TriggerTopLevel", "TriggerTopLevel-00", 110009); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "TriggerStationGeneral", "TriggerStationGeneral-00", 110010); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "PreshowerTopLevel", "PreshowerTopLevel-00", 120009); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "PreshowerStationGeneral", "PreshowerStationGeneral-00", 120010); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "PreshowerPlateGeneral", "PreshowerPlateGeneral-00", 120025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "PreshowerRadiatorGeneral", "PreshowerRadiatorGeneral-00", 107808); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "PreshowerAbsorberGeneral", "PreshowerAbsorberGeneral-00", 107809); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "NeutrinoMaterials", "NeutrinoMaterials-00", 100032); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "NeutrinoMatComponents", "NeutrinoMatComponents-00", 100033); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "ScintMaterials", "ScintMaterials-00", 100011); @@ -1063,12 +1122,15 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "EcalSwitches", "EcalSwitch INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "VetoTopLevel", "VetoTopLevel-01", 100046); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "VetoStationGeneral", "VetoStationGeneral-01", 100049); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "TriggerTopLevel", "TriggerTopLevel-01", 100047); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "PreshowerTopLevel", "PreshowerTopLevel-01", 100048); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "PreshowerStationGeneral", "PreshowerStationGeneral-01", 100052); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "PreshowerPlateGeneral", "PreshowerPlateGeneral-00", 120025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "PreshowerRadiatorGeneral", "PreshowerRadiatorGeneral-00", 107808); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "PreshowerAbsorberGeneral", "PreshowerAbsorberGeneral-00", 107809); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "NeutrinoMaterials", "NeutrinoMaterials-00", 100032); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "NeutrinoMatComponents", "NeutrinoMatComponents-00", 100033); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "ScintMaterials", "ScintMaterials-00", 100011); @@ -1123,12 +1185,15 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "EcalSwitches", "EcalSwitch INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "VetoTopLevel", "VetoTopLevel-01", 100046); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "VetoStationGeneral", "VetoStationGeneral-01", 100049); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "TriggerTopLevel", "TriggerTopLevel-01", 100047); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "PreshowerTopLevel", "PreshowerTopLevel-01", 100048); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "PreshowerStationGeneral", "PreshowerStationGeneral-01", 100052); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "PreshowerPlateGeneral", "PreshowerPlateGeneral-00", 120025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "PreshowerRadiatorGeneral", "PreshowerRadiatorGeneral-00", 107808); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "PreshowerAbsorberGeneral", "PreshowerAbsorberGeneral-00", 107809); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "NeutrinoMaterials", "NeutrinoMaterials-00", 100032); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "NeutrinoMatComponents", "NeutrinoMatComponents-00", 100033); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "ScintMaterials", "ScintMaterials-00", 100011); @@ -1180,12 +1245,15 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "EcalSwitches", "EcalSwitch INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "VetoTopLevel", "VetoTopLevel-02", 107798); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "VetoStationGeneral", "VetoStationGeneral-01", 100049); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "TriggerTopLevel", "TriggerTopLevel-02", 107799); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "PreshowerTopLevel", "PreshowerTopLevel-02", 107800); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "PreshowerStationGeneral", "PreshowerStationGeneral-01", 100052); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "PreshowerPlateGeneral", "PreshowerPlateGeneral-00", 120025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "PreshowerRadiatorGeneral", "PreshowerRadiatorGeneral-00", 107808); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "PreshowerAbsorberGeneral", "PreshowerAbsorberGeneral-00", 107809); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "NeutrinoMaterials", "NeutrinoMaterials-00", 100032); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "NeutrinoMatComponents", "NeutrinoMatComponents-00", 100033); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "ScintMaterials", "ScintMaterials-00", 100011); @@ -1244,12 +1312,15 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "EcalSwitches", "EcalSwit INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "VetoTopLevel", "VetoTopLevel-02", 107798); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "VetoStationGeneral", "VetoStationGeneral-01", 100049); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "TriggerTopLevel", "TriggerTopLevel-02", 107799); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "PreshowerTopLevel", "PreshowerTopLevel-02", 107800); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "PreshowerStationGeneral", "PreshowerStationGeneral-01", 100052); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "PreshowerPlateGeneral", "PreshowerPlateGeneral-00", 120025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "PreshowerRadiatorGeneral", "PreshowerRadiatorGeneral-00", 107808); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "PreshowerAbsorberGeneral", "PreshowerAbsorberGeneral-00", 107809); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "NeutrinoMaterials", "NeutrinoMaterials-00", 100032); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "NeutrinoMatComponents", "NeutrinoMatComponents-00", 100033); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "ScintMaterials", "ScintMaterials-00", 100011); @@ -1868,6 +1939,7 @@ INSERT INTO "VETOTOPLEVEL_DATA" VALUES (5, 0.0, 0.0, 100.0, 0.0, 0.0, 0.0, 321, INSERT INTO "VETOTOPLEVEL_DATA" VALUES (6, 0.0, 0.0, -1694.65, 0.0, 0.0, 0.0, 321, "Veto"); INSERT INTO "VETOTOPLEVEL_DATA" VALUES (7, 0.0, 0.0, -85.0, 0.0, 0.0, 2.6, 321, "StationA"); INSERT INTO "VETOTOPLEVEL_DATA" VALUES (8, 0.0, 0.0, 85.0, 0.0, 0.0,-2.6, 321, "StationB"); +INSERT INTO "VETOTOPLEVEL_DATA" VALUES (9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 321, "Radiator"); INSERT INTO "VETOTOPLEVEL_DATA2TAG" VALUES (100009, 0); INSERT INTO "VETOTOPLEVEL_DATA2TAG" VALUES (100009, 1); INSERT INTO "VETOTOPLEVEL_DATA2TAG" VALUES (100009, 2); @@ -1877,6 +1949,7 @@ INSERT INTO "VETOTOPLEVEL_DATA2TAG" VALUES (100046, 5); INSERT INTO "VETOTOPLEVEL_DATA2TAG" VALUES (107798, 6); INSERT INTO "VETOTOPLEVEL_DATA2TAG" VALUES (107798, 7); INSERT INTO "VETOTOPLEVEL_DATA2TAG" VALUES (107798, 8); +INSERT INTO "VETOTOPLEVEL_DATA2TAG" VALUES (107798, 9); -- -- INSERT INTO "VETOSTATIONGENERAL_DATA" VALUES (0, 2, 100.0); @@ -1889,6 +1962,9 @@ INSERT INTO "VETOPLATEGENERAL_DATA" VALUES (1, 1, 300.0, 300.0, 19.5, "scint::Sc INSERT INTO "VETOPLATEGENERAL_DATA2TAG" VALUES (100025, 0); INSERT INTO "VETOPLATEGENERAL_DATA2TAG" VALUES (100050, 1); -- +INSERT INTO "VETORADIATORGENERAL_DATA" VALUES (0, 400.0, 350.0, 100.0, "std::Lead"); +INSERT INTO "VETORADIATORGENERAL_DATA2TAG" VALUES (107810, 0); +-- -- INSERT INTO "TRIGGERTOPLEVEL_DATA" VALUES (0, 0.0, 0.0, 187.0, 0.0, 0.0, 0.0, 321, "Trigger"); INSERT INTO "TRIGGERTOPLEVEL_DATA" VALUES (1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 321, "StationA"); @@ -1914,7 +1990,8 @@ INSERT INTO "TRIGGERPLATEGENERAL_DATA2TAG" VALUES (110025, 0); INSERT INTO "PRESHOWERTOPLEVEL_DATA" VALUES (0, 0.0, 0.0, 2626.0, 0.0, 0.0, 0.0, 321, "Preshower"); INSERT INTO "PRESHOWERTOPLEVEL_DATA" VALUES (1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 321, "StationA"); INSERT INTO "PRESHOWERTOPLEVEL_DATA" VALUES (2, 0.0, 0.0, 2662.7, 0.0, 0.0, 0.0, 321, "Preshower"); -INSERT INTO "PRESHOWERTOPLEVEL_DATA" VALUES (3, 0.0, 0.0, 2662.35, 0.0, 0.0, 0.0, 321, "Preshower"); +--INSERT INTO "PRESHOWERTOPLEVEL_DATA" VALUES (3, 0.0, 0.0, 2662.35, 0.0, 0.0, 0.0, 321, "Preshower"); +INSERT INTO "PRESHOWERTOPLEVEL_DATA" VALUES (3, 0.0, 0.0, 2618.35, 0.0, 0.0, 0.0, 321, "Preshower"); INSERT INTO "PRESHOWERTOPLEVEL_DATA2TAG" VALUES (120009, 0); INSERT INTO "PRESHOWERTOPLEVEL_DATA2TAG" VALUES (120009, 1); INSERT INTO "PRESHOWERTOPLEVEL_DATA2TAG" VALUES (100048, 1); @@ -1931,6 +2008,12 @@ INSERT INTO "PRESHOWERSTATIONGENERAL_DATA2TAG" VALUES (100052, 1); INSERT INTO "PRESHOWERPLATEGENERAL_DATA" VALUES (0, 1, 300.0, 300.0, 20.0, "scint::Scintillator"); INSERT INTO "PRESHOWERPLATEGENERAL_DATA2TAG" VALUES (120025, 0); -- +INSERT INTO "PRESHOWERRADIATORGENERAL_DATA" VALUES (0, 300.0, 300.0, 3.0, "std::Wolfram"); +INSERT INTO "PRESHOWERRADIATORGENERAL_DATA2TAG" VALUES (107808, 0); +-- +INSERT INTO "PRESHOWERABSORBERGENERAL_DATA" VALUES (0, 300.0, 300.0, 50.0, "scint::Graphite"); +INSERT INTO "PRESHOWERABSORBERGENERAL_DATA2TAG" VALUES (107809, 0); +-- -- INSERT INTO "ECALTOPLEVEL_DATA" VALUES (0, 0.0, 0.0, 3099.2, 0.0, 0.0, 0.0, 321, "Ecal"); INSERT INTO "ECALTOPLEVEL_DATA" VALUES (1, 0.0, -71.6, 0.0, 0.0, 2.8, 0.0, 321, "BottomRow"); @@ -1949,13 +2032,17 @@ INSERT INTO "ECALROWGENERAL_DATA2TAG" VALUES (100059, 0); -- -- INSERT INTO "SCINTMATERIALS_DATA" VALUES (0, "Scintillator", 1.032); +INSERT INTO "SCINTMATERIALS_DATA" VALUES (1, "Graphite", 1.8); INSERT INTO "SCINTMATERIALS_DATA2TAG" VALUES (100011, 0); +INSERT INTO "SCINTMATERIALS_DATA2TAG" VALUES (100011, 1); -- -- INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (0, 0, "Carbon", 0.475); INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (1, 0, "Hydrogen", 0.525); +INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (2, 1, "Carbon", 1.0); INSERT INTO "SCINTMATCOMPONENTS_DATA2TAG" VALUES (100012, 0); INSERT INTO "SCINTMATCOMPONENTS_DATA2TAG" VALUES (100012, 1); +INSERT INTO "SCINTMATCOMPONENTS_DATA2TAG" VALUES (100012, 2); -- -- INSERT INTO "FASERCOMMON_DATA" VALUES (0, "RUN3", "TRACKER", "NONE"); diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerAbsorberParameters.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerAbsorberParameters.cxx new file mode 100644 index 0000000000000000000000000000000000000000..f1d515e0ad3cabd93796f1f3f2426d34a9a0d289 --- /dev/null +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerAbsorberParameters.cxx @@ -0,0 +1,46 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "PreshowerAbsorberParameters.h" +#include "PreshowerGeometryManager.h" + +#include "PreshowerDataBase.h" + +#include "RDBAccessSvc/IRDBRecord.h" +#include "GaudiKernel/SystemOfUnits.h" + +#include <cmath> + + +PreshowerAbsorberParameters::PreshowerAbsorberParameters(PreshowerDataBase* rdb) +{ + m_rdb = rdb; +} + +// +// Absorber General +// +double +PreshowerAbsorberParameters::absorberWidth() const +{ + return m_rdb->absorberGeneral()->getDouble("WIDTH") * Gaudi::Units::mm; +} + +double +PreshowerAbsorberParameters::absorberLength() const +{ + return m_rdb->absorberGeneral()->getDouble("LENGTH") * Gaudi::Units::mm; +} + +double +PreshowerAbsorberParameters::absorberThickness() const +{ + return m_rdb->absorberGeneral()->getDouble("THICKNESS") * Gaudi::Units::mm; +} + +std::string PreshowerAbsorberParameters::absorberMaterial() const +{ + return m_rdb->absorberGeneral()->getString("MATERIAL"); +} + diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerAbsorberParameters.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerAbsorberParameters.h new file mode 100644 index 0000000000000000000000000000000000000000..1d2bafd3d501d26bba2cca36a0b25e6c8b969057 --- /dev/null +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerAbsorberParameters.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef PreshowerGeoModel_PreshowerAbsorberParameters_H +#define PreshowerGeoModel_PreshowerAbsorberParameters_H + +#include <string> + +class PreshowerDataBase; + +class PreshowerAbsorberParameters { + +public: + + // Constructor + PreshowerAbsorberParameters(PreshowerDataBase* rdb); + + // General + double absorberThickness() const; + double absorberWidth() const; + double absorberLength() const; + std::string absorberMaterial() const; + + private: + PreshowerDataBase * m_rdb; + +}; + + +#endif // PreshowerGeoModel_PreshowerAbsorberParameters_H diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.cxx index e45e3051cf883674f2216a86579ebdf2856aaa41..422c40ab4347b2669792d43994e0cc7dbc2c90c6 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.cxx +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.cxx @@ -77,6 +77,12 @@ PreshowerDataBase::PreshowerDataBase(const PreshowerGeoModelAthenaComps * athena m_plateGeneral = rdbSvc->getRecordsetPtr("PreshowerPlateGeneral", versionTag, versionNode, "FASERDD"); msg(MSG::DEBUG) << "Table PreshowerPlateGeneral Fetched" << endmsg; + m_radiatorGeneral = rdbSvc->getRecordsetPtr("PreshowerRadiatorGeneral", versionTag, versionNode, "FASERDD"); + msg(MSG::DEBUG) << "Table PreshowerRadiatorGeneral Fetched" << endmsg; + + m_absorberGeneral = rdbSvc->getRecordsetPtr("PreshowerAbsorberGeneral", versionTag, versionNode, "FASERDD"); + msg(MSG::DEBUG) << "Table PreshowerAbsorberGeneral Fetched" << endmsg; + } const PreshowerGeoModelAthenaComps* PreshowerDataBase::athenaComps() const { return m_athenaComps; } @@ -93,6 +99,8 @@ IRDBRecordset_ptr PreshowerDataBase::topLevelTable() const {return m_topLevel;} const IRDBRecord* PreshowerDataBase::stationGeneral() const {return (*m_stationGeneral)[0];} const IRDBRecord* PreshowerDataBase::plateGeneral() const {return (*m_plateGeneral)[0];} +const IRDBRecord* PreshowerDataBase::radiatorGeneral() const {return (*m_radiatorGeneral)[0];} +const IRDBRecord* PreshowerDataBase::absorberGeneral() const {return (*m_absorberGeneral)[0];} const std::string & PreshowerDataBase::versionTag() const { return m_preshowerVersionTag; diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.h index 7021191a20b434a95dfe66606c742ba9258e5f52..ef6e4acbbe74446a4dd3035ea2bb0242d9de1e17 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.h +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.h @@ -28,6 +28,8 @@ public: const IRDBRecord* stationGeneral() const; const IRDBRecord* plateGeneral() const; + const IRDBRecord* radiatorGeneral() const; + const IRDBRecord* absorberGeneral() const; // Return the Preshower version tag. const std::string & versionTag() const; @@ -52,6 +54,8 @@ private: IRDBRecordset_ptr m_stationGeneral; IRDBRecordset_ptr m_plateGeneral; + IRDBRecordset_ptr m_radiatorGeneral; + IRDBRecordset_ptr m_absorberGeneral; }; diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.cxx index 6be4e0d11075d22a7f89c8bbb2421c47247ca47f..f635cf293ba2abcc77a39d63f58ada3fff845272 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.cxx +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.cxx @@ -9,6 +9,8 @@ #include "ScintReadoutGeometry/ScintCommonItems.h" #include "PreshowerStationParameters.h" #include "PreshowerPlateParameters.h" +#include "PreshowerRadiatorParameters.h" +#include "PreshowerAbsorberParameters.h" #include "PreshowerDataBase.h" #include "PreshowerGeneralParameters.h" #include "PreshowerGeoModel/PreshowerGeoModelAthenaComps.h" @@ -22,6 +24,8 @@ PreshowerGeometryManager::PreshowerGeometryManager(PreshowerDataBase* rdb) m_stationParameters = std::make_unique<PreshowerStationParameters>(m_rdb); m_plateParameters = std::make_unique<PreshowerPlateParameters>(m_rdb); + m_radiatorParameters = std::make_unique<PreshowerRadiatorParameters>(m_rdb); + m_absorberParameters = std::make_unique<PreshowerAbsorberParameters>(m_rdb); m_generalParameters = std::make_unique<PreshowerGeneralParameters>(m_rdb); m_distortedMatManager = std::make_unique<ScintDD::DistortedMaterialManager>(); } @@ -73,6 +77,17 @@ PreshowerGeometryManager::plateParameters() const return m_plateParameters.get(); } +const PreshowerRadiatorParameters * +PreshowerGeometryManager::radiatorParameters() const +{ + return m_radiatorParameters.get(); +} +const PreshowerAbsorberParameters * +PreshowerGeometryManager::absorberParameters() const +{ + return m_absorberParameters.get(); +} + const PreshowerGeneralParameters * PreshowerGeometryManager::generalParameters() const { @@ -94,6 +109,8 @@ PreshowerGeometryManager::operator=(const PreshowerGeometryManager& right) { m_rdb = right.m_rdb; m_stationParameters.reset(new PreshowerStationParameters(m_rdb)); m_plateParameters.reset(new PreshowerPlateParameters(m_rdb)); + m_radiatorParameters.reset(new PreshowerRadiatorParameters(m_rdb)); + m_absorberParameters.reset(new PreshowerAbsorberParameters(m_rdb)); m_generalParameters.reset(new PreshowerGeneralParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); } @@ -107,6 +124,8 @@ PreshowerGeometryManager::PreshowerGeometryManager(const PreshowerGeometryManage m_rdb = right.m_rdb; m_stationParameters.reset(new PreshowerStationParameters(m_rdb)); m_plateParameters.reset(new PreshowerPlateParameters(m_rdb)); + m_radiatorParameters.reset(new PreshowerRadiatorParameters(m_rdb)); + m_absorberParameters.reset(new PreshowerAbsorberParameters(m_rdb)); m_generalParameters.reset(new PreshowerGeneralParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); } diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.h index 4f8336cdda68af6ac37c8d09f2c39f718d751b7f..23d24bde7ac19e6db4de05fea7ee341b18149db8 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.h +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.h @@ -16,6 +16,8 @@ namespace ScintDD { class PreshowerStationParameters; class PreshowerPlateParameters; +class PreshowerRadiatorParameters; +class PreshowerAbsorberParameters; class PreshowerDataBase; class PreshowerGeneralParameters; class PreshowerGeoModelAthenaComps; @@ -42,6 +44,8 @@ public: const PreshowerStationParameters* stationParameters() const; const PreshowerPlateParameters* plateParameters() const; + const PreshowerRadiatorParameters* radiatorParameters() const; + const PreshowerAbsorberParameters* absorberParameters() const; const PreshowerGeneralParameters* generalParameters() const; const ScintDD::DistortedMaterialManager* distortedMatManager() const; @@ -57,6 +61,8 @@ private: std::unique_ptr<PreshowerStationParameters> m_stationParameters; std::unique_ptr<PreshowerPlateParameters> m_plateParameters; + std::unique_ptr<PreshowerRadiatorParameters> m_radiatorParameters; + std::unique_ptr<PreshowerAbsorberParameters> m_absorberParameters; std::unique_ptr<PreshowerGeneralParameters> m_generalParameters; std::unique_ptr<ScintDD::DistortedMaterialManager> m_distortedMatManager; diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerRadiatorParameters.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerRadiatorParameters.cxx new file mode 100644 index 0000000000000000000000000000000000000000..b3d95c86f41f05b7897fb7fe95e07cccae43c7f7 --- /dev/null +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerRadiatorParameters.cxx @@ -0,0 +1,46 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "PreshowerRadiatorParameters.h" +#include "PreshowerGeometryManager.h" + +#include "PreshowerDataBase.h" + +#include "RDBAccessSvc/IRDBRecord.h" +#include "GaudiKernel/SystemOfUnits.h" + +#include <cmath> + + +PreshowerRadiatorParameters::PreshowerRadiatorParameters(PreshowerDataBase* rdb) +{ + m_rdb = rdb; +} + +// +// Radiator General +// +double +PreshowerRadiatorParameters::radiatorWidth() const +{ + return m_rdb->radiatorGeneral()->getDouble("WIDTH") * Gaudi::Units::mm; +} + +double +PreshowerRadiatorParameters::radiatorLength() const +{ + return m_rdb->radiatorGeneral()->getDouble("LENGTH") * Gaudi::Units::mm; +} + +double +PreshowerRadiatorParameters::radiatorThickness() const +{ + return m_rdb->radiatorGeneral()->getDouble("THICKNESS") * Gaudi::Units::mm; +} + +std::string PreshowerRadiatorParameters::radiatorMaterial() const +{ + return m_rdb->radiatorGeneral()->getString("MATERIAL"); +} + diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerRadiatorParameters.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerRadiatorParameters.h new file mode 100644 index 0000000000000000000000000000000000000000..68d9ce08ae76376216a35c66da8dcc5b5cc7076a --- /dev/null +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerRadiatorParameters.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef PreshowerGeoModel_PreshowerRadiatorParameters_H +#define PreshowerGeoModel_PreshowerRadiatorParameters_H + +#include <string> + +class PreshowerDataBase; + +class PreshowerRadiatorParameters { + +public: + + // Constructor + PreshowerRadiatorParameters(PreshowerDataBase* rdb); + + // General + double radiatorThickness() const; + double radiatorWidth() const; + double radiatorLength() const; + std::string radiatorMaterial() const; + + private: + PreshowerDataBase * m_rdb; + +}; + + +#endif // PreshowerGeoModel_PreshowerRadiatorParameters_H diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.cxx index bdd8c5b964fb26c4db91f09764ed1dd98e66721d..a511085e1fda3124716531849a838d773a2cf726 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.cxx +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.cxx @@ -9,6 +9,8 @@ #include "PreshowerGeometryManager.h" #include "PreshowerStationParameters.h" #include "PreshowerGeneralParameters.h" +#include "PreshowerRadiatorParameters.h" +#include "PreshowerAbsorberParameters.h" #include "PreshowerIdentifier.h" #include "PreshowerPlate.h" @@ -55,13 +57,36 @@ PreshowerStation::getParameters() const PreshowerGeneralParameters* generalParameters = m_geometryManager->generalParameters(); m_safety = generalParameters->safety(); - m_width = m_plate->width() + m_safety; - m_length = m_plate->length() + m_safety; - // pitch includes thickness of one plate - m_thickness = (m_numPlates - 1) * m_platePitch + m_plate->thickness() + m_safety; - // Set numerology m_detectorManager->numerology().setNumPlatesPerStation(m_numPlates); + + // Passive radiator information + const PreshowerRadiatorParameters* radiatorParameters = m_geometryManager->radiatorParameters(); + m_radiatorWidth = radiatorParameters->radiatorWidth(); + m_radiatorLength = radiatorParameters->radiatorLength(); + m_radiatorThickness = radiatorParameters->radiatorThickness(); + m_radiatorMaterial = m_materials->getMaterial(radiatorParameters->radiatorMaterial()); + + // Passive absorber information + const PreshowerAbsorberParameters* absorberParameters = m_geometryManager->absorberParameters(); + m_absorberWidth = absorberParameters->absorberWidth(); + m_absorberLength = absorberParameters->absorberLength(); + m_absorberThickness = absorberParameters->absorberThickness(); + m_absorberMaterial = m_materials->getMaterial(absorberParameters->absorberMaterial()); + + // pitch includes thickness of one plate + m_width = std::max(std::max(m_plate->width(), m_radiatorWidth), m_absorberWidth) + m_safety; + m_length = std::max(std::max(m_plate->length(), m_radiatorLength), m_absorberLength) + m_safety; + + // Compute air-gaps between slabs; for now assumed equal based on scintillator pitch + m_airGap = (m_platePitch - m_plate->thickness() - m_radiatorThickness - m_absorberThickness)/3; + if (m_airGap < 0) + { + m_detectorManager->msg(MSG::FATAL) << "Invalid passive material geometry for preshower; air gap is negative." << endmsg; + } + + m_thickness = (m_numPlates - 1) * m_platePitch + m_plate->thickness() + 3 * m_airGap + 2 * m_absorberThickness + m_radiatorThickness + m_safety; + } const GeoLogVol * @@ -71,6 +96,13 @@ PreshowerStation::preBuild() // Box envelope containing the station. const GeoBox* stationEnvelopeShape = new GeoBox(0.5 * m_width, 0.5 * m_length, 0.5 * m_thickness); GeoLogVol* stationLog = new GeoLogVol(getName(), stationEnvelopeShape, m_materials->gasMaterial()); + + const GeoBox* radiatorShape = new GeoBox(0.5 * m_radiatorWidth, 0.5 * m_radiatorLength, 0.5 * m_radiatorThickness); + m_radiatorLog = new GeoLogVol("PreshowerRadiator", radiatorShape, m_radiatorMaterial); + + const GeoBox* absorberShape = new GeoBox(0.5 * m_absorberWidth, 0.5 * m_absorberLength, 0.5 * m_absorberThickness); + m_absorberLog = new GeoLogVol("PreshowerAbsorber", absorberShape, m_absorberMaterial); + return stationLog; } @@ -80,21 +112,51 @@ PreshowerStation::build(PreshowerIdentifier id) GeoFullPhysVol * station = new GeoFullPhysVol(m_logVolume); - double activeDepth = m_thickness - m_safety; + // double activeDepth = m_thickness - m_safety; double plateThickness = m_plate->thickness(); for (int iPlate = 0; iPlate < m_numPlates; iPlate++) { + station->add(new GeoNameTag("Absorber#"+intToString(iPlate))); + double zA = (-m_numPlates/2.0 + iPlate) * m_platePitch; + GeoTransform* absorberTransform = new GeoTransform(GeoTrf::Translate3D(0.0, + 0.0, + zA)); + station->add(absorberTransform); + GeoVPhysVol* absorberPV = new GeoPhysVol(m_absorberLog); + station->add(absorberPV); + + station->add(new GeoNameTag("Radiator#"+intToString(iPlate))); + double zR = zA + m_airGap + (m_absorberThickness + m_radiatorThickness)/2; + GeoTransform* radiatorTransform = new GeoTransform(GeoTrf::Translate3D(0.0, + 0.0, + zR)); + station->add(radiatorTransform); + GeoVPhysVol* radiatorPV = new GeoPhysVol(m_radiatorLog); + station->add(radiatorPV); + station->add(new GeoNameTag("Plate#"+intToString(iPlate))); station->add(new GeoIdentifierTag(iPlate)); id.setPlate(iPlate); + double zP = zR + m_airGap + (plateThickness + m_radiatorThickness)/2; GeoAlignableTransform* transform = new GeoAlignableTransform(GeoTrf::Translate3D(0.0, 0.0, - (plateThickness - activeDepth)/2 + iPlate * m_platePitch)); + zP)); station->add(transform); GeoVPhysVol* platePV = m_plate->build(id); station->add(platePV); m_detectorManager->addAlignableTransform(0, id.getPlateId(), transform, platePV); - } + } + + // Now add the final downstream absorber after the last plate + station->add(new GeoNameTag("Absorber#"+intToString(m_numPlates))); + double zA = m_numPlates/2.0 * m_platePitch; + GeoTransform* absorberTransform = new GeoTransform(GeoTrf::Translate3D(0.0, + 0.0, + zA)); + station->add(absorberTransform); + GeoVPhysVol* absorberPV = new GeoPhysVol(m_absorberLog); + station->add(absorberPV); + return station; } diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.h index fb4d6f588699db07cb0212bb850d59b1062bee21..e1307290b3ef3c89f26a4453a0515f80780d9fea 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.h +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.h @@ -10,6 +10,7 @@ class GeoVPhysVol; class GeoFullPhysVol; class GeoLogVol; +class GeoMaterial; class PreshowerIdentifier; class PreshowerPlate; @@ -30,7 +31,19 @@ public: double thickness() const {return m_thickness;} double width() const {return m_width;} double length() const {return m_length;} + + double radiatorThickness() const {return m_radiatorThickness;} + double radiatorWidth() const {return m_radiatorWidth;} + double radiatorLength() const {return m_radiatorLength;} + const GeoMaterial* radiatorMaterial() const {return m_radiatorMaterial;} + + double absorberThickness() const {return m_absorberThickness;} + double absorberWidth() const {return m_absorberWidth;} + double absorberLength() const {return m_absorberLength;} + const GeoMaterial* absorberMaterial() const {return m_absorberMaterial;} + double airGap() const {return m_airGap;} + private: void getParameters(); virtual const GeoLogVol * preBuild(); @@ -44,6 +57,22 @@ private: double m_width; double m_length; + double m_radiatorThickness; + double m_radiatorWidth; + double m_radiatorLength; + + const GeoMaterial* m_radiatorMaterial; + const GeoLogVol* m_radiatorLog; + + double m_absorberThickness; + double m_absorberWidth; + double m_absorberLength; + + const GeoMaterial* m_absorberMaterial; + const GeoLogVol* m_absorberLog; + + double m_airGap; + double m_safety; }; diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.cxx index 44bb1e086f16685bd9b7ce768d9942a08e9cf334..2ef72a43a9063a8f00c9f74b8eac89f75eb3121c 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.cxx +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.cxx @@ -77,6 +77,10 @@ VetoDataBase::VetoDataBase(const VetoGeoModelAthenaComps * athenaComps) m_plateGeneral = rdbSvc->getRecordsetPtr("VetoPlateGeneral", versionTag, versionNode, "FASERDD"); msg(MSG::DEBUG) << "Table VetoPlateGeneral Fetched" << endmsg; + m_radiatorGeneral = rdbSvc->getRecordsetPtr("VetoRadiatorGeneral", versionTag, versionNode, "FASERDD"); + msg(MSG::DEBUG) << "Table VetoRadiatorGeneral Fetched" << endmsg; + + } const VetoGeoModelAthenaComps* VetoDataBase::athenaComps() const { return m_athenaComps; } @@ -93,6 +97,7 @@ IRDBRecordset_ptr VetoDataBase::topLevelTable() const {return m_topLevel;} const IRDBRecord* VetoDataBase::stationGeneral() const {return (*m_stationGeneral)[0];} const IRDBRecord* VetoDataBase::plateGeneral() const {return (*m_plateGeneral)[0];} +const IRDBRecord* VetoDataBase::radiatorGeneral() const {return (*m_radiatorGeneral)[0];} const std::string & VetoDataBase::versionTag() const { return m_vetoVersionTag; diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.h b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.h index cce56bba95689ae521b73a419d8c72a9fb0552f4..74f2365b22dad7eb92ff5cb4513db45ceb29000f 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.h +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.h @@ -41,6 +41,7 @@ public: // const IRDBRecord* brlThermalShield() const; const IRDBRecord* stationGeneral() const; const IRDBRecord* plateGeneral() const; + const IRDBRecord* radiatorGeneral() const; // const IRDBRecord* brlFSI() const; // int brlFSISize() const; // const IRDBRecord* brlFSILocation(int i) const; @@ -119,6 +120,7 @@ private: // IRDBRecordset_ptr m_brlThermalShield; IRDBRecordset_ptr m_stationGeneral; IRDBRecordset_ptr m_plateGeneral; + IRDBRecordset_ptr m_radiatorGeneral; // IRDBRecordset_ptr m_brlFSI; // IRDBRecordset_ptr m_brlFSILocation; // IRDBRecordset_ptr m_fwdSensor; diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx index c85ae49d8c24d8c72debd67b90232054f7098749..9d3d9659f6fd590cb053c589e53d8719cce3ebea 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx @@ -20,6 +20,7 @@ #include "ScintReadoutGeometry/ScintDetectorDesign.h" #include "VetoStation.h" +#include "VetoRadiator.h" #include "VetoPlate.h" #include "VetoDataBase.h" #include "VetoGeoModel/VetoGeoModelAthenaComps.h" @@ -149,14 +150,11 @@ void VetoDetectorFactory::create(GeoPhysVol *world) std::string stationA_Label = "StationA"; std::string stationB_Label = "StationB"; - // std::string absorberA_Label = "AbsorberA"; - // std::string absorberB_Label = "AbsorberB"; + std::string radiator_Label = "Radiator"; bool stationA_Present = vetoGeneral->partPresent(stationA_Label); bool stationB_Present = vetoGeneral->partPresent(stationB_Label); - // bool absorberA_Present = vetoGeneral->partPresent(absorberA_Label); - // bool absorberB_Present = vetoGeneral->partPresent(absorberB_Label); - + bool radiator_Present = vetoGeneral->partPresent(radiator_Label); // // Plate is the same for all stations // @@ -214,6 +212,25 @@ void VetoDetectorFactory::create(GeoPhysVol *world) m_detectorManager->addAlignableTransform(1, id.getPlateId(), stationB_Transform, stationB_PV); } + // Passive radiator + if (radiator_Present) + { + msg(MSG::DEBUG) << "Building the Veto Radiator." << endmsg; + + // Create the radiator + VetoRadiator radiator("VetoRadiator", m_detectorManager, m_geometryManager, m_materials); + GeoAlignableTransform* radiator_Transform = new GeoAlignableTransform(vetoTransform * vetoGeneral->partTransform(radiator_Label)); + + GeoNameTag* topLevelNameTag = new GeoNameTag("Veto"); + scint->add(topLevelNameTag); + scint->add(new GeoIdentifierTag(0)); + scint->add(radiator_Transform); + scint->add(radiator.getVolume()); + m_detectorManager->addTreeTop(radiator.getVolume()); + + } + + // Set the neighbours m_detectorManager->initNeighbours(); diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.cxx index 1e5757aff9a4f931b45c0e3cc6e0e3330328a8ff..53190a50a7897d448b2ebdea0f108b83d5917765 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.cxx +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.cxx @@ -9,6 +9,7 @@ #include "ScintReadoutGeometry/ScintCommonItems.h" #include "VetoStationParameters.h" #include "VetoPlateParameters.h" +#include "VetoRadiatorParameters.h" #include "VetoDataBase.h" #include "VetoGeneralParameters.h" #include "VetoGeoModel/VetoGeoModelAthenaComps.h" @@ -22,6 +23,7 @@ VetoGeometryManager::VetoGeometryManager(VetoDataBase* rdb) m_stationParameters = std::make_unique<VetoStationParameters>(m_rdb); m_plateParameters = std::make_unique<VetoPlateParameters>(m_rdb); + m_radiatorParameters = std::make_unique<VetoRadiatorParameters>(m_rdb); m_generalParameters = std::make_unique<VetoGeneralParameters>(m_rdb); m_distortedMatManager = std::make_unique<ScintDD::DistortedMaterialManager>(); } @@ -73,6 +75,13 @@ VetoGeometryManager::plateParameters() const return m_plateParameters.get(); } +const VetoRadiatorParameters * +VetoGeometryManager::radiatorParameters() const +{ + return m_radiatorParameters.get(); +} + + const VetoGeneralParameters * VetoGeometryManager::generalParameters() const { @@ -94,6 +103,7 @@ VetoGeometryManager::operator=(const VetoGeometryManager& right) { m_rdb = right.m_rdb; m_stationParameters.reset(new VetoStationParameters(m_rdb)); m_plateParameters.reset(new VetoPlateParameters(m_rdb)); + m_radiatorParameters.reset(new VetoRadiatorParameters(m_rdb)); m_generalParameters.reset(new VetoGeneralParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); } @@ -107,6 +117,7 @@ VetoGeometryManager::VetoGeometryManager(const VetoGeometryManager& right) { m_rdb = right.m_rdb; m_stationParameters.reset(new VetoStationParameters(m_rdb)); m_plateParameters.reset(new VetoPlateParameters(m_rdb)); + m_radiatorParameters.reset(new VetoRadiatorParameters(m_rdb)); m_generalParameters.reset(new VetoGeneralParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); } diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.h b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.h index 8531453e2791b7767e585d0f0bee5e1fe9b89f10..317cfd1442aace6744701381910420dec9172f13 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.h +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.h @@ -16,6 +16,7 @@ namespace ScintDD { class VetoStationParameters; class VetoPlateParameters; +class VetoRadiatorParameters; class VetoDataBase; class VetoGeneralParameters; class VetoGeoModelAthenaComps; @@ -42,6 +43,7 @@ public: const VetoStationParameters* stationParameters() const; const VetoPlateParameters* plateParameters() const; + const VetoRadiatorParameters* radiatorParameters() const; const VetoGeneralParameters* generalParameters() const; const ScintDD::DistortedMaterialManager* distortedMatManager() const; @@ -57,6 +59,7 @@ private: std::unique_ptr<VetoStationParameters> m_stationParameters; std::unique_ptr<VetoPlateParameters> m_plateParameters; + std::unique_ptr<VetoRadiatorParameters> m_radiatorParameters; std::unique_ptr<VetoGeneralParameters> m_generalParameters; std::unique_ptr<ScintDD::DistortedMaterialManager> m_distortedMatManager; diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiator.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiator.cxx new file mode 100644 index 0000000000000000000000000000000000000000..74fb3adc6c23bfc463f0bf1bad45deeb29aaa3e5 --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiator.cxx @@ -0,0 +1,55 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "VetoRadiator.h" + +#include "VetoMaterialManager.h" + +#include "VetoGeometryManager.h" +#include "VetoGeneralParameters.h" +#include "VetoRadiatorParameters.h" + +#include "GeoModelKernel/GeoBox.h" +#include "GeoModelKernel/GeoLogVol.h" +#include "GeoModelKernel/GeoPhysVol.h" +#include "GeoModelKernel/GeoMaterial.h" + +VetoRadiator::VetoRadiator(const std::string & name, + ScintDD::VetoDetectorManager* detectorManager, + const VetoGeometryManager* geometryManager, + VetoMaterialManager* materials) + : VetoSharedComponentFactory(name, detectorManager, geometryManager, materials) +{ + getParameters(); + m_physVolume = build(); +} + +void +VetoRadiator::getParameters() +{ + const VetoRadiatorParameters * parameters = m_geometryManager->radiatorParameters(); + const VetoGeneralParameters* generalParameters = m_geometryManager->generalParameters(); + + m_material = m_materials->getMaterial(parameters->radiatorMaterial()); + m_safety = generalParameters->safety(); + m_thickness = parameters->radiatorThickness(); + m_width = parameters->radiatorWidth(); + m_length = parameters->radiatorLength(); +} + +GeoVPhysVol * +VetoRadiator::build() +{ + // Just a simple box. + const GeoBox * simpleRadiatorShape = new GeoBox(0.5*m_width, + 0.5*m_length, + 0.5*m_thickness); + + const GeoLogVol * simpleRadiatorLog = + new GeoLogVol(getName(), simpleRadiatorShape, m_material); + + GeoPhysVol * simpleRadiator = new GeoPhysVol(simpleRadiatorLog); + + return simpleRadiator; +} diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiator.h b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiator.h new file mode 100644 index 0000000000000000000000000000000000000000..20bb6099faa3d2c49d2ae15de81183fd4c95abca --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiator.h @@ -0,0 +1,42 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef VETOGEOMODEL_VETORADIATOR_H +#define VETOGEOMODEL_VETORADIATOR_H + +#include "VetoComponentFactory.h" + +class GeoVPhysVol; +class GeoFullPhysVol; +class GeoLogVol; +class GeoMaterial; + +class VetoRadiator : public VetoSharedComponentFactory +{ + +public: + VetoRadiator(const std::string & name, + ScintDD::VetoDetectorManager* detectorManager, + const VetoGeometryManager* geometryManager, + VetoMaterialManager* materials); + +public: + const GeoMaterial * material() const {return m_material;} + double thickness() const {return m_thickness;} + double width() const {return m_width;} + double length() const {return m_length;} + +private: + virtual GeoVPhysVol * build(); + void getParameters(); + + const GeoMaterial * m_material; + double m_thickness; + double m_width; + double m_length; + + double m_safety; +}; + +#endif // VETOGEOMODEL_VETORADIATOR_H diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiatorParameters.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiatorParameters.cxx new file mode 100644 index 0000000000000000000000000000000000000000..85e1f604cdcfa3939781b2261cf73f0423c20e15 --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiatorParameters.cxx @@ -0,0 +1,46 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "VetoRadiatorParameters.h" +#include "VetoGeometryManager.h" + +#include "VetoDataBase.h" + +#include "RDBAccessSvc/IRDBRecord.h" +#include "GaudiKernel/SystemOfUnits.h" + +#include <cmath> + + +VetoRadiatorParameters::VetoRadiatorParameters(VetoDataBase* rdb) +{ + m_rdb = rdb; +} + +// +// Radiator General +// +double +VetoRadiatorParameters::radiatorWidth() const +{ + return m_rdb->radiatorGeneral()->getDouble("WIDTH") * Gaudi::Units::mm; +} + +double +VetoRadiatorParameters::radiatorLength() const +{ + return m_rdb->radiatorGeneral()->getDouble("LENGTH") * Gaudi::Units::mm; +} + +double +VetoRadiatorParameters::radiatorThickness() const +{ + return m_rdb->radiatorGeneral()->getDouble("THICKNESS") * Gaudi::Units::mm; +} + +std::string VetoRadiatorParameters::radiatorMaterial() const +{ + return m_rdb->radiatorGeneral()->getString("MATERIAL"); +} + diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiatorParameters.h b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiatorParameters.h new file mode 100644 index 0000000000000000000000000000000000000000..83c8bc61bf3210a668a00000776ce361929c7de0 --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoRadiatorParameters.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef VetoGeoModel_VetoRadiatorParameters_H +#define VetoGeoModel_VetoRadiatorParameters_H + +#include <string> + +class VetoDataBase; + +class VetoRadiatorParameters { + +public: + + // Constructor + VetoRadiatorParameters(VetoDataBase* rdb); + + // Barrel General + double radiatorThickness() const; + double radiatorWidth() const; + double radiatorLength() const; + std::string radiatorMaterial() const; + + private: + VetoDataBase * m_rdb; + +}; + + +#endif // VetoGeoModel_VetoRadiatorParameters_H diff --git a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VisAttributes.cxx b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VisAttributes.cxx index e1df8c9ac21df05d3728942d5bdf0b4f07bbc816..82825c71806f9cddaef0e065a30086fffae4e270 100644 --- a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VisAttributes.cxx +++ b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VisAttributes.cxx @@ -160,23 +160,7 @@ DetVisAttributes::DetVisAttributes() { material->specularColor.setValue(.915152, .915152, .915152); material->shininess.setValue(0.642424); add("Veto",material); - } - - { - SoMaterial *material = new SoMaterial; - material->ambientColor.setValue(0, .157811, .187004); - material->diffuseColor.setValue(.40, .631244, .748016); - material->specularColor.setValue(.915152, .915152, .915152); - material->shininess.setValue(0.642424); add("Trigger",material); - } - - { - SoMaterial *material = new SoMaterial; - material->ambientColor.setValue(0, .157811, .187004); - material->diffuseColor.setValue(1, .8, .7); - material->specularColor.setValue(.915152, .915152, .915152); - material->shininess.setValue(0.642424); add("Preshower",material); } @@ -283,14 +267,14 @@ DetVisAttributes::DetVisAttributes() { material->shininess.setValue(1.0); add("SCT",material); } - { + { SoMaterial *material = new SoMaterial; - material->ambientColor.setValue(0, .157811, .187004); - material->diffuseColor.setValue(1, .5, .5); + material->ambientColor.setValue(23, 170, 62); + material->diffuseColor.setValue(24, 145, 175); material->specularColor.setValue(.915152, .915152, .915152); - material->shininess.setValue(0.3); + material->shininess.setValue(0.5); add("Dipole",material); - } + } // { // SoMaterial *material = new SoMaterial; @@ -507,6 +491,15 @@ MatVisAttributes::MatVisAttributes() { add("Stainless",m); add("_dd_Materials_Ecal_EcalSteel",m); } + { + SoMaterial *material = new SoMaterial; + material->ambientColor.setValue(0.09, 0.67, 0.24); + material->diffuseColor.setValue(0.1, 0.57, 0.69); + material->specularColor.setValue(.915152, .915152, .915152); + material->shininess.setValue(0.4); + add("Nd2Fe14B",material); + } + { // Liquid Argon SoMaterial *m = new SoMaterial;